From 344aa22bd2ed2204f2763b6f4f01e3872e60458b Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Fri, 19 Aug 2016 00:12:01 +0100 Subject: [PATCH 001/385] qemu: Add the qemu package The qemu package is a self contained package used for launching, halting and managing qemu instances. Signed-off-by: Mark Ryan --- qmp.go | 600 ++++++++++++++++++++++++++++++++++++++++++++ qmp_test.go | 697 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1297 insertions(+) create mode 100644 qmp.go create mode 100644 qmp_test.go diff --git a/qmp.go b/qmp.go new file mode 100644 index 000000000..11ca1ebbd --- /dev/null +++ b/qmp.go @@ -0,0 +1,600 @@ +/* +// Copyright (c) 2016 Intel Corporation +// +// 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. +*/ + +package qemu + +import ( + "bufio" + "container/list" + "encoding/json" + "errors" + "fmt" + "io" + "net" + "time" + + "golang.org/x/net/context" +) + +// Code to launch qemu +// move to package and document + +// QMPLog is a logging interface used by the qemu package to log various +// interesting pieces of information. Rather than introduce a dependency +// on a given logging package, qemu presents this interface that allows +// clients to provide their own logging type which they can use to +// seamlessly integrate qemu's logs into their own logs. A QMPLog +// implementation can be specified in the QMPConfig structure. +type QMPLog interface { + // V returns true if the given argument is less than or equal + // to the implementation's defined verbosity level. + V(int32) bool + + // Infof writes informational output to the log. A newline will be + // added to the output if one is not provided. + Infof(string, ...interface{}) + + // Warningf writes warning output to the log. A newline will be + // added to the output if one is not provided. + Warningf(string, ...interface{}) + + // Errorf writes error output to the log. A newline will be + // added to the output if one is not provided. + Errorf(string, ...interface{}) +} + +type qmpNullLogger struct{} + +func (l qmpNullLogger) V(level int32) bool { + return false +} + +func (l qmpNullLogger) Infof(format string, v ...interface{}) { +} + +func (l qmpNullLogger) Warningf(format string, v ...interface{}) { +} + +func (l qmpNullLogger) Errorf(format string, v ...interface{}) { +} + +// QMPConfig is a configuration structure that can be used to specify a +// logger and a channel to which logs and QMP events are to be sent. If +// neither of these fields are specified, or are set to nil, no logs will be +// written and no QMP events will be reported to the client. +type QMPConfig struct { + // eventCh can be specified by clients who wish to receive QMP + // events. + EventCh chan<- QMPEvent + + // logger is used by the qmpStart function and all the go routines + // it spawns to log information. + Logger QMPLog +} + +type qmpEventFilter struct { + eventName string + dataKey string + dataValue string +} + +// QMPEvent contains a single QMP event, sent on the QMPConfig.EventCh channel. +type QMPEvent struct { + // The name of the event, e.g., DEVICE_DELETED + Name string + + // The data associated with the event. The contents of this map are + // unprocessed by the qemu package. It is simply the result of + // unmarshalling the QMP json event. Here's an example map + // map[string]interface{}{ + // "driver": "virtio-blk-pci", + // "drive": "drive_3437843748734873483", + // } + Data map[string]interface{} + + // The event's timestamp converted to a time.Time object. + Timestamp time.Time +} + +type qmpResult struct { + err error + data map[string]interface{} +} + +type qmpCommand struct { + ctx context.Context + res chan qmpResult + name string + args map[string]interface{} + filter *qmpEventFilter + resultReceived bool +} + +// QMP is a structure that contains the internal state used by startQMPLoop and +// the go routines it spwans. All the contents of this structure are private. +type QMP struct { + cmdCh chan qmpCommand + conn io.ReadWriteCloser + cfg QMPConfig + connectedCh chan<- *QMPVersion + disconnectedCh chan struct{} +} + +// QMPVersion contains the version number and the capabailities of a QEMU +// instance, as reported in the QMP greeting message. +type QMPVersion struct { + Major int + Minor int + Micro int + Capabilities []string +} + +func (q *QMP) readLoop(fromVMCh chan<- []byte) { + scanner := bufio.NewScanner(q.conn) + for scanner.Scan() { + line := scanner.Bytes() + if q.cfg.Logger.V(1) { + q.cfg.Logger.Infof("%s", string(line)) + } + fromVMCh <- line + } + close(fromVMCh) +} + +func (q *QMP) processQMPEvent(cmdQueue *list.List, name interface{}, data interface{}, + timestamp interface{}) { + + strname, ok := name.(string) + if !ok { + return + } + + var eventData map[string]interface{} + if data != nil { + eventData, _ = data.(map[string]interface{}) + } + + cmdEl := cmdQueue.Front() + if cmdEl != nil { + cmd := cmdEl.Value.(*qmpCommand) + filter := cmd.filter + if filter != nil { + if filter.eventName == strname { + match := filter.dataKey == "" + if !match && eventData != nil { + match = eventData[filter.dataKey] == filter.dataValue + } + if match { + if cmd.resultReceived { + q.finaliseCommand(cmdEl, cmdQueue, true) + } else { + cmd.filter = nil + } + } + } + } + } + + if q.cfg.EventCh != nil { + ev := QMPEvent{ + Name: strname, + Data: eventData, + } + if timestamp != nil { + timestamp, ok := timestamp.(map[string]interface{}) + if ok { + seconds, _ := timestamp["seconds"].(float64) + microseconds, _ := timestamp["microseconds"].(float64) + ev.Timestamp = time.Unix(int64(seconds), int64(microseconds)) + } + } + + q.cfg.EventCh <- ev + } +} + +func (q *QMP) finaliseCommand(cmdEl *list.Element, cmdQueue *list.List, succeeded bool) { + cmd := cmdEl.Value.(*qmpCommand) + cmdQueue.Remove(cmdEl) + select { + case <-cmd.ctx.Done(): + default: + if succeeded { + cmd.res <- qmpResult{} + } else { + cmd.res <- qmpResult{err: fmt.Errorf("QMP command failed")} + } + } + if cmdQueue.Len() > 0 { + q.writeNextQMPCommand(cmdQueue) + } +} + +func (q *QMP) processQMPInput(line []byte, cmdQueue *list.List) { + var vmData map[string]interface{} + err := json.Unmarshal(line, &vmData) + if err != nil { + q.cfg.Logger.Warningf("Unable to decode response [%s] from VM: %v", + string(line), err) + return + } + if evname, found := vmData["event"]; found { + q.processQMPEvent(cmdQueue, evname, vmData["data"], vmData["timestamp"]) + return + } + + _, succeeded := vmData["return"] + _, failed := vmData["error"] + + if !succeeded && !failed { + return + } + + cmdEl := cmdQueue.Front() + if cmdEl == nil { + q.cfg.Logger.Warningf("Unexpected command response received [%s] from VM", + string(line)) + return + } + cmd := cmdEl.Value.(*qmpCommand) + if failed || cmd.filter == nil { + q.finaliseCommand(cmdEl, cmdQueue, succeeded) + } else { + cmd.resultReceived = true + } +} + +func (q *QMP) writeNextQMPCommand(cmdQueue *list.List) { + cmdEl := cmdQueue.Front() + cmd := cmdEl.Value.(*qmpCommand) + cmdData := make(map[string]interface{}) + cmdData["execute"] = cmd.name + if cmd.args != nil { + cmdData["arguments"] = cmd.args + } + encodedCmd, err := json.Marshal(&cmdData) + if err != nil { + cmd.res <- qmpResult{ + err: fmt.Errorf("Unable to marhsall command %s: %v", + cmd.name, err), + } + cmdQueue.Remove(cmdEl) + } + q.cfg.Logger.Infof("%s", string(encodedCmd)) + encodedCmd = append(encodedCmd, '\n') + _, err = q.conn.Write(encodedCmd) + if err != nil { + cmd.res <- qmpResult{ + err: fmt.Errorf("Unable to write command to qmp socket %v", err), + } + cmdQueue.Remove(cmdEl) + } +} + +func failOutstandingCommands(cmdQueue *list.List) { + for e := cmdQueue.Front(); e != nil; e = e.Next() { + cmd := e.Value.(*qmpCommand) + select { + case cmd.res <- qmpResult{ + err: errors.New("exitting QMP loop, command cancelled"), + }: + case <-cmd.ctx.Done(): + } + } +} + +func (q *QMP) parseVersion(version []byte) *QMPVersion { + var qmp map[string]interface{} + err := json.Unmarshal(version, &qmp) + if err != nil { + q.cfg.Logger.Errorf("Invalid QMP greeting: %s", string(version)) + return nil + } + + versionMap := qmp + for _, k := range []string{"QMP", "version", "qemu"} { + versionMap, _ = versionMap[k].(map[string]interface{}) + if versionMap == nil { + q.cfg.Logger.Errorf("Invalid QMP greeting: %s", string(version)) + return nil + } + } + + micro, _ := versionMap["micro"].(float64) + minor, _ := versionMap["minor"].(float64) + major, _ := versionMap["major"].(float64) + capabilities, _ := qmp["QMP"].(map[string]interface{})["capabilities"].([]interface{}) + stringcaps := make([]string, 0, len(capabilities)) + for _, c := range capabilities { + if cap, ok := c.(string); ok { + stringcaps = append(stringcaps, cap) + } + } + return &QMPVersion{Major: int(major), + Minor: int(minor), + Micro: int(micro), + Capabilities: stringcaps, + } +} + +func (q *QMP) mainLoop() { + cmdQueue := list.New().Init() + fromVMCh := make(chan []byte) + go q.readLoop(fromVMCh) + + defer func() { + if q.cfg.EventCh != nil { + close(q.cfg.EventCh) + } + _ = q.conn.Close() + _ = <-fromVMCh + failOutstandingCommands(cmdQueue) + close(q.disconnectedCh) + }() + + version := []byte{} + +DONE: + for { + ok := false + select { + case cmd, ok := <-q.cmdCh: + if !ok { + return + } + _ = cmdQueue.PushBack(&cmd) + case version, ok = <-fromVMCh: + if !ok { + return + } + if cmdQueue.Len() >= 1 { + q.writeNextQMPCommand(cmdQueue) + } + break DONE + } + } + + q.connectedCh <- q.parseVersion(version) + + for { + select { + case cmd, ok := <-q.cmdCh: + if !ok { + return + } + _ = cmdQueue.PushBack(&cmd) + if cmdQueue.Len() >= 1 { + q.writeNextQMPCommand(cmdQueue) + } + case line, ok := <-fromVMCh: + if !ok { + return + } + q.processQMPInput(line, cmdQueue) + } + } +} + +func startQMPLoop(conn io.ReadWriteCloser, cfg QMPConfig, + connectedCh chan<- *QMPVersion, disconnectedCh chan struct{}) *QMP { + q := &QMP{ + cmdCh: make(chan qmpCommand), + conn: conn, + cfg: cfg, + connectedCh: connectedCh, + disconnectedCh: disconnectedCh, + } + go q.mainLoop() + return q +} + +func (q *QMP) executeCommand(ctx context.Context, name string, args map[string]interface{}, + filter *qmpEventFilter) error { + var err error + resCh := make(chan qmpResult) + select { + case <-q.disconnectedCh: + err = errors.New("exitting QMP loop, command cancelled") + case q.cmdCh <- qmpCommand{ + ctx: ctx, + res: resCh, + name: name, + args: args, + filter: filter, + }: + } + + if err != nil { + return err + } + + select { + case res := <-resCh: + err = res.err + case <-ctx.Done(): + err = ctx.Err() + } + + return err +} + +// QMPStart connects to a unix domain socket maintained by a QMP instance. It +// waits to receive the QMP welcome message via the socket and spawns some go +// routines to manage the socket. The function returns a *QMP which can be +// used by callers to send commands to the QEMU instance or to close the +// socket and all the go routines that have been spawned to monitor it. A +// *QMPVersion is also returned. This structure contains the version and +// capabilities information returned by the QEMU instance in its welcome +// message. +// +// socket contains the path to the domain socket. cfg contains some options +// that can be specified by the caller, namely where the qemu package should +// send logs and QMP events. disconnectedCh is a channel that must be supplied +// by the caller. It is closed when an error occurs openning or writing to +// or reading from the unix domain socket. This implies that the QEMU instance +// that opened the socket has closed. +// +// If this function returns without error, callers should call QMP.Shutdown +// when they wish to stop monitoring the QMP instance. This is not strictly +// necessary if the QEMU instance exits and the disconnectedCh is closed, but +// doing so will not cause any problems. +// +// Commands can be sent to the QEMU instance via the QMP.Execute methods. +// These commands are executed serially, even if the QMP.Execute methods +// are called from different go routines. The QMP.Execute methods will +// block until they have received a success or failure message from QMP, +// i.e., {"return": {}} or {"error":{}}, and in some cases certain events +// are received. +func QMPStart(ctx context.Context, socket string, cfg QMPConfig, disconnectedCh chan struct{}) (*QMP, *QMPVersion, error) { + if cfg.Logger == nil { + cfg.Logger = qmpNullLogger{} + } + dialer := net.Dialer{Cancel: ctx.Done()} + conn, err := dialer.Dial("unix", socket) + if err != nil { + cfg.Logger.Warningf("Unable to connect to unix socket (%s): %v", socket, err) + close(disconnectedCh) + return nil, nil, err + } + + connectedCh := make(chan *QMPVersion) + + var version *QMPVersion + q := startQMPLoop(conn, cfg, connectedCh, disconnectedCh) + select { + case <-ctx.Done(): + q.Shutdown() + <-disconnectedCh + return nil, nil, fmt.Errorf("Canceled by caller") + case <-disconnectedCh: + return nil, nil, fmt.Errorf("Lost connection to VM") + case version = <-connectedCh: + if version == nil { + return nil, nil, fmt.Errorf("Failed to find QMP version information") + } + } + + return q, version, nil +} + +// Shutdown closes the domain socket used to monitor a QEMU instance and +// terminates all the go routines spawned by QMPStart to manage that instance. +// QMP.Shutdown does not shut down the running instance. Calling QMP.Shutdown +// will result in the disconnectedCh channel being closed, indicating that we +// have lost connection to the QMP instance. In this case it does not indicate +// that the instance has quit. +// +// QMP.Shutdown should not be called concurrently with other QMP methods. It +// should not be called twice on the same QMP instance. +// +// Calling QMP.Shutdown after the disconnectedCh channel is closed is permitted but +// will not have any effect. +func (q *QMP) Shutdown() { + close(q.cmdCh) +} + +// ExecuteQMPCapabilities executes the qmp_capabilities command on the instance. +func (q *QMP) ExecuteQMPCapabilities(ctx context.Context) error { + return q.executeCommand(ctx, "qmp_capabilities", nil, nil) +} + +// ExecuteStop sends the stop command to the instance. +func (q *QMP) ExecuteStop(ctx context.Context) error { + return q.executeCommand(ctx, "stop", nil, nil) +} + +// ExecuteCont sends the cont command to the instance. +func (q *QMP) ExecuteCont(ctx context.Context) error { + return q.executeCommand(ctx, "cont", nil, nil) +} + +// ExecuteSystemPowerdown sends the system_powerdown command to the instance. +// This function will block until the SHUTDOWN event is received. +func (q *QMP) ExecuteSystemPowerdown(ctx context.Context) error { + filter := &qmpEventFilter{ + eventName: "SHUTDOWN", + } + return q.executeCommand(ctx, "system_powerdown", nil, filter) +} + +// ExecuteQuit sends the quit command to the instance, terminating +// the QMP instance immediately. +func (q *QMP) ExecuteQuit(ctx context.Context) error { + return q.executeCommand(ctx, "quit", nil, nil) +} + +// ExecuteBlockdevAdd sends a blockdev-add to the QEMU instance. device is the +// path of the device to add, e.g., /dev/rdb0, and blockdevID is an identifier +// used to name the device. As this identifier will be passed directly to QMP, +// it must obey QMP's naming rules, e,g., it must start with a letter. +func (q *QMP) ExecuteBlockdevAdd(ctx context.Context, device, blockdevID string) error { + args := map[string]interface{}{ + "options": map[string]interface{}{ + "driver": "raw", + "file": map[string]interface{}{ + "driver": "file", + "filename": device, + }, + "id": blockdevID, + }, + } + return q.executeCommand(ctx, "blockdev-add", args, nil) +} + +// ExecuteDeviceAdd adds the guest portion of a device to a QEMU instance +// using the device_add command. blockdevID should match the blockdevID passed +// to a previous call to ExecuteBlockdevAdd. devID is the id of the device to +// add. Both strings must be valid QMP identifiers. driver is the name of the +// driver,e.g., virtio-blk-pci, and bus is the name of the bus. bus is optional. +func (q *QMP) ExecuteDeviceAdd(ctx context.Context, blockdevID, devID, driver, bus string) error { + args := map[string]interface{}{ + "id": devID, + "driver": driver, + "drive": blockdevID, + } + if bus != "" { + args["bus"] = bus + } + return q.executeCommand(ctx, "device_add", args, nil) +} + +// ExecuteXBlockdevDel deletes a block device by sending a x-blockdev-del command. +// blockdevID is the id of the block device to be deleted. Typically, this will +// match the id passed to ExecuteBlockdevAdd. It must be a valid QMP id. +func (q *QMP) ExecuteXBlockdevDel(ctx context.Context, blockdevID string) error { + args := map[string]interface{}{ + "id": blockdevID, + } + return q.executeCommand(ctx, "x-blockdev-del", args, nil) +} + +// ExecuteDeviceDel deletes guest portion of a QEMU device by sending a +// device_del command. devId is the identifier of the device to delete. +// Typically it would match the devID parameter passed to an earlier call +// to ExecuteDeviceAdd. It must be a valid QMP identidier. +// +// This method blocks until a DEVICE_DELETED event is received for devID. +func (q *QMP) ExecuteDeviceDel(ctx context.Context, devID string) error { + args := map[string]interface{}{ + "id": devID, + } + filter := &qmpEventFilter{ + eventName: "DEVICE_DELETED", + dataKey: "device", + dataValue: devID, + } + return q.executeCommand(ctx, "device_del", args, filter) +} diff --git a/qmp_test.go b/qmp_test.go new file mode 100644 index 000000000..9519a176e --- /dev/null +++ b/qmp_test.go @@ -0,0 +1,697 @@ +/* +// Copyright (c) 2016 Intel Corporation +// +// 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. +*/ + +package qemu + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + "log" + "sync" + "testing" + "time" + + "golang.org/x/net/context" + + "github.com/01org/ciao/testutil" +) + +const ( + microStr = "50" + minorStr = "6" + majorStr = "2" + micro = 50 + minor = 6 + major = 2 + cap1 = "one" + cap2 = "two" + qmpHello = `{ "QMP": { "version": { "qemu": { "micro": ` + microStr + `, "minor": ` + minorStr + `, "major": ` + majorStr + ` }, "package": ""}, "capabilities": ["` + cap1 + `","` + cap2 + `"]}}` + "\n" + qmpSuccess = `{ "return": {}}` + "\n" + qmpFailure = `{ "error": {}}` + "\n" +) + +type qmpTestLogger struct{} + +func (l qmpTestLogger) V(level int32) bool { + return true +} + +func (l qmpTestLogger) Infof(format string, v ...interface{}) { + log.Printf(format, v...) +} + +func (l qmpTestLogger) Warningf(format string, v ...interface{}) { + l.Infof(format, v) +} + +func (l qmpTestLogger) Errorf(format string, v ...interface{}) { + l.Infof(format, v) +} + +type qmpTestCommand struct { + name string + args map[string]interface{} +} + +type qmpTestEvent struct { + name string + data map[string]interface{} + timestamp map[string]interface{} + after time.Duration +} + +type qmpTestResult struct { + result string + data map[string]interface{} +} + +type qmpTestCommandBuffer struct { + newDataCh chan []byte + t *testing.T + buf *bytes.Buffer + cmds []qmpTestCommand + events []qmpTestEvent + results []qmpTestResult + currentCmd int + forceFail chan struct{} +} + +func newQMPTestCommandBuffer(t *testing.T) *qmpTestCommandBuffer { + b := &qmpTestCommandBuffer{ + newDataCh: make(chan []byte, 1), + t: t, + buf: bytes.NewBuffer([]byte{}), + forceFail: make(chan struct{}), + } + b.cmds = make([]qmpTestCommand, 0, 8) + b.events = make([]qmpTestEvent, 0, 8) + b.results = make([]qmpTestResult, 0, 8) + b.newDataCh <- []byte(qmpHello) + return b +} + +func (b *qmpTestCommandBuffer) startEventLoop(wg *sync.WaitGroup) { + wg.Add(1) + go func() { + for _, ev := range b.events { + time.Sleep(ev.after) + eventMap := map[string]interface{}{ + "event": ev.name, + } + + if ev.data != nil { + eventMap["data"] = ev.data + } + + if ev.timestamp != nil { + eventMap["timestamp"] = ev.timestamp + } + + encodedEvent, err := json.Marshal(&eventMap) + if err != nil { + b.t.Errorf("Unable to encode event: %v", err) + } + encodedEvent = append(encodedEvent, '\n') + b.newDataCh <- encodedEvent + } + wg.Done() + }() +} + +func (b *qmpTestCommandBuffer) AddCommmand(name string, args map[string]interface{}, + result string, data map[string]interface{}) { + b.cmds = append(b.cmds, qmpTestCommand{name, args}) + if data == nil { + data = make(map[string]interface{}) + } + b.results = append(b.results, qmpTestResult{result, data}) +} + +func (b *qmpTestCommandBuffer) AddEvent(name string, after time.Duration, + data map[string]interface{}, timestamp map[string]interface{}) { + b.events = append(b.events, qmpTestEvent{ + name: name, + data: data, + timestamp: timestamp, + after: after, + }) +} + +func (b *qmpTestCommandBuffer) Close() error { + close(b.newDataCh) + return nil +} + +func (b *qmpTestCommandBuffer) Read(p []byte) (n int, err error) { + if b.buf.Len() == 0 { + ok := false + var data []byte + select { + case <-b.forceFail: + return 0, errors.New("Connection shutdown") + case data, ok = <-b.newDataCh: + select { + case <-b.forceFail: + return 0, errors.New("Connection shutdown") + default: + } + } + if !ok { + return 0, nil + } + _, err := b.buf.Write(data) + if err != nil { + if err != nil { + b.t.Errorf("Unable to buffer result: %v", err) + } + } + } + return b.buf.Read(p) +} + +func (b *qmpTestCommandBuffer) Write(p []byte) (int, error) { + var cmdJSON map[string]interface{} + if b.currentCmd >= len(b.cmds) { + b.t.Fatalf("Unexpected command") + } + err := json.Unmarshal(p, &cmdJSON) + if err != nil { + b.t.Fatalf("Unexpected command") + } + cmdName := cmdJSON["execute"] + gotCmdName := cmdName.(string) + result := b.results[b.currentCmd].result + if gotCmdName != b.cmds[b.currentCmd].name { + b.t.Errorf("Unexpected command. Expected %s found %s", + b.cmds[b.currentCmd].name, gotCmdName) + result = "error" + } + resultMap := make(map[string]interface{}) + resultMap[result] = b.results[b.currentCmd].data + encodedRes, err := json.Marshal(&resultMap) + if err != nil { + b.t.Errorf("Unable to encode result: %v", err) + } + encodedRes = append(encodedRes, '\n') + b.newDataCh <- encodedRes + return len(p), nil +} + +func checkVersion(t *testing.T, connectedCh <-chan *QMPVersion) { + var version *QMPVersion + select { + case <-time.After(time.Second): + t.Fatal("Timed out waiting for qmp to connect") + case version = <-connectedCh: + } + + if version == nil { + t.Fatal("Invalid version information received") + } + if version.Micro != micro || version.Minor != minor || + version.Major != major { + t.Fatal("Invalid version number") + } + + if len(version.Capabilities) != 2 { + if version.Capabilities[0] != cap1 || version.Capabilities[1] != cap2 { + t.Fatal("Invalid capabilities") + } + } +} + +// Checks that a QMP Loop can be started and shutdown. +// +// We start a QMPLoop and shut it down. +// +// Loop should start up and shutdown correctly. The version information +// returned from startQMPLoop should be correct. +func TestQMPStartStopLoop(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + q.Shutdown() + <-disconnectedCh +} + +// Checks that the qmp_capabilities command is correctly sent. +// +// We start a QMPLoop, send the qmp_capabilities command and stop the +// loop. +// +// The qmp_capabilities should be correctly sent and the QMP loop +// should exit gracefully. +func TestQMPCapabilities(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommmand("qmp_capabilities", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + err := q.ExecuteQMPCapabilities(context.Background()) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} + +// Checks that the stop command is correctly sent. +// +// We start a QMPLoop, send the stop command and stop the +// loop. +// +// The stop command should be correctly sent and the QMP loop +// should exit gracefully. +func TestQMPStop(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommmand("stop", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + err := q.ExecuteStop(context.Background()) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} + +// Checks that the cont command is correctly sent. +// +// We start a QMPLoop, send the cont command and stop the +// loop. +// +// The cont command should be correctly sent and the QMP loop +// should exit gracefully. +func TestQMPCont(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommmand("cont", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + err := q.ExecuteCont(context.Background()) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} + +// Checks that the quit command is correctly sent. +// +// We start a QMPLoop, send the quit command and wait for the loop to exit. +// +// The quit command should be correctly sent and the QMP loop should exit +// gracefully without the test calling q.Shutdown(). +func TestQMPQuit(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommmand("quit", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + err := q.ExecuteQuit(context.Background()) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + close(buf.forceFail) + <-disconnectedCh +} + +// Checks that the blockdev-add command is correctly sent. +// +// We start a QMPLoop, send the blockdev-add command and stop the loop. +// +// The blockdev-add command should be correctly sent and the QMP loop should +// exit gracefully. +func TestQMPBlockdevAdd(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommmand("blockdev-add", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + err := q.ExecuteBlockdevAdd(context.Background(), "/dev/rbd0", + fmt.Sprintf("drive_%s", testutil.VolumeUUID)) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} + +// Checks that the device_add command is correctly sent. +// +// We start a QMPLoop, send the device_add command and stop the loop. +// +// The device_add command should be correctly sent and the QMP loop should +// exit gracefully. +func TestQMPDeviceAdd(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommmand("device_add", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + blockdevID := fmt.Sprintf("drive_%s", testutil.VolumeUUID) + devID := fmt.Sprintf("device_%s", testutil.VolumeUUID) + err := q.ExecuteDeviceAdd(context.Background(), blockdevID, devID, + "virtio-blk-pci", "") + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} + +// Checks that the x-blockdev-del command is correctly sent. +// +// We start a QMPLoop, send the x-blockdev-del command and stop the loop. +// +// The x-blockdev-del command should be correctly sent and the QMP loop should +// exit gracefully. +func TestQMPXBlockdevDel(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommmand("x-blockdev-del", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + err := q.ExecuteXBlockdevDel(context.Background(), + fmt.Sprintf("drive_%s", testutil.VolumeUUID)) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} + +// Checks that the device_del command is correctly sent. +// +// We start a QMPLoop, send the device_del command and wait for it to complete. +// This command generates some events so we start a separate go routine to check +// that they are received. +// +// The device_del command should be correctly sent and the QMP loop should +// exit gracefully. We should also receive two events on the eventCh. +func TestQMPDeviceDel(t *testing.T) { + const ( + seconds = 1352167040730 + microsecondsEv1 = 123456 + microsecondsEv2 = 123556 + device = "device_" + testutil.VolumeUUID + path = "/dev/rbd0" + ) + + var wg sync.WaitGroup + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommmand("device_del", nil, "return", nil) + buf.AddEvent("DEVICE_DELETED", time.Millisecond*200, + map[string]interface{}{ + "path": path, + }, + map[string]interface{}{ + "seconds": seconds, + "microseconds": microsecondsEv1, + }) + buf.AddEvent("DEVICE_DELETED", time.Millisecond*200, + map[string]interface{}{ + "device": device, + "path": path, + }, + map[string]interface{}{ + "seconds": seconds, + "microseconds": microsecondsEv2, + }) + eventCh := make(chan QMPEvent) + cfg := QMPConfig{EventCh: eventCh, Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + wg.Add(1) + go func() { + for i := 0; i < 2; i++ { + select { + case <-eventCh: + case <-time.After(time.Second): + t.Error("Timedout waiting for event") + } + } + wg.Done() + }() + checkVersion(t, connectedCh) + buf.startEventLoop(&wg) + err := q.ExecuteDeviceDel(context.Background(), + fmt.Sprintf("device_%s", testutil.VolumeUUID)) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh + wg.Wait() +} + +// Checks that contexts can be used to timeout a command. +// +// We start a QMPLoop and send the device_del command with a context that times +// out after 1 second. We don't however arrangefor any DEVICE_DELETED events +// to be sent so the device_del command should not complete normally. We then +// shutdown the QMP loop. +// +// The device_del command should timeout after 1 second and the QMP loop +// should exit gracefully. +func TestQMPDeviceDelTimeout(t *testing.T) { + const ( + seconds = 1352167040730 + microsecondsEv1 = 123456 + device = "device_" + testutil.VolumeUUID + path = "/dev/rbd0" + ) + + var wg sync.WaitGroup + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommmand("device_del", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + ctx, cancel := context.WithTimeout(context.Background(), time.Second) + err := q.ExecuteDeviceDel(ctx, + fmt.Sprintf("device_%s", testutil.VolumeUUID)) + cancel() + if err != context.DeadlineExceeded { + t.Fatalf("Timeout expected found %v", err) + } + q.Shutdown() + <-disconnectedCh + wg.Wait() +} + +// Checks that contexts can be used to cancel a command. +// +// We start a QMPLoop and send two qmp_capabilities commands, cancelling +// the first. The second is allowed to proceed normally. +// +// The first call to ExecuteQMPCapabilities should fail with +// context.Canceled. The second should succeed. +func TestQMPCancel(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommmand("qmp_capabilities", nil, "return", nil) + buf.AddCommmand("qmp_capabilities", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + ctx, cancel := context.WithCancel(context.Background()) + cancel() + err := q.ExecuteQMPCapabilities(ctx) + if err != context.Canceled { + t.Fatalf("Unexpected error %v", err) + } + err = q.ExecuteQMPCapabilities(context.Background()) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} + +// Checks that the system_powerdown command is correctly sent. +// +// We start a QMPLoop, send the system_powerdown command and stop the loop. +// +// The system_powerdown command should be correctly sent and should return +// as we've provisioned a SHUTDOWN event. The QMP loop should exit gracefully. +func TestQMPSystemPowerdown(t *testing.T) { + const ( + seconds = 1352167040730 + microsecondsEv1 = 123456 + ) + + var wg sync.WaitGroup + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommmand("system_powerdown", nil, "return", nil) + buf.AddEvent("SHUTDOWN", time.Millisecond*100, + nil, + map[string]interface{}{ + "seconds": seconds, + "microseconds": microsecondsEv1, + }) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + buf.startEventLoop(&wg) + err := q.ExecuteSystemPowerdown(context.Background()) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh + wg.Wait() +} + +// Checks that events can be received and parsed. +// +// Two events are provisioned and the QMPLoop is started with an valid eventCh. +// We wait for both events to be received and check that their contents are +// correct. We then shutdown the QMP loop. +// +// Both events are received and their contents are correct. The QMP loop should +// shut down gracefully. +func TestQMPEvents(t *testing.T) { + const ( + seconds = 1352167040730 + microsecondsEv1 = 123456 + microsecondsEv2 = 123556 + device = "device_" + testutil.VolumeUUID + path = "/dev/rbd0" + ) + var wg sync.WaitGroup + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddEvent("DEVICE_DELETED", time.Millisecond*100, + map[string]interface{}{ + "device": device, + "path": path, + }, + map[string]interface{}{ + "seconds": seconds, + "microseconds": microsecondsEv1, + }) + buf.AddEvent("POWERDOWN", time.Millisecond*200, nil, + map[string]interface{}{ + "seconds": seconds, + "microseconds": microsecondsEv2, + }) + eventCh := make(chan QMPEvent) + cfg := QMPConfig{EventCh: eventCh, Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + buf.startEventLoop(&wg) + + ev := <-eventCh + if ev.Name != "DEVICE_DELETED" { + t.Errorf("incorrect event name received. Expected %s, found %s", + "DEVICE_DELETED", ev.Name) + } + if ev.Timestamp != time.Unix(seconds, microsecondsEv1) { + t.Error("incorrect timestamp") + } + deviceName := ev.Data["device"].(string) + if deviceName != device { + t.Errorf("Unexpected device field. Expected %s, found %s", + "device_"+testutil.VolumeUUID, device) + } + pathName := ev.Data["path"].(string) + if pathName != path { + t.Errorf("Unexpected path field. Expected %s, found %s", + "/dev/rbd0", path) + } + + ev = <-eventCh + if ev.Name != "POWERDOWN" { + t.Errorf("incorrect event name received. Expected %s, found %s", + "POWERDOWN", ev.Name) + } + if ev.Timestamp != time.Unix(seconds, microsecondsEv2) { + t.Error("incorrect timestamp") + } + if ev.Data != nil { + t.Errorf("event data expected to be nil") + } + + q.Shutdown() + + select { + case _, ok := <-eventCh: + if ok { + t.Errorf("Expected eventCh to be closed") + } + case <-time.After(time.Second): + t.Error("Timed out waiting for eventCh to close") + } + + <-disconnectedCh + wg.Wait() +} + +// Checks that commands issued after the QMP loop exits fail (and don't hang) +// +// We start the QMP loop but force it to fail immediately simulating a QEMU +// instance exit. We then send two qmp_cabilities commands. +// +// Both commands should fail with an error. The QMP loop should exit. +func TestQMPLostLoop(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + close(buf.forceFail) + buf.AddCommmand("qmp_capabilities", nil, "return", nil) + err := q.ExecuteQMPCapabilities(context.Background()) + if err == nil { + t.Error("Expected executeQMPCapabilities to fail") + } + <-disconnectedCh + buf.AddCommmand("qmp_capabilities", nil, "return", nil) + err = q.ExecuteQMPCapabilities(context.Background()) + if err == nil { + t.Error("Expected executeQMPCapabilities to fail") + } +} From 306f54a90780b3b8f833fd7b9217890581d98b25 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Fri, 26 Aug 2016 15:31:45 +0100 Subject: [PATCH 002/385] ciao-launcher, qemu: Move launchQemu to qemu The launcher function launchQemu has been moved to the qemu package and is now called LaunchQemu. Signed-off-by: Mark Ryan --- qemu.go | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ qmp.go | 3 --- 2 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 qemu.go diff --git a/qemu.go b/qemu.go new file mode 100644 index 000000000..a98928cd3 --- /dev/null +++ b/qemu.go @@ -0,0 +1,62 @@ +/* +// Copyright (c) 2016 Intel Corporation +// +// 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. +*/ + +package qemu + +import ( + "bytes" + "os" + "os/exec" + + "golang.org/x/net/context" +) + +// LaunchQemu can be used to launch a new qemu instance by invoking the +// qemu-system-x86_64 binary. +// +// The ctx parameter is not currently used but has been added so that the +// signature of this function will not need to change when launch cancellation +// is implemented. +// +// params is a slice of options to pass to qemu-system-x86_64 and fds is a +// list of open file descriptors that are to be passed to the spawned qemu +// process. +// +// This function writes its log output via logger parameter. +// +// The function will block until the launched qemu process exits. "", nil +// will be returned if the launch succeeds. Otherwise a string containing +// the contents of stderr + a Go error object will be returned. +func LaunchQemu(ctx context.Context, params []string, fds []*os.File, logger QMPLog) (string, error) { + errStr := "" + cmd := exec.Command("qemu-system-x86_64", params...) + if fds != nil { + logger.Infof("Adding extra file %v", fds) + cmd.ExtraFiles = fds + } + + var stderr bytes.Buffer + cmd.Stderr = &stderr + logger.Infof("launching qemu with: %v", params) + + err := cmd.Run() + if err != nil { + logger.Errorf("Unable to launch qemu: %v", err) + errStr = stderr.String() + logger.Errorf("%s", errStr) + } + return errStr, err +} diff --git a/qmp.go b/qmp.go index 11ca1ebbd..c95cdc35f 100644 --- a/qmp.go +++ b/qmp.go @@ -29,9 +29,6 @@ import ( "golang.org/x/net/context" ) -// Code to launch qemu -// move to package and document - // QMPLog is a logging interface used by the qemu package to log various // interesting pieces of information. Rather than introduce a dependency // on a given logging package, qemu presents this interface that allows From fc6bf8cf80377d26f4ab4d09e11f8581d778a9d5 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Fri, 26 Aug 2016 16:27:50 +0100 Subject: [PATCH 003/385] qemu: Add package documentation This commit adds some package documentation to the qemu package, including an overview of the package and an example of its use. Signed-off-by: Mark Ryan --- examples_test.go | 84 ++++++++++++++++++++++++++++++++++++++++++++++++ qemu.go | 8 +++++ 2 files changed, 92 insertions(+) create mode 100644 examples_test.go diff --git a/examples_test.go b/examples_test.go new file mode 100644 index 000000000..1fc9dcf3a --- /dev/null +++ b/examples_test.go @@ -0,0 +1,84 @@ +/* +// Copyright (c) 2016 Intel Corporation +// +// 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. +*/ + +package qemu_test + +import ( + "time" + + "github.com/01org/ciao/qemu" + "golang.org/x/net/context" +) + +func Example() { + params := make([]string, 0, 32) + + // Rootfs + params = append(params, "-drive", "file=/tmp/image.qcow2,if=virtio,aio=threads,format=qcow2") + // Network + params = append(params, "-net", "nic,model=virtio", "-net", "user") + // kvm + params = append(params, "-enable-kvm", "-cpu", "host") + // qmp socket + params = append(params, "-daemonize", "-qmp", "unix:/tmp/qmp-socket,server,nowait") + // resources + params = append(params, "-m", "370", "-smp", "cpus=2") + + // LaunchQemu should return as soon as the instance has launched as we + // are using the --daemonize flag. It will set up a unix domain socket + // called /tmp/qmp-socket that we can use to manage the instance. + _, err := qemu.LaunchQemu(context.Background(), params, nil, nil) + if err != nil { + panic(err) + } + + // This channel will be closed when the instance dies. + disconnectedCh := make(chan struct{}) + + // Set up our options. We don't want any logging or to receive any events. + cfg := qemu.QMPConfig{} + + // Start monitoring the qemu instance. This functon will block until we have + // connect to the QMP socket and received the welcome message. + q, _, err := qemu.QMPStart(context.Background(), "/tmp/qmp-socket", cfg, disconnectedCh) + if err != nil { + panic(err) + } + + // This has to be the first command executed in a QMP session. + err = q.ExecuteQMPCapabilities(context.Background()) + if err != nil { + panic(err) + } + + // Let's try to shutdown the VM. If it hasn't shutdown in 10 seconds we'll + // send a quit message. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + err = q.ExecuteSystemPowerdown(ctx) + cancel() + if err != nil { + err = q.ExecuteQuit(context.Background()) + if err != nil { + panic(err) + } + } + + q.Shutdown() + + // disconnectedCh is closed when the VM exits. This line blocks until this + // event occurs. + <-disconnectedCh +} diff --git a/qemu.go b/qemu.go index a98928cd3..4984ec63d 100644 --- a/qemu.go +++ b/qemu.go @@ -14,6 +14,14 @@ // limitations under the License. */ +// Package qemu provides methods and types for launching and managing QEMU +// instances. Instances can be launched with the LaunchQemu function and +// managed thereafter via QMPStart and the QMP object that this function +// returns. To manage a qemu instance after it has been launched you need +// to pass the -qmp option during launch requesting the qemu instance to create +// a QMP unix domain manageent socket, e.g., +// -qmp unix:/tmp/qmp-socket,server,nowait. For more information see the +// example below. package qemu import ( From 7f50a41525c3a1e87842866608fdd34973e30265 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Fri, 26 Aug 2016 16:29:35 +0100 Subject: [PATCH 004/385] qemu: Fix a silly bug in LaunchQemu There's no point in setting cmd.ExtraFiles if the fds array is an empty slice. This won't do any harm but is essentially a no-op. Signed-off-by: Mark Ryan --- qemu.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qemu.go b/qemu.go index 4984ec63d..88af0217b 100644 --- a/qemu.go +++ b/qemu.go @@ -51,7 +51,7 @@ import ( func LaunchQemu(ctx context.Context, params []string, fds []*os.File, logger QMPLog) (string, error) { errStr := "" cmd := exec.Command("qemu-system-x86_64", params...) - if fds != nil { + if len(fds) > 0 { logger.Infof("Adding extra file %v", fds) cmd.ExtraFiles = fds } From 7d4199a4491045526a3f582ad62788d933e14d80 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Thu, 1 Sep 2016 18:46:37 +0100 Subject: [PATCH 005/385] qemu: Fix ineffassign error Fix ciao/qemu/qmp.go:349:3: ineffectual assignment to ok. Strictly speaking this is a bug in ineffassign but it's easier to change the ciao code. Signed-off-by: Mark Ryan --- qmp.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qmp.go b/qmp.go index c95cdc35f..0634552fe 100644 --- a/qmp.go +++ b/qmp.go @@ -346,7 +346,7 @@ func (q *QMP) mainLoop() { DONE: for { - ok := false + var ok bool select { case cmd, ok := <-q.cmdCh: if !ok { From f57201989b82e683e0d437747b7318c3e24fe0d3 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Fri, 9 Sep 2016 18:45:31 +0200 Subject: [PATCH 006/385] qemu: Use null QMP logger when the logger parameter is nil Or else LaunchQemu() ends up dereferencing a nil pointer and panic'ing. Signed-off-by: Samuel Ortiz --- qemu.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/qemu.go b/qemu.go index 88af0217b..6014d36a9 100644 --- a/qemu.go +++ b/qemu.go @@ -49,6 +49,10 @@ import ( // will be returned if the launch succeeds. Otherwise a string containing // the contents of stderr + a Go error object will be returned. func LaunchQemu(ctx context.Context, params []string, fds []*os.File, logger QMPLog) (string, error) { + if logger == nil { + logger = qmpNullLogger{} + } + errStr := "" cmd := exec.Command("qemu-system-x86_64", params...) if len(fds) > 0 { From 5ccbaf2b5919172b56c731a9f4f440ece4ef2f06 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Mon, 12 Sep 2016 11:42:40 +0100 Subject: [PATCH 007/385] ciao-launcher, qemu: Upgrade to new context package. Ciao will use the new standard library context package from now on. This will allow us to use some of the new standard library functions such as DialContext. Partial fix for issue #541 Signed-off-by: Mark Ryan --- examples_test.go | 3 ++- qemu.go | 2 +- qmp.go | 2 +- qmp_test.go | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/examples_test.go b/examples_test.go index 1fc9dcf3a..e7ed12abb 100644 --- a/examples_test.go +++ b/examples_test.go @@ -19,8 +19,9 @@ package qemu_test import ( "time" + "context" + "github.com/01org/ciao/qemu" - "golang.org/x/net/context" ) func Example() { diff --git a/qemu.go b/qemu.go index 6014d36a9..4fe3b2b93 100644 --- a/qemu.go +++ b/qemu.go @@ -29,7 +29,7 @@ import ( "os" "os/exec" - "golang.org/x/net/context" + "context" ) // LaunchQemu can be used to launch a new qemu instance by invoking the diff --git a/qmp.go b/qmp.go index 0634552fe..bc2596823 100644 --- a/qmp.go +++ b/qmp.go @@ -26,7 +26,7 @@ import ( "net" "time" - "golang.org/x/net/context" + "context" ) // QMPLog is a logging interface used by the qemu package to log various diff --git a/qmp_test.go b/qmp_test.go index 9519a176e..4d60c0099 100644 --- a/qmp_test.go +++ b/qmp_test.go @@ -26,7 +26,7 @@ import ( "testing" "time" - "golang.org/x/net/context" + "context" "github.com/01org/ciao/testutil" ) From 37a1f5003d4d6972c6f7932c2dc63b93da287b64 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Mon, 12 Sep 2016 15:02:17 +0200 Subject: [PATCH 008/385] qemu: Add configuration structure to simplify LaunchQemu LaunchQemu() now takes a Config structure that contains some more descriptive fields than raw qemu parameter strings. LaunchQemu is now simpler to call and more extensible as supporting more qemu parameters would mean expanding Config instead of changing the API. Signed-off-by: Samuel Ortiz --- examples_test.go | 4 +-- qemu.go | 77 +++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 75 insertions(+), 6 deletions(-) diff --git a/examples_test.go b/examples_test.go index e7ed12abb..45607a044 100644 --- a/examples_test.go +++ b/examples_test.go @@ -38,10 +38,10 @@ func Example() { // resources params = append(params, "-m", "370", "-smp", "cpus=2") - // LaunchQemu should return as soon as the instance has launched as we + // LaunchCustomQemu should return as soon as the instance has launched as we // are using the --daemonize flag. It will set up a unix domain socket // called /tmp/qmp-socket that we can use to manage the instance. - _, err := qemu.LaunchQemu(context.Background(), params, nil, nil) + _, err := qemu.LaunchCustomQemu(context.Background(), "", params, nil, nil) if err != nil { panic(err) } diff --git a/qemu.go b/qemu.go index 4fe3b2b93..a0067a545 100644 --- a/qemu.go +++ b/qemu.go @@ -26,14 +26,78 @@ package qemu import ( "bytes" + "fmt" "os" "os/exec" "context" ) -// LaunchQemu can be used to launch a new qemu instance by invoking the -// qemu-system-x86_64 binary. +// Config is the qemu configuration structure. +// It allows for passing custom settings and parameters to the qemu API. +type Config struct { + // Path is the qemu binary path. + Path string + + // Ctx is not used at the moment. + Ctx context.Context + + // MachineType is the machine type to be used by qemu. + MachineType string + + // MachineTypeAcceleration are the machine acceleration option to be used by qemu. + MachineTypeAcceleration string + + // CPUModel is the CPU model to be used by qemu. + CPUModel string + + // ExtraParams is a slice of options to pass to qemu. + ExtraParams []string + + // FDs is a list of open file descriptors to be passed to the spawned qemu process + FDs []*os.File +} + +func appendMachineParams(params []string, config Config) []string { + if config.MachineType != "" && config.MachineTypeAcceleration != "" { + params = append(params, "-machine") + params = append(params, fmt.Sprintf("%s,accel=%s", config.MachineType, config.MachineTypeAcceleration)) + } + + return params +} + +func appendCPUModel(params []string, config Config) []string { + if config.CPUModel != "" { + params = append(params, "-cpu") + params = append(params, config.CPUModel) + } + + return params +} + +// LaunchQemu can be used to launch a new qemu instance. +// +// The Config parameter contains a set of qemu parameters and settings. +// +// This function writes its log output via logger parameter. +// +// The function will block until the launched qemu process exits. "", nil +// will be returned if the launch succeeds. Otherwise a string containing +// the contents of stderr + a Go error object will be returned. +func LaunchQemu(config Config, logger QMPLog) (string, error) { + var params []string + + params = appendMachineParams(params, config) + params = appendCPUModel(params, config) + params = append(params, config.ExtraParams...) + + return LaunchCustomQemu(config.Ctx, config.Path, params, config.FDs, logger) +} + +// LaunchCustomQemu can be used to launch a new qemu instance. +// +// The path parameter is used to pass the qemu executable path. // // The ctx parameter is not currently used but has been added so that the // signature of this function will not need to change when launch cancellation @@ -48,13 +112,18 @@ import ( // The function will block until the launched qemu process exits. "", nil // will be returned if the launch succeeds. Otherwise a string containing // the contents of stderr + a Go error object will be returned. -func LaunchQemu(ctx context.Context, params []string, fds []*os.File, logger QMPLog) (string, error) { +func LaunchCustomQemu(ctx context.Context, path string, params []string, fds []*os.File, logger QMPLog) (string, error) { if logger == nil { logger = qmpNullLogger{} } errStr := "" - cmd := exec.Command("qemu-system-x86_64", params...) + + if path == "" { + path = "qemu-system-x86_64" + } + + cmd := exec.Command(path, params...) if len(fds) > 0 { logger.Infof("Adding extra file %v", fds) cmd.ExtraFiles = fds From 171182709dc29aad693011e5b87285f59c32fc2f Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Mon, 12 Sep 2016 17:11:30 +0200 Subject: [PATCH 009/385] qemu: Add qemu's name to the Config structure This allows us to set the qemu -name option. Signed-off-by: Samuel Ortiz --- qemu.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/qemu.go b/qemu.go index a0067a545..821bdfd6a 100644 --- a/qemu.go +++ b/qemu.go @@ -42,6 +42,9 @@ type Config struct { // Ctx is not used at the moment. Ctx context.Context + // Name is the qemu guest name + Name string + // MachineType is the machine type to be used by qemu. MachineType string @@ -58,6 +61,15 @@ type Config struct { FDs []*os.File } +func appendName(params []string, config Config) []string { + if config.Name != "" { + params = append(params, "-name") + params = append(params, config.Name) + } + + return params +} + func appendMachineParams(params []string, config Config) []string { if config.MachineType != "" && config.MachineTypeAcceleration != "" { params = append(params, "-machine") @@ -88,6 +100,7 @@ func appendCPUModel(params []string, config Config) []string { func LaunchQemu(config Config, logger QMPLog) (string, error) { var params []string + params = appendName(params, config) params = appendMachineParams(params, config) params = appendCPUModel(params, config) params = append(params, config.ExtraParams...) From 5458de70ad1703cf03c7ae2d5080a7e96f1a2758 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Mon, 12 Sep 2016 17:33:09 +0200 Subject: [PATCH 010/385] qemu: Add a QMP socket field to the Config structure QMP sockets are used to send qemu specific commands to the running qemu process. The QMPSocket structure allows us to define the socket type we want, along with its name. Signed-off-by: Samuel Ortiz --- qemu.go | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/qemu.go b/qemu.go index 821bdfd6a..a550f9470 100644 --- a/qemu.go +++ b/qemu.go @@ -29,10 +29,26 @@ import ( "fmt" "os" "os/exec" + "strings" "context" ) +// QMPSocket represents a qemu QMP socket configuration. +type QMPSocket struct { + // Type is the socket type (e.g. "unix"). + Type string + + // Name is the socket name. + Name string + + // Server tells if this is a server socket. + Server bool + + // NoWait tells if qemu should block waiting for a client to connect. + NoWait bool +} + // Config is the qemu configuration structure. // It allows for passing custom settings and parameters to the qemu API. type Config struct { @@ -44,7 +60,7 @@ type Config struct { // Name is the qemu guest name Name string - + // MachineType is the machine type to be used by qemu. MachineType string @@ -54,6 +70,9 @@ type Config struct { // CPUModel is the CPU model to be used by qemu. CPUModel string + // QMPSocket is the QMP socket description + QMPSocket QMPSocket + // ExtraParams is a slice of options to pass to qemu. ExtraParams []string @@ -88,6 +107,26 @@ func appendCPUModel(params []string, config Config) []string { return params } +func appendQMPSocket(params []string, config Config) []string { + if config.QMPSocket.Type != "" && config.QMPSocket.Name != "" { + var qmpParams []string + + qmpParams = append(qmpParams, fmt.Sprintf("%s:", config.QMPSocket.Type)) + qmpParams = append(qmpParams, fmt.Sprintf("%s", config.QMPSocket.Name)) + if config.QMPSocket.Server == true { + qmpParams = append(qmpParams, ",server") + if config.QMPSocket.NoWait == true { + qmpParams = append(qmpParams, ",nowait") + } + } + + params = append(params, "-qmp") + params = append(params, strings.Join(qmpParams, "")) + } + + return params +} + // LaunchQemu can be used to launch a new qemu instance. // // The Config parameter contains a set of qemu parameters and settings. @@ -103,6 +142,8 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { params = appendName(params, config) params = appendMachineParams(params, config) params = appendCPUModel(params, config) + params = appendQMPSocket(params, config) + params = append(params, config.ExtraParams...) return LaunchCustomQemu(config.Ctx, config.Path, params, config.FDs, logger) From 8744dfe85eb440fdbbe02775312e378b215ce859 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Mon, 12 Sep 2016 17:46:14 +0200 Subject: [PATCH 011/385] qemu: Add a Device slice field to the Config structure We may need to support a large range of devices in the qemu created VM and the Device slice allows us to define which drivers are needed. Signed-off-by: Samuel Ortiz --- qemu.go | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/qemu.go b/qemu.go index a550f9470..8ce5f959f 100644 --- a/qemu.go +++ b/qemu.go @@ -34,6 +34,28 @@ import ( "context" ) +// Device describes a device to be created by qemu. +type Device struct { + // Type is the qemu device type + Type string + + // ID is the user defined device ID. + ID string + + // MemDev is the device memory identifier. + MemDev string + + // FSDev is the device filesystem identifier. + FSDev string + + // MountTag is the device filesystem mount point tag. + // It is only relevant when combined with FSDev. + MountTag string + + // CharDev is the device character device identifier. + CharDev string +} + // QMPSocket represents a qemu QMP socket configuration. type QMPSocket struct { // Type is the socket type (e.g. "unix"). @@ -70,9 +92,12 @@ type Config struct { // CPUModel is the CPU model to be used by qemu. CPUModel string - // QMPSocket is the QMP socket description + // QMPSocket is the QMP socket description. QMPSocket QMPSocket + // Devices is a list of devices for qemu to create. + Devices []Device + // ExtraParams is a slice of options to pass to qemu. ExtraParams []string @@ -127,6 +152,41 @@ func appendQMPSocket(params []string, config Config) []string { return params } +func appendDevices(params []string, config Config) []string { + for _, d := range config.Devices { + if d.Type != "" { + var deviceParams []string + + deviceParams = append(deviceParams, fmt.Sprintf("%s", d.Type)) + + if d.ID != "" { + deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", d.ID)) + } + + if d.MemDev != "" { + deviceParams = append(deviceParams, fmt.Sprintf(",memdev=%s", d.MemDev)) + } + + if d.CharDev != "" { + deviceParams = append(deviceParams, fmt.Sprintf(",chardev=%s", d.CharDev)) + } + + if d.FSDev != "" { + deviceParams = append(deviceParams, fmt.Sprintf(",fsdev=%s", d.FSDev)) + + if d.MountTag != "" { + deviceParams = append(deviceParams, fmt.Sprintf(",mount_tag=%s", d.MountTag)) + } + } + + params = append(params, "-device") + params = append(params, strings.Join(deviceParams, "")) + } + } + + return params +} + // LaunchQemu can be used to launch a new qemu instance. // // The Config parameter contains a set of qemu parameters and settings. @@ -143,6 +203,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { params = appendMachineParams(params, config) params = appendCPUModel(params, config) params = appendQMPSocket(params, config) + params = appendDevices(params, config) params = append(params, config.ExtraParams...) From b973bc59fb82ab8d273de6493a65af043163491d Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Mon, 12 Sep 2016 18:06:14 +0200 Subject: [PATCH 012/385] qemu: Add an Object slice field to the Config structure The Object slice tells qemu which specific object to create. Qemu objects can represent memory backend files, random number generators, TLS credentials, etc... Signed-off-by: Samuel Ortiz --- qemu.go | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/qemu.go b/qemu.go index 8ce5f959f..0908e7819 100644 --- a/qemu.go +++ b/qemu.go @@ -56,6 +56,22 @@ type Device struct { CharDev string } +// Object is a qemu object representation. +type Object struct { + // Type is the qemu object type + Type string + + // ID is the user defined object ID. + ID string + + // MemPath is the object's memory path. + // This is only relevant for memory objects + MemPath string + + // Size is the object size in bytes + Size uint64 +} + // QMPSocket represents a qemu QMP socket configuration. type QMPSocket struct { // Type is the socket type (e.g. "unix"). @@ -98,6 +114,9 @@ type Config struct { // Devices is a list of devices for qemu to create. Devices []Device + // Objects is a list of objects for qemu to create. + Objects []Object + // ExtraParams is a slice of options to pass to qemu. ExtraParams []string @@ -187,6 +206,33 @@ func appendDevices(params []string, config Config) []string { return params } +func appendObjects(params []string, config Config) []string { + for _, o := range config.Objects { + if o.Type != "" { + var objectParams []string + + objectParams = append(objectParams, o.Type) + + if o.ID != "" { + objectParams = append(objectParams, fmt.Sprintf(",id=%s", o.ID)) + } + + if o.MemPath != "" { + objectParams = append(objectParams, fmt.Sprintf(",mem-path=%s", o.MemPath)) + } + + if o.Size > 0 { + objectParams = append(objectParams, fmt.Sprintf(",size=%d", o.Size)) + } + + params = append(params, "-object") + params = append(params, strings.Join(objectParams, "")) + } + } + + return params +} + // LaunchQemu can be used to launch a new qemu instance. // // The Config parameter contains a set of qemu parameters and settings. @@ -204,6 +250,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { params = appendCPUModel(params, config) params = appendQMPSocket(params, config) params = appendDevices(params, config) + params = appendObjects(params, config) params = append(params, config.ExtraParams...) From 518ba627b13764340297ac7c1c05e9085f629b07 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Mon, 12 Sep 2016 18:13:09 +0200 Subject: [PATCH 013/385] qemu: Add a Kernel field to the Config structure The Kernel structure holds the guest kernel configuration: its path and its parameters. This is the kernel qemu will boot the VM from. Signed-off-by: Samuel Ortiz --- qemu.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/qemu.go b/qemu.go index 0908e7819..329cf51d6 100644 --- a/qemu.go +++ b/qemu.go @@ -87,6 +87,15 @@ type QMPSocket struct { NoWait bool } +// Kernel is the guest kernel configuration structure. +type Kernel struct { + // Path is the guest kernel path on the host filesystem. + Path string + + // Params is the kernel parameters string. + Params string +} + // Config is the qemu configuration structure. // It allows for passing custom settings and parameters to the qemu API. type Config struct { @@ -117,6 +126,9 @@ type Config struct { // Objects is a list of objects for qemu to create. Objects []Object + // Kernel is the guest kernel configuration. + Kernel Kernel + // ExtraParams is a slice of options to pass to qemu. ExtraParams []string @@ -233,6 +245,20 @@ func appendObjects(params []string, config Config) []string { return params } +func appendKernel(params []string, config Config) []string { + if config.Kernel.Path != "" { + params = append(params, "-kernel") + params = append(params, config.Kernel.Path) + + if config.Kernel.Params != "" { + params = append(params, "-append") + params = append(params, config.Kernel.Params) + } + } + + return params +} + // LaunchQemu can be used to launch a new qemu instance. // // The Config parameter contains a set of qemu parameters and settings. @@ -251,6 +277,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { params = appendQMPSocket(params, config) params = appendDevices(params, config) params = appendObjects(params, config) + params = appendKernel(params, config) params = append(params, config.ExtraParams...) From 73e2d53c9a46e339198ec8d3ef3a0984f39030be Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Mon, 12 Sep 2016 18:18:30 +0200 Subject: [PATCH 014/385] qemu: Add a Filesystem Devices slice field to the Config structure Each Filesystem device should have a corresponding "virtio-9p-pci" Device driver. They represent a filesystem to be exported through 9pfs. Signed-off-by: Samuel Ortiz --- qemu.go | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/qemu.go b/qemu.go index 329cf51d6..f7aeb7098 100644 --- a/qemu.go +++ b/qemu.go @@ -72,6 +72,22 @@ type Object struct { Size uint64 } +// FSDevice represents a qemu filesystem configuration. +type FSDevice struct { + // Type is the filesystem device type (e.g. "local") + Type string + + // ID is the filesystem identifier. + // It should match an existing Device ID. + ID string + + // Path is the host root path for this filesystem. + Path string + + // SecurityModel is the security model for this filesystem device. + SecurityModel string +} + // QMPSocket represents a qemu QMP socket configuration. type QMPSocket struct { // Type is the socket type (e.g. "unix"). @@ -126,6 +142,9 @@ type Config struct { // Objects is a list of objects for qemu to create. Objects []Object + // FilesystemDevices is a list of filesystem devices. + FilesystemDevices []FSDevice + // Kernel is the guest kernel configuration. Kernel Kernel @@ -245,6 +264,33 @@ func appendObjects(params []string, config Config) []string { return params } +func appendFilesystemDevices(params []string, config Config) []string { + for _, f := range config.FilesystemDevices { + if f.Type != "" { + var fsParams []string + + fsParams = append(fsParams, fmt.Sprintf("%s", f.Type)) + + if f.ID != "" { + fsParams = append(fsParams, fmt.Sprintf(",id=%s", f.ID)) + } + + if f.Path != "" { + fsParams = append(fsParams, fmt.Sprintf(",path=%s", f.Path)) + } + + if f.SecurityModel != "" { + fsParams = append(fsParams, fmt.Sprintf(",security-model=%s", f.SecurityModel)) + } + + params = append(params, "-fsdev") + params = append(params, strings.Join(fsParams, "")) + } + } + + return params +} + func appendKernel(params []string, config Config) []string { if config.Kernel.Path != "" { params = append(params, "-kernel") @@ -276,6 +322,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { params = appendCPUModel(params, config) params = appendQMPSocket(params, config) params = appendDevices(params, config) + params = appendFilesystemDevices(params, config) params = appendObjects(params, config) params = appendKernel(params, config) From 6239e846b7f64555e328a160a6a8ec2dfbc90629 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Mon, 12 Sep 2016 18:23:25 +0200 Subject: [PATCH 015/385] qemu: Add a Character Devices slice field to the Config structure Qemu character devices typically allow for sending traffic from the guest to the host by emulating a console, a tty, a serial device for example. Signed-off-by: Samuel Ortiz --- qemu.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/qemu.go b/qemu.go index f7aeb7098..4a6414cac 100644 --- a/qemu.go +++ b/qemu.go @@ -139,6 +139,9 @@ type Config struct { // Devices is a list of devices for qemu to create. Devices []Device + // CharDevices is a list of character devices for qemu to export. + CharDevices []string + // Objects is a list of objects for qemu to create. Objects []Object @@ -237,6 +240,15 @@ func appendDevices(params []string, config Config) []string { return params } +func appendCharDevices(params []string, config Config) []string { + for _, c := range config.CharDevices { + params = append(params, "-chardev") + params = append(params, c) + } + + return params +} + func appendObjects(params []string, config Config) []string { for _, o := range config.Objects { if o.Type != "" { @@ -322,6 +334,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { params = appendCPUModel(params, config) params = appendQMPSocket(params, config) params = appendDevices(params, config) + params = appendCharDevices(params, config) params = appendFilesystemDevices(params, config) params = appendObjects(params, config) params = appendKernel(params, config) From b198bc67e75b9e3ad24fe53d8acb21cc2f4d0f08 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Mon, 12 Sep 2016 18:30:33 +0200 Subject: [PATCH 016/385] qemu: Add a UUID field to the Config structure The qemu UUID will be used to set the guest system UUID. Signed-off-by: Samuel Ortiz --- qemu.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/qemu.go b/qemu.go index 4a6414cac..888807450 100644 --- a/qemu.go +++ b/qemu.go @@ -148,6 +148,9 @@ type Config struct { // FilesystemDevices is a list of filesystem devices. FilesystemDevices []FSDevice + // UUID is the qemu process UUID. + UUID string + // Kernel is the guest kernel configuration. Kernel Kernel @@ -303,6 +306,15 @@ func appendFilesystemDevices(params []string, config Config) []string { return params } +func appendUUID(params []string, config Config) []string { + if config.UUID != "" { + params = append(params, "-uuid") + params = append(params, config.UUID) + } + + return params +} + func appendKernel(params []string, config Config) []string { if config.Kernel.Path != "" { params = append(params, "-kernel") @@ -330,6 +342,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { var params []string params = appendName(params, config) + params = appendUUID(params, config) params = appendMachineParams(params, config) params = appendCPUModel(params, config) params = appendQMPSocket(params, config) From 7cf386a81ca950cb4e67a1b0183798d411e6eb01 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Mon, 12 Sep 2016 18:41:35 +0200 Subject: [PATCH 017/385] qemu: Add a Memory field to the Config structure The Memory field holds the guest memory configuration. It is used to define the current and maximum RAM is made available to the guest and how this amount of RAM is splitted into several slots. Signed-off-by: Samuel Ortiz --- qemu.go | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/qemu.go b/qemu.go index 888807450..fbf287512 100644 --- a/qemu.go +++ b/qemu.go @@ -103,6 +103,21 @@ type QMPSocket struct { NoWait bool } +// Memory is the guest memory configuration structure. +type Memory struct { + // Size is the amount of memory made available to the guest. + // It should be suffixed with M or G for sizes in megabytes or + // gigabytes respectively. + Size string + + // Slots is the amount of memory slots made available to the guest. + Slots uint8 + + // MaxMem is the maximum amount of memory that can be made available + // to the guest through e.g. hot pluggable memory. + MaxMem string +} + // Kernel is the guest kernel configuration structure. type Kernel struct { // Path is the guest kernel path on the host filesystem. @@ -154,6 +169,9 @@ type Config struct { // Kernel is the guest kernel configuration. Kernel Kernel + // Memory is the guest memory configuration. + Memory Memory + // ExtraParams is a slice of options to pass to qemu. ExtraParams []string @@ -315,6 +333,27 @@ func appendUUID(params []string, config Config) []string { return params } +func appendMemory(params []string, config Config) []string { + if config.Memory.Size != "" { + var memoryParams []string + + memoryParams = append(memoryParams, config.Memory.Size) + + if config.Memory.Slots > 0 { + memoryParams = append(memoryParams, fmt.Sprintf(",slots=%d", config.Memory.Slots)) + } + + if config.Memory.MaxMem != "" { + memoryParams = append(memoryParams, fmt.Sprintf(",maxmem=%s", config.Memory.MaxMem)) + } + + params = append(params, "-m") + params = append(params, strings.Join(memoryParams, "")) + } + + return params +} + func appendKernel(params []string, config Config) []string { if config.Kernel.Path != "" { params = append(params, "-kernel") @@ -346,6 +385,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { params = appendMachineParams(params, config) params = appendCPUModel(params, config) params = appendQMPSocket(params, config) + params = appendMemory(params, config) params = appendDevices(params, config) params = appendCharDevices(params, config) params = appendFilesystemDevices(params, config) From c63ec0965a9a58a3ace31e3d0dc4c9775b1b41c2 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Mon, 12 Sep 2016 18:50:01 +0200 Subject: [PATCH 018/385] qemu: Add a SMP field to the Config structure The SMP structure defines the amount of virtual CPUs, sockets, and threads per CPU that is made available to the guest. Signed-off-by: Samuel Ortiz --- qemu.go | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/qemu.go b/qemu.go index fbf287512..fc902da5a 100644 --- a/qemu.go +++ b/qemu.go @@ -103,6 +103,21 @@ type QMPSocket struct { NoWait bool } +// SMP is the multi processors configuration structure. +type SMP struct { + // CPUs is the number of VCPUs made available to qemu. + CPUs uint32 + + // Cores is the number of cores made available to qemu. + Cores uint32 + + // Threads is the number of threads made available to qemu. + Threads uint32 + + // Sockets is the number of sockets made available to qemu. + Sockets uint32 +} + // Memory is the guest memory configuration structure. type Memory struct { // Size is the amount of memory made available to the guest. @@ -172,6 +187,9 @@ type Config struct { // Memory is the guest memory configuration. Memory Memory + // SMP is the quest multi processors configuration. + SMP SMP + // ExtraParams is a slice of options to pass to qemu. ExtraParams []string @@ -354,6 +372,31 @@ func appendMemory(params []string, config Config) []string { return params } +func appendCPUs(params []string, config Config) []string { + if config.SMP.CPUs > 0 { + var SMPParams []string + + SMPParams = append(SMPParams, fmt.Sprintf("%d", config.SMP.CPUs)) + + if config.SMP.Cores > 0 { + SMPParams = append(SMPParams, fmt.Sprintf(",cores=%d", config.SMP.Cores)) + } + + if config.SMP.Threads > 0 { + SMPParams = append(SMPParams, fmt.Sprintf(",threads=%d", config.SMP.Threads)) + } + + if config.SMP.Sockets > 0 { + SMPParams = append(SMPParams, fmt.Sprintf(",sockets=%d", config.SMP.Sockets)) + } + + params = append(params, "-smp") + params = append(params, strings.Join(SMPParams, "")) + } + + return params +} + func appendKernel(params []string, config Config) []string { if config.Kernel.Path != "" { params = append(params, "-kernel") @@ -386,6 +429,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { params = appendCPUModel(params, config) params = appendQMPSocket(params, config) params = appendMemory(params, config) + params = appendCPUs(params, config) params = appendDevices(params, config) params = appendCharDevices(params, config) params = appendFilesystemDevices(params, config) From 612a5a9e5d17d715c8da8e98219c27bc4229984e Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Mon, 12 Sep 2016 19:07:32 +0200 Subject: [PATCH 019/385] qemu: Add a RTC field to the Config structure The RTC structure represents the guest Real Time Clock configuration. Signed-off-by: Samuel Ortiz --- qemu.go | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/qemu.go b/qemu.go index fc902da5a..bef338735 100644 --- a/qemu.go +++ b/qemu.go @@ -88,6 +88,18 @@ type FSDevice struct { SecurityModel string } +// RTC represents a qemu Real Time Clock configuration. +type RTC struct { + // Base is the RTC start time. + Base string + + // Clock is the is the RTC clock driver. + Clock string + + // DriftFix is the drift fixing mechanism. + DriftFix string +} + // QMPSocket represents a qemu QMP socket configuration. type QMPSocket struct { // Type is the socket type (e.g. "unix"). @@ -178,6 +190,9 @@ type Config struct { // FilesystemDevices is a list of filesystem devices. FilesystemDevices []FSDevice + // RTC is the qemu Real Time Clock configuration + RTC RTC + // UUID is the qemu process UUID. UUID string @@ -397,6 +412,27 @@ func appendCPUs(params []string, config Config) []string { return params } +func appendRTC(params []string, config Config) []string { + if config.RTC.Base != "" { + var RTCParams []string + + RTCParams = append(RTCParams, fmt.Sprintf("base=%s", config.RTC.Base)) + + if config.RTC.DriftFix != "" { + RTCParams = append(RTCParams, fmt.Sprintf(",driftfix=%s", config.RTC.DriftFix)) + } + + if config.RTC.Clock != "" { + RTCParams = append(RTCParams, fmt.Sprintf(",clock=%s", config.RTC.Clock)) + } + + params = append(params, "-rtc") + params = append(params, strings.Join(RTCParams, "")) + } + + return params +} + func appendKernel(params []string, config Config) []string { if config.Kernel.Path != "" { params = append(params, "-kernel") @@ -434,6 +470,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { params = appendCharDevices(params, config) params = appendFilesystemDevices(params, config) params = appendObjects(params, config) + params = appendRTC(params, config) params = appendKernel(params, config) params = append(params, config.ExtraParams...) From 4892d041e7889beccb7f3b128d86eadc66ee70c4 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Mon, 12 Sep 2016 19:13:52 +0200 Subject: [PATCH 020/385] qemu: Add a Global parameter field to the Config structure The Global string represents the set of default Device driver properties we want qemu to use. This is mostly useful for automatically created devices. Signed-off-by: Samuel Ortiz --- qemu.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/qemu.go b/qemu.go index bef338735..0013e6a44 100644 --- a/qemu.go +++ b/qemu.go @@ -205,6 +205,9 @@ type Config struct { // SMP is the quest multi processors configuration. SMP SMP + // GlobalParam is the -global parameter + GlobalParam string + // ExtraParams is a slice of options to pass to qemu. ExtraParams []string @@ -433,6 +436,15 @@ func appendRTC(params []string, config Config) []string { return params } +func appendGlobalParam(params []string, config Config) []string { + if config.GlobalParam != "" { + params = append(params, "-global") + params = append(params, config.GlobalParam) + } + + return params +} + func appendKernel(params []string, config Config) []string { if config.Kernel.Path != "" { params = append(params, "-kernel") @@ -472,6 +484,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { params = appendObjects(params, config) params = appendRTC(params, config) params = appendKernel(params, config) + params = appendGlobalParam(params, config) params = append(params, config.ExtraParams...) From d94b5af8755b88a2081015a5bb6785bce9e3df00 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Mon, 12 Sep 2016 19:15:38 +0200 Subject: [PATCH 021/385] qemu: Add a VGA parameter field to the Config structure The VGA string represents the type of VGA card qemu should emulate. Signed-off-by: Samuel Ortiz --- qemu.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/qemu.go b/qemu.go index 0013e6a44..dbc120a0d 100644 --- a/qemu.go +++ b/qemu.go @@ -193,6 +193,9 @@ type Config struct { // RTC is the qemu Real Time Clock configuration RTC RTC + // VGA is the qemu VGA mode. + VGA string + // UUID is the qemu process UUID. UUID string @@ -445,6 +448,15 @@ func appendGlobalParam(params []string, config Config) []string { return params } +func appendVGA(params []string, config Config) []string { + if config.VGA != "" { + params = append(params, "-vga") + params = append(params, config.VGA) + } + + return params +} + func appendKernel(params []string, config Config) []string { if config.Kernel.Path != "" { params = append(params, "-kernel") @@ -485,6 +497,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { params = appendRTC(params, config) params = appendKernel(params, config) params = appendGlobalParam(params, config) + params = appendVGA(params, config) params = append(params, config.ExtraParams...) From 15bce61a904020f43f18d2f4b7f3cecbdf24f381 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Mon, 12 Sep 2016 19:25:27 +0200 Subject: [PATCH 022/385] qemu: Group all machine configurations into one structure Here we group the machine type and acceleration together as they are defined through the same qemu parameter (-machine). Signed-off-by: Samuel Ortiz --- qemu.go | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/qemu.go b/qemu.go index dbc120a0d..ec721f683 100644 --- a/qemu.go +++ b/qemu.go @@ -34,6 +34,15 @@ import ( "context" ) +// Machine describes the machine type qemu will emulate. +type Machine struct { + // Type is the machine type to be used by qemu. + Type string + + // Acceleration are the machine acceleration options to be used by qemu. + Acceleration string +} + // Device describes a device to be created by qemu. type Device struct { // Type is the qemu device type @@ -166,11 +175,8 @@ type Config struct { // Name is the qemu guest name Name string - // MachineType is the machine type to be used by qemu. - MachineType string - - // MachineTypeAcceleration are the machine acceleration option to be used by qemu. - MachineTypeAcceleration string + // Machine + Machine Machine // CPUModel is the CPU model to be used by qemu. CPUModel string @@ -227,10 +233,18 @@ func appendName(params []string, config Config) []string { return params } -func appendMachineParams(params []string, config Config) []string { - if config.MachineType != "" && config.MachineTypeAcceleration != "" { +func appendMachine(params []string, config Config) []string { + if config.Machine.Type != "" { + var machineParams []string + + machineParams = append(machineParams, config.Machine.Type) + + if config.Machine.Acceleration != "" { + machineParams = append(machineParams, fmt.Sprintf(",accel=%s", config.Machine.Acceleration)) + } + params = append(params, "-machine") - params = append(params, fmt.Sprintf("%s,accel=%s", config.MachineType, config.MachineTypeAcceleration)) + params = append(params, strings.Join(machineParams, "")) } return params @@ -485,7 +499,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { params = appendName(params, config) params = appendUUID(params, config) - params = appendMachineParams(params, config) + params = appendMachine(params, config) params = appendCPUModel(params, config) params = appendQMPSocket(params, config) params = appendMemory(params, config) From fe1bdcd2f7e3eb7a3fbae34364f2be61da9a0ed9 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Mon, 12 Sep 2016 19:27:42 +0200 Subject: [PATCH 023/385] qemu: Remove the extra parameters field from the Config structure The extraParams is confusing and can conflict with the rest of the Config structure definitions. We remove it and will add new fields to that structure as needed. Signed-off-by: Samuel Ortiz --- qemu.go | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/qemu.go b/qemu.go index ec721f683..57790389f 100644 --- a/qemu.go +++ b/qemu.go @@ -175,12 +175,15 @@ type Config struct { // Name is the qemu guest name Name string - // Machine - Machine Machine + // UUID is the qemu process UUID. + UUID string // CPUModel is the CPU model to be used by qemu. CPUModel string + // Machine + Machine Machine + // QMPSocket is the QMP socket description. QMPSocket QMPSocket @@ -202,9 +205,6 @@ type Config struct { // VGA is the qemu VGA mode. VGA string - // UUID is the qemu process UUID. - UUID string - // Kernel is the guest kernel configuration. Kernel Kernel @@ -217,9 +217,6 @@ type Config struct { // GlobalParam is the -global parameter GlobalParam string - // ExtraParams is a slice of options to pass to qemu. - ExtraParams []string - // FDs is a list of open file descriptors to be passed to the spawned qemu process FDs []*os.File } @@ -513,8 +510,6 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { params = appendGlobalParam(params, config) params = appendVGA(params, config) - params = append(params, config.ExtraParams...) - return LaunchCustomQemu(config.Ctx, config.Path, params, config.FDs, logger) } From ebfa382d2e2170d592fa8ea2f7634b31524079ed Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Mon, 12 Sep 2016 19:43:39 +0200 Subject: [PATCH 024/385] qemu: Add a Knobs field to the Config structure The Knobs structure groups all qemu isolated boolean settings. For now this is -no-user-config, -no-defaults and -nographic. Signed-off-by: Samuel Ortiz --- qemu.go | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/qemu.go b/qemu.go index 57790389f..af09704c1 100644 --- a/qemu.go +++ b/qemu.go @@ -163,6 +163,18 @@ type Kernel struct { Params string } +// Knobs regroups a set of qemu boolean settings +type Knobs struct { + // NoUserConfig prevents qemu from loading user config files. + NoUserConfig bool + + // NoDefaults prevents qemu from creating default devices. + NoDefaults bool + + // NoGraphic completely disables graphic output. + NoGraphic bool +} + // Config is the qemu configuration structure. // It allows for passing custom settings and parameters to the qemu API. type Config struct { @@ -214,9 +226,12 @@ type Config struct { // SMP is the quest multi processors configuration. SMP SMP - // GlobalParam is the -global parameter + // GlobalParam is the -global parameter. GlobalParam string + // Knobs is a set of qemu boolean settings. + Knobs Knobs + // FDs is a list of open file descriptors to be passed to the spawned qemu process FDs []*os.File } @@ -482,6 +497,22 @@ func appendKernel(params []string, config Config) []string { return params } +func appendKnobs(params []string, config Config) []string { + if config.Knobs.NoUserConfig == true { + params = append(params, "-no-user-config") + } + + if config.Knobs.NoDefaults == true { + params = append(params, "-nodefaults") + } + + if config.Knobs.NoGraphic == true { + params = append(params, "-nographic") + } + + return params +} + // LaunchQemu can be used to launch a new qemu instance. // // The Config parameter contains a set of qemu parameters and settings. @@ -509,6 +540,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { params = appendKernel(params, config) params = appendGlobalParam(params, config) params = appendVGA(params, config) + params = appendKnobs(params, config) return LaunchCustomQemu(config.Ctx, config.Path, params, config.FDs, logger) } From 54d32c24145f865b3b61df526b1818ac65267be0 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Tue, 13 Sep 2016 12:20:44 +0200 Subject: [PATCH 025/385] qemu: Add parameters adding unit tests We only test the Machine parameters for now. Signed-off-by: Samuel Ortiz --- qemu_test.go | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 qemu_test.go diff --git a/qemu_test.go b/qemu_test.go new file mode 100644 index 000000000..d2321a311 --- /dev/null +++ b/qemu_test.go @@ -0,0 +1,58 @@ +/* +// Copyright (c) 2016 Intel Corporation +// +// 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. +*/ + +package qemu + +import ( + // "fmt" + "strings" + "testing" +) + +func testAppend(structure interface{}, expected string, t *testing.T) { + var params []string + + switch s := structure.(type) { + case Machine: + config := Config{ + Machine: s, + } + + params = appendMachine([]string{}, config) + } + + result := strings.Join(params, " ") + if result != expected { + t.Fatalf("Failed to append Machine [%s] != [%s]", result, expected) + } +} + +var machineString = "-machine pc-lite,accel=kvm,kernel_irqchip,nvdimm" + +func TestAppendMachine(t *testing.T) { + machine := Machine{ + Type: "pc-lite", + Acceleration: "kvm,kernel_irqchip,nvdimm", + } + + testAppend(machine, machineString, t) +} + +func TestAppendEmptyMachine(t *testing.T) { + machine := Machine{} + + testAppend(machine, "", t) +} From 38e041dc9d1ff81b593223ee4586f18350530a6d Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Tue, 13 Sep 2016 12:31:24 +0200 Subject: [PATCH 026/385] qemu: Add Device unit tests We add a NVDIMM, a filesystem and an empty device. Signed-off-by: Samuel Ortiz --- qemu_test.go | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/qemu_test.go b/qemu_test.go index d2321a311..e19f65930 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -32,6 +32,13 @@ func testAppend(structure interface{}, expected string, t *testing.T) { } params = appendMachine([]string{}, config) + + case Device: + config := Config{ + Devices: []Device{s}, + } + + params = appendDevices([]string{}, config) } result := strings.Join(params, " ") @@ -56,3 +63,33 @@ func TestAppendEmptyMachine(t *testing.T) { testAppend(machine, "", t) } + +var deviceNVDIMMString = "-device nvdimm,id=nv0,memdev=mem0" + +func TestAppendDeviceNVDIMM(t *testing.T) { + device := Device{ + Type: "nvdimm", + ID: "nv0", + MemDev: "mem0", + } + + testAppend(device, deviceNVDIMMString, t) +} + +var deviceFSString = "-device virtio-9p-pci,fsdev=workload9p,mount_tag=rootfs" + +func TestAppendDeviceFS(t *testing.T) { + device := Device{ + Type: "virtio-9p-pci", + FSDev: "workload9p", + MountTag: "rootfs", + } + + testAppend(device, deviceFSString, t) +} + +func TestAppendEmptyDevice(t *testing.T) { + device := Device{} + + testAppend(device, "", t) +} From 8aeb3d45aa670a57933cdf87763b7f73666c199e Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Tue, 13 Sep 2016 12:38:18 +0200 Subject: [PATCH 027/385] qemu: Add an Object unit test We test that memory-backend-file and empty objects parameters are properly built. Signed-off-by: Samuel Ortiz --- qemu_test.go | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/qemu_test.go b/qemu_test.go index e19f65930..a86b193b7 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -39,11 +39,18 @@ func testAppend(structure interface{}, expected string, t *testing.T) { } params = appendDevices([]string{}, config) + + case Object: + config := Config{ + Objects: []Object{s}, + } + + params = appendObjects([]string{}, config) } result := strings.Join(params, " ") if result != expected { - t.Fatalf("Failed to append Machine [%s] != [%s]", result, expected) + t.Fatalf("Failed to append parameters [%s] != [%s]", result, expected) } } @@ -93,3 +100,22 @@ func TestAppendEmptyDevice(t *testing.T) { testAppend(device, "", t) } + +var objectMemoryString = "-object memory-backend-file,id=mem0,mem-path=/root,size=65536" + +func TestAppendObjectMemory(t *testing.T) { + object := Object{ + Type: "memory-backend-file", + ID: "mem0", + MemPath: "/root", + Size: 1 << 16, + } + + testAppend(object, objectMemoryString, t) +} + +func TestAppendEmptyObject(t *testing.T) { + device := Device{} + + testAppend(device, "", t) +} From 8e495f6eff5a5ab5f4afde9517251424b328d152 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Tue, 13 Sep 2016 12:42:41 +0200 Subject: [PATCH 028/385] qemu: Add a Knobs unit test We test that all true and all false knobs parameters are properly built. Signed-off-by: Samuel Ortiz --- qemu_test.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/qemu_test.go b/qemu_test.go index a86b193b7..3e38ca59c 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -46,6 +46,13 @@ func testAppend(structure interface{}, expected string, t *testing.T) { } params = appendObjects([]string{}, config) + + case Knobs: + config := Config{ + Knobs: s, + } + + params = appendKnobs([]string{}, config) } result := strings.Join(params, " ") @@ -119,3 +126,25 @@ func TestAppendEmptyObject(t *testing.T) { testAppend(device, "", t) } + +var knobsString = "-no-user-config -nodefaults -nographic" + +func TestAppendKnobsAllTrue(t *testing.T) { + knobs := Knobs{ + NoUserConfig: true, + NoDefaults: true, + NoGraphic: true, + } + + testAppend(knobs, knobsString, t) +} + +func TestAppendKnobsAllFalse(t *testing.T) { + knobs := Knobs{ + NoUserConfig: false, + NoDefaults: false, + NoGraphic: false, + } + + testAppend(knobs, "", t) +} From 2ea9b9a385a2d4295257537af11848faeee4b30f Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Tue, 13 Sep 2016 12:50:49 +0200 Subject: [PATCH 029/385] qemu: Add a Kernel unit test We test that the kernel path and the kernel parameters are properly built. Signed-off-by: Samuel Ortiz --- qemu_test.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/qemu_test.go b/qemu_test.go index 3e38ca59c..e43e39c23 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -53,6 +53,13 @@ func testAppend(structure interface{}, expected string, t *testing.T) { } params = appendKnobs([]string{}, config) + + case Kernel: + config := Config{ + Kernel: s, + } + + params = appendKernel([]string{}, config) } result := strings.Join(params, " ") @@ -148,3 +155,14 @@ func TestAppendKnobsAllFalse(t *testing.T) { testAppend(knobs, "", t) } + +var kernelString = "-kernel /opt/vmlinux.container -append root=/dev/pmem0p1 rootflags=dax,data=ordered,errors=remount-ro rw rootfstype=ext4 tsc=reliable" + +func TestAppendKernel(t *testing.T) { + kernel := Kernel{ + Path: "/opt/vmlinux.container", + Params: "root=/dev/pmem0p1 rootflags=dax,data=ordered,errors=remount-ro rw rootfstype=ext4 tsc=reliable", + } + + testAppend(kernel, kernelString, t) +} From 7b2f7eb5d89ccb311484780bb74f0b2a7e536904 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Tue, 13 Sep 2016 13:00:59 +0200 Subject: [PATCH 030/385] qemu: Add Memory and SMP unit tests We test that the memory and SMP configuration parameters are properly built. Signed-off-by: Samuel Ortiz --- qemu_test.go | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/qemu_test.go b/qemu_test.go index e43e39c23..7f01c4b61 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -60,6 +60,20 @@ func testAppend(structure interface{}, expected string, t *testing.T) { } params = appendKernel([]string{}, config) + + case Memory: + config := Config{ + Memory: s, + } + + params = appendMemory([]string{}, config) + + case SMP: + config := Config{ + SMP: s, + } + + params = appendCPUs([]string{}, config) } result := strings.Join(params, " ") @@ -166,3 +180,28 @@ func TestAppendKernel(t *testing.T) { testAppend(kernel, kernelString, t) } + +var memoryString = "-m 2G,slots=2,maxmem=3G" + +func TestAppendMemory(t *testing.T) { + memory := Memory{ + Size: "2G", + Slots: 2, + MaxMem: "3G", + } + + testAppend(memory, memoryString, t) +} + +var cpusString = "-smp 2,cores=1,threads=2,sockets=2" + +func TestAppendCPUs(t *testing.T) { + smp := SMP{ + CPUs: 2, + Sockets: 2, + Cores: 1, + Threads: 2, + } + + testAppend(smp, cpusString, t) +} From 5ba8ef79df1e09d27be8d829a1abf74cc33df656 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Tue, 13 Sep 2016 14:29:42 +0200 Subject: [PATCH 031/385] qemu: Add QMP socket unit tests We test that the QMP socket parameter is properly built. Signed-off-by: Samuel Ortiz --- qemu_test.go | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/qemu_test.go b/qemu_test.go index 7f01c4b61..d973a090d 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -74,6 +74,13 @@ func testAppend(structure interface{}, expected string, t *testing.T) { } params = appendCPUs([]string{}, config) + + case QMPSocket: + config := Config{ + QMPSocket: s, + } + + params = appendQMPSocket([]string{}, config) } result := strings.Join(params, " ") @@ -205,3 +212,27 @@ func TestAppendCPUs(t *testing.T) { testAppend(smp, cpusString, t) } + +var qmpSocketServerString = "-qmp unix:cc-qmp,server,nowait" +var qmpSocketString = "-qmp unix:cc-qmp" + +func TestAppendQMPSocketServer(t *testing.T) { + qmp := QMPSocket{ + Type: "unix", + Name: "cc-qmp", + Server: true, + NoWait: true, + } + + testAppend(qmp, qmpSocketServerString, t) +} + +func TestAppendQMPSocket(t *testing.T) { + qmp := QMPSocket{ + Type: "unix", + Name: "cc-qmp", + Server: false, + } + + testAppend(qmp, qmpSocketString, t) +} From c0e2aacad28b92f9ce56c74999e44b677fbf68bb Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Tue, 13 Sep 2016 14:35:02 +0200 Subject: [PATCH 032/385] qemu: Add one unit test for the Config strings Here we test that name, UUID and the CPU model are properly built. Signed-off-by: Samuel Ortiz --- qemu_test.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/qemu_test.go b/qemu_test.go index d973a090d..948d931dc 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -236,3 +236,25 @@ func TestAppendQMPSocket(t *testing.T) { testAppend(qmp, qmpSocketString, t) } + +var qemuString = "-name cc-qemu -cpu host -uuid 123456789" + +func TestAppendStrings(t *testing.T) { + var params []string + + config := Config{ + Path: "qemu", + Name: "cc-qemu", + UUID: "123456789", + CPUModel: "host", + } + + params = appendName(params, config) + params = appendCPUModel(params, config) + params = appendUUID(params, config) + + result := strings.Join(params, " ") + if result != qemuString { + t.Fatalf("Failed to append parameters [%s] != [%s]", result, qemuString) + } +} From 137e7c72422f4e12baaf70d93a7e6ece1c7645f4 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Tue, 13 Sep 2016 19:52:06 +0200 Subject: [PATCH 033/385] qemu: Add a NetDevice slice to the Config structure The NetDevice structure represents a network device to be emulated by qemu. We also add the corresponding unit test. Signed-off-by: Samuel Ortiz --- qemu.go | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++ qemu_test.go | 21 +++++++++++++++++++++ 2 files changed, 74 insertions(+) diff --git a/qemu.go b/qemu.go index af09704c1..e4824d40c 100644 --- a/qemu.go +++ b/qemu.go @@ -175,6 +175,24 @@ type Knobs struct { NoGraphic bool } +// NetDevice represents a guest networking device +type NetDevice struct { + // Type is the netdev type (e.g. tap). + Type string + + // ID is the netdevice identifier. + ID string + + // IfName is the interface name, + IfName string + + // DownScript is the tap interface deconfiguration script. + DownScript string + + // Script is the tap interface configuration script. + Script string +} + // Config is the qemu configuration structure. // It allows for passing custom settings and parameters to the qemu API. type Config struct { @@ -202,6 +220,9 @@ type Config struct { // Devices is a list of devices for qemu to create. Devices []Device + // NetDevices is a list of networking devices for qemu to create. + NetDevices []NetDevice + // CharDevices is a list of character devices for qemu to export. CharDevices []string @@ -513,6 +534,37 @@ func appendKnobs(params []string, config Config) []string { return params } +func appendNetDevices(params []string, config Config) []string { + for _, d := range config.NetDevices { + if d.Type != "" { + var netdevParams []string + + netdevParams = append(netdevParams, fmt.Sprintf("%s", d.Type)) + + if d.ID != "" { + netdevParams = append(netdevParams, fmt.Sprintf(",id=%s", d.ID)) + } + + if d.IfName != "" { + netdevParams = append(netdevParams, fmt.Sprintf(",ifname=%s", d.IfName)) + } + + if d.DownScript != "" { + netdevParams = append(netdevParams, fmt.Sprintf(",downscript=%s", d.DownScript)) + } + + if d.Script != "" { + netdevParams = append(netdevParams, fmt.Sprintf(",script=%s", d.Script)) + } + + params = append(params, "-netdev") + params = append(params, strings.Join(netdevParams, "")) + } + } + + return params +} + // LaunchQemu can be used to launch a new qemu instance. // // The Config parameter contains a set of qemu parameters and settings. @@ -533,6 +585,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { params = appendMemory(params, config) params = appendCPUs(params, config) params = appendDevices(params, config) + params = appendNetDevices(params, config) params = appendCharDevices(params, config) params = appendFilesystemDevices(params, config) params = appendObjects(params, config) diff --git a/qemu_test.go b/qemu_test.go index 948d931dc..4eef5bece 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -81,6 +81,13 @@ func testAppend(structure interface{}, expected string, t *testing.T) { } params = appendQMPSocket([]string{}, config) + + case NetDevice: + config := Config{ + NetDevices: []NetDevice{s}, + } + + params = appendNetDevices([]string{}, config) } result := strings.Join(params, " ") @@ -258,3 +265,17 @@ func TestAppendStrings(t *testing.T) { t.Fatalf("Failed to append parameters [%s] != [%s]", result, qemuString) } } + +var netdevString = "-netdev tap,id=ceth0,ifname=ceth0,downscript=no,script=no" + +func TestAppendNetDevices(t *testing.T) { + netdev := NetDevice{ + Type: "tap", + ID: "ceth0", + IfName: "ceth0", + Script: "no", + DownScript: "no", + } + + testAppend(netdev, netdevString, t) +} From 4780e2371f6025d7b00ba14d039b03fe6ad95cbb Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Thu, 15 Sep 2016 13:21:24 +0200 Subject: [PATCH 034/385] qemu: Add multi-queue and vhost definitions to NetDevice We can now specify if we want vhost to be enabled and wich fds we should use for multiqueue support. Signed-off-by: Samuel Ortiz --- qemu.go | 21 +++++++++++++++++++++ qemu_test.go | 5 +++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/qemu.go b/qemu.go index e4824d40c..3a035439b 100644 --- a/qemu.go +++ b/qemu.go @@ -191,6 +191,13 @@ type NetDevice struct { // Script is the tap interface configuration script. Script string + + // FDs represents the list of already existing file descriptors to be used. + // This is mostly useful for mq support. + FDs []int + + // VHost enables virtio device emulation from the host kernel instead of from qemu. + VHost bool } // Config is the qemu configuration structure. @@ -557,6 +564,20 @@ func appendNetDevices(params []string, config Config) []string { netdevParams = append(netdevParams, fmt.Sprintf(",script=%s", d.Script)) } + if len(d.FDs) > 0 { + var fdParams []string + + for _, fd := range d.FDs { + fdParams = append(fdParams, fmt.Sprintf("%d", fd)) + } + + netdevParams = append(netdevParams, fmt.Sprintf(",fds=%s", strings.Join(fdParams, ":"))) + } + + if d.VHost == true { + netdevParams = append(netdevParams, ",vhost=on") + } + params = append(params, "-netdev") params = append(params, strings.Join(netdevParams, "")) } diff --git a/qemu_test.go b/qemu_test.go index 4eef5bece..6d634bb95 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -266,15 +266,16 @@ func TestAppendStrings(t *testing.T) { } } -var netdevString = "-netdev tap,id=ceth0,ifname=ceth0,downscript=no,script=no" +var netdevString = "-netdev tap,id=ceth0,downscript=no,script=no,fds=8:9:10,vhost=on" func TestAppendNetDevices(t *testing.T) { netdev := NetDevice{ Type: "tap", ID: "ceth0", - IfName: "ceth0", Script: "no", DownScript: "no", + FDs: []int{8, 9, 10}, + VHost: true, } testAppend(netdev, netdevString, t) From eda8607cc66db1fcf7e9232e909e2e100d54b7ee Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Thu, 15 Sep 2016 14:45:21 +0200 Subject: [PATCH 035/385] qemu: Add netdev options to the Device structure With the NetDev and MACAddress strings, we can now create networking device drivers. We also add a unit test for netdev Device creation. Signed-off-by: Samuel Ortiz --- qemu.go | 22 ++++++++++++++++++---- qemu_test.go | 16 ++++++++++++++-- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/qemu.go b/qemu.go index 3a035439b..850269369 100644 --- a/qemu.go +++ b/qemu.go @@ -45,8 +45,8 @@ type Machine struct { // Device describes a device to be created by qemu. type Device struct { - // Type is the qemu device type - Type string + // Driver is the qemu device driver + Driver string // ID is the user defined device ID. ID string @@ -57,12 +57,18 @@ type Device struct { // FSDev is the device filesystem identifier. FSDev string + // NetDev is the networking device identifier. + NetDev string + // MountTag is the device filesystem mount point tag. // It is only relevant when combined with FSDev. MountTag string // CharDev is the device character device identifier. CharDev string + + // MACAddress is the networking device interface MAC address. + MACAddress string } // Object is a qemu object representation. @@ -321,10 +327,10 @@ func appendQMPSocket(params []string, config Config) []string { func appendDevices(params []string, config Config) []string { for _, d := range config.Devices { - if d.Type != "" { + if d.Driver != "" { var deviceParams []string - deviceParams = append(deviceParams, fmt.Sprintf("%s", d.Type)) + deviceParams = append(deviceParams, fmt.Sprintf("%s", d.Driver)) if d.ID != "" { deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", d.ID)) @@ -346,6 +352,14 @@ func appendDevices(params []string, config Config) []string { } } + if d.NetDev != "" { + deviceParams = append(deviceParams, fmt.Sprintf(",netdev=%s", d.NetDev)) + + if d.MACAddress != "" { + deviceParams = append(deviceParams, fmt.Sprintf(",mac=%s", d.MACAddress)) + } + } + params = append(params, "-device") params = append(params, strings.Join(deviceParams, "")) } diff --git a/qemu_test.go b/qemu_test.go index 6d634bb95..432096aca 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -117,7 +117,7 @@ var deviceNVDIMMString = "-device nvdimm,id=nv0,memdev=mem0" func TestAppendDeviceNVDIMM(t *testing.T) { device := Device{ - Type: "nvdimm", + Driver: "nvdimm", ID: "nv0", MemDev: "mem0", } @@ -129,7 +129,7 @@ var deviceFSString = "-device virtio-9p-pci,fsdev=workload9p,mount_tag=rootfs" func TestAppendDeviceFS(t *testing.T) { device := Device{ - Type: "virtio-9p-pci", + Driver: "virtio-9p-pci", FSDev: "workload9p", MountTag: "rootfs", } @@ -137,6 +137,18 @@ func TestAppendDeviceFS(t *testing.T) { testAppend(device, deviceFSString, t) } +var deviceNetworkString = "-device virtio-net-pci,netdev=eth0,mac=01:02:de:ad:be:ef" + +func TestAppendDeviceNetwork(t *testing.T) { + device := Device{ + Driver: "virtio-net-pci", + NetDev: "eth0", + MACAddress: "01:02:de:ad:be:ef", + } + + testAppend(device, deviceNetworkString, t) +} + func TestAppendEmptyDevice(t *testing.T) { device := Device{} From e543c3383d0374762cebe9eab6077425a466419c Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Fri, 16 Sep 2016 17:58:55 +0200 Subject: [PATCH 036/385] qemu: Probe each qemu device with a driver Having separate structures for the qemu driver definitions and each possible device definitions is confusing and error prone as one needs to be very careful using matching IDs and names in both structures. As the driver parameter can be derived from the device ones, this patch changes the Device and Driver structures to be linked together, i.e. each driver needs to have its corresponding device. For example this allows us to build the following 9pfs qemu parameters: "-fsdev local,id=foo,path=/bar/foo,security-model=none -device virtio-9p-pci,fsdev=foo,mount_tag=rootfs" from these structures: fsdev := FSDevice{ Driver: Local, ID: "foo", Path: "/bar/foo", MountTag: "rootfs", SecurityModel: None, } driver := Driver{ Driver: Virtio9P, Device: fsdev, } Signed-off-by: Samuel Ortiz --- qemu.go | 591 +++++++++++++++++++++++++++++++++------------------ qemu_test.go | 155 +++++++------- 2 files changed, 462 insertions(+), 284 deletions(-) diff --git a/qemu.go b/qemu.go index 850269369..6e2c06b29 100644 --- a/qemu.go +++ b/qemu.go @@ -43,38 +43,111 @@ type Machine struct { Acceleration string } -// Device describes a device to be created by qemu. -type Device struct { +// Device is the qemu device interface. +type Device interface { + Valid() bool +} + +// DeviceDriver is the Device driver string. +type DeviceDriver string + +const ( + // NVDIMM is the Non Volatile DIMM device driver. + NVDIMM DeviceDriver = "nvdimm" + + // Virtio9P is the 9pfs device driver. + Virtio9P = "virtio-9p-pci" + + // VirtioNet is the virt-io networking device driver. + VirtioNet = "virtio-net" + + // VirtioSerial is the serial device driver. + VirtioSerial = "virtio-serial-pci" + + // Console is the console device driver. + Console = "virtconsole" +) + +// Driver describes a driver to be used by qemu. +type Driver struct { // Driver is the qemu device driver - Driver string + Driver DeviceDriver // ID is the user defined device ID. ID string - // MemDev is the device memory identifier. - MemDev string - - // FSDev is the device filesystem identifier. - FSDev string - - // NetDev is the networking device identifier. - NetDev string - - // MountTag is the device filesystem mount point tag. - // It is only relevant when combined with FSDev. - MountTag string - - // CharDev is the device character device identifier. - CharDev string - - // MACAddress is the networking device interface MAC address. - MACAddress string + // Device is the device to be associated with this driver. + Device Device } +func (driver Driver) deviceMatch() bool { + switch driver.Device.(type) { + case Object: + if driver.Driver != NVDIMM { + return false + } + + case FSDevice: + if driver.Driver != Virtio9P { + return false + } + + case SerialDevice: + if driver.Driver != VirtioSerial { + return false + } + + case CharDevice: + if driver.Driver != Console { + return false + } + + case NetDevice: + if driver.Driver != VirtioNet { + return false + } + + default: + return false + } + + return true +} + +// Valid returns true if the Driver structure is valid and complete. +func (driver Driver) Valid() bool { + switch driver.Driver { + case NVDIMM: + case Console: + case VirtioSerial: + if driver.ID == "" || driver.Device.Valid() == false { + return false + } + + case Virtio9P: + case VirtioNet: + return driver.Device.Valid() + + default: + return false + } + + // Verify that the Device type matches the Driver. + return driver.deviceMatch() +} + +// ObjectType is a string representing a qemu object type. +type ObjectType string + +const ( + // MemoryBackendFile represents a guest memory mapped file. + MemoryBackendFile ObjectType = "memory-backend-file" +) + // Object is a qemu object representation. type Object struct { - // Type is the qemu object type - Type string + // Type is the qemu object type. + Type ObjectType // ID is the user defined object ID. ID string @@ -87,20 +160,173 @@ type Object struct { Size uint64 } +// Valid returns true if the Object structure is valid and complete. +func (object Object) Valid() bool { + switch object.Type { + case MemoryBackendFile: + if object.ID == "" || object.MemPath == "" || object.Size == 0 { + return false + } + } + + return true +} + +// FSDriver represents a qemu filesystem driver. +type FSDriver string + +// SecurityModelType is a qemu filesystem security model type. +type SecurityModelType string + +const ( + // Local is the local qemu filesystem driver. + Local FSDriver = "local" + + // Handle is the handle qemu filesystem driver. + Handle = "handle" + + // Proxy is the proxy qemu filesystem driver. + Proxy = "proxy" +) + +const ( + // None is like passthrough without failure reports. + None SecurityModelType = "none" + + // PassThrough uses the same credentials on both the host and guest. + PassThrough = "passthrough" + + // MappedXattr stores some files attributes as extended attributes. + MappedXattr = "mapped-xattr" + + // MappedFile stores some files attributes in the .virtfs directory. + MappedFile = "mapped-file" +) + // FSDevice represents a qemu filesystem configuration. type FSDevice struct { - // Type is the filesystem device type (e.g. "local") - Type string + // Driver is the filesystem driver backend. + Driver FSDriver // ID is the filesystem identifier. - // It should match an existing Device ID. ID string // Path is the host root path for this filesystem. Path string + // MountTag is the device filesystem mount point tag. + MountTag string + // SecurityModel is the security model for this filesystem device. - SecurityModel string + SecurityModel SecurityModelType +} + +// Valid returns true if the FSDevice structure is valid and complete. +func (fsdev FSDevice) Valid() bool { + if fsdev.ID == "" || fsdev.Path == "" || fsdev.MountTag == "" { + return false + } + + return true +} + +// CharDeviceBackend is the character device backend for qemu +type CharDeviceBackend string + +const ( + // Pipe creates a 2 way connection to the guest. + Pipe CharDeviceBackend = "pipe" + + // Socket creates a 2 way stream socket (TCP or Unix). + Socket = "socket" + + // CharConsole sends traffic from the guest to QEMU's standard output. + CharConsole = "console" + + // Serial sends traffic from the guest to a serial device on the host. + Serial = "serial" + + // TTY is an alias for Serial. + TTY = "tty" + + // PTY creates a new pseudo-terminal on the host and connect to it. + PTY = "pty" +) + +// CharDevice represents a qemu character device. +type CharDevice struct { + Backend CharDeviceBackend + + ID string + Path string +} + +// Valid returns true if the CharDevice structure is valid and complete. +func (cdev CharDevice) Valid() bool { + if cdev.ID == "" || cdev.Path == "" { + return false + } + + return true +} + +// NetDeviceType is a qemu networing device type. +type NetDeviceType string + +const ( + // TAP is a TAP networking device type. + TAP NetDeviceType = "tap" +) + +// NetDevice represents a guest networking device +type NetDevice struct { + // Type is the netdev type (e.g. tap). + Type NetDeviceType + + // ID is the netdevice identifier. + ID string + + // IfName is the interface name, + IFName string + + // DownScript is the tap interface deconfiguration script. + DownScript string + + // Script is the tap interface configuration script. + Script string + + // FDs represents the list of already existing file descriptors to be used. + // This is mostly useful for mq support. + FDs []int + + // VHost enables virtio device emulation from the host kernel instead of from qemu. + VHost bool + + // MACAddress is the networking device interface MAC address. + MACAddress string +} + +// Valid returns true if the NetDevice structure is valid and complete. +func (netdev NetDevice) Valid() bool { + if netdev.ID == "" || netdev.IFName == "" { + return false + } + + switch netdev.Type { + case TAP: + return true + default: + return false + } +} + +// SerialDevice represents a qemu serial device. +type SerialDevice struct { +} + +// Valid returns true if the SerialDevice structure is valid and complete. +func (dev SerialDevice) Valid() bool { + return true } // RTC represents a qemu Real Time Clock configuration. @@ -181,31 +407,6 @@ type Knobs struct { NoGraphic bool } -// NetDevice represents a guest networking device -type NetDevice struct { - // Type is the netdev type (e.g. tap). - Type string - - // ID is the netdevice identifier. - ID string - - // IfName is the interface name, - IfName string - - // DownScript is the tap interface deconfiguration script. - DownScript string - - // Script is the tap interface configuration script. - Script string - - // FDs represents the list of already existing file descriptors to be used. - // This is mostly useful for mq support. - FDs []int - - // VHost enables virtio device emulation from the host kernel instead of from qemu. - VHost bool -} - // Config is the qemu configuration structure. // It allows for passing custom settings and parameters to the qemu API. type Config struct { @@ -230,20 +431,8 @@ type Config struct { // QMPSocket is the QMP socket description. QMPSocket QMPSocket - // Devices is a list of devices for qemu to create. - Devices []Device - - // NetDevices is a list of networking devices for qemu to create. - NetDevices []NetDevice - - // CharDevices is a list of character devices for qemu to export. - CharDevices []string - - // Objects is a list of objects for qemu to create. - Objects []Object - - // FilesystemDevices is a list of filesystem devices. - FilesystemDevices []FSDevice + // Drivers is a list of device drivers for qemu to use. + Drivers []Driver // RTC is the qemu Real Time Clock configuration RTC RTC @@ -325,107 +514,156 @@ func appendQMPSocket(params []string, config Config) []string { return params } -func appendDevices(params []string, config Config) []string { - for _, d := range config.Devices { - if d.Driver != "" { - var deviceParams []string - - deviceParams = append(deviceParams, fmt.Sprintf("%s", d.Driver)) - - if d.ID != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", d.ID)) - } - - if d.MemDev != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",memdev=%s", d.MemDev)) - } - - if d.CharDev != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",chardev=%s", d.CharDev)) - } - - if d.FSDev != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",fsdev=%s", d.FSDev)) - - if d.MountTag != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",mount_tag=%s", d.MountTag)) - } - } - - if d.NetDev != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",netdev=%s", d.NetDev)) - - if d.MACAddress != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",mac=%s", d.MACAddress)) - } - } - - params = append(params, "-device") - params = append(params, strings.Join(deviceParams, "")) - } +func appendObject(params []string, object Object) ([]string, error) { + if object.Valid() == false { + return nil, fmt.Errorf("Invalid Object") } - return params -} + var objectParams []string -func appendCharDevices(params []string, config Config) []string { - for _, c := range config.CharDevices { - params = append(params, "-chardev") - params = append(params, c) + objectParams = append(objectParams, string(object.Type)) + + switch object.Type { + case MemoryBackendFile: + objectParams = append(objectParams, fmt.Sprintf(",id=%s", object.ID)) + objectParams = append(objectParams, fmt.Sprintf(",mem-path=%s", object.MemPath)) + objectParams = append(objectParams, fmt.Sprintf(",size=%d", object.Size)) } - return params + params = append(params, "-object") + params = append(params, strings.Join(objectParams, "")) + + return params, nil } -func appendObjects(params []string, config Config) []string { - for _, o := range config.Objects { - if o.Type != "" { - var objectParams []string - - objectParams = append(objectParams, o.Type) - - if o.ID != "" { - objectParams = append(objectParams, fmt.Sprintf(",id=%s", o.ID)) - } - - if o.MemPath != "" { - objectParams = append(objectParams, fmt.Sprintf(",mem-path=%s", o.MemPath)) - } - - if o.Size > 0 { - objectParams = append(objectParams, fmt.Sprintf(",size=%d", o.Size)) - } - - params = append(params, "-object") - params = append(params, strings.Join(objectParams, "")) - } +func appendFilesystemDevice(params []string, fsdev FSDevice) ([]string, error) { + if fsdev.Valid() == false { + return nil, fmt.Errorf("Invalid filesystem device") } - return params + var fsParams []string + + fsParams = append(fsParams, string(fsdev.Driver)) + fsParams = append(fsParams, fmt.Sprintf(",id=%s", fsdev.ID)) + fsParams = append(fsParams, fmt.Sprintf(",path=%s", fsdev.Path)) + fsParams = append(fsParams, fmt.Sprintf(",security-model=%s", fsdev.SecurityModel)) + + params = append(params, "-fsdev") + params = append(params, strings.Join(fsParams, "")) + + return params, nil } -func appendFilesystemDevices(params []string, config Config) []string { - for _, f := range config.FilesystemDevices { - if f.Type != "" { - var fsParams []string +func appendCharDevice(params []string, cdev CharDevice) ([]string, error) { + if cdev.Valid() == false { + return nil, fmt.Errorf("Invalid character device") + } - fsParams = append(fsParams, fmt.Sprintf("%s", f.Type)) + var cdevParams []string - if f.ID != "" { - fsParams = append(fsParams, fmt.Sprintf(",id=%s", f.ID)) - } + cdevParams = append(cdevParams, string(cdev.Backend)) + cdevParams = append(cdevParams, fmt.Sprintf(",id=%s", cdev.ID)) + cdevParams = append(cdevParams, fmt.Sprintf(",path=%s", cdev.Path)) - if f.Path != "" { - fsParams = append(fsParams, fmt.Sprintf(",path=%s", f.Path)) - } + params = append(params, "-chardev") + params = append(params, strings.Join(cdevParams, "")) - if f.SecurityModel != "" { - fsParams = append(fsParams, fmt.Sprintf(",security-model=%s", f.SecurityModel)) - } + return params, nil +} - params = append(params, "-fsdev") - params = append(params, strings.Join(fsParams, "")) +func appendNetDevice(params []string, netdev NetDevice) ([]string, error) { + if netdev.Valid() == false { + return nil, fmt.Errorf("Invalid network device") + } + + var netdevParams []string + + netdevParams = append(netdevParams, string(netdev.Type)) + netdevParams = append(netdevParams, fmt.Sprintf(",id=%s", netdev.ID)) + netdevParams = append(netdevParams, fmt.Sprintf(",ifname=%s", netdev.IFName)) + + if netdev.DownScript != "" { + netdevParams = append(netdevParams, fmt.Sprintf(",downscript=%s", netdev.DownScript)) + } + + if netdev.Script != "" { + netdevParams = append(netdevParams, fmt.Sprintf(",script=%s", netdev.Script)) + } + + if len(netdev.FDs) > 0 { + var fdParams []string + + for _, fd := range netdev.FDs { + fdParams = append(fdParams, fmt.Sprintf("%d", fd)) } + + netdevParams = append(netdevParams, fmt.Sprintf(",fds=%s", strings.Join(fdParams, ":"))) + } + + if netdev.VHost == true { + netdevParams = append(netdevParams, ",vhost=on") + } + + params = append(params, "-netdev") + params = append(params, strings.Join(netdevParams, "")) + + return params, nil +} + +func appendDrivers(params []string, config Config) []string { + for _, d := range config.Drivers { + if d.Valid() == false { + continue + } + + var driverParams []string + var err error + + driverParams = append(driverParams, fmt.Sprintf("%s", d.Driver)) + + switch device := d.Device.(type) { + case Object: + params, err = appendObject(params, device) + if err != nil { + continue + } + + driverParams = append(driverParams, fmt.Sprintf(",id=%s", d.ID)) + driverParams = append(driverParams, fmt.Sprintf(",memdev=%s", device.ID)) + + case FSDevice: + params, err = appendFilesystemDevice(params, device) + if err != nil { + continue + } + + driverParams = append(driverParams, fmt.Sprintf(",fsdev=%s", device.ID)) + driverParams = append(driverParams, fmt.Sprintf(",mount_tag=%s", device.MountTag)) + + case SerialDevice: + driverParams = append(driverParams, fmt.Sprintf(",id=%s", d.ID)) + + case CharDevice: + params, err = appendCharDevice(params, device) + if err != nil { + continue + } + + driverParams = append(driverParams, fmt.Sprintf(",chardev=%s", device.ID)) + driverParams = append(driverParams, fmt.Sprintf(",id=%s", d.ID)) + + case NetDevice: + params, err = appendNetDevice(params, device) + if err != nil { + continue + } + + driverParams = append(driverParams, fmt.Sprintf(",netdev=%s", device.ID)) + driverParams = append(driverParams, fmt.Sprintf(",mac=%s", device.MACAddress)) + } + + params = append(params, "-device") + params = append(params, strings.Join(driverParams, "")) } return params @@ -555,51 +793,6 @@ func appendKnobs(params []string, config Config) []string { return params } -func appendNetDevices(params []string, config Config) []string { - for _, d := range config.NetDevices { - if d.Type != "" { - var netdevParams []string - - netdevParams = append(netdevParams, fmt.Sprintf("%s", d.Type)) - - if d.ID != "" { - netdevParams = append(netdevParams, fmt.Sprintf(",id=%s", d.ID)) - } - - if d.IfName != "" { - netdevParams = append(netdevParams, fmt.Sprintf(",ifname=%s", d.IfName)) - } - - if d.DownScript != "" { - netdevParams = append(netdevParams, fmt.Sprintf(",downscript=%s", d.DownScript)) - } - - if d.Script != "" { - netdevParams = append(netdevParams, fmt.Sprintf(",script=%s", d.Script)) - } - - if len(d.FDs) > 0 { - var fdParams []string - - for _, fd := range d.FDs { - fdParams = append(fdParams, fmt.Sprintf("%d", fd)) - } - - netdevParams = append(netdevParams, fmt.Sprintf(",fds=%s", strings.Join(fdParams, ":"))) - } - - if d.VHost == true { - netdevParams = append(netdevParams, ",vhost=on") - } - - params = append(params, "-netdev") - params = append(params, strings.Join(netdevParams, "")) - } - } - - return params -} - // LaunchQemu can be used to launch a new qemu instance. // // The Config parameter contains a set of qemu parameters and settings. @@ -619,16 +812,12 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { params = appendQMPSocket(params, config) params = appendMemory(params, config) params = appendCPUs(params, config) - params = appendDevices(params, config) - params = appendNetDevices(params, config) - params = appendCharDevices(params, config) - params = appendFilesystemDevices(params, config) - params = appendObjects(params, config) + params = appendDrivers(params, config) params = appendRTC(params, config) - params = appendKernel(params, config) params = appendGlobalParam(params, config) params = appendVGA(params, config) params = appendKnobs(params, config) + params = appendKernel(params, config) return LaunchCustomQemu(config.Ctx, config.Path, params, config.FDs, logger) } diff --git a/qemu_test.go b/qemu_test.go index 432096aca..ec5a73af7 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -17,9 +17,10 @@ package qemu import ( - // "fmt" "strings" "testing" + + "github.com/01org/ciao/testutil" ) func testAppend(structure interface{}, expected string, t *testing.T) { @@ -33,19 +34,12 @@ func testAppend(structure interface{}, expected string, t *testing.T) { params = appendMachine([]string{}, config) - case Device: + case Driver: config := Config{ - Devices: []Device{s}, + Drivers: []Driver{s}, } - params = appendDevices([]string{}, config) - - case Object: - config := Config{ - Objects: []Object{s}, - } - - params = appendObjects([]string{}, config) + params = appendDrivers([]string{}, config) case Knobs: config := Config{ @@ -81,13 +75,6 @@ func testAppend(structure interface{}, expected string, t *testing.T) { } params = appendQMPSocket([]string{}, config) - - case NetDevice: - config := Config{ - NetDevices: []NetDevice{s}, - } - - params = appendNetDevices([]string{}, config) } result := strings.Join(params, " ") @@ -113,65 +100,82 @@ func TestAppendEmptyMachine(t *testing.T) { testAppend(machine, "", t) } -var deviceNVDIMMString = "-device nvdimm,id=nv0,memdev=mem0" +var deviceNVDIMMString = "-object memory-backend-file,id=mem0,mem-path=/root,size=65536 -device nvdimm,id=nv0,memdev=mem0" func TestAppendDeviceNVDIMM(t *testing.T) { - device := Device{ - Driver: "nvdimm", - ID: "nv0", - MemDev: "mem0", - } - - testAppend(device, deviceNVDIMMString, t) -} - -var deviceFSString = "-device virtio-9p-pci,fsdev=workload9p,mount_tag=rootfs" - -func TestAppendDeviceFS(t *testing.T) { - device := Device{ - Driver: "virtio-9p-pci", - FSDev: "workload9p", - MountTag: "rootfs", - } - - testAppend(device, deviceFSString, t) -} - -var deviceNetworkString = "-device virtio-net-pci,netdev=eth0,mac=01:02:de:ad:be:ef" - -func TestAppendDeviceNetwork(t *testing.T) { - device := Device{ - Driver: "virtio-net-pci", - NetDev: "eth0", - MACAddress: "01:02:de:ad:be:ef", - } - - testAppend(device, deviceNetworkString, t) -} - -func TestAppendEmptyDevice(t *testing.T) { - device := Device{} - - testAppend(device, "", t) -} - -var objectMemoryString = "-object memory-backend-file,id=mem0,mem-path=/root,size=65536" - -func TestAppendObjectMemory(t *testing.T) { object := Object{ - Type: "memory-backend-file", + Type: MemoryBackendFile, ID: "mem0", MemPath: "/root", Size: 1 << 16, } - testAppend(object, objectMemoryString, t) + driver := Driver{ + Driver: NVDIMM, + ID: "nv0", + Device: object, + } + + testAppend(driver, deviceNVDIMMString, t) } -func TestAppendEmptyObject(t *testing.T) { - device := Device{} +var deviceFSString = "-fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security-model=none -device virtio-9p-pci,fsdev=workload9p,mount_tag=rootfs" - testAppend(device, "", t) +func TestAppendDeviceFS(t *testing.T) { + fsdev := FSDevice{ + Driver: Local, + ID: "workload9p", + Path: "/var/lib/docker/devicemapper/mnt/e31ebda2", + MountTag: "rootfs", + SecurityModel: None, + } + + driver := Driver{ + Driver: Virtio9P, + Device: fsdev, + } + + testAppend(driver, deviceFSString, t) +} + +var deviceNetworkString = "-netdev tap,id=tap0,ifname=ceth0,downscript=no,script=no,fds=8:9:10,vhost=on -device virtio-net,netdev=tap0,mac=01:02:de:ad:be:ef" + +func TestAppendDeviceNetwork(t *testing.T) { + netdev := NetDevice{ + Type: TAP, + ID: "tap0", + IFName: "ceth0", + Script: "no", + DownScript: "no", + FDs: []int{8, 9, 10}, + VHost: true, + MACAddress: "01:02:de:ad:be:ef", + } + + driver := Driver{ + Driver: VirtioNet, + Device: netdev, + } + + testAppend(driver, deviceNetworkString, t) +} + +var deviceSerialString = "-device virtio-serial-pci,id=serial0" + +func TestAppendDeviceSerial(t *testing.T) { + driver := Driver{ + Driver: VirtioSerial, + ID: "serial0", + Device: SerialDevice{}, + } + + testAppend(driver, deviceSerialString, t) +} + +func TestAppendEmptyDevice(t *testing.T) { + driver := Driver{} + + testAppend(driver, "", t) } var knobsString = "-no-user-config -nodefaults -nographic" @@ -256,7 +260,7 @@ func TestAppendQMPSocket(t *testing.T) { testAppend(qmp, qmpSocketString, t) } -var qemuString = "-name cc-qemu -cpu host -uuid 123456789" +var qemuString = "-name cc-qemu -cpu host -uuid " + testutil.AgentUUID func TestAppendStrings(t *testing.T) { var params []string @@ -264,7 +268,7 @@ func TestAppendStrings(t *testing.T) { config := Config{ Path: "qemu", Name: "cc-qemu", - UUID: "123456789", + UUID: testutil.AgentUUID, CPUModel: "host", } @@ -277,18 +281,3 @@ func TestAppendStrings(t *testing.T) { t.Fatalf("Failed to append parameters [%s] != [%s]", result, qemuString) } } - -var netdevString = "-netdev tap,id=ceth0,downscript=no,script=no,fds=8:9:10,vhost=on" - -func TestAppendNetDevices(t *testing.T) { - netdev := NetDevice{ - Type: "tap", - ID: "ceth0", - Script: "no", - DownScript: "no", - FDs: []int{8, 9, 10}, - VHost: true, - } - - testAppend(netdev, netdevString, t) -} From 2d736d717353c3724736ef52a79aafdf52d5f423 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Fri, 16 Sep 2016 18:41:48 +0200 Subject: [PATCH 037/385] qemu: Add RTC specific types Instead of open coding the RTC fields, we now have specific types for it. We also have a RTC unit test now. Signed-off-by: Samuel Ortiz --- qemu.go | 88 +++++++++++++++++++++++++++++++++++++++++----------- qemu_test.go | 19 ++++++++++++ 2 files changed, 89 insertions(+), 18 deletions(-) diff --git a/qemu.go b/qemu.go index 6e2c06b29..3c42bfd39 100644 --- a/qemu.go +++ b/qemu.go @@ -329,16 +329,66 @@ func (dev SerialDevice) Valid() bool { return true } +// RTCBaseType is the qemu RTC base time type. +type RTCBaseType string + +// RTCClock is the qemu RTC clock type. +type RTCClock string + +// RTCDriftFix is the qemu RTC drift fix type. +type RTCDriftFix string + +const ( + // UTC is the UTC base time for qemu RTC. + UTC RTCBaseType = "utc" + + // LocalTime is the local base time for qemu RTC. + LocalTime = "localtime" +) + +const ( + // Host is for using the host clock as a reference. + Host RTCClock = "host" + + // VM is for using the guest clock as a reference + VM = "vm" +) + +const ( + // Slew is the qemu RTC Drift fix mechanism. + Slew RTCDriftFix = "slew" + + // NoDriftFix means we don't want/need to fix qemu's RTC drift. + NoDriftFix = "none" +) + // RTC represents a qemu Real Time Clock configuration. type RTC struct { // Base is the RTC start time. - Base string + Base RTCBaseType // Clock is the is the RTC clock driver. - Clock string + Clock RTCClock // DriftFix is the drift fixing mechanism. - DriftFix string + DriftFix RTCDriftFix +} + +// Valid returns true if the RTC structure is valid and complete. +func (rtc RTC) Valid() bool { + if rtc.Clock != "" { + if rtc.Clock != Host && rtc.Clock != VM { + return false + } + } + + if rtc.DriftFix != "" { + if rtc.DriftFix != Slew && rtc.DriftFix != NoDriftFix { + return false + } + } + + return true } // QMPSocket represents a qemu QMP socket configuration. @@ -725,23 +775,25 @@ func appendCPUs(params []string, config Config) []string { } func appendRTC(params []string, config Config) []string { - if config.RTC.Base != "" { - var RTCParams []string - - RTCParams = append(RTCParams, fmt.Sprintf("base=%s", config.RTC.Base)) - - if config.RTC.DriftFix != "" { - RTCParams = append(RTCParams, fmt.Sprintf(",driftfix=%s", config.RTC.DriftFix)) - } - - if config.RTC.Clock != "" { - RTCParams = append(RTCParams, fmt.Sprintf(",clock=%s", config.RTC.Clock)) - } - - params = append(params, "-rtc") - params = append(params, strings.Join(RTCParams, "")) + if config.RTC.Valid() == false { + return nil } + var RTCParams []string + + RTCParams = append(RTCParams, fmt.Sprintf("base=%s", string(config.RTC.Base))) + + if config.RTC.DriftFix != "" { + RTCParams = append(RTCParams, fmt.Sprintf(",driftfix=%s", config.RTC.DriftFix)) + } + + if config.RTC.Clock != "" { + RTCParams = append(RTCParams, fmt.Sprintf(",clock=%s", config.RTC.Clock)) + } + + params = append(params, "-rtc") + params = append(params, strings.Join(RTCParams, "")) + return params } diff --git a/qemu_test.go b/qemu_test.go index ec5a73af7..fc5d7447c 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -75,6 +75,13 @@ func testAppend(structure interface{}, expected string, t *testing.T) { } params = appendQMPSocket([]string{}, config) + + case RTC: + config := Config{ + RTC: s, + } + + params = appendRTC([]string{}, config) } result := strings.Join(params, " ") @@ -281,3 +288,15 @@ func TestAppendStrings(t *testing.T) { t.Fatalf("Failed to append parameters [%s] != [%s]", result, qemuString) } } + +var rtcString = "-rtc base=utc,driftfix=slew,clock=host" + +func TestAppendRTC(t *testing.T) { + rtc := RTC{ + Base: UTC, + Clock: Host, + DriftFix: Slew, + } + + testAppend(rtc, rtcString, t) +} From cc9cb33a5dde152acf649c701e962eb4bd720292 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Fri, 16 Sep 2016 18:56:19 +0200 Subject: [PATCH 038/385] qemu: Add QMPSocket specific type Instead of open coding the QMP socket type, we now have a specific type for it. Signed-off-by: Samuel Ortiz --- qemu.go | 49 ++++++++++++++++++++++++++++++++++--------------- qemu_test.go | 2 +- 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/qemu.go b/qemu.go index 3c42bfd39..5dea84894 100644 --- a/qemu.go +++ b/qemu.go @@ -391,10 +391,18 @@ func (rtc RTC) Valid() bool { return true } +// QMPSocketType is the type of socket used for QMP communication. +type QMPSocketType string + +const ( + // Unix socket for QMP. + Unix QMPSocketType = "unix" +) + // QMPSocket represents a qemu QMP socket configuration. type QMPSocket struct { // Type is the socket type (e.g. "unix"). - Type string + Type QMPSocketType // Name is the socket name. Name string @@ -406,6 +414,15 @@ type QMPSocket struct { NoWait bool } +// Valid returns true if the QMPSocket structure is valid and complete. +func (qmp QMPSocket) Valid() bool { + if qmp.Type == "" || qmp.Name == "" { + return false + } + + return true +} + // SMP is the multi processors configuration structure. type SMP struct { // CPUs is the number of VCPUs made available to qemu. @@ -545,22 +562,24 @@ func appendCPUModel(params []string, config Config) []string { } func appendQMPSocket(params []string, config Config) []string { - if config.QMPSocket.Type != "" && config.QMPSocket.Name != "" { - var qmpParams []string - - qmpParams = append(qmpParams, fmt.Sprintf("%s:", config.QMPSocket.Type)) - qmpParams = append(qmpParams, fmt.Sprintf("%s", config.QMPSocket.Name)) - if config.QMPSocket.Server == true { - qmpParams = append(qmpParams, ",server") - if config.QMPSocket.NoWait == true { - qmpParams = append(qmpParams, ",nowait") - } - } - - params = append(params, "-qmp") - params = append(params, strings.Join(qmpParams, "")) + if config.QMPSocket.Valid() == false { + return nil } + var qmpParams []string + + qmpParams = append(qmpParams, fmt.Sprintf("%s:", config.QMPSocket.Type)) + qmpParams = append(qmpParams, fmt.Sprintf("%s", config.QMPSocket.Name)) + if config.QMPSocket.Server == true { + qmpParams = append(qmpParams, ",server") + if config.QMPSocket.NoWait == true { + qmpParams = append(qmpParams, ",nowait") + } + } + + params = append(params, "-qmp") + params = append(params, strings.Join(qmpParams, "")) + return params } diff --git a/qemu_test.go b/qemu_test.go index fc5d7447c..34ef1ca38 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -259,7 +259,7 @@ func TestAppendQMPSocketServer(t *testing.T) { func TestAppendQMPSocket(t *testing.T) { qmp := QMPSocket{ - Type: "unix", + Type: Unix, Name: "cc-qmp", Server: false, } From 6d7dfa04bf4702a62f761dcaf518abd6bb75bd88 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Sat, 17 Sep 2016 00:25:50 +0200 Subject: [PATCH 039/385] qemu: Get rid of the Driver structure By adding QemuParams() to the Device interface, we can get rid of the driver structure and simplify further the appendDevices() routine. With that implementation we can generate the following qemu parameters: "-device virtio-9p-pci,fsdev=foo,mount_tag=rootfs -fsdev local,id=foo,path=/bar/foo,security-model=none" from these single structures: fsdev := FSDevice{ Driver: Virtio9P FSDriver: Local, ID: "foo", Path: "/bar/foo", MountTag: "rootfs", SecurityModel: None, } Signed-off-by: Samuel Ortiz --- qemu.go | 415 ++++++++++++++++++++++++--------------------------- qemu_test.go | 57 +++---- 2 files changed, 217 insertions(+), 255 deletions(-) diff --git a/qemu.go b/qemu.go index 5dea84894..d835a06a2 100644 --- a/qemu.go +++ b/qemu.go @@ -46,9 +46,10 @@ type Machine struct { // Device is the qemu device interface. type Device interface { Valid() bool + QemuParams() []string } -// DeviceDriver is the Device driver string. +// DeviceDriver is the device driver string. type DeviceDriver string const ( @@ -68,74 +69,6 @@ const ( Console = "virtconsole" ) -// Driver describes a driver to be used by qemu. -type Driver struct { - // Driver is the qemu device driver - Driver DeviceDriver - - // ID is the user defined device ID. - ID string - - // Device is the device to be associated with this driver. - Device Device -} - -func (driver Driver) deviceMatch() bool { - switch driver.Device.(type) { - case Object: - if driver.Driver != NVDIMM { - return false - } - - case FSDevice: - if driver.Driver != Virtio9P { - return false - } - - case SerialDevice: - if driver.Driver != VirtioSerial { - return false - } - - case CharDevice: - if driver.Driver != Console { - return false - } - - case NetDevice: - if driver.Driver != VirtioNet { - return false - } - - default: - return false - } - - return true -} - -// Valid returns true if the Driver structure is valid and complete. -func (driver Driver) Valid() bool { - switch driver.Driver { - case NVDIMM: - case Console: - case VirtioSerial: - if driver.ID == "" || driver.Device.Valid() == false { - return false - } - - case Virtio9P: - case VirtioNet: - return driver.Device.Valid() - - default: - return false - } - - // Verify that the Device type matches the Driver. - return driver.deviceMatch() -} - // ObjectType is a string representing a qemu object type. type ObjectType string @@ -146,12 +79,18 @@ const ( // Object is a qemu object representation. type Object struct { + // Driver is the qemu device driver + Driver DeviceDriver + // Type is the qemu object type. Type ObjectType // ID is the user defined object ID. ID string + // DeviceID is the user defined device ID. + DeviceID string + // MemPath is the object's memory path. // This is only relevant for memory objects MemPath string @@ -167,11 +106,42 @@ func (object Object) Valid() bool { if object.ID == "" || object.MemPath == "" || object.Size == 0 { return false } + + default: + return false } return true } +// QemuParams returns the qemu parameters built out of this Object device. +func (object Object) QemuParams() []string { + var objectParams []string + var deviceParams []string + var qemuParams []string + + deviceParams = append(deviceParams, string(object.Driver)) + deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", object.DeviceID)) + + switch object.Type { + case MemoryBackendFile: + objectParams = append(objectParams, string(object.Type)) + objectParams = append(objectParams, fmt.Sprintf(",id=%s", object.ID)) + objectParams = append(objectParams, fmt.Sprintf(",mem-path=%s", object.MemPath)) + objectParams = append(objectParams, fmt.Sprintf(",size=%d", object.Size)) + + deviceParams = append(deviceParams, fmt.Sprintf(",memdev=%s", object.ID)) + } + + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, strings.Join(deviceParams, "")) + + qemuParams = append(qemuParams, "-object") + qemuParams = append(qemuParams, strings.Join(objectParams, "")) + + return qemuParams +} + // FSDriver represents a qemu filesystem driver. type FSDriver string @@ -205,8 +175,11 @@ const ( // FSDevice represents a qemu filesystem configuration. type FSDevice struct { - // Driver is the filesystem driver backend. - Driver FSDriver + // Driver is the qemu device driver + Driver DeviceDriver + + // FSDriver is the filesystem driver backend. + FSDriver FSDriver // ID is the filesystem identifier. ID string @@ -230,6 +203,30 @@ func (fsdev FSDevice) Valid() bool { return true } +// QemuParams returns the qemu parameters built out of this filesystem device. +func (fsdev FSDevice) QemuParams() []string { + var fsParams []string + var deviceParams []string + var qemuParams []string + + deviceParams = append(deviceParams, fmt.Sprintf("%s", fsdev.Driver)) + deviceParams = append(deviceParams, fmt.Sprintf(",fsdev=%s", fsdev.ID)) + deviceParams = append(deviceParams, fmt.Sprintf(",mount_tag=%s", fsdev.MountTag)) + + fsParams = append(fsParams, string(fsdev.FSDriver)) + fsParams = append(fsParams, fmt.Sprintf(",id=%s", fsdev.ID)) + fsParams = append(fsParams, fmt.Sprintf(",path=%s", fsdev.Path)) + fsParams = append(fsParams, fmt.Sprintf(",security-model=%s", fsdev.SecurityModel)) + + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, strings.Join(deviceParams, "")) + + qemuParams = append(qemuParams, "-fsdev") + qemuParams = append(qemuParams, strings.Join(fsParams, "")) + + return qemuParams +} + // CharDeviceBackend is the character device backend for qemu type CharDeviceBackend string @@ -257,6 +254,12 @@ const ( type CharDevice struct { Backend CharDeviceBackend + // Driver is the qemu device driver + Driver DeviceDriver + + // DeviceID is the user defined device ID. + DeviceID string + ID string Path string } @@ -270,6 +273,46 @@ func (cdev CharDevice) Valid() bool { return true } +func appendCharDevice(params []string, cdev CharDevice) ([]string, error) { + if cdev.Valid() == false { + return nil, fmt.Errorf("Invalid character device") + } + + var cdevParams []string + + cdevParams = append(cdevParams, string(cdev.Backend)) + cdevParams = append(cdevParams, fmt.Sprintf(",id=%s", cdev.ID)) + cdevParams = append(cdevParams, fmt.Sprintf(",path=%s", cdev.Path)) + + params = append(params, "-chardev") + params = append(params, strings.Join(cdevParams, "")) + + return params, nil +} + +// QemuParams returns the qemu parameters built out of this character device. +func (cdev CharDevice) QemuParams() []string { + var cdevParams []string + var deviceParams []string + var qemuParams []string + + deviceParams = append(deviceParams, fmt.Sprintf("%s", cdev.Driver)) + deviceParams = append(deviceParams, fmt.Sprintf(",chardev=%s", cdev.ID)) + deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", cdev.DeviceID)) + + cdevParams = append(cdevParams, string(cdev.Backend)) + cdevParams = append(cdevParams, fmt.Sprintf(",id=%s", cdev.ID)) + cdevParams = append(cdevParams, fmt.Sprintf(",path=%s", cdev.Path)) + + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, strings.Join(deviceParams, "")) + + qemuParams = append(qemuParams, "-chardev") + qemuParams = append(qemuParams, strings.Join(cdevParams, "")) + + return qemuParams +} + // NetDeviceType is a qemu networing device type. type NetDeviceType string @@ -283,6 +326,9 @@ type NetDevice struct { // Type is the netdev type (e.g. tap). Type NetDeviceType + // Driver is the qemu device driver + Driver DeviceDriver + // ID is the netdevice identifier. ID string @@ -320,15 +366,83 @@ func (netdev NetDevice) Valid() bool { } } +// QemuParams returns the qemu parameters built out of this network device. +func (netdev NetDevice) QemuParams() []string { + var netdevParams []string + var deviceParams []string + var qemuParams []string + + deviceParams = append(deviceParams, fmt.Sprintf("%s", netdev.Driver)) + deviceParams = append(deviceParams, fmt.Sprintf(",netdev=%s", netdev.ID)) + deviceParams = append(deviceParams, fmt.Sprintf(",mac=%s", netdev.MACAddress)) + + netdevParams = append(netdevParams, string(netdev.Type)) + netdevParams = append(netdevParams, fmt.Sprintf(",id=%s", netdev.ID)) + netdevParams = append(netdevParams, fmt.Sprintf(",ifname=%s", netdev.IFName)) + + if netdev.DownScript != "" { + netdevParams = append(netdevParams, fmt.Sprintf(",downscript=%s", netdev.DownScript)) + } + + if netdev.Script != "" { + netdevParams = append(netdevParams, fmt.Sprintf(",script=%s", netdev.Script)) + } + + if len(netdev.FDs) > 0 { + var fdParams []string + + for _, fd := range netdev.FDs { + fdParams = append(fdParams, fmt.Sprintf("%d", fd)) + } + + netdevParams = append(netdevParams, fmt.Sprintf(",fds=%s", strings.Join(fdParams, ":"))) + } + + if netdev.VHost == true { + netdevParams = append(netdevParams, ",vhost=on") + } + + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, strings.Join(deviceParams, "")) + + qemuParams = append(qemuParams, "-netdev") + qemuParams = append(qemuParams, strings.Join(netdevParams, "")) + + return qemuParams +} + // SerialDevice represents a qemu serial device. type SerialDevice struct { + // Driver is the qemu device driver + Driver DeviceDriver + + // ID is the serial device identifier. + ID string } // Valid returns true if the SerialDevice structure is valid and complete. func (dev SerialDevice) Valid() bool { + if dev.Driver == "" || dev.ID == "" { + return false + } + return true } +// QemuParams returns the qemu parameters built out of this serial device. +func (dev SerialDevice) QemuParams() []string { + var deviceParams []string + var qemuParams []string + + deviceParams = append(deviceParams, fmt.Sprintf("%s", dev.Driver)) + deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", dev.ID)) + + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, strings.Join(deviceParams, "")) + + return qemuParams +} + // RTCBaseType is the qemu RTC base time type. type RTCBaseType string @@ -420,6 +534,10 @@ func (qmp QMPSocket) Valid() bool { return false } + if qmp.Type != Unix { + return false + } + return true } @@ -498,8 +616,8 @@ type Config struct { // QMPSocket is the QMP socket description. QMPSocket QMPSocket - // Drivers is a list of device drivers for qemu to use. - Drivers []Driver + // Devices is a list of devices for qemu to create and drive. + Devices []Device // RTC is the qemu Real Time Clock configuration RTC RTC @@ -583,156 +701,13 @@ func appendQMPSocket(params []string, config Config) []string { return params } -func appendObject(params []string, object Object) ([]string, error) { - if object.Valid() == false { - return nil, fmt.Errorf("Invalid Object") - } - - var objectParams []string - - objectParams = append(objectParams, string(object.Type)) - - switch object.Type { - case MemoryBackendFile: - objectParams = append(objectParams, fmt.Sprintf(",id=%s", object.ID)) - objectParams = append(objectParams, fmt.Sprintf(",mem-path=%s", object.MemPath)) - objectParams = append(objectParams, fmt.Sprintf(",size=%d", object.Size)) - } - - params = append(params, "-object") - params = append(params, strings.Join(objectParams, "")) - - return params, nil -} - -func appendFilesystemDevice(params []string, fsdev FSDevice) ([]string, error) { - if fsdev.Valid() == false { - return nil, fmt.Errorf("Invalid filesystem device") - } - - var fsParams []string - - fsParams = append(fsParams, string(fsdev.Driver)) - fsParams = append(fsParams, fmt.Sprintf(",id=%s", fsdev.ID)) - fsParams = append(fsParams, fmt.Sprintf(",path=%s", fsdev.Path)) - fsParams = append(fsParams, fmt.Sprintf(",security-model=%s", fsdev.SecurityModel)) - - params = append(params, "-fsdev") - params = append(params, strings.Join(fsParams, "")) - - return params, nil -} - -func appendCharDevice(params []string, cdev CharDevice) ([]string, error) { - if cdev.Valid() == false { - return nil, fmt.Errorf("Invalid character device") - } - - var cdevParams []string - - cdevParams = append(cdevParams, string(cdev.Backend)) - cdevParams = append(cdevParams, fmt.Sprintf(",id=%s", cdev.ID)) - cdevParams = append(cdevParams, fmt.Sprintf(",path=%s", cdev.Path)) - - params = append(params, "-chardev") - params = append(params, strings.Join(cdevParams, "")) - - return params, nil -} - -func appendNetDevice(params []string, netdev NetDevice) ([]string, error) { - if netdev.Valid() == false { - return nil, fmt.Errorf("Invalid network device") - } - - var netdevParams []string - - netdevParams = append(netdevParams, string(netdev.Type)) - netdevParams = append(netdevParams, fmt.Sprintf(",id=%s", netdev.ID)) - netdevParams = append(netdevParams, fmt.Sprintf(",ifname=%s", netdev.IFName)) - - if netdev.DownScript != "" { - netdevParams = append(netdevParams, fmt.Sprintf(",downscript=%s", netdev.DownScript)) - } - - if netdev.Script != "" { - netdevParams = append(netdevParams, fmt.Sprintf(",script=%s", netdev.Script)) - } - - if len(netdev.FDs) > 0 { - var fdParams []string - - for _, fd := range netdev.FDs { - fdParams = append(fdParams, fmt.Sprintf("%d", fd)) - } - - netdevParams = append(netdevParams, fmt.Sprintf(",fds=%s", strings.Join(fdParams, ":"))) - } - - if netdev.VHost == true { - netdevParams = append(netdevParams, ",vhost=on") - } - - params = append(params, "-netdev") - params = append(params, strings.Join(netdevParams, "")) - - return params, nil -} - -func appendDrivers(params []string, config Config) []string { - for _, d := range config.Drivers { +func appendDevices(params []string, config Config) []string { + for _, d := range config.Devices { if d.Valid() == false { continue } - var driverParams []string - var err error - - driverParams = append(driverParams, fmt.Sprintf("%s", d.Driver)) - - switch device := d.Device.(type) { - case Object: - params, err = appendObject(params, device) - if err != nil { - continue - } - - driverParams = append(driverParams, fmt.Sprintf(",id=%s", d.ID)) - driverParams = append(driverParams, fmt.Sprintf(",memdev=%s", device.ID)) - - case FSDevice: - params, err = appendFilesystemDevice(params, device) - if err != nil { - continue - } - - driverParams = append(driverParams, fmt.Sprintf(",fsdev=%s", device.ID)) - driverParams = append(driverParams, fmt.Sprintf(",mount_tag=%s", device.MountTag)) - - case SerialDevice: - driverParams = append(driverParams, fmt.Sprintf(",id=%s", d.ID)) - - case CharDevice: - params, err = appendCharDevice(params, device) - if err != nil { - continue - } - - driverParams = append(driverParams, fmt.Sprintf(",chardev=%s", device.ID)) - driverParams = append(driverParams, fmt.Sprintf(",id=%s", d.ID)) - - case NetDevice: - params, err = appendNetDevice(params, device) - if err != nil { - continue - } - - driverParams = append(driverParams, fmt.Sprintf(",netdev=%s", device.ID)) - driverParams = append(driverParams, fmt.Sprintf(",mac=%s", device.MACAddress)) - } - - params = append(params, "-device") - params = append(params, strings.Join(driverParams, "")) + params = append(params, d.QemuParams()...) } return params @@ -883,7 +858,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { params = appendQMPSocket(params, config) params = appendMemory(params, config) params = appendCPUs(params, config) - params = appendDrivers(params, config) + params = appendDevices(params, config) params = appendRTC(params, config) params = appendGlobalParam(params, config) params = appendVGA(params, config) diff --git a/qemu_test.go b/qemu_test.go index 34ef1ca38..b1353bf18 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -34,12 +34,12 @@ func testAppend(structure interface{}, expected string, t *testing.T) { params = appendMachine([]string{}, config) - case Driver: + case Device: config := Config{ - Drivers: []Driver{s}, + Devices: []Device{s}, } - params = appendDrivers([]string{}, config) + params = appendDevices([]string{}, config) case Knobs: config := Config{ @@ -107,48 +107,41 @@ func TestAppendEmptyMachine(t *testing.T) { testAppend(machine, "", t) } -var deviceNVDIMMString = "-object memory-backend-file,id=mem0,mem-path=/root,size=65536 -device nvdimm,id=nv0,memdev=mem0" +var deviceNVDIMMString = "-device nvdimm,id=nv0,memdev=mem0 -object memory-backend-file,id=mem0,mem-path=/root,size=65536" func TestAppendDeviceNVDIMM(t *testing.T) { object := Object{ - Type: MemoryBackendFile, - ID: "mem0", - MemPath: "/root", - Size: 1 << 16, + Driver: NVDIMM, + Type: MemoryBackendFile, + DeviceID: "nv0", + ID: "mem0", + MemPath: "/root", + Size: 1 << 16, } - driver := Driver{ - Driver: NVDIMM, - ID: "nv0", - Device: object, - } - - testAppend(driver, deviceNVDIMMString, t) + testAppend(object, deviceNVDIMMString, t) } -var deviceFSString = "-fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security-model=none -device virtio-9p-pci,fsdev=workload9p,mount_tag=rootfs" +var deviceFSString = "-device virtio-9p-pci,fsdev=workload9p,mount_tag=rootfs -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security-model=none" func TestAppendDeviceFS(t *testing.T) { fsdev := FSDevice{ - Driver: Local, + Driver: Virtio9P, + FSDriver: Local, ID: "workload9p", Path: "/var/lib/docker/devicemapper/mnt/e31ebda2", MountTag: "rootfs", SecurityModel: None, } - driver := Driver{ - Driver: Virtio9P, - Device: fsdev, - } - - testAppend(driver, deviceFSString, t) + testAppend(fsdev, deviceFSString, t) } -var deviceNetworkString = "-netdev tap,id=tap0,ifname=ceth0,downscript=no,script=no,fds=8:9:10,vhost=on -device virtio-net,netdev=tap0,mac=01:02:de:ad:be:ef" +var deviceNetworkString = "-device virtio-net,netdev=tap0,mac=01:02:de:ad:be:ef -netdev tap,id=tap0,ifname=ceth0,downscript=no,script=no,fds=8:9:10,vhost=on" func TestAppendDeviceNetwork(t *testing.T) { netdev := NetDevice{ + Driver: VirtioNet, Type: TAP, ID: "tap0", IFName: "ceth0", @@ -159,30 +152,24 @@ func TestAppendDeviceNetwork(t *testing.T) { MACAddress: "01:02:de:ad:be:ef", } - driver := Driver{ - Driver: VirtioNet, - Device: netdev, - } - - testAppend(driver, deviceNetworkString, t) + testAppend(netdev, deviceNetworkString, t) } var deviceSerialString = "-device virtio-serial-pci,id=serial0" func TestAppendDeviceSerial(t *testing.T) { - driver := Driver{ + sdev := SerialDevice{ Driver: VirtioSerial, ID: "serial0", - Device: SerialDevice{}, } - testAppend(driver, deviceSerialString, t) + testAppend(sdev, deviceSerialString, t) } func TestAppendEmptyDevice(t *testing.T) { - driver := Driver{} + device := SerialDevice{} - testAppend(driver, "", t) + testAppend(device, "", t) } var knobsString = "-no-user-config -nodefaults -nographic" From 3908185ccd0382243899977a595d91dd8f22f150 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Sat, 17 Sep 2016 00:40:30 +0200 Subject: [PATCH 040/385] qemu: Add MACVTAP support The networking device structure now supports MACVTAP. Signed-off-by: Samuel Ortiz --- qemu.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/qemu.go b/qemu.go index d835a06a2..42a2a9d7e 100644 --- a/qemu.go +++ b/qemu.go @@ -319,6 +319,9 @@ type NetDeviceType string const ( // TAP is a TAP networking device type. TAP NetDeviceType = "tap" + + // MACVTAP is a MAC virtual TAP networking device type. + MACVTAP = "macvtap" ) // NetDevice represents a guest networking device @@ -361,6 +364,8 @@ func (netdev NetDevice) Valid() bool { switch netdev.Type { case TAP: return true + case MACVTAP: + return true default: return false } From e193a77b8d5ebae5f207ff63a44f28cb8fed1d0b Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Sat, 17 Sep 2016 01:08:31 +0200 Subject: [PATCH 041/385] qemu: Add support for block devices For now we only support QCOW2 backed block devices. Signed-off-by: Samuel Ortiz --- qemu.go | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++ qemu_test.go | 17 +++++++++++ 2 files changed, 102 insertions(+) diff --git a/qemu.go b/qemu.go index 42a2a9d7e..dc05031fd 100644 --- a/qemu.go +++ b/qemu.go @@ -65,6 +65,9 @@ const ( // VirtioSerial is the serial device driver. VirtioSerial = "virtio-serial-pci" + // VirtioBlock is the block device driver. + VirtioBlock = "virtio-blk" + // Console is the console device driver. Console = "virtconsole" ) @@ -448,6 +451,88 @@ func (dev SerialDevice) QemuParams() []string { return qemuParams } +// BlockDeviceInterface defines the type of interface the device is connected to. +type BlockDeviceInterface string + +// BlockDeviceAIO defines the type of asynchronous I/O the block device should use. +type BlockDeviceAIO string + +// BlockDeviceFormat defines the image format used on a block device. +type BlockDeviceFormat string + +const ( + // NoInterface for block devices with no interfaces. + NoInterface BlockDeviceInterface = "none" + + // SCSI represents a SCSI block device interface. + SCSI = "scsi" +) + +const ( + // Threads is the pthread asynchronous I/O implementation. + Threads BlockDeviceAIO = "threads" + + // Native is the pthread asynchronous I/O implementation. + Native = "native" +) + +const ( + // QCOW2 is the Qemu Copy On Write v2 image format. + QCOW2 BlockDeviceFormat = "qcow2" +) + +// BlockDevice represents a qemu block device. +type BlockDevice struct { + Driver DeviceDriver + ID string + File string + Interface BlockDeviceInterface + AIO BlockDeviceAIO + Format BlockDeviceFormat + SCSI bool + WCE bool +} + +// Valid returns true if the BlockDevice structure is valid and complete. +func (blkdev BlockDevice) Valid() bool { + if blkdev.Driver == "" || blkdev.ID == "" || blkdev.File == "" { + return false + } + + return true +} + +// QemuParams returns the qemu parameters built out of this block device. +func (blkdev BlockDevice) QemuParams() []string { + var blkParams []string + var deviceParams []string + var qemuParams []string + + deviceParams = append(deviceParams, fmt.Sprintf("%s", blkdev.Driver)) + deviceParams = append(deviceParams, fmt.Sprintf(",drive=%s", blkdev.ID)) + if blkdev.SCSI == false { + deviceParams = append(deviceParams, ",scsi=off") + } + + if blkdev.WCE == false { + deviceParams = append(deviceParams, ",config-wce=off") + } + + blkParams = append(blkParams, fmt.Sprintf("id=%s", blkdev.ID)) + blkParams = append(blkParams, fmt.Sprintf(",file=%s", blkdev.File)) + blkParams = append(blkParams, fmt.Sprintf(",aio=%s", blkdev.AIO)) + blkParams = append(blkParams, fmt.Sprintf(",format=%s", blkdev.Format)) + blkParams = append(blkParams, fmt.Sprintf(",if=%s", blkdev.Interface)) + + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, strings.Join(deviceParams, "")) + + qemuParams = append(qemuParams, "-drive") + qemuParams = append(qemuParams, strings.Join(blkParams, "")) + + return qemuParams +} + // RTCBaseType is the qemu RTC base time type. type RTCBaseType string diff --git a/qemu_test.go b/qemu_test.go index b1353bf18..0da576530 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -166,6 +166,23 @@ func TestAppendDeviceSerial(t *testing.T) { testAppend(sdev, deviceSerialString, t) } +var deviceBlockString = "-device virtio-blk,drive=hd0,scsi=off,config-wce=off -drive id=hd0,file=/var/lib/ciao.img,aio=threads,format=qcow2,if=none" + +func TestAppendDeviceBlock(t *testing.T) { + blkdev := BlockDevice{ + Driver: VirtioBlock, + ID: "hd0", + File: "/var/lib/ciao.img", + AIO: Threads, + Format: QCOW2, + Interface: NoInterface, + SCSI: false, + WCE: false, + } + + testAppend(blkdev, deviceBlockString, t) +} + func TestAppendEmptyDevice(t *testing.T) { device := SerialDevice{} From 12f6ebe3891e631c3c2c8819bdcf3faffd31eaf8 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Mon, 19 Sep 2016 12:07:00 +0200 Subject: [PATCH 042/385] qemu: Embed the qemu parameters into the Config structure It is a private field now, and all append*() routines are now Config methods instead of private qemu functions. Since we will have to carry a kernelParams private field as well, this change will keep all built parameters internal and make things consistent. Signed-off-by: Samuel Ortiz --- qemu.go | 146 +++++++++++++++++++++------------------------------ qemu_test.go | 70 ++++++++---------------- 2 files changed, 82 insertions(+), 134 deletions(-) diff --git a/qemu.go b/qemu.go index dc05031fd..c1f89715d 100644 --- a/qemu.go +++ b/qemu.go @@ -732,18 +732,18 @@ type Config struct { // FDs is a list of open file descriptors to be passed to the spawned qemu process FDs []*os.File + + qemuParams []string } -func appendName(params []string, config Config) []string { +func (config *Config) appendName() { if config.Name != "" { - params = append(params, "-name") - params = append(params, config.Name) + config.qemuParams = append(config.qemuParams, "-name") + config.qemuParams = append(config.qemuParams, config.Name) } - - return params } -func appendMachine(params []string, config Config) []string { +func (config *Config) appendMachine() { if config.Machine.Type != "" { var machineParams []string @@ -753,25 +753,21 @@ func appendMachine(params []string, config Config) []string { machineParams = append(machineParams, fmt.Sprintf(",accel=%s", config.Machine.Acceleration)) } - params = append(params, "-machine") - params = append(params, strings.Join(machineParams, "")) + config.qemuParams = append(config.qemuParams, "-machine") + config.qemuParams = append(config.qemuParams, strings.Join(machineParams, "")) } - - return params } -func appendCPUModel(params []string, config Config) []string { +func (config *Config) appendCPUModel() { if config.CPUModel != "" { - params = append(params, "-cpu") - params = append(params, config.CPUModel) + config.qemuParams = append(config.qemuParams, "-cpu") + config.qemuParams = append(config.qemuParams, config.CPUModel) } - - return params } -func appendQMPSocket(params []string, config Config) []string { +func (config *Config) appendQMPSocket() { if config.QMPSocket.Valid() == false { - return nil + return } var qmpParams []string @@ -785,34 +781,28 @@ func appendQMPSocket(params []string, config Config) []string { } } - params = append(params, "-qmp") - params = append(params, strings.Join(qmpParams, "")) - - return params + config.qemuParams = append(config.qemuParams, "-qmp") + config.qemuParams = append(config.qemuParams, strings.Join(qmpParams, "")) } -func appendDevices(params []string, config Config) []string { +func (config *Config) appendDevices() { for _, d := range config.Devices { if d.Valid() == false { continue } - params = append(params, d.QemuParams()...) + config.qemuParams = append(config.qemuParams, d.QemuParams()...) } - - return params } -func appendUUID(params []string, config Config) []string { +func (config *Config) appendUUID() { if config.UUID != "" { - params = append(params, "-uuid") - params = append(params, config.UUID) + config.qemuParams = append(config.qemuParams, "-uuid") + config.qemuParams = append(config.qemuParams, config.UUID) } - - return params } -func appendMemory(params []string, config Config) []string { +func (config *Config) appendMemory() { if config.Memory.Size != "" { var memoryParams []string @@ -826,14 +816,12 @@ func appendMemory(params []string, config Config) []string { memoryParams = append(memoryParams, fmt.Sprintf(",maxmem=%s", config.Memory.MaxMem)) } - params = append(params, "-m") - params = append(params, strings.Join(memoryParams, "")) + config.qemuParams = append(config.qemuParams, "-m") + config.qemuParams = append(config.qemuParams, strings.Join(memoryParams, "")) } - - return params } -func appendCPUs(params []string, config Config) []string { +func (config *Config) appendCPUs() { if config.SMP.CPUs > 0 { var SMPParams []string @@ -851,16 +839,14 @@ func appendCPUs(params []string, config Config) []string { SMPParams = append(SMPParams, fmt.Sprintf(",sockets=%d", config.SMP.Sockets)) } - params = append(params, "-smp") - params = append(params, strings.Join(SMPParams, "")) + config.qemuParams = append(config.qemuParams, "-smp") + config.qemuParams = append(config.qemuParams, strings.Join(SMPParams, "")) } - - return params } -func appendRTC(params []string, config Config) []string { +func (config *Config) appendRTC() { if config.RTC.Valid() == false { - return nil + return } var RTCParams []string @@ -875,58 +861,48 @@ func appendRTC(params []string, config Config) []string { RTCParams = append(RTCParams, fmt.Sprintf(",clock=%s", config.RTC.Clock)) } - params = append(params, "-rtc") - params = append(params, strings.Join(RTCParams, "")) - - return params + config.qemuParams = append(config.qemuParams, "-rtc") + config.qemuParams = append(config.qemuParams, strings.Join(RTCParams, "")) } -func appendGlobalParam(params []string, config Config) []string { +func (config *Config) appendGlobalParam() { if config.GlobalParam != "" { - params = append(params, "-global") - params = append(params, config.GlobalParam) + config.qemuParams = append(config.qemuParams, "-global") + config.qemuParams = append(config.qemuParams, config.GlobalParam) } - - return params } -func appendVGA(params []string, config Config) []string { +func (config *Config) appendVGA() { if config.VGA != "" { - params = append(params, "-vga") - params = append(params, config.VGA) + config.qemuParams = append(config.qemuParams, "-vga") + config.qemuParams = append(config.qemuParams, config.VGA) } - - return params } -func appendKernel(params []string, config Config) []string { +func (config *Config) appendKernel() { if config.Kernel.Path != "" { - params = append(params, "-kernel") - params = append(params, config.Kernel.Path) + config.qemuParams = append(config.qemuParams, "-kernel") + config.qemuParams = append(config.qemuParams, config.Kernel.Path) if config.Kernel.Params != "" { - params = append(params, "-append") - params = append(params, config.Kernel.Params) + config.qemuParams = append(config.qemuParams, "-append") + config.qemuParams = append(config.qemuParams, config.Kernel.Params) } } - - return params } -func appendKnobs(params []string, config Config) []string { +func (config *Config) appendKnobs() { if config.Knobs.NoUserConfig == true { - params = append(params, "-no-user-config") + config.qemuParams = append(config.qemuParams, "-no-user-config") } if config.Knobs.NoDefaults == true { - params = append(params, "-nodefaults") + config.qemuParams = append(config.qemuParams, "-nodefaults") } if config.Knobs.NoGraphic == true { - params = append(params, "-nographic") + config.qemuParams = append(config.qemuParams, "-nographic") } - - return params } // LaunchQemu can be used to launch a new qemu instance. @@ -939,23 +915,21 @@ func appendKnobs(params []string, config Config) []string { // will be returned if the launch succeeds. Otherwise a string containing // the contents of stderr + a Go error object will be returned. func LaunchQemu(config Config, logger QMPLog) (string, error) { - var params []string + config.appendName() + config.appendUUID() + config.appendMachine() + config.appendCPUModel() + config.appendQMPSocket() + config.appendMemory() + config.appendCPUs() + config.appendDevices() + config.appendRTC() + config.appendGlobalParam() + config.appendVGA() + config.appendKnobs() + config.appendKernel() - params = appendName(params, config) - params = appendUUID(params, config) - params = appendMachine(params, config) - params = appendCPUModel(params, config) - params = appendQMPSocket(params, config) - params = appendMemory(params, config) - params = appendCPUs(params, config) - params = appendDevices(params, config) - params = appendRTC(params, config) - params = appendGlobalParam(params, config) - params = appendVGA(params, config) - params = appendKnobs(params, config) - params = appendKernel(params, config) - - return LaunchCustomQemu(config.Ctx, config.Path, params, config.FDs, logger) + return LaunchCustomQemu(config.Ctx, config.Path, config.qemuParams, config.FDs, logger) } // LaunchCustomQemu can be used to launch a new qemu instance. @@ -966,7 +940,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { // signature of this function will not need to change when launch cancellation // is implemented. // -// params is a slice of options to pass to qemu-system-x86_64 and fds is a +// config.qemuParams is a slice of options to pass to qemu-system-x86_64 and fds is a // list of open file descriptors that are to be passed to the spawned qemu // process. // diff --git a/qemu_test.go b/qemu_test.go index 0da576530..a5875fe25 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -24,67 +24,43 @@ import ( ) func testAppend(structure interface{}, expected string, t *testing.T) { - var params []string + var config Config switch s := structure.(type) { case Machine: - config := Config{ - Machine: s, - } - - params = appendMachine([]string{}, config) + config.Machine = s + config.appendMachine() case Device: - config := Config{ - Devices: []Device{s}, - } - - params = appendDevices([]string{}, config) + config.Devices = []Device{s} + config.appendDevices() case Knobs: - config := Config{ - Knobs: s, - } - - params = appendKnobs([]string{}, config) + config.Knobs = s + config.appendKnobs() case Kernel: - config := Config{ - Kernel: s, - } - - params = appendKernel([]string{}, config) + config.Kernel = s + config.appendKernel() case Memory: - config := Config{ - Memory: s, - } - - params = appendMemory([]string{}, config) + config.Memory = s + config.appendMemory() case SMP: - config := Config{ - SMP: s, - } - - params = appendCPUs([]string{}, config) + config.SMP = s + config.appendCPUs() case QMPSocket: - config := Config{ - QMPSocket: s, - } - - params = appendQMPSocket([]string{}, config) + config.QMPSocket = s + config.appendQMPSocket() case RTC: - config := Config{ - RTC: s, - } - - params = appendRTC([]string{}, config) + config.RTC = s + config.appendRTC() } - result := strings.Join(params, " ") + result := strings.Join(config.qemuParams, " ") if result != expected { t.Fatalf("Failed to append parameters [%s] != [%s]", result, expected) } @@ -274,8 +250,6 @@ func TestAppendQMPSocket(t *testing.T) { var qemuString = "-name cc-qemu -cpu host -uuid " + testutil.AgentUUID func TestAppendStrings(t *testing.T) { - var params []string - config := Config{ Path: "qemu", Name: "cc-qemu", @@ -283,11 +257,11 @@ func TestAppendStrings(t *testing.T) { CPUModel: "host", } - params = appendName(params, config) - params = appendCPUModel(params, config) - params = appendUUID(params, config) + config.appendName() + config.appendCPUModel() + config.appendUUID() - result := strings.Join(params, " ") + result := strings.Join(config.qemuParams, " ") if result != qemuString { t.Fatalf("Failed to append parameters [%s] != [%s]", result, qemuString) } From db067857bd4bb9c0d590bdabb647dc78e23e6a71 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Mon, 19 Sep 2016 12:37:58 +0200 Subject: [PATCH 043/385] qemu: Make Config's FDs field private All file descriptors will come from specific devices configurations, so this patch: 1) Make the Config FDs file private 2) Provide an appendFDs() method for Config, that takes a slice of os.File pointers and a) Adds them to the Config private fd slice b) Return a slice of ints that represent the file descriptors for these device specific files, as seen by the qemu process. Signed-off-by: Samuel Ortiz --- qemu.go | 48 +++++++++++++++++++++++++++++++++++------------- qemu_test.go | 12 ++++++++++-- 2 files changed, 45 insertions(+), 15 deletions(-) diff --git a/qemu.go b/qemu.go index c1f89715d..869ae3be5 100644 --- a/qemu.go +++ b/qemu.go @@ -46,7 +46,7 @@ type Machine struct { // Device is the qemu device interface. type Device interface { Valid() bool - QemuParams() []string + QemuParams(config *Config) []string } // DeviceDriver is the device driver string. @@ -118,7 +118,7 @@ func (object Object) Valid() bool { } // QemuParams returns the qemu parameters built out of this Object device. -func (object Object) QemuParams() []string { +func (object Object) QemuParams(config *Config) []string { var objectParams []string var deviceParams []string var qemuParams []string @@ -207,7 +207,7 @@ func (fsdev FSDevice) Valid() bool { } // QemuParams returns the qemu parameters built out of this filesystem device. -func (fsdev FSDevice) QemuParams() []string { +func (fsdev FSDevice) QemuParams(config *Config) []string { var fsParams []string var deviceParams []string var qemuParams []string @@ -294,7 +294,7 @@ func appendCharDevice(params []string, cdev CharDevice) ([]string, error) { } // QemuParams returns the qemu parameters built out of this character device. -func (cdev CharDevice) QemuParams() []string { +func (cdev CharDevice) QemuParams(config *Config) []string { var cdevParams []string var deviceParams []string var qemuParams []string @@ -349,7 +349,7 @@ type NetDevice struct { // FDs represents the list of already existing file descriptors to be used. // This is mostly useful for mq support. - FDs []int + FDs []*os.File // VHost enables virtio device emulation from the host kernel instead of from qemu. VHost bool @@ -375,7 +375,7 @@ func (netdev NetDevice) Valid() bool { } // QemuParams returns the qemu parameters built out of this network device. -func (netdev NetDevice) QemuParams() []string { +func (netdev NetDevice) QemuParams(config *Config) []string { var netdevParams []string var deviceParams []string var qemuParams []string @@ -399,7 +399,9 @@ func (netdev NetDevice) QemuParams() []string { if len(netdev.FDs) > 0 { var fdParams []string - for _, fd := range netdev.FDs { + qemuFDs := config.appendFDs(netdev.FDs) + + for _, fd := range qemuFDs { fdParams = append(fdParams, fmt.Sprintf("%d", fd)) } @@ -438,7 +440,7 @@ func (dev SerialDevice) Valid() bool { } // QemuParams returns the qemu parameters built out of this serial device. -func (dev SerialDevice) QemuParams() []string { +func (dev SerialDevice) QemuParams(config *Config) []string { var deviceParams []string var qemuParams []string @@ -503,7 +505,7 @@ func (blkdev BlockDevice) Valid() bool { } // QemuParams returns the qemu parameters built out of this block device. -func (blkdev BlockDevice) QemuParams() []string { +func (blkdev BlockDevice) QemuParams(config *Config) []string { var blkParams []string var deviceParams []string var qemuParams []string @@ -730,12 +732,32 @@ type Config struct { // Knobs is a set of qemu boolean settings. Knobs Knobs - // FDs is a list of open file descriptors to be passed to the spawned qemu process - FDs []*os.File + // fds is a list of open file descriptors to be passed to the spawned qemu process + fds []*os.File qemuParams []string } +// appendFDs append a list of file descriptors to the qemu configuration and +// returns a slice of offset file descriptors that will be seen by the qemu process. +func (config *Config) appendFDs(fds []*os.File) []int { + var fdInts []int + + oldLen := len(config.fds) + + config.fds = append(config.fds, fds...) + + // The magic 3 offset comes from https://golang.org/src/os/exec/exec.go: + // ExtraFiles specifies additional open files to be inherited by the + // new process. It does not include standard input, standard output, or + // standard error. If non-nil, entry i becomes file descriptor 3+i. + for i := range fds { + fdInts = append(fdInts, oldLen+3+i) + } + + return fdInts +} + func (config *Config) appendName() { if config.Name != "" { config.qemuParams = append(config.qemuParams, "-name") @@ -791,7 +813,7 @@ func (config *Config) appendDevices() { continue } - config.qemuParams = append(config.qemuParams, d.QemuParams()...) + config.qemuParams = append(config.qemuParams, d.QemuParams(config)...) } } @@ -929,7 +951,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { config.appendKnobs() config.appendKernel() - return LaunchCustomQemu(config.Ctx, config.Path, config.qemuParams, config.FDs, logger) + return LaunchCustomQemu(config.Ctx, config.Path, config.qemuParams, config.fds, logger) } // LaunchCustomQemu can be used to launch a new qemu instance. diff --git a/qemu_test.go b/qemu_test.go index a5875fe25..647b202a9 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -17,6 +17,8 @@ package qemu import ( + "io/ioutil" + "os" "strings" "testing" @@ -113,9 +115,15 @@ func TestAppendDeviceFS(t *testing.T) { testAppend(fsdev, deviceFSString, t) } -var deviceNetworkString = "-device virtio-net,netdev=tap0,mac=01:02:de:ad:be:ef -netdev tap,id=tap0,ifname=ceth0,downscript=no,script=no,fds=8:9:10,vhost=on" +var deviceNetworkString = "-device virtio-net,netdev=tap0,mac=01:02:de:ad:be:ef -netdev tap,id=tap0,ifname=ceth0,downscript=no,script=no,fds=3:4,vhost=on" func TestAppendDeviceNetwork(t *testing.T) { + foo, _ := ioutil.TempFile(os.TempDir(), "qemu-ciao-test") + bar, _ := ioutil.TempFile(os.TempDir(), "qemu-ciao-test") + + defer os.Remove(foo.Name()) + defer os.Remove(bar.Name()) + netdev := NetDevice{ Driver: VirtioNet, Type: TAP, @@ -123,7 +131,7 @@ func TestAppendDeviceNetwork(t *testing.T) { IFName: "ceth0", Script: "no", DownScript: "no", - FDs: []int{8, 9, 10}, + FDs: []*os.File{foo, bar}, VHost: true, MACAddress: "01:02:de:ad:be:ef", } From eae8fae0e74ce8920dc68e542b820f6708ea3d16 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Wed, 21 Sep 2016 17:48:47 +0200 Subject: [PATCH 044/385] qemu: Fix security model typo The right qemu parameter is "security_model", not "security-model". Signed-off-by: Samuel Ortiz --- qemu.go | 2 +- qemu_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/qemu.go b/qemu.go index 869ae3be5..15cb20c1a 100644 --- a/qemu.go +++ b/qemu.go @@ -219,7 +219,7 @@ func (fsdev FSDevice) QemuParams(config *Config) []string { fsParams = append(fsParams, string(fsdev.FSDriver)) fsParams = append(fsParams, fmt.Sprintf(",id=%s", fsdev.ID)) fsParams = append(fsParams, fmt.Sprintf(",path=%s", fsdev.Path)) - fsParams = append(fsParams, fmt.Sprintf(",security-model=%s", fsdev.SecurityModel)) + fsParams = append(fsParams, fmt.Sprintf(",security_model=%s", fsdev.SecurityModel)) qemuParams = append(qemuParams, "-device") qemuParams = append(qemuParams, strings.Join(deviceParams, "")) diff --git a/qemu_test.go b/qemu_test.go index 647b202a9..87e17ec9f 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -100,7 +100,7 @@ func TestAppendDeviceNVDIMM(t *testing.T) { testAppend(object, deviceNVDIMMString, t) } -var deviceFSString = "-device virtio-9p-pci,fsdev=workload9p,mount_tag=rootfs -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security-model=none" +var deviceFSString = "-device virtio-9p-pci,fsdev=workload9p,mount_tag=rootfs -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none" func TestAppendDeviceFS(t *testing.T) { fsdev := FSDevice{ From e555f565f46c0bb8f7841b01246860b36fb3589f Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Fri, 30 Sep 2016 15:42:59 +0200 Subject: [PATCH 045/385] qemu: Add support for socket based consoles When we get no virtual console to plug into, we may want qemu to create a socket where we can asynchronously connect to. Signed-off-by: Samuel Ortiz --- qemu.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/qemu.go b/qemu.go index 15cb20c1a..974ebfb93 100644 --- a/qemu.go +++ b/qemu.go @@ -305,7 +305,11 @@ func (cdev CharDevice) QemuParams(config *Config) []string { cdevParams = append(cdevParams, string(cdev.Backend)) cdevParams = append(cdevParams, fmt.Sprintf(",id=%s", cdev.ID)) - cdevParams = append(cdevParams, fmt.Sprintf(",path=%s", cdev.Path)) + if cdev.Backend == Socket { + cdevParams = append(cdevParams, fmt.Sprintf(",path=%s,server,nowait", cdev.Path)) + } else { + cdevParams = append(cdevParams, fmt.Sprintf(",path=%s", cdev.Path)) + } qemuParams = append(qemuParams, "-device") qemuParams = append(qemuParams, strings.Join(deviceParams, "")) From 997cb233996c3c08ff6fbad245689167e854a801 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Fri, 30 Sep 2016 15:46:57 +0200 Subject: [PATCH 046/385] qemu: Remove dead code appendCharDevice() got replaced by the CharDevice's QemuParams method but never got deleted. Signed-off-by: Samuel Ortiz --- qemu.go | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/qemu.go b/qemu.go index 974ebfb93..9cc7145f4 100644 --- a/qemu.go +++ b/qemu.go @@ -276,23 +276,6 @@ func (cdev CharDevice) Valid() bool { return true } -func appendCharDevice(params []string, cdev CharDevice) ([]string, error) { - if cdev.Valid() == false { - return nil, fmt.Errorf("Invalid character device") - } - - var cdevParams []string - - cdevParams = append(cdevParams, string(cdev.Backend)) - cdevParams = append(cdevParams, fmt.Sprintf(",id=%s", cdev.ID)) - cdevParams = append(cdevParams, fmt.Sprintf(",path=%s", cdev.Path)) - - params = append(params, "-chardev") - params = append(params, strings.Join(cdevParams, "")) - - return params, nil -} - // QemuParams returns the qemu parameters built out of this character device. func (cdev CharDevice) QemuParams(config *Config) []string { var cdevParams []string From 992b861ec576336b9d5becc8af6914f80175f279 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Fri, 30 Sep 2016 15:54:46 +0200 Subject: [PATCH 047/385] qemu: Add the daemonize qemu option to the Knobs structure This way callers can choose if they want the qemu process to be a daemon or not. Signed-off-by: Samuel Ortiz --- qemu.go | 7 +++++++ qemu_test.go | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/qemu.go b/qemu.go index 9cc7145f4..b5760141e 100644 --- a/qemu.go +++ b/qemu.go @@ -669,6 +669,9 @@ type Knobs struct { // NoGraphic completely disables graphic output. NoGraphic bool + + // Daemonize will turn the qemu process into a daemon + Daemonize bool } // Config is the qemu configuration structure. @@ -912,6 +915,10 @@ func (config *Config) appendKnobs() { if config.Knobs.NoGraphic == true { config.qemuParams = append(config.qemuParams, "-nographic") } + + if config.Knobs.Daemonize == true { + config.qemuParams = append(config.qemuParams, "-daemonize") + } } // LaunchQemu can be used to launch a new qemu instance. diff --git a/qemu_test.go b/qemu_test.go index 87e17ec9f..18b016c62 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -173,13 +173,14 @@ func TestAppendEmptyDevice(t *testing.T) { testAppend(device, "", t) } -var knobsString = "-no-user-config -nodefaults -nographic" +var knobsString = "-no-user-config -nodefaults -nographic -daemonize" func TestAppendKnobsAllTrue(t *testing.T) { knobs := Knobs{ NoUserConfig: true, NoDefaults: true, NoGraphic: true, + Daemonize: true, } testAppend(knobs, knobsString, t) From 6fe338d604357b10944220d0cac39f5712ba3f5e Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Tue, 11 Oct 2016 14:32:41 +0200 Subject: [PATCH 048/385] qemu: Support creating multiple QMP sockets The QMP socket implementation does not support multiple clients sending and receiving QMP commands. As a consequence we need to be able to create multiple QMP sockets from the qemu package, so that at least we can support a fixed number of QMP clients. Signed-off-by: Samuel Ortiz --- qemu.go | 38 +++++++++++++++++++------------------- qemu_test.go | 41 +++++++++++++++++++++++++++++++++-------- 2 files changed, 52 insertions(+), 27 deletions(-) diff --git a/qemu.go b/qemu.go index b5760141e..739ce14ef 100644 --- a/qemu.go +++ b/qemu.go @@ -695,8 +695,8 @@ type Config struct { // Machine Machine Machine - // QMPSocket is the QMP socket description. - QMPSocket QMPSocket + // QMPSockets is a slice of QMP socket description. + QMPSockets []QMPSocket // Devices is a list of devices for qemu to create and drive. Devices []Device @@ -777,24 +777,24 @@ func (config *Config) appendCPUModel() { } } -func (config *Config) appendQMPSocket() { - if config.QMPSocket.Valid() == false { - return - } - - var qmpParams []string - - qmpParams = append(qmpParams, fmt.Sprintf("%s:", config.QMPSocket.Type)) - qmpParams = append(qmpParams, fmt.Sprintf("%s", config.QMPSocket.Name)) - if config.QMPSocket.Server == true { - qmpParams = append(qmpParams, ",server") - if config.QMPSocket.NoWait == true { - qmpParams = append(qmpParams, ",nowait") +func (config *Config) appendQMPSockets() { + for _, q := range config.QMPSockets { + if q.Valid() == false { + continue } - } - config.qemuParams = append(config.qemuParams, "-qmp") - config.qemuParams = append(config.qemuParams, strings.Join(qmpParams, "")) + qmpParams := append([]string{}, fmt.Sprintf("%s:", q.Type)) + qmpParams = append(qmpParams, fmt.Sprintf("%s", q.Name)) + if q.Server == true { + qmpParams = append(qmpParams, ",server") + if q.NoWait == true { + qmpParams = append(qmpParams, ",nowait") + } + } + + config.qemuParams = append(config.qemuParams, "-qmp") + config.qemuParams = append(config.qemuParams, strings.Join(qmpParams, "")) + } } func (config *Config) appendDevices() { @@ -935,7 +935,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { config.appendUUID() config.appendMachine() config.appendCPUModel() - config.appendQMPSocket() + config.appendQMPSockets() config.appendMemory() config.appendCPUs() config.appendDevices() diff --git a/qemu_test.go b/qemu_test.go index 18b016c62..32a511dd6 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -54,8 +54,12 @@ func testAppend(structure interface{}, expected string, t *testing.T) { config.appendCPUs() case QMPSocket: - config.QMPSocket = s - config.appendQMPSocket() + config.QMPSockets = []QMPSocket{s} + config.appendQMPSockets() + + case []QMPSocket: + config.QMPSockets = s + config.appendQMPSockets() case RTC: config.RTC = s @@ -232,10 +236,10 @@ func TestAppendCPUs(t *testing.T) { testAppend(smp, cpusString, t) } -var qmpSocketServerString = "-qmp unix:cc-qmp,server,nowait" -var qmpSocketString = "-qmp unix:cc-qmp" +var qmpSingleSocketServerString = "-qmp unix:cc-qmp,server,nowait" +var qmpSingleSocketString = "-qmp unix:cc-qmp" -func TestAppendQMPSocketServer(t *testing.T) { +func TestAppendSingleQMPSocketServer(t *testing.T) { qmp := QMPSocket{ Type: "unix", Name: "cc-qmp", @@ -243,17 +247,38 @@ func TestAppendQMPSocketServer(t *testing.T) { NoWait: true, } - testAppend(qmp, qmpSocketServerString, t) + testAppend(qmp, qmpSingleSocketServerString, t) } -func TestAppendQMPSocket(t *testing.T) { +func TestAppendSingleQMPSocket(t *testing.T) { qmp := QMPSocket{ Type: Unix, Name: "cc-qmp", Server: false, } - testAppend(qmp, qmpSocketString, t) + testAppend(qmp, qmpSingleSocketString, t) +} + +var qmpSocketServerString = "-qmp unix:cc-qmp-1,server,nowait -qmp unix:cc-qmp-2,server,nowait" + +func TestAppendQMPSocketServer(t *testing.T) { + qmp := []QMPSocket{ + { + Type: "unix", + Name: "cc-qmp-1", + Server: true, + NoWait: true, + }, + { + Type: "unix", + Name: "cc-qmp-2", + Server: true, + NoWait: true, + }, + } + + testAppend(qmp, qmpSocketServerString, t) } var qemuString = "-name cc-qemu -cpu host -uuid " + testutil.AgentUUID From 2aa5f5a3c01bb03124a3a4b7f4f823f0cc1ad000 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Thu, 13 Oct 2016 14:40:15 +0200 Subject: [PATCH 049/385] qemu: Add support for serial port addition We add a new device driver, and also a name to the CharDev structure this is needed for qemu to actually create the serial port on the guest. Signed-off-by: Samuel Ortiz --- qemu.go | 7 +++++++ qemu_test.go | 15 +++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/qemu.go b/qemu.go index 739ce14ef..f5dd57937 100644 --- a/qemu.go +++ b/qemu.go @@ -70,6 +70,9 @@ const ( // Console is the console device driver. Console = "virtconsole" + + // VirtioSerialPort is the serial port device driver. + VirtioSerialPort = "virtserialport" ) // ObjectType is a string representing a qemu object type. @@ -265,6 +268,7 @@ type CharDevice struct { ID string Path string + Name string } // Valid returns true if the CharDevice structure is valid and complete. @@ -285,6 +289,9 @@ func (cdev CharDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf("%s", cdev.Driver)) deviceParams = append(deviceParams, fmt.Sprintf(",chardev=%s", cdev.ID)) deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", cdev.DeviceID)) + if cdev.Name != "" { + deviceParams = append(deviceParams, fmt.Sprintf(",name=%s", cdev.Name)) + } cdevParams = append(cdevParams, string(cdev.Backend)) cdevParams = append(cdevParams, fmt.Sprintf(",id=%s", cdev.ID)) diff --git a/qemu_test.go b/qemu_test.go index 32a511dd6..193304084 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -154,6 +154,21 @@ func TestAppendDeviceSerial(t *testing.T) { testAppend(sdev, deviceSerialString, t) } +var deviceSerialPortString = "-device virtserialport,chardev=char0,id=channel0,name=channel.0 -chardev socket,id=char0,path=/tmp/char.sock,server,nowait" + +func TestAppendDeviceSerialPort(t *testing.T) { + chardev := CharDevice{ + Driver: VirtioSerialPort, + Backend: Socket, + ID: "char0", + DeviceID: "channel0", + Path: "/tmp/char.sock", + Name: "channel.0", + } + + testAppend(chardev, deviceSerialPortString, t) +} + var deviceBlockString = "-device virtio-blk,drive=hd0,scsi=off,config-wce=off -drive id=hd0,file=/var/lib/ciao.img,aio=threads,format=qcow2,if=none" func TestAppendDeviceBlock(t *testing.T) { From 30cf11632c4a5e876a4ef5a13dce84ab52c7740e Mon Sep 17 00:00:00 2001 From: Sebastien Boeuf Date: Fri, 21 Oct 2016 08:53:23 -0700 Subject: [PATCH 050/385] Add missing bus parameter for a CharDevice When creating a CharDevice, we need to add a "bus" parameter so that it can match the serial pci device previously created. Signed-off-by: Sebastien Boeuf --- qemu.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/qemu.go b/qemu.go index f5dd57937..ea344b2eb 100644 --- a/qemu.go +++ b/qemu.go @@ -263,6 +263,9 @@ type CharDevice struct { // Driver is the qemu device driver Driver DeviceDriver + // Bus is the serial bus associated to this device. + Bus string + // DeviceID is the user defined device ID. DeviceID string @@ -287,6 +290,9 @@ func (cdev CharDevice) QemuParams(config *Config) []string { var qemuParams []string deviceParams = append(deviceParams, fmt.Sprintf("%s", cdev.Driver)) + if cdev.Bus != "" { + deviceParams = append(deviceParams, fmt.Sprintf(",bus=%s", cdev.Bus)) + } deviceParams = append(deviceParams, fmt.Sprintf(",chardev=%s", cdev.ID)) deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", cdev.DeviceID)) if cdev.Name != "" { From a8a798b0c02ba46476490ab22e99d8f9cf84b288 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Mon, 6 Feb 2017 12:16:09 +0000 Subject: [PATCH 051/385] qemu, ciao-launcher: Move ConfigDrive ISO creation code to qemu Launcher's ConfigDrive ISO creation function, createCloudInitISO has been moved to the qemu package so that it can be re-used by ciao-down. Signed-off-by: Mark Ryan --- image.go | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 image.go diff --git a/image.go b/image.go new file mode 100644 index 000000000..9b456872d --- /dev/null +++ b/image.go @@ -0,0 +1,72 @@ +/* +// Copyright (c) 2017 Intel Corporation +// +// 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. +*/ + +package qemu + +import ( + "context" + "fmt" + "io/ioutil" + "os" + "os/exec" + "path" +) + +// CreateCloudInitISO creates a cloud-init ConfigDrive ISO image. This is +// useful for configuring newly booted VMs. Before it can create the ISO +// image it needs to create a file tree with the various files that will +// make up the image. This directory is created under scratchDir and is +// deleted when when the function returns, successfully or otherwise. ctx is +// a context that can be used to timeout or cancel the image creation. +// isoPath contains the desired path of the ISO image to be created. The +// userdata and metadata parameters are byte slices that contain the +// ConfigDrive userdata and metadata that will be stored with the ISO image. +func CreateCloudInitISO(ctx context.Context, scratchDir, isoPath string, + userData, metaData []byte) error { + configDrivePath := path.Join(scratchDir, "clr-cloud-init") + dataDirPath := path.Join(configDrivePath, "openstack", "latest") + metaDataPath := path.Join(dataDirPath, "meta_data.json") + userDataPath := path.Join(dataDirPath, "user_data") + + defer func() { + _ = os.RemoveAll(configDrivePath) + }() + + err := os.MkdirAll(dataDirPath, 0755) + if err != nil { + return fmt.Errorf("Unable to create config drive directory %s : %v", + dataDirPath, err) + } + + err = ioutil.WriteFile(metaDataPath, metaData, 0644) + if err != nil { + return fmt.Errorf("Unable to create %s : %v", metaDataPath, err) + } + + err = ioutil.WriteFile(userDataPath, userData, 0644) + if err != nil { + return fmt.Errorf("Unable to create %s : %v", userDataPath, err) + } + + cmd := exec.CommandContext(ctx, "xorriso", "-as", "mkisofs", "-R", "-V", "config-2", + "-o", isoPath, configDrivePath) + err = cmd.Run() + if err != nil { + return fmt.Errorf("Unable to create cloudinit iso image %v", err) + } + + return nil +} From c6f334533ad05348ebfba942693c6e16329b32b8 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Tue, 14 Feb 2017 18:25:59 +0000 Subject: [PATCH 052/385] qemu: Fix command cancelling. There was a bug with the cancelling of commands that meant that when an attempt was made to cancel a command and then to issue a second command, the first, cancelled command was re-issued. This commit fixes the issue and adds a new test case to check that cancelling of commands does indeed work. There was also an issue with the test harness which meant that tests that issued more than one command were not actually testing the second and third commands. Signed-off-by: Mark Ryan --- qmp.go | 34 ++++++++++++++++- qmp_test.go | 107 +++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 135 insertions(+), 6 deletions(-) diff --git a/qmp.go b/qmp.go index bc2596823..c7ed0ec48 100644 --- a/qmp.go +++ b/qmp.go @@ -254,6 +254,15 @@ func (q *QMP) processQMPInput(line []byte, cmdQueue *list.List) { } } +func currentCommandDoneCh(cmdQueue *list.List) <-chan struct{} { + cmdEl := cmdQueue.Front() + if cmdEl == nil { + return nil + } + cmd := cmdEl.Value.(*qmpCommand) + return cmd.ctx.Done() +} + func (q *QMP) writeNextQMPCommand(cmdQueue *list.List) { cmdEl := cmdQueue.Front() cmd := cmdEl.Value.(*qmpCommand) @@ -293,6 +302,16 @@ func failOutstandingCommands(cmdQueue *list.List) { } } +func (q *QMP) cancelCurrentCommand(cmdQueue *list.List) { + cmdEl := cmdQueue.Front() + cmd := cmdEl.Value.(*qmpCommand) + if cmd.resultReceived { + q.finaliseCommand(cmdEl, cmdQueue, false) + } else { + cmd.filter = nil + } +} + func (q *QMP) parseVersion(version []byte) *QMPVersion { var qmp map[string]interface{} err := json.Unmarshal(version, &qmp) @@ -343,6 +362,7 @@ func (q *QMP) mainLoop() { }() version := []byte{} + var cmdDoneCh <-chan struct{} DONE: for { @@ -359,6 +379,7 @@ DONE: } if cmdQueue.Len() >= 1 { q.writeNextQMPCommand(cmdQueue) + cmdDoneCh = currentCommandDoneCh(cmdQueue) } break DONE } @@ -373,14 +394,25 @@ DONE: return } _ = cmdQueue.PushBack(&cmd) - if cmdQueue.Len() >= 1 { + + // We only want to execute the new cmd if there + // are no other commands pending. If there are + // commands pending our new command will get + // run when the pending commands complete. + + if cmdQueue.Len() == 1 { q.writeNextQMPCommand(cmdQueue) + cmdDoneCh = currentCommandDoneCh(cmdQueue) } case line, ok := <-fromVMCh: if !ok { return } q.processQMPInput(line, cmdQueue) + cmdDoneCh = currentCommandDoneCh(cmdQueue) + case <-cmdDoneCh: + q.cancelCurrentCommand(cmdQueue) + cmdDoneCh = currentCommandDoneCh(cmdQueue) } } } diff --git a/qmp_test.go b/qmp_test.go index 4d60c0099..a052c9055 100644 --- a/qmp_test.go +++ b/qmp_test.go @@ -186,7 +186,9 @@ func (b *qmpTestCommandBuffer) Read(p []byte) (n int, err error) { func (b *qmpTestCommandBuffer) Write(p []byte) (int, error) { var cmdJSON map[string]interface{} - if b.currentCmd >= len(b.cmds) { + currentCmd := b.currentCmd + b.currentCmd++ + if currentCmd >= len(b.cmds) { b.t.Fatalf("Unexpected command") } err := json.Unmarshal(p, &cmdJSON) @@ -195,14 +197,14 @@ func (b *qmpTestCommandBuffer) Write(p []byte) (int, error) { } cmdName := cmdJSON["execute"] gotCmdName := cmdName.(string) - result := b.results[b.currentCmd].result - if gotCmdName != b.cmds[b.currentCmd].name { + result := b.results[currentCmd].result + if gotCmdName != b.cmds[currentCmd].name { b.t.Errorf("Unexpected command. Expected %s found %s", - b.cmds[b.currentCmd].name, gotCmdName) + b.cmds[currentCmd].name, gotCmdName) result = "error" } resultMap := make(map[string]interface{}) - resultMap[result] = b.results[b.currentCmd].data + resultMap[result] = b.results[currentCmd].data encodedRes, err := json.Marshal(&resultMap) if err != nil { b.t.Errorf("Unable to encode result: %v", err) @@ -582,6 +584,101 @@ func TestQMPSystemPowerdown(t *testing.T) { wg.Wait() } +// Checks that event commands can be cancelled. +// +// We start a QMPLoop, send the system_powerdown command. This command +// will time out after 1 second as the SHUTDOWN event never arrives. +// We then send a quit command to terminate the session. +// +// The system_powerdown command should be correctly sent but should block +// waiting for the SHUTDOWN event and should be successfully cancelled. +// The quit command should be successfully received and the QMP loop should +// exit gracefully. +func TestQMPEventedCommandCancel(t *testing.T) { + var wg sync.WaitGroup + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommmand("system_powerdown", nil, "return", nil) + buf.AddCommmand("quit", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + buf.startEventLoop(&wg) + ctx, cancelFN := context.WithTimeout(context.Background(), time.Second) + err := q.ExecuteSystemPowerdown(ctx) + cancelFN() + if err == nil { + t.Fatalf("Expected SystemPowerdown to fail") + } + err = q.ExecuteQuit(context.Background()) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh + wg.Wait() +} + +// Checks that queued commands execute after an evented command is cancelled. +// +// This test is similar to the previous test with the exception that it +// tries to ensure that a second command is placed on the QMP structure's +// command queue before the evented command is cancelled. This allows us +// to test a slightly different use case. We start a QMPLoop, send the +// system_powerdown command. We do this by sending the command directly +// down the QMP.cmdCh rather than calling a higher level function as this +// allows us to ensure that we have another command queued before we +// timeout the first command. We then send a qmp_capabilities command and +// then we shutdown. +// +// The system_powerdown command should be correctly sent but should block +// waiting for the SHUTDOWN event and should be successfully cancelled. +// The query_capabilities command should be successfully received and the +// QMP loop should exit gracefully. +func TestQMPEventedCommandCancelConcurrent(t *testing.T) { + var wg sync.WaitGroup + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + + buf.AddCommmand("system_powerdown", nil, "error", nil) + buf.AddCommmand("qmp_capabilities", nil, "return", nil) + + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + buf.startEventLoop(&wg) + + resCh := make(chan qmpResult) + ctx, cancelFn := context.WithTimeout(context.Background(), time.Second) + q.cmdCh <- qmpCommand{ + ctx: ctx, + res: resCh, + name: "system_powerdown", + filter: &qmpEventFilter{ + eventName: "SHUTDOWN", + }, + } + + var cmdWg sync.WaitGroup + cmdWg.Add(1) + go func() { + err := q.ExecuteQMPCapabilities(context.Background()) + if err != nil { + t.Errorf("Unexpected error %v", err) + } + cmdWg.Done() + }() + + <-resCh + cancelFn() + cmdWg.Wait() + q.Shutdown() + <-disconnectedCh + wg.Wait() +} + // Checks that events can be received and parsed. // // Two events are provisioned and the QMPLoop is started with an valid eventCh. From 1e7202a5a678a33bf7f73e691edc29d69adca53c Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Wed, 15 Feb 2017 18:41:18 +0000 Subject: [PATCH 053/385] qemu: Fix spelling error in qmp_test.go Command only has two ms. Signed-off-by: Mark Ryan --- qmp_test.go | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/qmp_test.go b/qmp_test.go index a052c9055..54ec792cd 100644 --- a/qmp_test.go +++ b/qmp_test.go @@ -133,7 +133,7 @@ func (b *qmpTestCommandBuffer) startEventLoop(wg *sync.WaitGroup) { }() } -func (b *qmpTestCommandBuffer) AddCommmand(name string, args map[string]interface{}, +func (b *qmpTestCommandBuffer) AddCommand(name string, args map[string]interface{}, result string, data map[string]interface{}) { b.cmds = append(b.cmds, qmpTestCommand{name, args}) if data == nil { @@ -265,7 +265,7 @@ func TestQMPCapabilities(t *testing.T) { connectedCh := make(chan *QMPVersion) disconnectedCh := make(chan struct{}) buf := newQMPTestCommandBuffer(t) - buf.AddCommmand("qmp_capabilities", nil, "return", nil) + buf.AddCommand("qmp_capabilities", nil, "return", nil) cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) @@ -288,7 +288,7 @@ func TestQMPStop(t *testing.T) { connectedCh := make(chan *QMPVersion) disconnectedCh := make(chan struct{}) buf := newQMPTestCommandBuffer(t) - buf.AddCommmand("stop", nil, "return", nil) + buf.AddCommand("stop", nil, "return", nil) cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) @@ -311,7 +311,7 @@ func TestQMPCont(t *testing.T) { connectedCh := make(chan *QMPVersion) disconnectedCh := make(chan struct{}) buf := newQMPTestCommandBuffer(t) - buf.AddCommmand("cont", nil, "return", nil) + buf.AddCommand("cont", nil, "return", nil) cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) @@ -333,7 +333,7 @@ func TestQMPQuit(t *testing.T) { connectedCh := make(chan *QMPVersion) disconnectedCh := make(chan struct{}) buf := newQMPTestCommandBuffer(t) - buf.AddCommmand("quit", nil, "return", nil) + buf.AddCommand("quit", nil, "return", nil) cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) @@ -355,7 +355,7 @@ func TestQMPBlockdevAdd(t *testing.T) { connectedCh := make(chan *QMPVersion) disconnectedCh := make(chan struct{}) buf := newQMPTestCommandBuffer(t) - buf.AddCommmand("blockdev-add", nil, "return", nil) + buf.AddCommand("blockdev-add", nil, "return", nil) cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) @@ -378,7 +378,7 @@ func TestQMPDeviceAdd(t *testing.T) { connectedCh := make(chan *QMPVersion) disconnectedCh := make(chan struct{}) buf := newQMPTestCommandBuffer(t) - buf.AddCommmand("device_add", nil, "return", nil) + buf.AddCommand("device_add", nil, "return", nil) cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) @@ -403,7 +403,7 @@ func TestQMPXBlockdevDel(t *testing.T) { connectedCh := make(chan *QMPVersion) disconnectedCh := make(chan struct{}) buf := newQMPTestCommandBuffer(t) - buf.AddCommmand("x-blockdev-del", nil, "return", nil) + buf.AddCommand("x-blockdev-del", nil, "return", nil) cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) @@ -437,7 +437,7 @@ func TestQMPDeviceDel(t *testing.T) { connectedCh := make(chan *QMPVersion) disconnectedCh := make(chan struct{}) buf := newQMPTestCommandBuffer(t) - buf.AddCommmand("device_del", nil, "return", nil) + buf.AddCommand("device_del", nil, "return", nil) buf.AddEvent("DEVICE_DELETED", time.Millisecond*200, map[string]interface{}{ "path": path, @@ -502,7 +502,7 @@ func TestQMPDeviceDelTimeout(t *testing.T) { connectedCh := make(chan *QMPVersion) disconnectedCh := make(chan struct{}) buf := newQMPTestCommandBuffer(t) - buf.AddCommmand("device_del", nil, "return", nil) + buf.AddCommand("device_del", nil, "return", nil) cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) @@ -529,8 +529,8 @@ func TestQMPCancel(t *testing.T) { connectedCh := make(chan *QMPVersion) disconnectedCh := make(chan struct{}) buf := newQMPTestCommandBuffer(t) - buf.AddCommmand("qmp_capabilities", nil, "return", nil) - buf.AddCommmand("qmp_capabilities", nil, "return", nil) + buf.AddCommand("qmp_capabilities", nil, "return", nil) + buf.AddCommand("qmp_capabilities", nil, "return", nil) cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) @@ -564,7 +564,7 @@ func TestQMPSystemPowerdown(t *testing.T) { connectedCh := make(chan *QMPVersion) disconnectedCh := make(chan struct{}) buf := newQMPTestCommandBuffer(t) - buf.AddCommmand("system_powerdown", nil, "return", nil) + buf.AddCommand("system_powerdown", nil, "return", nil) buf.AddEvent("SHUTDOWN", time.Millisecond*100, nil, map[string]interface{}{ @@ -599,8 +599,8 @@ func TestQMPEventedCommandCancel(t *testing.T) { connectedCh := make(chan *QMPVersion) disconnectedCh := make(chan struct{}) buf := newQMPTestCommandBuffer(t) - buf.AddCommmand("system_powerdown", nil, "return", nil) - buf.AddCommmand("quit", nil, "return", nil) + buf.AddCommand("system_powerdown", nil, "return", nil) + buf.AddCommand("quit", nil, "return", nil) cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) @@ -642,8 +642,8 @@ func TestQMPEventedCommandCancelConcurrent(t *testing.T) { disconnectedCh := make(chan struct{}) buf := newQMPTestCommandBuffer(t) - buf.AddCommmand("system_powerdown", nil, "error", nil) - buf.AddCommmand("qmp_capabilities", nil, "return", nil) + buf.AddCommand("system_powerdown", nil, "error", nil) + buf.AddCommand("qmp_capabilities", nil, "return", nil) cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) @@ -780,13 +780,13 @@ func TestQMPLostLoop(t *testing.T) { q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) close(buf.forceFail) - buf.AddCommmand("qmp_capabilities", nil, "return", nil) + buf.AddCommand("qmp_capabilities", nil, "return", nil) err := q.ExecuteQMPCapabilities(context.Background()) if err == nil { t.Error("Expected executeQMPCapabilities to fail") } <-disconnectedCh - buf.AddCommmand("qmp_capabilities", nil, "return", nil) + buf.AddCommand("qmp_capabilities", nil, "return", nil) err = q.ExecuteQMPCapabilities(context.Background()) if err == nil { t.Error("Expected executeQMPCapabilities to fail") From a84228ae99acee94cb5ce5319e4a3f94195e20d2 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Thu, 16 Feb 2017 09:45:14 +0000 Subject: [PATCH 054/385] qemu: Document how cancelling works. The code that handles the serialization and cancelling of QMP commands is a little complex and it took me some time to remember how it actually works and why it works in this particular way. For this reason I've added some comments which will hopefully make the next bug fix in this area a little less painful. Signed-off-by: Mark Ryan --- qmp.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/qmp.go b/qmp.go index c7ed0ec48..fc09543f8 100644 --- a/qmp.go +++ b/qmp.go @@ -346,6 +346,39 @@ func (q *QMP) parseVersion(version []byte) *QMPVersion { } } +// The qemu package allows multiple QMP commands to be submitted concurrently +// from different Go routines. Unfortunately, QMP doesn't really support parallel +// commands as there is no way reliable way to associate a command response +// with a request. For this reason we need to submit our commands to +// QMP serially. The qemu package performs this serialisation using a +// queue (cmdQueue owned by mainLoop). We use a queue rather than a simple +// mutex so we can support cancelling of commands (see below) and ordered +// execution of commands, i.e., if command B is issued before command C, +// it should be executed before command C even if both commands are initially +// blocked waiting for command A to finish. This would be hard to achieve with +// a simple mutex. +// +// Cancelling is a little tricky. Commands such as ExecuteQMPCapabilities +// can be cancelled by cancelling or timing out their contexts. When a +// command is cancelled the calling function, e.g., ExecuteQMPCapabilities, +// will return but we may not be able to remove the command's entry from +// the command queue or issue the next command. There are two scenarios +// here. +// +// 1. The command has been processed by QMP, i.e., we have received a +// return or an error, but is still blocking as it is waiting for +// an event. For example, the ExecuteDeviceDel blocks until a DEVICE_DELETED +// event is received. When such a command is cancelled we can remove it +// from the queue and start issuing the next command. When the DEVICE_DELETED +// event eventually arrives it will just be ignored. +// +// 2. The command has not been processed by QMP. In this case the command +// needs to remain on the cmdQueue until the response to this command is +// received from QMP. During this time no new commands can be issued. When the +// response is received, it is discarded (as no one is interested in the result +// any more), the entry is removed from the cmdQueue and we can proceed to +// execute the next command. + func (q *QMP) mainLoop() { cmdQueue := list.New().Init() fromVMCh := make(chan []byte) From d48b5b5f48e0e661991fd1369279dc30a9c10fab Mon Sep 17 00:00:00 2001 From: Sebastien Boeuf Date: Thu, 9 Mar 2017 14:54:11 -0800 Subject: [PATCH 055/385] qemu: Add PCI option to the NetDevice The existing NetDevice relies on virtio-net driver, but there is a useful PCI variant which was not available: virtio-net-pci. This patch adds this new driver and adds two parameters specific to this: "bus" and "addr". Signed-off-by: Sebastien Boeuf --- qemu.go | 23 +++++++++++++++++++++++ qemu_test.go | 26 ++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/qemu.go b/qemu.go index ea344b2eb..827c05460 100644 --- a/qemu.go +++ b/qemu.go @@ -29,6 +29,7 @@ import ( "fmt" "os" "os/exec" + "strconv" "strings" "context" @@ -62,6 +63,9 @@ const ( // VirtioNet is the virt-io networking device driver. VirtioNet = "virtio-net" + // VirtioNetPCI is the virt-io pci networking device driver. + VirtioNetPCI = "virtio-net-pci" + // VirtioSerial is the serial device driver. VirtioSerial = "virtio-serial-pci" @@ -341,6 +345,12 @@ type NetDevice struct { // IfName is the interface name, IFName string + // Bus is the bus path name of a PCI device. + Bus string + + // Addr is the address offset of a PCI device. + Addr string + // DownScript is the tap interface deconfiguration script. DownScript string @@ -384,6 +394,19 @@ func (netdev NetDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf(",netdev=%s", netdev.ID)) deviceParams = append(deviceParams, fmt.Sprintf(",mac=%s", netdev.MACAddress)) + if netdev.Driver == VirtioNetPCI { + if netdev.Bus != "" { + deviceParams = append(deviceParams, fmt.Sprintf(",bus=%s", netdev.Bus)) + } + + if netdev.Addr != "" { + addr, err := strconv.Atoi(netdev.Addr) + if err == nil && addr >= 0 { + deviceParams = append(deviceParams, fmt.Sprintf(",addr=%x", addr)) + } + } + } + netdevParams = append(netdevParams, string(netdev.Type)) netdevParams = append(netdevParams, fmt.Sprintf(",id=%s", netdev.ID)) netdevParams = append(netdevParams, fmt.Sprintf(",ifname=%s", netdev.IFName)) diff --git a/qemu_test.go b/qemu_test.go index 193304084..7f3ba0c01 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -143,6 +143,32 @@ func TestAppendDeviceNetwork(t *testing.T) { testAppend(netdev, deviceNetworkString, t) } +var deviceNetworkPCIString = "-device virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff -netdev tap,id=tap0,ifname=ceth0,downscript=no,script=no,fds=3:4,vhost=on" + +func TestAppendDeviceNetworkPCI(t *testing.T) { + foo, _ := ioutil.TempFile(os.TempDir(), "qemu-ciao-test") + bar, _ := ioutil.TempFile(os.TempDir(), "qemu-ciao-test") + + defer os.Remove(foo.Name()) + defer os.Remove(bar.Name()) + + netdev := NetDevice{ + Driver: VirtioNetPCI, + Type: TAP, + ID: "tap0", + IFName: "ceth0", + Bus: "/pci-bus/pcie.0", + Addr: "255", + Script: "no", + DownScript: "no", + FDs: []*os.File{foo, bar}, + VHost: true, + MACAddress: "01:02:de:ad:be:ef", + } + + testAppend(netdev, deviceNetworkPCIString, t) +} + var deviceSerialString = "-device virtio-serial-pci,id=serial0" func TestAppendDeviceSerial(t *testing.T) { From 58a835e6a63c35d0ab198099ba59343ddb7e5da5 Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Wed, 12 Jul 2017 16:36:10 +0100 Subject: [PATCH 056/385] misc: Remove unused variables identified by varcheck And add varcheck to the list of linters used on travis runs (with an increased deadline.) ciao-launcher/qemu_test.go:31:5:warning: unused variable or constant imageInfoTestGood (varcheck) ciao-launcher/qemu_test.go:44:5:warning: unused variable or constant imageInfoTestMissingBytes (varcheck) ciao-launcher/qemu_test.go:57:5:warning: unused variable or constant imageInfoTestMissingLine (varcheck) ciao-launcher/qemu_test.go:69:5:warning: unused variable or constant imageInfoTooBig (varcheck) ciao-launcher/qemu_test.go:82:5:warning: unused variable or constant imageInfoBadBytes (varcheck) configuration/configuration_test.go:35:7:warning: unused variable or constant glanceURL (varcheck) ciao-controller/controller_test.go:1918:5:warning: unused variable or constant testClients (varcheck) qemu/qmp_test.go:44:2:warning: unused variable or constant qmpSuccess (varcheck) qemu/qmp_test.go:45:2:warning: unused variable or constant qmpFailure (varcheck) Signed-off-by: Rob Bradford --- qmp_test.go | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/qmp_test.go b/qmp_test.go index 54ec792cd..51058ec26 100644 --- a/qmp_test.go +++ b/qmp_test.go @@ -32,17 +32,15 @@ import ( ) const ( - microStr = "50" - minorStr = "6" - majorStr = "2" - micro = 50 - minor = 6 - major = 2 - cap1 = "one" - cap2 = "two" - qmpHello = `{ "QMP": { "version": { "qemu": { "micro": ` + microStr + `, "minor": ` + minorStr + `, "major": ` + majorStr + ` }, "package": ""}, "capabilities": ["` + cap1 + `","` + cap2 + `"]}}` + "\n" - qmpSuccess = `{ "return": {}}` + "\n" - qmpFailure = `{ "error": {}}` + "\n" + microStr = "50" + minorStr = "6" + majorStr = "2" + micro = 50 + minor = 6 + major = 2 + cap1 = "one" + cap2 = "two" + qmpHello = `{ "QMP": { "version": { "qemu": { "micro": ` + microStr + `, "minor": ` + minorStr + `, "major": ` + majorStr + ` }, "package": ""}, "capabilities": ["` + cap1 + `","` + cap2 + `"]}}` + "\n" ) type qmpTestLogger struct{} From a1600dc15b3a0f1f14947e5525822eb8fcaa78f1 Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Wed, 12 Jul 2017 16:48:24 +0100 Subject: [PATCH 057/385] misc: Remove unused fields identified by structcheck Add structcheck to the list of linters used on travis runs. ciao-cli/event.go:109:2:warning: unused struct field github.com/01org/ciao/ciao-cli.eventDeleteCommand.all (structcheck) ciao-cli/event.go:110:2:warning: unused struct field github.com/01org/ciao/ciao-cli.eventDeleteCommand.tenant (structcheck) ciao-cli/external_ips.go:636:2:warning: unused struct field github.com/01org/ciao/ciao-cli.poolAddCommand.ips (structcheck) ciao-cli/node.go:43:2:warning: unused struct field github.com/01org/ciao/ciao-cli.nodeListCommand.nodeID (structcheck) ciao-controller/client_wrapper_test.go:29:2:warning: unused struct field github.com/01org/ciao/ciao-controller.ssntpClientWrapper.ctl (structcheck) qemu/qmp.go:111:2:warning: unused struct field github.com/01org/ciao/qemu.qmpResult.data (structcheck) ssntp/ssntp_test.go:193:2:warning: unused struct field github.com/01org/ciao/ssntp_test.ssntpClient.evtTracedChannel (structcheck) ssntp/ssntp_test.go:192:2:warning: unused struct field github.com/01org/ciao/ssntp_test.ssntpClient.staTracedChannel (structcheck) ssntp/ssntp_test.go:194:2:warning: unused struct field github.com/01org/ciao/ssntp_test.ssntpClient.errTracedChannel (structcheck) ssntp/server.go:75:2:warning: unused struct field github.com/01org/ciao/ssntp.Server.roleVerify (structcheck) networking/ciao-cnci-agent/client.go:97:2:warning: unused struct field github.com/01org/ciao/networking/ciao-cnci-agent.agentClient.netCh (structcheck) testutil/agent.go:37:2:warning: unused struct field github.com/01org/ciao/testutil.SsntpTestClient.ticker (structcheck) Signed-off-by: Rob Bradford --- qmp.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/qmp.go b/qmp.go index fc09543f8..b92a71432 100644 --- a/qmp.go +++ b/qmp.go @@ -107,8 +107,7 @@ type QMPEvent struct { } type qmpResult struct { - err error - data map[string]interface{} + err error } type qmpCommand struct { From d4f77103beb2fffb5898cc36b3a79f011c5040f6 Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Wed, 12 Jul 2017 17:10:11 +0100 Subject: [PATCH 058/385] misc: Remove some of the code flagged by unused linter Unfortunately the ununused linter is overzealous with some of the fields that it things are unused as gophercloud relies on their values. So go ahead with the most straightforward removals but do not enable unused on travis builds. ciao-image/datastore/datastore_test.go:28:5:warning: var metaDsTables is unused (U1000) (unused) ciao-controller/api/api_test.go:39:6:warning: func myHostname is unused (U1000) (unused) ciao-cli/identity.go:58:3:warning: field Description is unused (U1000) (unused) ciao-cli/identity.go:59:3:warning: field DomainID is unused (U1000) (unused) ciao-cli/identity.go:60:3:warning: field Enabled is unused (U1000) (unused) ciao-cli/identity.go:62:3:warning: field ParentID is unused (U1000) (unused) ciao-cli/identity.go:63:3:warning: field Links is unused (U1000) (unused) ciao-cli/identity.go:70:3:warning: field Self is unused (U1000) (unused) ciao-cli/identity.go:71:3:warning: field Previous is unused (U1000) (unused) ciao-cli/identity.go:72:3:warning: field Next is unused (U1000) (unused) ciao-cli/identity.go:207:3:warning: field Next is unused (U1000) (unused) ciao-cli/identity.go:208:3:warning: field Previous is unused (U1000) (unused) ciao-cli/identity.go:209:3:warning: field Self is unused (U1000) (unused) ciao-cli/identity.go:213:3:warning: field Description is unused (U1000) (unused) ciao-cli/identity.go:214:3:warning: field DomainID is unused (U1000) (unused) ciao-cli/identity.go:215:3:warning: field Enabled is unused (U1000) (unused) ciao-cli/identity.go:217:3:warning: field Links is unused (U1000) (unused) ciao-cli/identity.go:221:3:warning: field ParentID is unused (U1000) (unused) ciao-cli/main.go:105:6:warning: type action is unused (U1000) (unused) ciao-cli/volume.go:37:6:warning: type customVolumeExt is unused (U1000) (unused) ciao-cli/volume.go:39:2:warning: field customVolumeExt is unused (U1000) (unused) networking/ciao-cnci-agent/network.go:98:8:warning: const maxKey is unused (U1000) (unused) networking/libsnnet/tests/parallel/parallel_test.go:371:6:warning: func dockerNetList is unused (U1000) (unused) networking/libsnnet/tests/parallel/parallel_test.go:379:6:warning: func dockerNetInfo is unused (U1000) (unused) openstack/compute/api.go:308:2:warning: const limit is unused (U1000) (unused) openstack/compute/api.go:309:2:warning: const marker is unused (U1000) (unused) openstack/compute/api.go:312:6:warning: type pager is unused (U1000) (unused) openstack/compute/api.go:313:2:warning: func pager.filter is unused (U1000) (unused) openstack/compute/api.go:314:2:warning: func pager.nextPage is unused (U1000) (unused) openstack/compute/api_test.go:34:6:warning: func myHostname is unused (U1000) (unused) ciao-controller/api.go:72:2:warning: const statusFilter is unused (U1000) (unused) ciao-controller/api.go:75:6:warning: type pager is unused (U1000) (unused) ciao-controller/api.go:76:2:warning: func pager.filter is unused (U1000) (unused) ciao-controller/api.go:77:2:warning: func pager.nextPage is unused (U1000) (unused) ciao-controller/api.go:136:25:warning: func (*nodePager).filter is unused (U1000) (unused) ciao-controller/api.go:198:31:warning: func (*nodeServerPager).filter is unused (U1000) (unused) ciao-controller/controller_test.go:107:6:warning: func addTestTenantNoCNCI is unused (U1000) (unused) ciao-controller/controller_test.go:1104:6:warning: func startTestWorkload is unused (U1000) (unused) ciao-controller/controller_test.go:1123:6:warning: func testStartWorkloadLaunchCNCI is unused (U1000) (unused) ciao-controller/openstack_compute.go:552:5:warning: field Links is unused (U1000) (unused) qemu/qmp_test.go:493:3:warning: const seconds is unused (U1000) (unused) qemu/qmp_test.go:494:3:warning: const microsecondsEv1 is unused (U1000) (unused) qemu/qmp_test.go:495:3:warning: const device is unused (U1000) (unused) qemu/qmp_test.go:496:3:warning: const path is unused (U1000) (unused) templateutils/example_test.go:53:3:warning: field hidden is unused (U1000) (unused) Signed-off-by: Rob Bradford --- qmp_test.go | 7 ------- 1 file changed, 7 deletions(-) diff --git a/qmp_test.go b/qmp_test.go index 51058ec26..ce94c8ed5 100644 --- a/qmp_test.go +++ b/qmp_test.go @@ -489,13 +489,6 @@ func TestQMPDeviceDel(t *testing.T) { // The device_del command should timeout after 1 second and the QMP loop // should exit gracefully. func TestQMPDeviceDelTimeout(t *testing.T) { - const ( - seconds = 1352167040730 - microsecondsEv1 = 123456 - device = "device_" + testutil.VolumeUUID - path = "/dev/rbd0" - ) - var wg sync.WaitGroup connectedCh := make(chan *QMPVersion) disconnectedCh := make(chan struct{}) From 25a2dc8f6e5a88b058a37c0d72daa5d3301c4113 Mon Sep 17 00:00:00 2001 From: Archana Shinde Date: Fri, 4 Aug 2017 16:36:17 -0700 Subject: [PATCH 059/385] qemu: Update blockdev-add qmp command to support newer qemu versions With qemu 2.9, the qmp block-dev command was updated from: { "execute": "blockdev-add", "arguments": { "options": { ... } } } to: { "execute": "blockdev-add", "arguments": { ... } } Also, instead of id, blockdev-add now requires a node-name for the root node(https://wiki.qemu.org/index.php/ChangeLog/2.9) Store the version information with QMPStart and use that to issue qmp command for adding block devices in the correct format. Signed-off-by: Archana Shinde --- qmp.go | 34 ++++++++++++++++++++++------------ qmp_test.go | 6 ++++-- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/qmp.go b/qmp.go index b92a71432..573d22337 100644 --- a/qmp.go +++ b/qmp.go @@ -127,6 +127,7 @@ type QMP struct { cfg QMPConfig connectedCh chan<- *QMPVersion disconnectedCh chan struct{} + version *QMPVersion } // QMPVersion contains the version number and the capabailities of a QEMU @@ -533,7 +534,6 @@ func QMPStart(ctx context.Context, socket string, cfg QMPConfig, disconnectedCh connectedCh := make(chan *QMPVersion) - var version *QMPVersion q := startQMPLoop(conn, cfg, connectedCh, disconnectedCh) select { case <-ctx.Done(): @@ -542,13 +542,13 @@ func QMPStart(ctx context.Context, socket string, cfg QMPConfig, disconnectedCh return nil, nil, fmt.Errorf("Canceled by caller") case <-disconnectedCh: return nil, nil, fmt.Errorf("Lost connection to VM") - case version = <-connectedCh: - if version == nil { + case q.version = <-connectedCh: + if q.version == nil { return nil, nil, fmt.Errorf("Failed to find QMP version information") } } - return q, version, nil + return q, q.version, nil } // Shutdown closes the domain socket used to monitor a QEMU instance and @@ -602,16 +602,26 @@ func (q *QMP) ExecuteQuit(ctx context.Context) error { // used to name the device. As this identifier will be passed directly to QMP, // it must obey QMP's naming rules, e,g., it must start with a letter. func (q *QMP) ExecuteBlockdevAdd(ctx context.Context, device, blockdevID string) error { - args := map[string]interface{}{ - "options": map[string]interface{}{ - "driver": "raw", - "file": map[string]interface{}{ - "driver": "file", - "filename": device, - }, - "id": blockdevID, + var args map[string]interface{} + + blockdevArgs := map[string]interface{}{ + "driver": "raw", + "file": map[string]interface{}{ + "driver": "file", + "filename": device, }, } + + if q.version.Major > 2 || (q.version.Major == 2 && q.version.Minor >= 9) { + blockdevArgs["node-name"] = blockdevID + args = blockdevArgs + } else { + blockdevArgs["id"] = blockdevID + args = map[string]interface{}{ + "options": blockdevArgs, + } + } + return q.executeCommand(ctx, "blockdev-add", args, nil) } diff --git a/qmp_test.go b/qmp_test.go index ce94c8ed5..e449783ce 100644 --- a/qmp_test.go +++ b/qmp_test.go @@ -212,7 +212,7 @@ func (b *qmpTestCommandBuffer) Write(p []byte) (int, error) { return len(p), nil } -func checkVersion(t *testing.T, connectedCh <-chan *QMPVersion) { +func checkVersion(t *testing.T, connectedCh <-chan *QMPVersion) *QMPVersion { var version *QMPVersion select { case <-time.After(time.Second): @@ -233,6 +233,8 @@ func checkVersion(t *testing.T, connectedCh <-chan *QMPVersion) { t.Fatal("Invalid capabilities") } } + + return version } // Checks that a QMP Loop can be started and shutdown. @@ -356,7 +358,7 @@ func TestQMPBlockdevAdd(t *testing.T) { buf.AddCommand("blockdev-add", nil, "return", nil) cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) - checkVersion(t, connectedCh) + q.version = checkVersion(t, connectedCh) err := q.ExecuteBlockdevAdd(context.Background(), "/dev/rbd0", fmt.Sprintf("drive_%s", testutil.VolumeUUID)) if err != nil { From 8d617ff5b9f66c9b0fae48f40998ba9d44e45202 Mon Sep 17 00:00:00 2001 From: Sebastien Boeuf Date: Wed, 16 Aug 2017 10:07:00 -0700 Subject: [PATCH 060/385] qemu: Update virtio-net-pci command line In case of a network device, and specifically virtio-net-pci, we have to update to what is expected by qemu. In this case, the driver name should be prefixed with "driver=". Signed-off-by: Sebastien Boeuf --- qemu.go | 3 +++ qemu_test.go | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/qemu.go b/qemu.go index 827c05460..6a08f26c1 100644 --- a/qemu.go +++ b/qemu.go @@ -390,6 +390,9 @@ func (netdev NetDevice) QemuParams(config *Config) []string { var deviceParams []string var qemuParams []string + if netdev.Driver == VirtioNetPCI { + deviceParams = append(deviceParams, "driver=") + } deviceParams = append(deviceParams, fmt.Sprintf("%s", netdev.Driver)) deviceParams = append(deviceParams, fmt.Sprintf(",netdev=%s", netdev.ID)) deviceParams = append(deviceParams, fmt.Sprintf(",mac=%s", netdev.MACAddress)) diff --git a/qemu_test.go b/qemu_test.go index 7f3ba0c01..fd144936d 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -143,7 +143,7 @@ func TestAppendDeviceNetwork(t *testing.T) { testAppend(netdev, deviceNetworkString, t) } -var deviceNetworkPCIString = "-device virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff -netdev tap,id=tap0,ifname=ceth0,downscript=no,script=no,fds=3:4,vhost=on" +var deviceNetworkPCIString = "-device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff -netdev tap,id=tap0,ifname=ceth0,downscript=no,script=no,fds=3:4,vhost=on" func TestAppendDeviceNetworkPCI(t *testing.T) { foo, _ := ioutil.TempFile(os.TempDir(), "qemu-ciao-test") From e74aeef1ad333d424921a81eb1363c37efee7048 Mon Sep 17 00:00:00 2001 From: Sebastien Boeuf Date: Wed, 16 Aug 2017 02:21:20 -0700 Subject: [PATCH 061/385] qemu: Add disable-modern option for virtio devices For some cases, we have to disable the fast MMIO support, by disabling virtio 1.0. The reason for this is that we want to be able to nest our qemu VM inside a VM run by an hypervisor with no support for fast MMIO. Signed-off-by: Sebastien Boeuf --- qemu.go | 30 +++++++++++++++++++++ qemu_test.go | 75 ++++++++++++++++++++++++++++------------------------ 2 files changed, 70 insertions(+), 35 deletions(-) diff --git a/qemu.go b/qemu.go index 6a08f26c1..710a573fd 100644 --- a/qemu.go +++ b/qemu.go @@ -202,6 +202,9 @@ type FSDevice struct { // SecurityModel is the security model for this filesystem device. SecurityModel SecurityModelType + + // DisableModern prevents qemu from relying on fast MMIO. + DisableModern bool } // Valid returns true if the FSDevice structure is valid and complete. @@ -220,6 +223,9 @@ func (fsdev FSDevice) QemuParams(config *Config) []string { var qemuParams []string deviceParams = append(deviceParams, fmt.Sprintf("%s", fsdev.Driver)) + if fsdev.DisableModern { + deviceParams = append(deviceParams, ",disable-modern=true") + } deviceParams = append(deviceParams, fmt.Sprintf(",fsdev=%s", fsdev.ID)) deviceParams = append(deviceParams, fmt.Sprintf(",mount_tag=%s", fsdev.MountTag)) @@ -276,6 +282,9 @@ type CharDevice struct { ID string Path string Name string + + // DisableModern prevents qemu from relying on fast MMIO. + DisableModern bool } // Valid returns true if the CharDevice structure is valid and complete. @@ -294,6 +303,9 @@ func (cdev CharDevice) QemuParams(config *Config) []string { var qemuParams []string deviceParams = append(deviceParams, fmt.Sprintf("%s", cdev.Driver)) + if cdev.DisableModern { + deviceParams = append(deviceParams, ",disable-modern=true") + } if cdev.Bus != "" { deviceParams = append(deviceParams, fmt.Sprintf(",bus=%s", cdev.Bus)) } @@ -366,6 +378,9 @@ type NetDevice struct { // MACAddress is the networking device interface MAC address. MACAddress string + + // DisableModern prevents qemu from relying on fast MMIO. + DisableModern bool } // Valid returns true if the NetDevice structure is valid and complete. @@ -394,6 +409,9 @@ func (netdev NetDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, "driver=") } deviceParams = append(deviceParams, fmt.Sprintf("%s", netdev.Driver)) + if netdev.DisableModern { + deviceParams = append(deviceParams, ",disable-modern=true") + } deviceParams = append(deviceParams, fmt.Sprintf(",netdev=%s", netdev.ID)) deviceParams = append(deviceParams, fmt.Sprintf(",mac=%s", netdev.MACAddress)) @@ -454,6 +472,9 @@ type SerialDevice struct { // ID is the serial device identifier. ID string + + // DisableModern prevents qemu from relying on fast MMIO. + DisableModern bool } // Valid returns true if the SerialDevice structure is valid and complete. @@ -471,6 +492,9 @@ func (dev SerialDevice) QemuParams(config *Config) []string { var qemuParams []string deviceParams = append(deviceParams, fmt.Sprintf("%s", dev.Driver)) + if dev.DisableModern { + deviceParams = append(deviceParams, ",disable-modern=true") + } deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", dev.ID)) qemuParams = append(qemuParams, "-device") @@ -519,6 +543,9 @@ type BlockDevice struct { Format BlockDeviceFormat SCSI bool WCE bool + + // DisableModern prevents qemu from relying on fast MMIO. + DisableModern bool } // Valid returns true if the BlockDevice structure is valid and complete. @@ -537,6 +564,9 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string { var qemuParams []string deviceParams = append(deviceParams, fmt.Sprintf("%s", blkdev.Driver)) + if blkdev.DisableModern { + deviceParams = append(deviceParams, ",disable-modern=true") + } deviceParams = append(deviceParams, fmt.Sprintf(",drive=%s", blkdev.ID)) if blkdev.SCSI == false { deviceParams = append(deviceParams, ",scsi=off") diff --git a/qemu_test.go b/qemu_test.go index fd144936d..ea3ddc68a 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -104,7 +104,7 @@ func TestAppendDeviceNVDIMM(t *testing.T) { testAppend(object, deviceNVDIMMString, t) } -var deviceFSString = "-device virtio-9p-pci,fsdev=workload9p,mount_tag=rootfs -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none" +var deviceFSString = "-device virtio-9p-pci,disable-modern=true,fsdev=workload9p,mount_tag=rootfs -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none" func TestAppendDeviceFS(t *testing.T) { fsdev := FSDevice{ @@ -114,12 +114,13 @@ func TestAppendDeviceFS(t *testing.T) { Path: "/var/lib/docker/devicemapper/mnt/e31ebda2", MountTag: "rootfs", SecurityModel: None, + DisableModern: true, } testAppend(fsdev, deviceFSString, t) } -var deviceNetworkString = "-device virtio-net,netdev=tap0,mac=01:02:de:ad:be:ef -netdev tap,id=tap0,ifname=ceth0,downscript=no,script=no,fds=3:4,vhost=on" +var deviceNetworkString = "-device virtio-net,disable-modern=true,netdev=tap0,mac=01:02:de:ad:be:ef -netdev tap,id=tap0,ifname=ceth0,downscript=no,script=no,fds=3:4,vhost=on" func TestAppendDeviceNetwork(t *testing.T) { foo, _ := ioutil.TempFile(os.TempDir(), "qemu-ciao-test") @@ -129,21 +130,22 @@ func TestAppendDeviceNetwork(t *testing.T) { defer os.Remove(bar.Name()) netdev := NetDevice{ - Driver: VirtioNet, - Type: TAP, - ID: "tap0", - IFName: "ceth0", - Script: "no", - DownScript: "no", - FDs: []*os.File{foo, bar}, - VHost: true, - MACAddress: "01:02:de:ad:be:ef", + Driver: VirtioNet, + Type: TAP, + ID: "tap0", + IFName: "ceth0", + Script: "no", + DownScript: "no", + FDs: []*os.File{foo, bar}, + VHost: true, + MACAddress: "01:02:de:ad:be:ef", + DisableModern: true, } testAppend(netdev, deviceNetworkString, t) } -var deviceNetworkPCIString = "-device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff -netdev tap,id=tap0,ifname=ceth0,downscript=no,script=no,fds=3:4,vhost=on" +var deviceNetworkPCIString = "-device driver=virtio-net-pci,disable-modern=true,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff -netdev tap,id=tap0,ifname=ceth0,downscript=no,script=no,fds=3:4,vhost=on" func TestAppendDeviceNetworkPCI(t *testing.T) { foo, _ := ioutil.TempFile(os.TempDir(), "qemu-ciao-test") @@ -153,28 +155,30 @@ func TestAppendDeviceNetworkPCI(t *testing.T) { defer os.Remove(bar.Name()) netdev := NetDevice{ - Driver: VirtioNetPCI, - Type: TAP, - ID: "tap0", - IFName: "ceth0", - Bus: "/pci-bus/pcie.0", - Addr: "255", - Script: "no", - DownScript: "no", - FDs: []*os.File{foo, bar}, - VHost: true, - MACAddress: "01:02:de:ad:be:ef", + Driver: VirtioNetPCI, + Type: TAP, + ID: "tap0", + IFName: "ceth0", + Bus: "/pci-bus/pcie.0", + Addr: "255", + Script: "no", + DownScript: "no", + FDs: []*os.File{foo, bar}, + VHost: true, + MACAddress: "01:02:de:ad:be:ef", + DisableModern: true, } testAppend(netdev, deviceNetworkPCIString, t) } -var deviceSerialString = "-device virtio-serial-pci,id=serial0" +var deviceSerialString = "-device virtio-serial-pci,disable-modern=true,id=serial0" func TestAppendDeviceSerial(t *testing.T) { sdev := SerialDevice{ - Driver: VirtioSerial, - ID: "serial0", + Driver: VirtioSerial, + ID: "serial0", + DisableModern: true, } testAppend(sdev, deviceSerialString, t) @@ -195,18 +199,19 @@ func TestAppendDeviceSerialPort(t *testing.T) { testAppend(chardev, deviceSerialPortString, t) } -var deviceBlockString = "-device virtio-blk,drive=hd0,scsi=off,config-wce=off -drive id=hd0,file=/var/lib/ciao.img,aio=threads,format=qcow2,if=none" +var deviceBlockString = "-device virtio-blk,disable-modern=true,drive=hd0,scsi=off,config-wce=off -drive id=hd0,file=/var/lib/ciao.img,aio=threads,format=qcow2,if=none" func TestAppendDeviceBlock(t *testing.T) { blkdev := BlockDevice{ - Driver: VirtioBlock, - ID: "hd0", - File: "/var/lib/ciao.img", - AIO: Threads, - Format: QCOW2, - Interface: NoInterface, - SCSI: false, - WCE: false, + Driver: VirtioBlock, + ID: "hd0", + File: "/var/lib/ciao.img", + AIO: Threads, + Format: QCOW2, + Interface: NoInterface, + SCSI: false, + WCE: false, + DisableModern: true, } testAppend(blkdev, deviceBlockString, t) From 1fbe6c5d1d4aed85a003e8cdb2dd642fca9314a0 Mon Sep 17 00:00:00 2001 From: Archana Shinde Date: Wed, 30 Aug 2017 10:56:07 -0700 Subject: [PATCH 062/385] qmp: Update block device deletion for newer versions of qemu blockdev-del command has been added in qemu 2.9 to replace x-blockdev-del command used earlier for deleting block devices. Update ExecuteXBlockdevDel() to use this updated qmp command. Rename ExecuteXBlockdevDel to ExecuteBlockdevDel as this no longer executes x-block-del command for qemu>=2.9. Signed-off-by: Archana Shinde --- qmp.go | 14 ++++++++++---- qmp_test.go | 4 ++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/qmp.go b/qmp.go index 573d22337..5cc19af0e 100644 --- a/qmp.go +++ b/qmp.go @@ -642,13 +642,19 @@ func (q *QMP) ExecuteDeviceAdd(ctx context.Context, blockdevID, devID, driver, b return q.executeCommand(ctx, "device_add", args, nil) } -// ExecuteXBlockdevDel deletes a block device by sending a x-blockdev-del command. +// ExecuteBlockdevDel deletes a block device by sending a x-blockdev-del command +// for qemu versions < 2.9. It sends the updated blockdev-del command for qemu>=2.9. // blockdevID is the id of the block device to be deleted. Typically, this will // match the id passed to ExecuteBlockdevAdd. It must be a valid QMP id. -func (q *QMP) ExecuteXBlockdevDel(ctx context.Context, blockdevID string) error { - args := map[string]interface{}{ - "id": blockdevID, +func (q *QMP) ExecuteBlockdevDel(ctx context.Context, blockdevID string) error { + args := map[string]interface{}{} + + if q.version.Major > 2 || (q.version.Major == 2 && q.version.Minor >= 9) { + args["node-name"] = blockdevID + return q.executeCommand(ctx, "blockdev-del", args, nil) } + + args["id"] = blockdevID return q.executeCommand(ctx, "x-blockdev-del", args, nil) } diff --git a/qmp_test.go b/qmp_test.go index e449783ce..710c20099 100644 --- a/qmp_test.go +++ b/qmp_test.go @@ -406,8 +406,8 @@ func TestQMPXBlockdevDel(t *testing.T) { buf.AddCommand("x-blockdev-del", nil, "return", nil) cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) - checkVersion(t, connectedCh) - err := q.ExecuteXBlockdevDel(context.Background(), + q.version = checkVersion(t, connectedCh) + err := q.ExecuteBlockdevDel(context.Background(), fmt.Sprintf("drive_%s", testutil.VolumeUUID)) if err != nil { t.Fatalf("Unexpected error %v", err) From 4ecb9de5b33be61e0c77d0142a94171fde0db8ea Mon Sep 17 00:00:00 2001 From: Manohar Castelino Date: Tue, 12 Sep 2017 15:45:16 -0700 Subject: [PATCH 063/385] qemu: Add support for memory pre-allocation Add support for pre-allocating all of the RAM. This increases the memory footprint of QEMU and should be used only when needed. Signed-off-by: Manohar Castelino --- qemu.go | 17 +++++++++++++++++ qemu_test.go | 2 ++ 2 files changed, 19 insertions(+) diff --git a/qemu.go b/qemu.go index 710a573fd..e6ace3f94 100644 --- a/qemu.go +++ b/qemu.go @@ -741,6 +741,9 @@ type Knobs struct { // Daemonize will turn the qemu process into a daemon Daemonize bool + + // MemPrealloc will allocate all the RAM upfront + MemPrealloc bool } // Config is the qemu configuration structure. @@ -988,6 +991,20 @@ func (config *Config) appendKnobs() { if config.Knobs.Daemonize == true { config.qemuParams = append(config.qemuParams, "-daemonize") } + + if config.Knobs.MemPrealloc == true { + if config.Memory.Size != "" { + dimmName := "dimm1" + objMemParam := "memory-backend-ram,id=" + dimmName + ",size=" + config.Memory.Size + ",prealloc=on" + deviceMemParam := "pc-dimm,id=" + dimmName + ",memdev=" + dimmName + + config.qemuParams = append(config.qemuParams, "-object") + config.qemuParams = append(config.qemuParams, objMemParam) + + config.qemuParams = append(config.qemuParams, "-device") + config.qemuParams = append(config.qemuParams, deviceMemParam) + } + } } // LaunchQemu can be used to launch a new qemu instance. diff --git a/qemu_test.go b/qemu_test.go index ea3ddc68a..ae9d31d9a 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -231,6 +231,7 @@ func TestAppendKnobsAllTrue(t *testing.T) { NoDefaults: true, NoGraphic: true, Daemonize: true, + MemPrealloc: true, } testAppend(knobs, knobsString, t) @@ -241,6 +242,7 @@ func TestAppendKnobsAllFalse(t *testing.T) { NoUserConfig: false, NoDefaults: false, NoGraphic: false, + MemPrealloc: false, } testAppend(knobs, "", t) From ddee41d5538f0fa422f6b83ffb18058c30c6a8eb Mon Sep 17 00:00:00 2001 From: Manohar Castelino Date: Wed, 13 Sep 2017 07:48:15 -0700 Subject: [PATCH 064/385] QEMU: Enable realtime options Enable realtime options in QEMU. Also add support to control memory locking. Turning realtime on with memory locking disabled allows memory to be swapped out, potentially increasing density of VMs. Signed-off-by: Manohar Castelino --- qemu.go | 16 ++++++++++++++++ qemu_test.go | 6 +++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/qemu.go b/qemu.go index e6ace3f94..21868ac23 100644 --- a/qemu.go +++ b/qemu.go @@ -744,6 +744,13 @@ type Knobs struct { // MemPrealloc will allocate all the RAM upfront MemPrealloc bool + + // Mlock will control locking of memory + // Only active when Realtime is set to true + Mlock bool + + // Realtime will enable realtime QEMU + Realtime bool } // Config is the qemu configuration structure. @@ -1005,6 +1012,15 @@ func (config *Config) appendKnobs() { config.qemuParams = append(config.qemuParams, deviceMemParam) } } + + if config.Knobs.Realtime == true { + config.qemuParams = append(config.qemuParams, "-realtime") + if config.Knobs.Mlock == true { + config.qemuParams = append(config.qemuParams, "mlock=on") + } else { + config.qemuParams = append(config.qemuParams, "mlock=off") + } + } } // LaunchQemu can be used to launch a new qemu instance. diff --git a/qemu_test.go b/qemu_test.go index ae9d31d9a..317d2a048 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -223,7 +223,7 @@ func TestAppendEmptyDevice(t *testing.T) { testAppend(device, "", t) } -var knobsString = "-no-user-config -nodefaults -nographic -daemonize" +var knobsString = "-no-user-config -nodefaults -nographic -daemonize -realtime mlock=on" func TestAppendKnobsAllTrue(t *testing.T) { knobs := Knobs{ @@ -232,6 +232,8 @@ func TestAppendKnobsAllTrue(t *testing.T) { NoGraphic: true, Daemonize: true, MemPrealloc: true, + Realtime: true, + Mlock: true, } testAppend(knobs, knobsString, t) @@ -243,6 +245,8 @@ func TestAppendKnobsAllFalse(t *testing.T) { NoDefaults: false, NoGraphic: false, MemPrealloc: false, + Realtime: false, + Mlock: false, } testAppend(knobs, "", t) From 0c206170c43deda44ba51156e74aeb0237c942b3 Mon Sep 17 00:00:00 2001 From: Manohar Castelino Date: Fri, 15 Sep 2017 09:44:23 -0700 Subject: [PATCH 065/385] Knobs: Modify the behaviour of the Mlock knob. The Mlock knob is unfortunately tied to realtime. Allow Mlock knob to implicitly enable realtime to get the desired swapping behavior when swapping is desired. Note: Realtime as implemented today can only be used to enable swap, and as such does not really control realtime behaviour. The knob is redundant but retained here just to ensure that when more capabilities are added in future QEMU iterations we can take advantage of the same. Signed-off-by: Manohar Castelino --- qemu.go | 11 +++++++++++ qemu_test.go | 6 +++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/qemu.go b/qemu.go index 21868ac23..3bd79284b 100644 --- a/qemu.go +++ b/qemu.go @@ -1015,11 +1015,22 @@ func (config *Config) appendKnobs() { if config.Knobs.Realtime == true { config.qemuParams = append(config.qemuParams, "-realtime") + // This path is redundant as the default behaviour is locked memory + // Realtime today does not control any other feature even though + // other features may be added in the future + // https://lists.gnu.org/archive/html/qemu-devel/2012-12/msg03330.html if config.Knobs.Mlock == true { config.qemuParams = append(config.qemuParams, "mlock=on") } else { config.qemuParams = append(config.qemuParams, "mlock=off") } + } else { + // In order to turn mlock off we need the -realtime option as well + if config.Knobs.Mlock == false { + //Enable realtime anyway just to get the right swapping behaviour + config.qemuParams = append(config.qemuParams, "-realtime") + config.qemuParams = append(config.qemuParams, "mlock=off") + } } } diff --git a/qemu_test.go b/qemu_test.go index 317d2a048..09ed2a92e 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -223,9 +223,8 @@ func TestAppendEmptyDevice(t *testing.T) { testAppend(device, "", t) } -var knobsString = "-no-user-config -nodefaults -nographic -daemonize -realtime mlock=on" - func TestAppendKnobsAllTrue(t *testing.T) { + var knobsString = "-no-user-config -nodefaults -nographic -daemonize -realtime mlock=on" knobs := Knobs{ NoUserConfig: true, NoDefaults: true, @@ -240,6 +239,7 @@ func TestAppendKnobsAllTrue(t *testing.T) { } func TestAppendKnobsAllFalse(t *testing.T) { + var knobsString = "-realtime mlock=off" knobs := Knobs{ NoUserConfig: false, NoDefaults: false, @@ -249,7 +249,7 @@ func TestAppendKnobsAllFalse(t *testing.T) { Mlock: false, } - testAppend(knobs, "", t) + testAppend(knobs, knobsString, t) } var kernelString = "-kernel /opt/vmlinux.container -append root=/dev/pmem0p1 rootflags=dax,data=ordered,errors=remount-ro rw rootfstype=ext4 tsc=reliable" From a70ffd1980fb2e989c2deffc7e97feeaece17ba9 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Thu, 21 Sep 2017 17:30:19 +0100 Subject: [PATCH 066/385] Build: Fix the build after repo move. Ciao has recently moved from github.com/01org/ciao to github.com/ciao-project/ciao. This moves requires us to update our import paths to build successfully. Signed-off-by: Mark Ryan --- examples_test.go | 2 +- qemu_test.go | 2 +- qmp_test.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples_test.go b/examples_test.go index 45607a044..bc06f5209 100644 --- a/examples_test.go +++ b/examples_test.go @@ -21,7 +21,7 @@ import ( "context" - "github.com/01org/ciao/qemu" + "github.com/ciao-project/ciao/qemu" ) func Example() { diff --git a/qemu_test.go b/qemu_test.go index 09ed2a92e..98bf151fd 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -22,7 +22,7 @@ import ( "strings" "testing" - "github.com/01org/ciao/testutil" + "github.com/ciao-project/ciao/testutil" ) func testAppend(structure interface{}, expected string, t *testing.T) { diff --git a/qmp_test.go b/qmp_test.go index 710c20099..5b63b1707 100644 --- a/qmp_test.go +++ b/qmp_test.go @@ -28,7 +28,7 @@ import ( "context" - "github.com/01org/ciao/testutil" + "github.com/ciao-project/ciao/testutil" ) const ( From 9bfa7927950b04cce84c14d1d982de702189ef97 Mon Sep 17 00:00:00 2001 From: Archana Shinde Date: Fri, 22 Sep 2017 16:02:27 -0700 Subject: [PATCH 067/385] vfio: Add ability to pass VFIO devices to qemu VFIO is meant for exposing exposing direct device access to the virtual machine. Add ability to append VFIO devices to qemu command line. Signed-off-by: Archana Shinde --- qemu.go | 26 ++++++++++++++++++++++++++ qemu_test.go | 10 ++++++++++ 2 files changed, 36 insertions(+) diff --git a/qemu.go b/qemu.go index 3bd79284b..66bf21ebc 100644 --- a/qemu.go +++ b/qemu.go @@ -591,6 +591,32 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string { return qemuParams } +// VFIODevice represents a qemu vfio device meant for direct access by guest OS. +type VFIODevice struct { + // Bus-Device-Function of device + BDF string +} + +// Valid returns true if the VFIODevice structure is valid and complete. +func (vfioDev VFIODevice) Valid() bool { + if vfioDev.BDF == "" { + return false + } + + return true +} + +// QemuParams returns the qemu parameters built out of this vfio device. +func (vfioDev VFIODevice) QemuParams(config *Config) []string { + var qemuParams []string + + deviceParam := fmt.Sprintf("vfio-pci,host=%s", vfioDev.BDF) + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, deviceParam) + + return qemuParams +} + // RTCBaseType is the qemu RTC base time type. type RTCBaseType string diff --git a/qemu_test.go b/qemu_test.go index 98bf151fd..f3d28e3b5 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -217,6 +217,16 @@ func TestAppendDeviceBlock(t *testing.T) { testAppend(blkdev, deviceBlockString, t) } +var deviceVFIOString = "-device vfio-pci,host=02:10.0" + +func TestAppendDeviceVFIO(t *testing.T) { + vfioDevice := VFIODevice{ + BDF: "02:10.0", + } + + testAppend(vfioDevice, deviceVFIOString, t) +} + func TestAppendEmptyDevice(t *testing.T) { device := SerialDevice{} From 3da2ef9deaec061887e8bef5a8e302e8509c8a8c Mon Sep 17 00:00:00 2001 From: Manohar Castelino Date: Mon, 25 Sep 2017 16:30:56 -0700 Subject: [PATCH 068/385] QEMU: Knobs: Huge Page Support: Add support for huge pages Add support to launch virtual machines where the RAM is allocated using huge pages. This is useful for running with a user mode networking stack, and for custom setups which require high performance and low latency. Signed-off-by: Manohar Castelino --- qemu.go | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/qemu.go b/qemu.go index 66bf21ebc..364f291be 100644 --- a/qemu.go +++ b/qemu.go @@ -768,6 +768,16 @@ type Knobs struct { // Daemonize will turn the qemu process into a daemon Daemonize bool + // Both HugePages and MemPrealloc require the Memory.Size of the VM + // to be set, as they need to reserve the memory upfront in order + // for the VM to boot without errors. + // + // HugePages always results in memory pre-allocation. + // However the setup is different from normal pre-allocation. + // Hence HugePages has precedence over MemPrealloc + // HugePages will pre-allocate all the RAM from huge pages + HugePages bool + // MemPrealloc will allocate all the RAM upfront MemPrealloc bool @@ -1025,7 +1035,19 @@ func (config *Config) appendKnobs() { config.qemuParams = append(config.qemuParams, "-daemonize") } - if config.Knobs.MemPrealloc == true { + if config.Knobs.HugePages == true { + if config.Memory.Size != "" { + dimmName := "dimm1" + objMemParam := "memory-backend-file,id=" + dimmName + ",size=" + config.Memory.Size + ",mem-path=/dev/hugepages,share=on,prealloc=on" + numaMemParam := "node,memdev=" + dimmName + + config.qemuParams = append(config.qemuParams, "-object") + config.qemuParams = append(config.qemuParams, objMemParam) + + config.qemuParams = append(config.qemuParams, "-numa") + config.qemuParams = append(config.qemuParams, numaMemParam) + } + } else if config.Knobs.MemPrealloc == true { if config.Memory.Size != "" { dimmName := "dimm1" objMemParam := "memory-backend-ram,id=" + dimmName + ",size=" + config.Memory.Size + ",prealloc=on" From 83126d3e05429f6f5c3ca436392e7e5071c30447 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Fri, 6 Oct 2017 14:28:12 -0500 Subject: [PATCH 069/385] bios: add support for custom bios Add Bios field into qemu Config struct, this allows to start VM with custom bios Partially fixes https://github.com/clearcontainers/runtime/issues/686 Signed-off-by: Julio Montes --- qemu.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/qemu.go b/qemu.go index 364f291be..861bea09f 100644 --- a/qemu.go +++ b/qemu.go @@ -837,6 +837,9 @@ type Config struct { // Knobs is a set of qemu boolean settings. Knobs Knobs + // Bios is the -bios parameter + Bios string + // fds is a list of open file descriptors to be passed to the spawned qemu process fds []*os.File @@ -1082,6 +1085,13 @@ func (config *Config) appendKnobs() { } } +func (config *Config) appendBios() { + if config.Bios != "" { + config.qemuParams = append(config.qemuParams, "-bios") + config.qemuParams = append(config.qemuParams, config.Bios) + } +} + // LaunchQemu can be used to launch a new qemu instance. // // The Config parameter contains a set of qemu parameters and settings. @@ -1105,6 +1115,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { config.appendVGA() config.appendKnobs() config.appendKernel() + config.appendBios() return LaunchCustomQemu(config.Ctx, config.Path, config.qemuParams, config.fds, logger) } From cfa8a995dee073b7ae4c0c44a71b8cfb1a578bfb Mon Sep 17 00:00:00 2001 From: Manohar Castelino Date: Wed, 4 Oct 2017 17:04:26 -0700 Subject: [PATCH 070/385] Networking: Add support for handling macvtap interfaces Add support for macvtap interfaces. This also brings in support for generic multiqueue support in virt containers. Signed-off-by: Manohar Castelino --- qemu.go | 178 ++++++++++++++++++++++++++++++++++++++++----------- qemu_test.go | 63 +++++++++++++++--- 2 files changed, 195 insertions(+), 46 deletions(-) diff --git a/qemu.go b/qemu.go index 861bea09f..069705449 100644 --- a/qemu.go +++ b/qemu.go @@ -332,17 +332,71 @@ func (cdev CharDevice) QemuParams(config *Config) []string { return qemuParams } -// NetDeviceType is a qemu networing device type. +// NetDeviceType is a qemu networking device type. type NetDeviceType string const ( // TAP is a TAP networking device type. TAP NetDeviceType = "tap" - // MACVTAP is a MAC virtual TAP networking device type. + // MACVTAP is a macvtap networking device type. MACVTAP = "macvtap" + + // IPVTAP is a ipvtap virtual networking device type. + IPVTAP = "ipvtap" + + // VETHTAP is a veth-tap virtual networking device type. + VETHTAP = "vethtap" + + // VFIO is a direct assigned PCI device or PCI VF + VFIO = "VFIO" + + // VHOSTUSER is a vhost-user port (socket) + VHOSTUSER = "vhostuser" ) +// QemuNetdevParam converts to the QEMU -netdev parameter notation +func (n NetDeviceType) QemuNetdevParam() string { + switch n { + case TAP: + return "tap" + case MACVTAP: + return "tap" + case IPVTAP: + return "tap" + case VETHTAP: + return "tap" // -netdev type=tap -device virtio-net-pci + case VFIO: + return "" // -device vfio-pci (no netdev) + case VHOSTUSER: + return "vhost-user" // -netdev type=vhost-user (no device) + default: + return "" + + } +} + +// QemuDeviceParam converts to the QEMU -device parameter notation +func (n NetDeviceType) QemuDeviceParam() string { + switch n { + case TAP: + return "virtio-net-pci" + case MACVTAP: + return "virtio-net-pci" + case IPVTAP: + return "virtio-net-pci" + case VETHTAP: + return "virtio-net-pci" // -netdev type=tap -device virtio-net-pci + case VFIO: + return "vfio-pci" // -device vfio-pci (no netdev) + case VHOSTUSER: + return "" // -netdev type=vhost-user (no device) + default: + return "" + + } +} + // NetDevice represents a guest networking device type NetDevice struct { // Type is the netdev type (e.g. tap). @@ -399,68 +453,116 @@ func (netdev NetDevice) Valid() bool { } } -// QemuParams returns the qemu parameters built out of this network device. -func (netdev NetDevice) QemuParams(config *Config) []string { - var netdevParams []string +// QemuDeviceParams returns the -device parameters for this network device +func (netdev NetDevice) QemuDeviceParams(config *Config) []string { var deviceParams []string - var qemuParams []string - if netdev.Driver == VirtioNetPCI { - deviceParams = append(deviceParams, "driver=") - } - deviceParams = append(deviceParams, fmt.Sprintf("%s", netdev.Driver)) - if netdev.DisableModern { - deviceParams = append(deviceParams, ",disable-modern=true") + if netdev.Type.QemuDeviceParam() == "" { + return nil } + + deviceParams = append(deviceParams, "driver=") + deviceParams = append(deviceParams, netdev.Type.QemuDeviceParam()) deviceParams = append(deviceParams, fmt.Sprintf(",netdev=%s", netdev.ID)) deviceParams = append(deviceParams, fmt.Sprintf(",mac=%s", netdev.MACAddress)) - if netdev.Driver == VirtioNetPCI { - if netdev.Bus != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",bus=%s", netdev.Bus)) - } + if netdev.Bus != "" { + deviceParams = append(deviceParams, fmt.Sprintf(",bus=%s", netdev.Bus)) + } - if netdev.Addr != "" { - addr, err := strconv.Atoi(netdev.Addr) - if err == nil && addr >= 0 { - deviceParams = append(deviceParams, fmt.Sprintf(",addr=%x", addr)) - } + if netdev.Addr != "" { + addr, err := strconv.Atoi(netdev.Addr) + if err == nil && addr >= 0 { + deviceParams = append(deviceParams, fmt.Sprintf(",addr=%x", addr)) } } - netdevParams = append(netdevParams, string(netdev.Type)) + if netdev.DisableModern { + deviceParams = append(deviceParams, ",disable-modern=true") + } + + if len(netdev.FDs) > 0 { + // https://www.linux-kvm.org/page/Multiqueue + // -netdev tap,vhost=on,queues=N + // enable mq and specify msix vectors in qemu cmdline + // (2N+2 vectors, N for tx queues, N for rx queues, 1 for config, and one for possible control vq) + // -device virtio-net-pci,mq=on,vectors=2N+2... + // enable mq in guest by 'ethtool -L eth0 combined $queue_num' + // Clearlinux automatically sets up the queues properly + // The agent implementation should do this to ensure that it is + // always set + vectors := len(netdev.FDs)*2 + 2 + + // Note: We are appending to the device params here + deviceParams = append(deviceParams, ",mq=on") + deviceParams = append(deviceParams, fmt.Sprintf(",vectors=%d", vectors)) + } + + return deviceParams +} + +// QemuNetdevParams returns the -netdev parameters for this network device +func (netdev NetDevice) QemuNetdevParams(config *Config) []string { + var netdevParams []string + + if netdev.Type.QemuNetdevParam() == "" { + return nil + } + + netdevParams = append(netdevParams, netdev.Type.QemuNetdevParam()) netdevParams = append(netdevParams, fmt.Sprintf(",id=%s", netdev.ID)) - netdevParams = append(netdevParams, fmt.Sprintf(",ifname=%s", netdev.IFName)) - - if netdev.DownScript != "" { - netdevParams = append(netdevParams, fmt.Sprintf(",downscript=%s", netdev.DownScript)) - } - - if netdev.Script != "" { - netdevParams = append(netdevParams, fmt.Sprintf(",script=%s", netdev.Script)) + if netdev.VHost == true { + netdevParams = append(netdevParams, ",vhost=on") } if len(netdev.FDs) > 0 { var fdParams []string qemuFDs := config.appendFDs(netdev.FDs) - for _, fd := range qemuFDs { fdParams = append(fdParams, fmt.Sprintf("%d", fd)) } netdevParams = append(netdevParams, fmt.Sprintf(",fds=%s", strings.Join(fdParams, ":"))) + + } else { + netdevParams = append(netdevParams, fmt.Sprintf(",ifname=%s", netdev.IFName)) + if netdev.DownScript != "" { + netdevParams = append(netdevParams, fmt.Sprintf(",downscript=%s", netdev.DownScript)) + } + if netdev.Script != "" { + netdevParams = append(netdevParams, fmt.Sprintf(",script=%s", netdev.Script)) + } + } + return netdevParams +} + +// QemuParams returns the qemu parameters built out of this network device. +func (netdev NetDevice) QemuParams(config *Config) []string { + var netdevParams []string + var deviceParams []string + var qemuParams []string + + // Macvtap can only be connected via fds + if (netdev.Type == MACVTAP) && (len(netdev.FDs) == 0) { + return nil // implicit error } - if netdev.VHost == true { - netdevParams = append(netdevParams, ",vhost=on") + if netdev.Type.QemuNetdevParam() != "" { + netdevParams = netdev.QemuNetdevParams(config) + if netdevParams != nil { + qemuParams = append(qemuParams, "-netdev") + qemuParams = append(qemuParams, strings.Join(netdevParams, "")) + } } - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, "")) - - qemuParams = append(qemuParams, "-netdev") - qemuParams = append(qemuParams, strings.Join(netdevParams, "")) + if netdev.Type.QemuDeviceParam() != "" { + deviceParams = netdev.QemuDeviceParams(config) + if deviceParams != nil { + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, strings.Join(deviceParams, "")) + } + } return qemuParams } diff --git a/qemu_test.go b/qemu_test.go index f3d28e3b5..849043779 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -120,14 +120,36 @@ func TestAppendDeviceFS(t *testing.T) { testAppend(fsdev, deviceFSString, t) } -var deviceNetworkString = "-device virtio-net,disable-modern=true,netdev=tap0,mac=01:02:de:ad:be:ef -netdev tap,id=tap0,ifname=ceth0,downscript=no,script=no,fds=3:4,vhost=on" +var deviceNetworkString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,disable-modern=true" func TestAppendDeviceNetwork(t *testing.T) { + netdev := NetDevice{ + Driver: VirtioNet, + Type: TAP, + ID: "tap0", + IFName: "ceth0", + Script: "no", + DownScript: "no", + VHost: true, + MACAddress: "01:02:de:ad:be:ef", + DisableModern: true, + } + + testAppend(netdev, deviceNetworkString, t) +} + +var deviceNetworkStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,disable-modern=true,mq=on,vectors=6" + +func TestAppendDeviceNetworkMq(t *testing.T) { foo, _ := ioutil.TempFile(os.TempDir(), "qemu-ciao-test") bar, _ := ioutil.TempFile(os.TempDir(), "qemu-ciao-test") - defer os.Remove(foo.Name()) - defer os.Remove(bar.Name()) + defer func() { + foo.Close() + bar.Close() + os.Remove(foo.Name()) + os.Remove(bar.Name()) + }() netdev := NetDevice{ Driver: VirtioNet, @@ -142,17 +164,42 @@ func TestAppendDeviceNetwork(t *testing.T) { DisableModern: true, } - testAppend(netdev, deviceNetworkString, t) + testAppend(netdev, deviceNetworkStringMq, t) } -var deviceNetworkPCIString = "-device driver=virtio-net-pci,disable-modern=true,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff -netdev tap,id=tap0,ifname=ceth0,downscript=no,script=no,fds=3:4,vhost=on" +var deviceNetworkPCIString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true" func TestAppendDeviceNetworkPCI(t *testing.T) { + + netdev := NetDevice{ + Driver: VirtioNetPCI, + Type: TAP, + ID: "tap0", + IFName: "ceth0", + Bus: "/pci-bus/pcie.0", + Addr: "255", + Script: "no", + DownScript: "no", + VHost: true, + MACAddress: "01:02:de:ad:be:ef", + DisableModern: true, + } + + testAppend(netdev, deviceNetworkPCIString, t) +} + +var deviceNetworkPCIStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true,mq=on,vectors=6" + +func TestAppendDeviceNetworkPCIMq(t *testing.T) { foo, _ := ioutil.TempFile(os.TempDir(), "qemu-ciao-test") bar, _ := ioutil.TempFile(os.TempDir(), "qemu-ciao-test") - defer os.Remove(foo.Name()) - defer os.Remove(bar.Name()) + defer func() { + foo.Close() + bar.Close() + os.Remove(foo.Name()) + os.Remove(bar.Name()) + }() netdev := NetDevice{ Driver: VirtioNetPCI, @@ -169,7 +216,7 @@ func TestAppendDeviceNetworkPCI(t *testing.T) { DisableModern: true, } - testAppend(netdev, deviceNetworkPCIString, t) + testAppend(netdev, deviceNetworkPCIStringMq, t) } var deviceSerialString = "-device virtio-serial-pci,disable-modern=true,id=serial0" From 83485dc9a4c3c15a2ddb2f989a1f5f70d2f00a5a Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Mon, 23 Oct 2017 08:36:40 -0500 Subject: [PATCH 071/385] qemu: Implement Bridge struct Bridge struct represent pci bridges(pci-bridge) or pcie bridges(pcie-pci-bridges), bridges can be used to hot plug devices in pc and q35 machines Signed-off-by: Julio Montes --- qemu.go | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/qemu.go b/qemu.go index 069705449..0e70793fe 100644 --- a/qemu.go +++ b/qemu.go @@ -719,6 +719,73 @@ func (vfioDev VFIODevice) QemuParams(config *Config) []string { return qemuParams } +// BridgeType is the type of the bridge +type BridgeType uint + +const ( + // PCIBridge is a pci bridge + PCIBridge BridgeType = iota + + // PCIEBridge is a pcie bridge + PCIEBridge +) + +// BridgeDevice represents a qemu bridge device like pci-bridge, pxb, etc. +type BridgeDevice struct { + // Type of the bridge + Type BridgeType + + // Bus number where the bridge is plugged, typically pci.0 or pcie.0 + Bus string + + // ID is used to identify the bridge in qemu + ID string + + // Chassis number + Chassis int + + // SHPC is used to enable or disable the standard hot plug controller + SHPC bool +} + +// Valid returns true if the BridgeDevice structure is valid and complete. +func (bridgeDev BridgeDevice) Valid() bool { + if bridgeDev.Type != PCIBridge && bridgeDev.Type != PCIEBridge { + return false + } + + if bridgeDev.Bus == "" { + return false + } + + if bridgeDev.ID == "" { + return false + } + + return true +} + +// QemuParams returns the qemu parameters built out of this bridge device. +func (bridgeDev BridgeDevice) QemuParams(config *Config) []string { + var qemuParams []string + + shpc := "off" + if bridgeDev.SHPC { + shpc = "on" + } + + deviceName := "pci-bridge" + if bridgeDev.Type == PCIEBridge { + deviceName = "pcie-pci-bridge" + } + + deviceParam := fmt.Sprintf("%s,bus=%s,id=%s,chassis_nr=%d,shpc=%s", deviceName, bridgeDev.Bus, bridgeDev.ID, bridgeDev.Chassis, shpc) + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, deviceParam) + + return qemuParams +} + // RTCBaseType is the qemu RTC base time type. type RTCBaseType string From 14316ce0b17a24091718536aae859b1ae3abaf77 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Tue, 24 Oct 2017 08:57:58 -0500 Subject: [PATCH 072/385] qemu/qmp: Implement function to hot plug PCI devices ExecutePCIDeviceAdd is a function that can be used to hot plug devices directly on pci(e).0 or pci(e) bridges. ExecutePCIDeviceAdd is PCI specific because unlike ExecuteDeviceAdd, it includes an extra parameter to specify the device address on its parent bus. Signed-off-by: Julio Montes --- qmp.go | 16 ++++++++++++++++ qmp_test.go | 25 +++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/qmp.go b/qmp.go index 5cc19af0e..ec2910444 100644 --- a/qmp.go +++ b/qmp.go @@ -675,3 +675,19 @@ func (q *QMP) ExecuteDeviceDel(ctx context.Context, devID string) error { } return q.executeCommand(ctx, "device_del", args, filter) } + +// ExecutePCIDeviceAdd is the PCI version of ExecuteDeviceAdd. This function can be used +// to hot plug PCI devices on PCI(E) bridges, unlike ExecuteDeviceAdd this function receive the +// device address on its parent bus. bus is optional. +func (q *QMP) ExecutePCIDeviceAdd(ctx context.Context, blockdevID, devID, driver, addr, bus string) error { + args := map[string]interface{}{ + "id": devID, + "driver": driver, + "drive": blockdevID, + "addr": addr, + } + if bus != "" { + args["bus"] = bus + } + return q.executeCommand(ctx, "device_add", args, nil) +} diff --git a/qmp_test.go b/qmp_test.go index 5b63b1707..e8072431c 100644 --- a/qmp_test.go +++ b/qmp_test.go @@ -785,3 +785,28 @@ func TestQMPLostLoop(t *testing.T) { t.Error("Expected executeQMPCapabilities to fail") } } + +// Checks that PCI devices are correctly added using device_add. +// +// We start a QMPLoop, send the device_add command and stop the loop. +// +// The device_add command should be correctly sent and the QMP loop should +// exit gracefully. +func TestQMPPCIDeviceAdd(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("device_add", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + blockdevID := fmt.Sprintf("drive_%s", testutil.VolumeUUID) + devID := fmt.Sprintf("device_%s", testutil.VolumeUUID) + err := q.ExecutePCIDeviceAdd(context.Background(), blockdevID, devID, + "virtio-blk-pci", "0x1", "") + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} From 7e5614b8a711847c775cdc96b4992e6a45e66bfe Mon Sep 17 00:00:00 2001 From: Manohar Castelino Date: Thu, 2 Nov 2017 12:58:32 -0700 Subject: [PATCH 073/385] Networking: Add vhost fd support Add vhost fd support. This is needed in the case of multi queue. Signed-off-by: Manohar Castelino --- qemu.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/qemu.go b/qemu.go index 0e70793fe..0d2fecf3a 100644 --- a/qemu.go +++ b/qemu.go @@ -425,7 +425,8 @@ type NetDevice struct { // FDs represents the list of already existing file descriptors to be used. // This is mostly useful for mq support. - FDs []*os.File + FDs []*os.File + VhostFDs []*os.File // VHost enables virtio device emulation from the host kernel instead of from qemu. VHost bool @@ -511,8 +512,17 @@ func (netdev NetDevice) QemuNetdevParams(config *Config) []string { netdevParams = append(netdevParams, netdev.Type.QemuNetdevParam()) netdevParams = append(netdevParams, fmt.Sprintf(",id=%s", netdev.ID)) + if netdev.VHost == true { netdevParams = append(netdevParams, ",vhost=on") + if len(netdev.VhostFDs) > 0 { + var fdParams []string + qemuFDs := config.appendFDs(netdev.VhostFDs) + for _, fd := range qemuFDs { + fdParams = append(fdParams, fmt.Sprintf("%d", fd)) + } + netdevParams = append(netdevParams, fmt.Sprintf(",vhostfds=%s", strings.Join(fdParams, ":"))) + } } if len(netdev.FDs) > 0 { From b639da45edc4a01bae37a625c27cf863408a7eac Mon Sep 17 00:00:00 2001 From: Archana Shinde Date: Thu, 9 Nov 2017 17:53:26 -0800 Subject: [PATCH 074/385] qemu: Add function to hotplug vfio device Add ability to hotplug a pci device bound to vfio-pci driver. Signed-off-by: Archana Shinde --- qmp.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/qmp.go b/qmp.go index ec2910444..2a001887f 100644 --- a/qmp.go +++ b/qmp.go @@ -691,3 +691,16 @@ func (q *QMP) ExecutePCIDeviceAdd(ctx context.Context, blockdevID, devID, driver } return q.executeCommand(ctx, "device_add", args, nil) } + +// ExecuteVFIODeviceAdd adds a VFIO device to a QEMU instance +// using the device_add command. devID is the id of the device to add. +// Must be valid QMP identifier. bdf is the PCI bus-device-function +// of the pci device. +func (q *QMP) ExecuteVFIODeviceAdd(ctx context.Context, devID, bdf string) error { + args := map[string]interface{}{ + "id": devID, + "driver": "vfio-pci", + "host": bdf, + } + return q.executeCommand(ctx, "device_add", args, nil) +} From 11977072ea827f70b37c86090ff632cad78bac85 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Mon, 30 Oct 2017 09:55:07 +0000 Subject: [PATCH 075/385] qemu: Add a SysProcAttr parameter to LaunchCustomQemu This change adds an additional parameter to LaunchCustomQemu that allows users more control over the newly created process. They can for instance specify the user under which the new qemu process should run and which capabilities should be retained in the child qemu process. Signed-off-by: Mark Ryan --- examples_test.go | 2 +- qemu.go | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/examples_test.go b/examples_test.go index bc06f5209..35373cc1f 100644 --- a/examples_test.go +++ b/examples_test.go @@ -41,7 +41,7 @@ func Example() { // LaunchCustomQemu should return as soon as the instance has launched as we // are using the --daemonize flag. It will set up a unix domain socket // called /tmp/qmp-socket that we can use to manage the instance. - _, err := qemu.LaunchCustomQemu(context.Background(), "", params, nil, nil) + _, err := qemu.LaunchCustomQemu(context.Background(), "", params, nil, nil, nil) if err != nil { panic(err) } diff --git a/qemu.go b/qemu.go index 0d2fecf3a..a342a4327 100644 --- a/qemu.go +++ b/qemu.go @@ -31,6 +31,7 @@ import ( "os/exec" "strconv" "strings" + "syscall" "context" ) @@ -1296,7 +1297,8 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { config.appendKernel() config.appendBios() - return LaunchCustomQemu(config.Ctx, config.Path, config.qemuParams, config.fds, logger) + return LaunchCustomQemu(config.Ctx, config.Path, config.qemuParams, + config.fds, nil, logger) } // LaunchCustomQemu can be used to launch a new qemu instance. @@ -1307,16 +1309,19 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { // signature of this function will not need to change when launch cancellation // is implemented. // -// config.qemuParams is a slice of options to pass to qemu-system-x86_64 and fds is a +// params is a slice of options to pass to qemu-system-x86_64 and fds is a // list of open file descriptors that are to be passed to the spawned qemu -// process. +// process. The attrs parameter can be used to control aspects of the +// newly created qemu process, such as the user and group under which it +// runs. It may be nil. // // This function writes its log output via logger parameter. // // The function will block until the launched qemu process exits. "", nil // will be returned if the launch succeeds. Otherwise a string containing // the contents of stderr + a Go error object will be returned. -func LaunchCustomQemu(ctx context.Context, path string, params []string, fds []*os.File, logger QMPLog) (string, error) { +func LaunchCustomQemu(ctx context.Context, path string, params []string, fds []*os.File, + attr *syscall.SysProcAttr, logger QMPLog) (string, error) { if logger == nil { logger = qmpNullLogger{} } @@ -1333,6 +1338,8 @@ func LaunchCustomQemu(ctx context.Context, path string, params []string, fds []* cmd.ExtraFiles = fds } + cmd.SysProcAttr = attr + var stderr bytes.Buffer cmd.Stderr = &stderr logger.Infof("launching qemu with: %v", params) From bc030d13d1ef3501613c4d02ab7688de1cea76a5 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Mon, 30 Oct 2017 10:06:20 +0000 Subject: [PATCH 076/385] qemu: Add a SysProcAttr parameter to CreateCloudInitISO This change adds an additional parameter to CreateCloudInitISO that allows users more control over the newly created xorriso process. They can for instance specify the user under which the new qemu process should run and which capabilities should be retained in the child xorriso process. Signed-off-by: Mark Ryan --- image.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/image.go b/image.go index 9b456872d..4f064c681 100644 --- a/image.go +++ b/image.go @@ -23,6 +23,7 @@ import ( "os" "os/exec" "path" + "syscall" ) // CreateCloudInitISO creates a cloud-init ConfigDrive ISO image. This is @@ -34,8 +35,10 @@ import ( // isoPath contains the desired path of the ISO image to be created. The // userdata and metadata parameters are byte slices that contain the // ConfigDrive userdata and metadata that will be stored with the ISO image. +// The attrs parameter can be used to control aspects of the newly created +// qemu process, such as the user and group under which it runs. It may be nil. func CreateCloudInitISO(ctx context.Context, scratchDir, isoPath string, - userData, metaData []byte) error { + userData, metaData []byte, attr *syscall.SysProcAttr) error { configDrivePath := path.Join(scratchDir, "clr-cloud-init") dataDirPath := path.Join(configDrivePath, "openstack", "latest") metaDataPath := path.Join(dataDirPath, "meta_data.json") @@ -63,6 +66,7 @@ func CreateCloudInitISO(ctx context.Context, scratchDir, isoPath string, cmd := exec.CommandContext(ctx, "xorriso", "-as", "mkisofs", "-R", "-V", "config-2", "-o", isoPath, configDrivePath) + cmd.SysProcAttr = attr err = cmd.Run() if err != nil { return fmt.Errorf("Unable to create cloudinit iso image %v", err) From e39da6ca473c8df2426da411f4ef147ef2cbaa7b Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Wed, 29 Nov 2017 10:15:33 -0600 Subject: [PATCH 077/385] qmp: Add support for hot plugging VFIO devices on PCI(E) bridges This patch adds a new function to hot plug VFIO devices on PCI(E) bridges, This change allows to hot plug N VFIO devices in Qemu PC and Q35 Signed-off-by: Julio Montes --- qmp.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/qmp.go b/qmp.go index 2a001887f..72ab89b6b 100644 --- a/qmp.go +++ b/qmp.go @@ -704,3 +704,21 @@ func (q *QMP) ExecuteVFIODeviceAdd(ctx context.Context, devID, bdf string) error } return q.executeCommand(ctx, "device_add", args, nil) } + +// ExecutePCIVFIODeviceAdd adds a VFIO device to a QEMU instance using the device_add command. +// This function can be used to hot plug VFIO devices on PCI(E) bridges, unlike +// ExecuteVFIODeviceAdd this function receives the bus and the device address on its parent bus. +// bus is optional. devID is the id of the device to add.Must be valid QMP identifier. bdf is the +// PCI bus-device-function of the pci device. +func (q *QMP) ExecutePCIVFIODeviceAdd(ctx context.Context, devID, bdf, addr, bus string) error { + args := map[string]interface{}{ + "id": devID, + "driver": "vfio-pci", + "host": bdf, + "addr": addr, + } + if bus != "" { + args["bus"] = bus + } + return q.executeCommand(ctx, "device_add", args, nil) +} From 24b14059b362b57940b94c1de4943ae73a1589b9 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Thu, 7 Dec 2017 10:59:20 -0600 Subject: [PATCH 078/385] qemu: Add functions to process QMP response Some QMP commands like ```query-hotpluggable-cpus``` returns a response that needs to be processed and returned to the client as a struct. This patch adds the function ```executeCommandWithResponse``` that returns the response of a QMP command. Signed-off-by: Julio Montes --- qmp.go | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/qmp.go b/qmp.go index 72ab89b6b..f6774c4e1 100644 --- a/qmp.go +++ b/qmp.go @@ -107,7 +107,8 @@ type QMPEvent struct { } type qmpResult struct { - err error + response interface{} + err error } type qmpCommand struct { @@ -203,14 +204,14 @@ func (q *QMP) processQMPEvent(cmdQueue *list.List, name interface{}, data interf } } -func (q *QMP) finaliseCommand(cmdEl *list.Element, cmdQueue *list.List, succeeded bool) { +func (q *QMP) finaliseCommandWithResponse(cmdEl *list.Element, cmdQueue *list.List, succeeded bool, response interface{}) { cmd := cmdEl.Value.(*qmpCommand) cmdQueue.Remove(cmdEl) select { case <-cmd.ctx.Done(): default: if succeeded { - cmd.res <- qmpResult{} + cmd.res <- qmpResult{response: response} } else { cmd.res <- qmpResult{err: fmt.Errorf("QMP command failed")} } @@ -220,6 +221,10 @@ func (q *QMP) finaliseCommand(cmdEl *list.Element, cmdQueue *list.List, succeede } } +func (q *QMP) finaliseCommand(cmdEl *list.Element, cmdQueue *list.List, succeeded bool) { + q.finaliseCommandWithResponse(cmdEl, cmdQueue, succeeded, nil) +} + func (q *QMP) processQMPInput(line []byte, cmdQueue *list.List) { var vmData map[string]interface{} err := json.Unmarshal(line, &vmData) @@ -233,7 +238,7 @@ func (q *QMP) processQMPInput(line []byte, cmdQueue *list.List) { return } - _, succeeded := vmData["return"] + response, succeeded := vmData["return"] _, failed := vmData["error"] if !succeeded && !failed { @@ -248,7 +253,7 @@ func (q *QMP) processQMPInput(line []byte, cmdQueue *list.List) { } cmd := cmdEl.Value.(*qmpCommand) if failed || cmd.filter == nil { - q.finaliseCommand(cmdEl, cmdQueue, succeeded) + q.finaliseCommandWithResponse(cmdEl, cmdQueue, succeeded, response) } else { cmd.resultReceived = true } @@ -463,9 +468,10 @@ func startQMPLoop(conn io.ReadWriteCloser, cfg QMPConfig, return q } -func (q *QMP) executeCommand(ctx context.Context, name string, args map[string]interface{}, - filter *qmpEventFilter) error { +func (q *QMP) executeCommandWithResponse(ctx context.Context, name string, args map[string]interface{}, + filter *qmpEventFilter) (interface{}, error) { var err error + var response interface{} resCh := make(chan qmpResult) select { case <-q.disconnectedCh: @@ -480,16 +486,24 @@ func (q *QMP) executeCommand(ctx context.Context, name string, args map[string]i } if err != nil { - return err + return response, err } select { case res := <-resCh: err = res.err + response = res.response case <-ctx.Done(): err = ctx.Err() } + return response, err +} + +func (q *QMP) executeCommand(ctx context.Context, name string, args map[string]interface{}, + filter *qmpEventFilter) error { + + _, err := q.executeCommandWithResponse(ctx, name, args, filter) return err } From 8c428ed722debf4f24ae7d19d4570123e8ff541b Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Wed, 6 Dec 2017 12:50:59 -0600 Subject: [PATCH 079/385] qemu: Add function to hotplug CPUs ExecuteCPUDeviceAdd hot-adds a CPU to a running VM Signed-off-by: Julio Montes --- qmp.go | 15 +++++++++++++++ qmp_test.go | 22 ++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/qmp.go b/qmp.go index f6774c4e1..0e08e4d26 100644 --- a/qmp.go +++ b/qmp.go @@ -736,3 +736,18 @@ func (q *QMP) ExecutePCIVFIODeviceAdd(ctx context.Context, devID, bdf, addr, bus } return q.executeCommand(ctx, "device_add", args, nil) } + +// ExecuteCPUDeviceAdd adds a CPU to a QEMU instance using the device_add command. +// driver is the CPU model, cpuID must be a unique ID to identify the CPU, socketID is the socket number within +// node/board the CPU belongs to, coreID is the core number within socket the CPU belongs to, threadID is the +// thread number within core the CPU belongs to. +func (q *QMP) ExecuteCPUDeviceAdd(ctx context.Context, driver, cpuID, socketID, coreID, threadID string) error { + args := map[string]interface{}{ + "driver": driver, + "id": cpuID, + "socket-id": socketID, + "core-id": coreID, + "thread-id": threadID, + } + return q.executeCommand(ctx, "device_add", args, nil) +} diff --git a/qmp_test.go b/qmp_test.go index e8072431c..7e83f4f93 100644 --- a/qmp_test.go +++ b/qmp_test.go @@ -810,3 +810,25 @@ func TestQMPPCIDeviceAdd(t *testing.T) { q.Shutdown() <-disconnectedCh } + +// Checks that CPU are correctly added using device_add +func TestQMPCPUDeviceAdd(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("device_add", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + driver := "qemu64-x86_64-cpu" + cpuID := "cpu-0" + socketID := "0" + coreID := "1" + threadID := "0" + err := q.ExecuteCPUDeviceAdd(context.Background(), driver, cpuID, socketID, coreID, threadID) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} From b8ddd2440011d270746baa6ff2026a30d9f842ef Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Thu, 7 Dec 2017 13:27:52 -0600 Subject: [PATCH 080/385] qemu: Add function to list hotpluggable CPUs ExecuteQueryHotpluggableCPUs returns the list of hotpluggable CPUs Signed-off-by: Julio Montes --- qmp.go | 38 ++++++++++++++++++++++++++++++++++++++ qmp_test.go | 42 +++++++++++++++++++++++++++++++++++++----- 2 files changed, 75 insertions(+), 5 deletions(-) diff --git a/qmp.go b/qmp.go index 0e08e4d26..3727b8478 100644 --- a/qmp.go +++ b/qmp.go @@ -140,6 +140,22 @@ type QMPVersion struct { Capabilities []string } +// CPUProperties contains the properties to be used for hotplugging a CPU instance +type CPUProperties struct { + Node int `json:"node-id"` + Socket int `json:"socket-id"` + Core int `json:"core-id"` + Thread int `json:"thread-id"` +} + +// HotpluggableCPU represents a hotpluggable CPU +type HotpluggableCPU struct { + Type string `json:"type"` + VcpusCount int `json:"vcpus-count"` + Properties CPUProperties `json:"props"` + QOMPath string `json:"qom-path"` +} + func (q *QMP) readLoop(fromVMCh chan<- []byte) { scanner := bufio.NewScanner(q.conn) for scanner.Scan() { @@ -751,3 +767,25 @@ func (q *QMP) ExecuteCPUDeviceAdd(ctx context.Context, driver, cpuID, socketID, } return q.executeCommand(ctx, "device_add", args, nil) } + +// ExecuteQueryHotpluggableCPUs returns a slice with the list of hotpluggable CPUs +func (q *QMP) ExecuteQueryHotpluggableCPUs(ctx context.Context) ([]HotpluggableCPU, error) { + response, err := q.executeCommandWithResponse(ctx, "query-hotpluggable-cpus", nil, nil) + if err != nil { + return nil, err + } + + // convert response to json + data, err := json.Marshal(response) + if err != nil { + return nil, fmt.Errorf("Unable to extract CPU information: %v", err) + } + + var cpus []HotpluggableCPU + // convert json to []HotpluggableCPU + if err = json.Unmarshal(data, &cpus); err != nil { + return nil, fmt.Errorf("Unable to convert json to hotpluggable CPU: %v", err) + } + + return cpus, nil +} diff --git a/qmp_test.go b/qmp_test.go index 7e83f4f93..21b5e968d 100644 --- a/qmp_test.go +++ b/qmp_test.go @@ -22,6 +22,7 @@ import ( "errors" "fmt" "log" + "reflect" "sync" "testing" "time" @@ -75,7 +76,7 @@ type qmpTestEvent struct { type qmpTestResult struct { result string - data map[string]interface{} + data interface{} } type qmpTestCommandBuffer struct { @@ -132,11 +133,8 @@ func (b *qmpTestCommandBuffer) startEventLoop(wg *sync.WaitGroup) { } func (b *qmpTestCommandBuffer) AddCommand(name string, args map[string]interface{}, - result string, data map[string]interface{}) { + result string, data interface{}) { b.cmds = append(b.cmds, qmpTestCommand{name, args}) - if data == nil { - data = make(map[string]interface{}) - } b.results = append(b.results, qmpTestResult{result, data}) } @@ -832,3 +830,37 @@ func TestQMPCPUDeviceAdd(t *testing.T) { q.Shutdown() <-disconnectedCh } + +// Checks that hotpluggable CPUs are listed correctly +func TestQMPExecuteQueryHotpluggableCPUs(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + hotCPU := HotpluggableCPU{ + Type: "host-x86", + VcpusCount: 5, + Properties: CPUProperties{ + Node: 1, + Socket: 3, + Core: 2, + Thread: 4, + }, + QOMPath: "/abc/123/rgb", + } + buf.AddCommand("query-hotpluggable-cpus", nil, "return", []interface{}{hotCPU}) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + hotCPUs, err := q.ExecuteQueryHotpluggableCPUs(context.Background()) + if err != nil { + t.Fatalf("Unexpected error: %v\n", err) + } + if len(hotCPUs) != 1 { + t.Fatalf("Expected hot CPUs length equals to 1\n") + } + if reflect.DeepEqual(hotCPUs[0], hotCPU) == false { + t.Fatalf("Expected %v equals to %v\n", hotCPUs[0], hotCPU) + } + q.Shutdown() + <-disconnectedCh +} From 48feb29fe5b1d81fdbec9558a592ac9910593ace Mon Sep 17 00:00:00 2001 From: Eric Ernst Date: Wed, 6 Dec 2017 11:13:32 -0800 Subject: [PATCH 081/385] qemu: introduce vhost-user handling Add ability to add a vhostuser device to the QEMU commandline. We expect two different types of devices to be connected through a vhostuser socket: SCSI and network. Signed-off-by: Eric Ernst --- qemu.go | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++ qemu_test.go | 23 +++++++++++++++++ 2 files changed, 95 insertions(+) diff --git a/qemu.go b/qemu.go index a342a4327..b65983cce 100644 --- a/qemu.go +++ b/qemu.go @@ -704,6 +704,78 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string { return qemuParams } +// VhostUserDeviceType is a qemu networking device type. +type VhostUserDeviceType string + +const ( + //VhostUserSCSI represents a SCSI vhostuser device type + VhostUserSCSI = "vhost-user-scsi-pci" + //VhostUserNet represents a net vhostuser device type + VhostUserNet = "virtio-net-pci" +) + +// VhostUserDevice represents a qemu vhost-user network device meant to be passed +// in to the guest +type VhostUserDevice struct { + SocketPath string //path to vhostuser socket on host + CharDevID string + TypeDevID string //id (SCSI) or netdev (net) device parameter + MacAddress string //only valid if device type is VhostUserNet + VhostUserType VhostUserDeviceType +} + +// Valid returns true if there is a valid socket path defined for VhostUserDevice +func (vhostuserDev VhostUserDevice) Valid() bool { + if vhostuserDev.SocketPath == "" || vhostuserDev.CharDevID == "" || + vhostuserDev.TypeDevID == "" || + (vhostuserDev.VhostUserType == VhostUserNet && vhostuserDev.MacAddress == "") { + return false + } + + return true +} + +// QemuParams returns the qemu parameters built out of this vhostuser device. +func (vhostuserDev VhostUserDevice) QemuParams(config *Config) []string { + var qemuParams []string + var charParams []string + var netParams []string + var devParams []string + + charParams = append(charParams, "socket") + charParams = append(charParams, fmt.Sprintf("id=%s", vhostuserDev.CharDevID)) + charParams = append(charParams, fmt.Sprintf("path=%s", vhostuserDev.SocketPath)) + + // if network based vhost device: + if vhostuserDev.VhostUserType == VhostUserNet { + netParams = append(netParams, "type=vhost-user") + netParams = append(netParams, fmt.Sprintf("id=%s", vhostuserDev.TypeDevID)) + netParams = append(netParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) + netParams = append(netParams, "vhostforce") + + devParams = append(devParams, VhostUserNet) + devParams = append(devParams, fmt.Sprintf("netdev=%s", vhostuserDev.TypeDevID)) + devParams = append(devParams, fmt.Sprintf("mac=%s", vhostuserDev.MacAddress)) + } else { + devParams = append(devParams, VhostUserSCSI) + devParams = append(devParams, fmt.Sprintf("id=%s", vhostuserDev.TypeDevID)) + devParams = append(devParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) + } + + qemuParams = append(qemuParams, "-chardev") + qemuParams = append(qemuParams, strings.Join(charParams, ",")) + + // if network based vhost device: + if vhostuserDev.VhostUserType == VhostUserNet { + qemuParams = append(qemuParams, "-netdev") + qemuParams = append(qemuParams, strings.Join(netParams, ",")) + } + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, strings.Join(devParams, ",")) + + return qemuParams +} + // VFIODevice represents a qemu vfio device meant for direct access by guest OS. type VFIODevice struct { // Bus-Device-Function of device diff --git a/qemu_test.go b/qemu_test.go index 849043779..6b0195e2b 100644 --- a/qemu_test.go +++ b/qemu_test.go @@ -264,6 +264,29 @@ func TestAppendDeviceBlock(t *testing.T) { testAppend(blkdev, deviceBlockString, t) } +var deviceVhostUserNetString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -netdev type=vhost-user,id=net1,chardev=char1,vhostforce -device virtio-net-pci,netdev=net1,mac=00:11:22:33:44:55" +var deviceVhostUserSCSIString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -device vhost-user-scsi-pci,id=scsi1,chardev=char1" + +func TestAppendDeviceVhostUser(t *testing.T) { + vhostuserSCSIDevice := VhostUserDevice{ + SocketPath: "/tmp/nonexistentsocket.socket", + CharDevID: "char1", + TypeDevID: "scsi1", + MacAddress: "", + VhostUserType: VhostUserSCSI, + } + testAppend(vhostuserSCSIDevice, deviceVhostUserSCSIString, t) + + vhostuserNetDevice := VhostUserDevice{ + SocketPath: "/tmp/nonexistentsocket.socket", + CharDevID: "char1", + TypeDevID: "net1", + MacAddress: "00:11:22:33:44:55", + VhostUserType: VhostUserNet, + } + testAppend(vhostuserNetDevice, deviceVhostUserNetString, t) +} + var deviceVFIOString = "-device vfio-pci,host=02:10.0" func TestAppendDeviceVFIO(t *testing.T) { From 27709fce439b2f5abeda97230d713562f05389c5 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Thu, 23 Nov 2017 11:15:11 +0000 Subject: [PATCH 082/385] Move files to the qemu folder This commit moves all of the source files to the qemu folder. Signed-off-by: Mark Ryan --- examples_test.go => qemu/examples_test.go | 0 image.go => qemu/image.go | 0 qemu.go => qemu/qemu.go | 0 qemu_test.go => qemu/qemu_test.go | 0 qmp.go => qemu/qmp.go | 0 qmp_test.go => qemu/qmp_test.go | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename examples_test.go => qemu/examples_test.go (100%) rename image.go => qemu/image.go (100%) rename qemu.go => qemu/qemu.go (100%) rename qemu_test.go => qemu/qemu_test.go (100%) rename qmp.go => qemu/qmp.go (100%) rename qmp_test.go => qemu/qmp_test.go (100%) diff --git a/examples_test.go b/qemu/examples_test.go similarity index 100% rename from examples_test.go rename to qemu/examples_test.go diff --git a/image.go b/qemu/image.go similarity index 100% rename from image.go rename to qemu/image.go diff --git a/qemu.go b/qemu/qemu.go similarity index 100% rename from qemu.go rename to qemu/qemu.go diff --git a/qemu_test.go b/qemu/qemu_test.go similarity index 100% rename from qemu_test.go rename to qemu/qemu_test.go diff --git a/qmp.go b/qemu/qmp.go similarity index 100% rename from qmp.go rename to qemu/qmp.go diff --git a/qmp_test.go b/qemu/qmp_test.go similarity index 100% rename from qmp_test.go rename to qemu/qmp_test.go From 57aafb56383e10b21fcb264c232bc3341e90eb3c Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Thu, 23 Nov 2017 13:18:47 +0000 Subject: [PATCH 083/385] Remove all references to and dependencies on ciao This commit removes all the references to the ciao project. It also removes some of the dependencies that the unit tests were pulling in. Signed-off-by: Mark Ryan --- qemu/examples_test.go | 2 +- qemu/qemu_test.go | 21 +++++++++++---------- qemu/qmp_test.go | 24 +++++++++++------------- 3 files changed, 23 insertions(+), 24 deletions(-) diff --git a/qemu/examples_test.go b/qemu/examples_test.go index 35373cc1f..c3930a1e1 100644 --- a/qemu/examples_test.go +++ b/qemu/examples_test.go @@ -21,7 +21,7 @@ import ( "context" - "github.com/ciao-project/ciao/qemu" + "github.com/intel/govmm/qemu" ) func Example() { diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 6b0195e2b..8a97fd1d5 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -21,10 +21,11 @@ import ( "os" "strings" "testing" - - "github.com/ciao-project/ciao/testutil" ) +const agentUUID = "4cb19522-1e18-439a-883a-f9b2a3a95f5e" +const volumeUUID = "67d86208-b46c-4465-9018-e14187d4010" + func testAppend(structure interface{}, expected string, t *testing.T) { var config Config @@ -141,8 +142,8 @@ func TestAppendDeviceNetwork(t *testing.T) { var deviceNetworkStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,disable-modern=true,mq=on,vectors=6" func TestAppendDeviceNetworkMq(t *testing.T) { - foo, _ := ioutil.TempFile(os.TempDir(), "qemu-ciao-test") - bar, _ := ioutil.TempFile(os.TempDir(), "qemu-ciao-test") + foo, _ := ioutil.TempFile(os.TempDir(), "govmm-qemu-test") + bar, _ := ioutil.TempFile(os.TempDir(), "govmm-qemu-test") defer func() { foo.Close() @@ -191,8 +192,8 @@ func TestAppendDeviceNetworkPCI(t *testing.T) { var deviceNetworkPCIStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true,mq=on,vectors=6" func TestAppendDeviceNetworkPCIMq(t *testing.T) { - foo, _ := ioutil.TempFile(os.TempDir(), "qemu-ciao-test") - bar, _ := ioutil.TempFile(os.TempDir(), "qemu-ciao-test") + foo, _ := ioutil.TempFile(os.TempDir(), "govmm-qemu-test") + bar, _ := ioutil.TempFile(os.TempDir(), "govmm-qemu-test") defer func() { foo.Close() @@ -246,13 +247,13 @@ func TestAppendDeviceSerialPort(t *testing.T) { testAppend(chardev, deviceSerialPortString, t) } -var deviceBlockString = "-device virtio-blk,disable-modern=true,drive=hd0,scsi=off,config-wce=off -drive id=hd0,file=/var/lib/ciao.img,aio=threads,format=qcow2,if=none" +var deviceBlockString = "-device virtio-blk,disable-modern=true,drive=hd0,scsi=off,config-wce=off -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none" func TestAppendDeviceBlock(t *testing.T) { blkdev := BlockDevice{ Driver: VirtioBlock, ID: "hd0", - File: "/var/lib/ciao.img", + File: "/var/lib/vm.img", AIO: Threads, Format: QCOW2, Interface: NoInterface, @@ -413,13 +414,13 @@ func TestAppendQMPSocketServer(t *testing.T) { testAppend(qmp, qmpSocketServerString, t) } -var qemuString = "-name cc-qemu -cpu host -uuid " + testutil.AgentUUID +var qemuString = "-name cc-qemu -cpu host -uuid " + agentUUID func TestAppendStrings(t *testing.T) { config := Config{ Path: "qemu", Name: "cc-qemu", - UUID: testutil.AgentUUID, + UUID: agentUUID, CPUModel: "host", } diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 21b5e968d..9b87fbcc5 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -28,8 +28,6 @@ import ( "time" "context" - - "github.com/ciao-project/ciao/testutil" ) const ( @@ -358,7 +356,7 @@ func TestQMPBlockdevAdd(t *testing.T) { q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) q.version = checkVersion(t, connectedCh) err := q.ExecuteBlockdevAdd(context.Background(), "/dev/rbd0", - fmt.Sprintf("drive_%s", testutil.VolumeUUID)) + fmt.Sprintf("drive_%s", volumeUUID)) if err != nil { t.Fatalf("Unexpected error %v", err) } @@ -380,8 +378,8 @@ func TestQMPDeviceAdd(t *testing.T) { cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) - blockdevID := fmt.Sprintf("drive_%s", testutil.VolumeUUID) - devID := fmt.Sprintf("device_%s", testutil.VolumeUUID) + blockdevID := fmt.Sprintf("drive_%s", volumeUUID) + devID := fmt.Sprintf("device_%s", volumeUUID) err := q.ExecuteDeviceAdd(context.Background(), blockdevID, devID, "virtio-blk-pci", "") if err != nil { @@ -406,7 +404,7 @@ func TestQMPXBlockdevDel(t *testing.T) { q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) q.version = checkVersion(t, connectedCh) err := q.ExecuteBlockdevDel(context.Background(), - fmt.Sprintf("drive_%s", testutil.VolumeUUID)) + fmt.Sprintf("drive_%s", volumeUUID)) if err != nil { t.Fatalf("Unexpected error %v", err) } @@ -427,7 +425,7 @@ func TestQMPDeviceDel(t *testing.T) { seconds = 1352167040730 microsecondsEv1 = 123456 microsecondsEv2 = 123556 - device = "device_" + testutil.VolumeUUID + device = "device_" + volumeUUID path = "/dev/rbd0" ) @@ -470,7 +468,7 @@ func TestQMPDeviceDel(t *testing.T) { checkVersion(t, connectedCh) buf.startEventLoop(&wg) err := q.ExecuteDeviceDel(context.Background(), - fmt.Sprintf("device_%s", testutil.VolumeUUID)) + fmt.Sprintf("device_%s", volumeUUID)) if err != nil { t.Fatalf("Unexpected error %v", err) } @@ -499,7 +497,7 @@ func TestQMPDeviceDelTimeout(t *testing.T) { checkVersion(t, connectedCh) ctx, cancel := context.WithTimeout(context.Background(), time.Second) err := q.ExecuteDeviceDel(ctx, - fmt.Sprintf("device_%s", testutil.VolumeUUID)) + fmt.Sprintf("device_%s", volumeUUID)) cancel() if err != context.DeadlineExceeded { t.Fatalf("Timeout expected found %v", err) @@ -683,7 +681,7 @@ func TestQMPEvents(t *testing.T) { seconds = 1352167040730 microsecondsEv1 = 123456 microsecondsEv2 = 123556 - device = "device_" + testutil.VolumeUUID + device = "device_" + volumeUUID path = "/dev/rbd0" ) var wg sync.WaitGroup @@ -721,7 +719,7 @@ func TestQMPEvents(t *testing.T) { deviceName := ev.Data["device"].(string) if deviceName != device { t.Errorf("Unexpected device field. Expected %s, found %s", - "device_"+testutil.VolumeUUID, device) + "device_"+volumeUUID, device) } pathName := ev.Data["path"].(string) if pathName != path { @@ -798,8 +796,8 @@ func TestQMPPCIDeviceAdd(t *testing.T) { cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) - blockdevID := fmt.Sprintf("drive_%s", testutil.VolumeUUID) - devID := fmt.Sprintf("device_%s", testutil.VolumeUUID) + blockdevID := fmt.Sprintf("drive_%s", volumeUUID) + devID := fmt.Sprintf("device_%s", volumeUUID) err := q.ExecutePCIDeviceAdd(context.Background(), blockdevID, devID, "virtio-blk-pci", "0x1", "") if err != nil { From a8aaf534b660cad4dd7ecb3c651bc77fccec6aff Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Thu, 23 Nov 2017 15:17:49 +0000 Subject: [PATCH 084/385] Add project documentation This commit adds three documents: - CONTRIBUTING.md ( a files describing how to contribute to the project )` - COPYING ( the Apache 2.0 license ) - README.md ( a brief description of the project) Signed-off-by: Mark Ryan --- CONTRIBUTING.md | 62 +++++++++++++++ COPYING | 202 ++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 15 ++++ 3 files changed, 279 insertions(+) create mode 100644 CONTRIBUTING.md create mode 100644 COPYING create mode 100644 README.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..9e94d1d02 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,62 @@ +# Contributing to Virtual Machine Manager for Go + +Virtual Machine Manager for Go is an open source project licensed under the [Apache v2 License] (https://opensource.org/licenses/Apache-2.0) + +## Coding Style + +Virtual Machine Manager for Go follows the standard formatting recommendations and language idioms set out +in [Effective Go](https://golang.org/doc/effective_go.html) and in the +[Go Code Review Comments wiki](https://github.com/golang/go/wiki/CodeReviewComments). + +## Certificate of Origin + +In order to get a clear contribution chain of trust we use the [signed-off-by language] (https://01.org/community/signed-process) +used by the Linux kernel project. + +## Patch format + +Beside the signed-off-by footer, we expect each patch to comply with the following format: + +``` +Change summary + +More detailed explanation of your changes: Why and how. +Wrap it to 72 characters. +See [here] (http://chris.beams.io/posts/git-commit/) +for some more good advices. + +Fixes #NUMBER (or URL to the issue) + +Signed-off-by: +``` + +For example: + +``` +Fix poorly named identifiers + +One identifier, fnname, in func.go was poorly named. It has been renamed +to fnName. Another identifier retval was not needed and has been removed +entirely. + +Fixes #1 + +Signed-off-by: Mark Ryan +``` + +## Pull requests + +We accept github pull requests. + +## Quality Controls + +We request you give quality assurance some consideration by: + +* Adding go unit tests for changes where it makes sense. +* Enabling [Travis CI](https://travis-ci.org/intel/govmm) on your github fork of Virtual Machine Manager for Go to get continuous integration feedback on your dev/test branches. + +## Issue tracking + +If you have a problem, please let us know. If it's a bug not already documented, by all means please [open an +issue in github](https://github.com/intel/govmm/issues/new) so we all get visibility +the problem and work toward resolution. diff --git a/COPYING b/COPYING new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/COPYING @@ -0,0 +1,202 @@ + + 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 + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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/README.md b/README.md new file mode 100644 index 000000000..b86409a9e --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +# Virtual Machine Manager for Go + +Virtual Machine Manager for Go (govmm) is a suite of packages that +provide Go APIs for creating and managing virtual machines. There's +currently support for only one hypervisor, qemu/kvm, support for which +is provided by the github.com/intel/govmm/qemu package. + +The qemu package provides APIs for launching qemu instances and for +managing those instances via QMP, once launched. VM instances can +be stopped, have devices attached to them and monitored for events +via the qemu APIs. + +The qemu package has no external dependencies apart from the Go +standard library and so is nice and easy to vendor inside other +projects. From 9cb47fc07d1770e7034f692fa8aa7c12705ada90 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Thu, 23 Nov 2017 15:21:26 +0000 Subject: [PATCH 085/385] Add .gitignore file. Currently it just ignores emacs backup files. Signed-off-by: Mark Ryan --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..b25c15b81 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*~ From db60e32f30275bb3ea92b9c6652e82dde30fcf4b Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Tue, 12 Dec 2017 11:19:02 +0000 Subject: [PATCH 086/385] Enable Travis builds This commit adds a .travis file which enables Travis builds for govmm. The script builds the source and runs the unit tests and gometalinter enabling - misspell - vet - ineffassign - gofmt - gocyclo 15 - golint - errcheck - deadcode Signed-off-by: Mark Ryan --- .travis.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..36f4b30f0 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,21 @@ +language: go + +go: + - 1.8 + - 1.9 + - tip + +go_import_path: github.com/intel/govmm + +matrix: + allow_failures: + - go: tip + +before_install: + - go get github.com/alecthomas/gometalinter + - gometalinter --install + +script: + - go env + - go test -v ./... + - gometalinter --tests --vendor --disable-all --enable=misspell --enable=vet --enable=ineffassign --enable=gofmt --enable=gocyclo --cyclo-over=15 --enable=golint --enable=errcheck --enable=deadcode ./... From d74e3b66338c190688b3cd7a898426fb55f42dbf Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Tue, 12 Dec 2017 11:51:17 +0000 Subject: [PATCH 087/385] Fix errcheck failures in the unit tests There were some unchecked errors in some of the unit files relating to the closure and removal of temporary files. As the closure and removal of these files is not really important to whether the next passes or fails we ignore the errors. Signed-off-by: Mark Ryan --- qemu/qemu_test.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 8a97fd1d5..51269eabb 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -146,10 +146,10 @@ func TestAppendDeviceNetworkMq(t *testing.T) { bar, _ := ioutil.TempFile(os.TempDir(), "govmm-qemu-test") defer func() { - foo.Close() - bar.Close() - os.Remove(foo.Name()) - os.Remove(bar.Name()) + _ = foo.Close() + _ = bar.Close() + _ = os.Remove(foo.Name()) + _ = os.Remove(bar.Name()) }() netdev := NetDevice{ @@ -196,10 +196,10 @@ func TestAppendDeviceNetworkPCIMq(t *testing.T) { bar, _ := ioutil.TempFile(os.TempDir(), "govmm-qemu-test") defer func() { - foo.Close() - bar.Close() - os.Remove(foo.Name()) - os.Remove(bar.Name()) + _ = foo.Close() + _ = bar.Close() + _ = os.Remove(foo.Name()) + _ = os.Remove(bar.Name()) }() netdev := NetDevice{ From 3baa776515bccb2e8e298e6060b3517f91d3b28c Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Tue, 12 Dec 2017 12:06:13 +0000 Subject: [PATCH 088/385] Add badges to the README.md file This commit adds three badges to the README.md file - Goreportcard - Godoc - Travis Signed-off-by: Mark Ryan --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index b86409a9e..0e8e2d23a 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ # Virtual Machine Manager for Go +[![Go Report Card](https://goreportcard.com/badge/github.com/intel/govmm)](https://goreportcard.com/report/github.com/intel/govmm) +[![Build Status](https://travis-ci.org/intel/govmm.svg?branch=master)](https://travis-ci.org/intel/govmm) +[![GoDoc](https://godoc.org/github.com/intel/govmm/qemu?status.svg)](https://godoc.org/github.com/intel/govmm/qemu) + Virtual Machine Manager for Go (govmm) is a suite of packages that provide Go APIs for creating and managing virtual machines. There's currently support for only one hypervisor, qemu/kvm, support for which From 8fe572367a11bbbcb268c649a5ffbb83554ccc12 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Tue, 12 Dec 2017 07:32:31 -0600 Subject: [PATCH 089/385] qemu: Add maxcpus attribute to -smp maxcpus is used to specify how many cpus a VM can have. This attribute must be specified to enable the hotplugging CPUs capability, otherwise the maximum number of CPU will be defined by the number of CPU in -smp. Signed-off-by: Julio Montes --- qemu/qemu.go | 21 +++++++++++++++++++-- qemu/qemu_test.go | 23 +++++++++++++++++++++-- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index b65983cce..8bf0c3bd0 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -980,6 +980,10 @@ type SMP struct { // Sockets is the number of sockets made available to qemu. Sockets uint32 + + // MaxCPUs is the maximum number of VCPUs that a VM can have. + // This value, if non-zero, MUST BE equal to or greater than CPUs + MaxCPUs uint32 } // Memory is the guest memory configuration structure. @@ -1203,7 +1207,7 @@ func (config *Config) appendMemory() { } } -func (config *Config) appendCPUs() { +func (config *Config) appendCPUs() error { if config.SMP.CPUs > 0 { var SMPParams []string @@ -1221,9 +1225,19 @@ func (config *Config) appendCPUs() { SMPParams = append(SMPParams, fmt.Sprintf(",sockets=%d", config.SMP.Sockets)) } + if config.SMP.MaxCPUs > 0 { + if config.SMP.MaxCPUs < config.SMP.CPUs { + return fmt.Errorf("MaxCPUs %d must be equal to or greater than CPUs %d", + config.SMP.MaxCPUs, config.SMP.CPUs) + } + SMPParams = append(SMPParams, fmt.Sprintf(",maxcpus=%d", config.SMP.MaxCPUs)) + } + config.qemuParams = append(config.qemuParams, "-smp") config.qemuParams = append(config.qemuParams, strings.Join(SMPParams, "")) } + + return nil } func (config *Config) appendRTC() { @@ -1360,7 +1374,6 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { config.appendCPUModel() config.appendQMPSockets() config.appendMemory() - config.appendCPUs() config.appendDevices() config.appendRTC() config.appendGlobalParam() @@ -1369,6 +1382,10 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { config.appendKernel() config.appendBios() + if err := config.appendCPUs(); err != nil { + return "", err + } + return LaunchCustomQemu(config.Ctx, config.Path, config.qemuParams, config.fds, nil, logger) } diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 51269eabb..bf7376da6 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -52,7 +52,9 @@ func testAppend(structure interface{}, expected string, t *testing.T) { case SMP: config.SMP = s - config.appendCPUs() + if err := config.appendCPUs(); err != nil { + t.Fatalf("Unexpected error: %v\n", err) + } case QMPSocket: config.QMPSockets = []QMPSocket{s} @@ -356,7 +358,7 @@ func TestAppendMemory(t *testing.T) { testAppend(memory, memoryString, t) } -var cpusString = "-smp 2,cores=1,threads=2,sockets=2" +var cpusString = "-smp 2,cores=1,threads=2,sockets=2,maxcpus=6" func TestAppendCPUs(t *testing.T) { smp := SMP{ @@ -364,11 +366,28 @@ func TestAppendCPUs(t *testing.T) { Sockets: 2, Cores: 1, Threads: 2, + MaxCPUs: 6, } testAppend(smp, cpusString, t) } +func TestFailToAppendCPUs(t *testing.T) { + config := Config{ + SMP: SMP{ + CPUs: 2, + Sockets: 2, + Cores: 1, + Threads: 2, + MaxCPUs: 1, + }, + } + + if err := config.appendCPUs(); err == nil { + t.Fatalf("Expected appendCPUs to fail") + } +} + var qmpSingleSocketServerString = "-qmp unix:cc-qmp,server,nowait" var qmpSingleSocketString = "-qmp unix:cc-qmp" From e9e27673fa7711c163e69a556d2b040339d15c12 Mon Sep 17 00:00:00 2001 From: Eric Ernst Date: Tue, 12 Dec 2017 08:43:13 -0800 Subject: [PATCH 090/385] vhost-user: updating comments for accuracy, rename device field Some comments were network specific for vhost-user devices, which is incorect. Fixed these. Renamed the HWAddress field to be Address, so that it could potentially be used more generically for non-network based vhost-user types. Signed-off-by: Eric Ernst --- qemu/qemu.go | 14 +++++++------- qemu/qemu_test.go | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index b65983cce..de935bcc7 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -704,7 +704,7 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string { return qemuParams } -// VhostUserDeviceType is a qemu networking device type. +// VhostUserDeviceType is a qemu vhost-user device type. type VhostUserDeviceType string const ( @@ -714,21 +714,21 @@ const ( VhostUserNet = "virtio-net-pci" ) -// VhostUserDevice represents a qemu vhost-user network device meant to be passed +// VhostUserDevice represents a qemu vhost-user device meant to be passed // in to the guest type VhostUserDevice struct { SocketPath string //path to vhostuser socket on host CharDevID string - TypeDevID string //id (SCSI) or netdev (net) device parameter - MacAddress string //only valid if device type is VhostUserNet + TypeDevID string //variable QEMU parameter based on value of VhostUserType + Address string //used for MAC address in net case VhostUserType VhostUserDeviceType } -// Valid returns true if there is a valid socket path defined for VhostUserDevice +// Valid returns true if there is a valid structure defined for VhostUserDevice func (vhostuserDev VhostUserDevice) Valid() bool { if vhostuserDev.SocketPath == "" || vhostuserDev.CharDevID == "" || vhostuserDev.TypeDevID == "" || - (vhostuserDev.VhostUserType == VhostUserNet && vhostuserDev.MacAddress == "") { + (vhostuserDev.VhostUserType == VhostUserNet && vhostuserDev.Address == "") { return false } @@ -755,7 +755,7 @@ func (vhostuserDev VhostUserDevice) QemuParams(config *Config) []string { devParams = append(devParams, VhostUserNet) devParams = append(devParams, fmt.Sprintf("netdev=%s", vhostuserDev.TypeDevID)) - devParams = append(devParams, fmt.Sprintf("mac=%s", vhostuserDev.MacAddress)) + devParams = append(devParams, fmt.Sprintf("mac=%s", vhostuserDev.Address)) } else { devParams = append(devParams, VhostUserSCSI) devParams = append(devParams, fmt.Sprintf("id=%s", vhostuserDev.TypeDevID)) diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 51269eabb..461073467 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -273,7 +273,7 @@ func TestAppendDeviceVhostUser(t *testing.T) { SocketPath: "/tmp/nonexistentsocket.socket", CharDevID: "char1", TypeDevID: "scsi1", - MacAddress: "", + Address: "", VhostUserType: VhostUserSCSI, } testAppend(vhostuserSCSIDevice, deviceVhostUserSCSIString, t) @@ -282,7 +282,7 @@ func TestAppendDeviceVhostUser(t *testing.T) { SocketPath: "/tmp/nonexistentsocket.socket", CharDevID: "char1", TypeDevID: "net1", - MacAddress: "00:11:22:33:44:55", + Address: "00:11:22:33:44:55", VhostUserType: VhostUserNet, } testAppend(vhostuserNetDevice, deviceVhostUserNetString, t) From f565536673142f746e6edb1ba4fdc8038ffc268c Mon Sep 17 00:00:00 2001 From: Eric Ernst Date: Tue, 12 Dec 2017 09:13:04 -0800 Subject: [PATCH 091/385] vhost-user: add blk device support Introduce basic vhost-user-blk-pci support. In adding this, cleaned up the QemuParams function to use a more appropriate switch statement. Similarly, cleanup up the Valid() logic. We still need to look into parameterization of the block parameter fields as well as introducing multiqueue support for the vhost-user devices. Signed-off-by: Eric Ernst --- qemu/qemu.go | 33 ++++++++++++++++++++++++++++----- qemu/qemu_test.go | 11 +++++++++++ 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index de935bcc7..959f19387 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -712,6 +712,8 @@ const ( VhostUserSCSI = "vhost-user-scsi-pci" //VhostUserNet represents a net vhostuser device type VhostUserNet = "virtio-net-pci" + //VhostUserBlk represents a block vhostuser device type + VhostUserBlk = "vhost-user-blk-pci" ) // VhostUserDevice represents a qemu vhost-user device meant to be passed @@ -726,9 +728,22 @@ type VhostUserDevice struct { // Valid returns true if there is a valid structure defined for VhostUserDevice func (vhostuserDev VhostUserDevice) Valid() bool { - if vhostuserDev.SocketPath == "" || vhostuserDev.CharDevID == "" || - vhostuserDev.TypeDevID == "" || - (vhostuserDev.VhostUserType == VhostUserNet && vhostuserDev.Address == "") { + + if vhostuserDev.SocketPath == "" || vhostuserDev.CharDevID == "" { + return false + } + + switch vhostuserDev.VhostUserType { + case VhostUserNet: + if vhostuserDev.TypeDevID == "" || vhostuserDev.Address == "" { + return false + } + case VhostUserSCSI: + if vhostuserDev.TypeDevID == "" { + return false + } + case VhostUserBlk: + default: return false } @@ -746,8 +761,9 @@ func (vhostuserDev VhostUserDevice) QemuParams(config *Config) []string { charParams = append(charParams, fmt.Sprintf("id=%s", vhostuserDev.CharDevID)) charParams = append(charParams, fmt.Sprintf("path=%s", vhostuserDev.SocketPath)) + switch vhostuserDev.VhostUserType { // if network based vhost device: - if vhostuserDev.VhostUserType == VhostUserNet { + case VhostUserNet: netParams = append(netParams, "type=vhost-user") netParams = append(netParams, fmt.Sprintf("id=%s", vhostuserDev.TypeDevID)) netParams = append(netParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) @@ -756,10 +772,17 @@ func (vhostuserDev VhostUserDevice) QemuParams(config *Config) []string { devParams = append(devParams, VhostUserNet) devParams = append(devParams, fmt.Sprintf("netdev=%s", vhostuserDev.TypeDevID)) devParams = append(devParams, fmt.Sprintf("mac=%s", vhostuserDev.Address)) - } else { + case VhostUserSCSI: devParams = append(devParams, VhostUserSCSI) devParams = append(devParams, fmt.Sprintf("id=%s", vhostuserDev.TypeDevID)) devParams = append(devParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) + case VhostUserBlk: + devParams = append(devParams, VhostUserBlk) + devParams = append(devParams, "logical_block_size=4096") + devParams = append(devParams, "size=512M") + devParams = append(devParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) + default: + return nil } qemuParams = append(qemuParams, "-chardev") diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 461073467..35d7e84e5 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -267,8 +267,19 @@ func TestAppendDeviceBlock(t *testing.T) { var deviceVhostUserNetString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -netdev type=vhost-user,id=net1,chardev=char1,vhostforce -device virtio-net-pci,netdev=net1,mac=00:11:22:33:44:55" var deviceVhostUserSCSIString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -device vhost-user-scsi-pci,id=scsi1,chardev=char1" +var deviceVhostUserBlkString = "-chardev socket,id=char2,path=/tmp/nonexistentsocket.socket -device vhost-user-blk-pci,logical_block_size=4096,size=512M,chardev=char2" func TestAppendDeviceVhostUser(t *testing.T) { + + vhostuserBlkDevice := VhostUserDevice{ + SocketPath: "/tmp/nonexistentsocket.socket", + CharDevID: "char2", + TypeDevID: "", + Address: "", + VhostUserType: VhostUserBlk, + } + testAppend(vhostuserBlkDevice, deviceVhostUserBlkString, t) + vhostuserSCSIDevice := VhostUserDevice{ SocketPath: "/tmp/nonexistentsocket.socket", CharDevID: "char1", From 5316779d3516ac4022a173acb0c91c1a37f5c815 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Tue, 19 Dec 2017 15:24:25 +0100 Subject: [PATCH 092/385] qemu: Add VSOCK support VSOCK sockets are added through a vhost PCI device. It takes a device ID and a context ID, the latter being the endpoint value to be reached from the host. Signed-off-by: Samuel Ortiz --- qemu/qemu.go | 39 +++++++++++++++++++++++++++++++++++++++ qemu/qemu_test.go | 28 ++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index 3b3c22c14..7c5e33b3a 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -892,6 +892,45 @@ func (bridgeDev BridgeDevice) QemuParams(config *Config) []string { return qemuParams } +// VSOCKDevice represents a AF_VSOCK socket. +type VSOCKDevice struct { + ID string + + ContextID uint32 +} + +const ( + // MinimalGuestCID is the smallest valid context ID for a guest. + MinimalGuestCID uint32 = 3 + + // VhostVSOCKPCI is the VSOCK vhost device type. + VhostVSOCKPCI = "vhost-vsock-pci" + + // VSOCKGuestCID is the VSOCK guest CID parameter. + VSOCKGuestCID = "guest-cid" +) + +// Valid returns true if the VSOCKDevice structure is valid and complete. +func (vsock VSOCKDevice) Valid() bool { + if vsock.ID == "" || vsock.ContextID < MinimalGuestCID { + return false + } + + return true +} + +// QemuParams returns the qemu parameters built out of the VSOCK device. +func (vsock VSOCKDevice) QemuParams(config *Config) []string { + var qemuParams []string + + deviceParam := fmt.Sprintf("%s,id=%s,%s=%d", VhostVSOCKPCI, vsock.ID, VSOCKGuestCID, vsock.ContextID) + + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, deviceParam) + + return qemuParams +} + // RTCBaseType is the qemu RTC base time type. type RTCBaseType string diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 47bd0e452..2f9de21a6 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -311,6 +311,34 @@ func TestAppendDeviceVFIO(t *testing.T) { testAppend(vfioDevice, deviceVFIOString, t) } +var deviceVSOCKString = "-device vhost-vsock-pci,id=vhost-vsock-pci0,guest-cid=4" + +func TestAppendVSOCK(t *testing.T) { + vsockDevice := VSOCKDevice{ + ID: "vhost-vsock-pci0", + ContextID: 4, + } + + testAppend(vsockDevice, deviceVSOCKString, t) +} + +func TestVSOCKValid(t *testing.T) { + vsockDevice := VSOCKDevice{ + ID: "vhost-vsock-pci0", + ContextID: MinimalGuestCID - 1, + } + + if vsockDevice.Valid() { + t.Fatalf("VSOCK Context ID is not valid") + } + + vsockDevice.ID = "" + + if vsockDevice.Valid() { + t.Fatalf("VSOCK ID is not valid") + } +} + func TestAppendEmptyDevice(t *testing.T) { device := SerialDevice{} From 3a31da32af4d0bdd93e1d483ffd9ad97a9a9e8c1 Mon Sep 17 00:00:00 2001 From: Archana Shinde Date: Fri, 15 Dec 2017 16:10:45 -0800 Subject: [PATCH 093/385] scsi: Add a scsi controller device SCSI controller allows scsi disks to be attached on the SCSI bus created by the controller. Signed-off-by: Archana Shinde --- qemu/qemu.go | 39 +++++++++++++++++++++++++++++++++++++++ qemu/qemu_test.go | 14 ++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index 7c5e33b3a..c10598639 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -825,6 +825,45 @@ func (vfioDev VFIODevice) QemuParams(config *Config) []string { return qemuParams } +// SCSIController represents a SCSI controller device. +type SCSIController struct { + ID string + + // Bus on which the SCSI controller is attached, this is optional + Bus string + + // Addr is the PCI address offset, this is optional + Addr string +} + +// Valid returns true if the SCSIController structure is valid and complete. +func (scsiCon SCSIController) Valid() bool { + if scsiCon.ID == "" { + return false + } + + return true +} + +// QemuParams returns the qemu parameters built out of this SCSIController device. +func (scsiCon SCSIController) QemuParams(config *Config) []string { + var qemuParams []string + var devParams []string + + devParams = append(devParams, fmt.Sprintf("virtio-scsi-pci,id=%s", scsiCon.ID)) + if scsiCon.Bus != "" { + devParams = append(devParams, fmt.Sprintf("bus=%s", scsiCon.Bus)) + } + if scsiCon.Addr != "" { + devParams = append(devParams, fmt.Sprintf("addr=%s", scsiCon.Addr)) + } + + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, strings.Join(devParams, ",")) + + return qemuParams +} + // BridgeType is the type of the bridge type BridgeType uint diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 2f9de21a6..2bed9bae3 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -339,6 +339,20 @@ func TestVSOCKValid(t *testing.T) { } } +var deviceSCSIControllerStr = "-device virtio-scsi-pci,id=foo" +var deviceSCSIControllerBusAddrStr = "-device virtio-scsi-pci,id=foo,bus=pci.0,addr=00:04.0" + +func TestAppendDeviceSCSIController(t *testing.T) { + scsiCon := SCSIController{ + ID: "foo", + } + testAppend(scsiCon, deviceSCSIControllerStr, t) + + scsiCon.Bus = "pci.0" + scsiCon.Addr = "00:04.0" + testAppend(scsiCon, deviceSCSIControllerBusAddrStr, t) +} + func TestAppendEmptyDevice(t *testing.T) { device := SerialDevice{} From 6d198b8a13ddd90d5470abd07b3acebc5e69fbf9 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Tue, 2 Jan 2018 16:21:01 +0000 Subject: [PATCH 094/385] Compute coverage statistics for unit tests in Travis builds This commit enables unit test coverage computation in Travis CI builds. Going forward, builds that decrease the unit test coverage by more than 1.0% will fail. Signed-off-by: Mark Ryan --- .travis.yml | 3 ++- README.md | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 36f4b30f0..03a39421f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,8 +14,9 @@ matrix: before_install: - go get github.com/alecthomas/gometalinter - gometalinter --install + - go get github.com/mattn/goveralls script: - go env - - go test -v ./... + - $GOPATH/bin/goveralls -v -service=travis-ci - gometalinter --tests --vendor --disable-all --enable=misspell --enable=vet --enable=ineffassign --enable=gofmt --enable=gocyclo --cyclo-over=15 --enable=golint --enable=errcheck --enable=deadcode ./... diff --git a/README.md b/README.md index 0e8e2d23a..2bb92f0c4 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ [![Go Report Card](https://goreportcard.com/badge/github.com/intel/govmm)](https://goreportcard.com/report/github.com/intel/govmm) [![Build Status](https://travis-ci.org/intel/govmm.svg?branch=master)](https://travis-ci.org/intel/govmm) [![GoDoc](https://godoc.org/github.com/intel/govmm/qemu?status.svg)](https://godoc.org/github.com/intel/govmm/qemu) +[![Coverage Status](https://coveralls.io/repos/github/intel/govmm/badge.svg?branch=master)](https://coveralls.io/github/intel/govmm?branch=master) Virtual Machine Manager for Go (govmm) is a suite of packages that provide Go APIs for creating and managing virtual machines. There's From 3273aafd530f7f63af83ca601a5e6cbea5b72827 Mon Sep 17 00:00:00 2001 From: Archana Shinde Date: Thu, 21 Dec 2017 23:17:03 -0800 Subject: [PATCH 095/385] scsi: Add function to send device_add qmp command for a scsi device device_add qmp command for scsi devices accepts additional parameters like scsi-id and lun. Implement function to add scsi devices. Devices with drivers "scsi-hd", "scsi-cd" and "scsi-disk" are accepted. Signed-off-by: Archana Shinde --- qemu/qmp.go | 39 +++++++++++++++++++++++++++++++++++++++ qemu/qmp_test.go | 25 +++++++++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/qemu/qmp.go b/qemu/qmp.go index 3727b8478..8888ad4d4 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -672,6 +672,45 @@ func (q *QMP) ExecuteDeviceAdd(ctx context.Context, blockdevID, devID, driver, b return q.executeCommand(ctx, "device_add", args, nil) } +// ExecuteSCSIDeviceAdd adds the guest portion of a block device to a QEMU instance +// using a SCSI driver with the device_add command. blockdevID should match the +// blockdevID passed to a previous call to ExecuteBlockdevAdd. devID is the id of +// the device to add. Both strings must be valid QMP identifiers. driver is the name of the +// scsi driver,e.g., scsi-hd, and bus is the name of a SCSI controller bus. +// scsiID is the SCSI id, lun is logical unit number. scsiID and lun are optional, a negative value +// for scsiID and lun is ignored. +func (q *QMP) ExecuteSCSIDeviceAdd(ctx context.Context, blockdevID, devID, driver, bus string, scsiID, lun int) error { + // TBD: Add drivers for scsi passthrough like scsi-generic and scsi-block + drivers := []string{"scsi-hd", "scsi-cd", "scsi-disk"} + + isSCSIDriver := false + for _, d := range drivers { + if driver == d { + isSCSIDriver = true + break + } + } + + if !isSCSIDriver { + return fmt.Errorf("Invalid SCSI driver provided %s", driver) + } + + args := map[string]interface{}{ + "id": devID, + "driver": driver, + "drive": blockdevID, + "bus": bus, + } + if scsiID >= 0 { + args["scsi-id"] = scsiID + } + if lun >= 0 { + args["lun"] = lun + } + + return q.executeCommand(ctx, "device_add", args, nil) +} + // ExecuteBlockdevDel deletes a block device by sending a x-blockdev-del command // for qemu versions < 2.9. It sends the updated blockdev-del command for qemu>=2.9. // blockdevID is the id of the block device to be deleted. Typically, this will diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 9b87fbcc5..85850fcb5 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -389,6 +389,31 @@ func TestQMPDeviceAdd(t *testing.T) { <-disconnectedCh } +// Checks that the device_add command for scsi is correctly sent. +// +// We start a QMPLoop, send the device_add command and stop the loop. +// +// The device_add command should be correctly sent and the QMP loop should +// exit gracefully. +func TestQMPSCSIDeviceAdd(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("device_add", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + blockdevID := fmt.Sprintf("drive_%s", volumeUUID) + devID := fmt.Sprintf("device_%s", volumeUUID) + err := q.ExecuteSCSIDeviceAdd(context.Background(), blockdevID, devID, + "scsi-hd", "scsi0.0", 1, 2) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} + // Checks that the x-blockdev-del command is correctly sent. // // We start a QMPLoop, send the x-blockdev-del command and stop the loop. From 693d9548dcf106f4de19fd83968690903e5c1da4 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Mon, 12 Feb 2018 08:14:02 -0600 Subject: [PATCH 096/385] qemu: add options for the machine type certain machines types need to have options to enable or disable features For example the machine type virt in certain hosts must have the gic version (gic-version=3 or gic-version=host) to start without problems Signed-off-by: Julio Montes --- qemu/qemu.go | 8 ++++++++ qemu/qemu_test.go | 10 ++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index c10598639..7ef751b96 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -43,6 +43,10 @@ type Machine struct { // Acceleration are the machine acceleration options to be used by qemu. Acceleration string + + // Options are options for the machine type + // For example gic-version=host and usb=off + Options string } // Device is the qemu device interface. @@ -1240,6 +1244,10 @@ func (config *Config) appendMachine() { machineParams = append(machineParams, fmt.Sprintf(",accel=%s", config.Machine.Acceleration)) } + if config.Machine.Options != "" { + machineParams = append(machineParams, fmt.Sprintf(",%s", config.Machine.Options)) + } + config.qemuParams = append(config.qemuParams, "-machine") config.qemuParams = append(config.qemuParams, strings.Join(machineParams, "")) } diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 2bed9bae3..cc00a82fc 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -75,14 +75,20 @@ func testAppend(structure interface{}, expected string, t *testing.T) { } } -var machineString = "-machine pc-lite,accel=kvm,kernel_irqchip,nvdimm" - func TestAppendMachine(t *testing.T) { + machineString := "-machine pc-lite,accel=kvm,kernel_irqchip,nvdimm" machine := Machine{ Type: "pc-lite", Acceleration: "kvm,kernel_irqchip,nvdimm", } + testAppend(machine, machineString, t) + machineString = "-machine pc-lite,accel=kvm,kernel_irqchip,nvdimm,gic-version=host,usb=off" + machine = Machine{ + Type: "pc-lite", + Acceleration: "kvm,kernel_irqchip,nvdimm", + Options: "gic-version=host,usb=off", + } testAppend(machine, machineString, t) } From 68f307180602e10548e3bcc0442a26ea35db9b75 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Tue, 6 Mar 2018 11:55:15 -0600 Subject: [PATCH 097/385] qemu: add DisableModern to SCSIController DisableModern prevents qemu from relying on fast MMIO. Signed-off-by: Julio Montes --- qemu/qemu.go | 6 ++++++ qemu/qemu_test.go | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 7ef751b96..218507808 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -838,6 +838,9 @@ type SCSIController struct { // Addr is the PCI address offset, this is optional Addr string + + // DisableModern prevents qemu from relying on fast MMIO. + DisableModern bool } // Valid returns true if the SCSIController structure is valid and complete. @@ -861,6 +864,9 @@ func (scsiCon SCSIController) QemuParams(config *Config) []string { if scsiCon.Addr != "" { devParams = append(devParams, fmt.Sprintf("addr=%s", scsiCon.Addr)) } + if scsiCon.DisableModern { + devParams = append(devParams, fmt.Sprintf("disable-modern=true")) + } qemuParams = append(qemuParams, "-device") qemuParams = append(qemuParams, strings.Join(devParams, ",")) diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index cc00a82fc..bcbdb2ec1 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -346,7 +346,7 @@ func TestVSOCKValid(t *testing.T) { } var deviceSCSIControllerStr = "-device virtio-scsi-pci,id=foo" -var deviceSCSIControllerBusAddrStr = "-device virtio-scsi-pci,id=foo,bus=pci.0,addr=00:04.0" +var deviceSCSIControllerBusAddrStr = "-device virtio-scsi-pci,id=foo,bus=pci.0,addr=00:04.0,disable-modern=true" func TestAppendDeviceSCSIController(t *testing.T) { scsiCon := SCSIController{ @@ -356,6 +356,7 @@ func TestAppendDeviceSCSIController(t *testing.T) { scsiCon.Bus = "pci.0" scsiCon.Addr = "00:04.0" + scsiCon.DisableModern = true testAppend(scsiCon, deviceSCSIControllerBusAddrStr, t) } From 0c0ec8f3c9fc181e8bce6ea38df2578f8f86770d Mon Sep 17 00:00:00 2001 From: Peng Tao Date: Tue, 20 Mar 2018 16:30:28 +0800 Subject: [PATCH 098/385] qemu: add initrd support Append initrd image to qemu arguments if configured. Signed-off-by: Peng Tao --- qemu/qemu.go | 8 ++++++++ qemu/qemu_test.go | 7 ++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 218507808..89d053fe9 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1117,6 +1117,9 @@ type Kernel struct { // Path is the guest kernel path on the host filesystem. Path string + // InitrdPath is the guest initrd path on the host filesystem. + InitrdPath string + // Params is the kernel parameters string. Params string } @@ -1395,6 +1398,11 @@ func (config *Config) appendKernel() { config.qemuParams = append(config.qemuParams, "-kernel") config.qemuParams = append(config.qemuParams, config.Kernel.Path) + if config.Kernel.InitrdPath != "" { + config.qemuParams = append(config.qemuParams, "-initrd") + config.qemuParams = append(config.qemuParams, config.Kernel.InitrdPath) + } + if config.Kernel.Params != "" { config.qemuParams = append(config.qemuParams, "-append") config.qemuParams = append(config.qemuParams, config.Kernel.Params) diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index bcbdb2ec1..b7e60e727 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -395,12 +395,13 @@ func TestAppendKnobsAllFalse(t *testing.T) { testAppend(knobs, knobsString, t) } -var kernelString = "-kernel /opt/vmlinux.container -append root=/dev/pmem0p1 rootflags=dax,data=ordered,errors=remount-ro rw rootfstype=ext4 tsc=reliable" +var kernelString = "-kernel /opt/vmlinux.container -initrd /opt/initrd.container -append root=/dev/pmem0p1 rootflags=dax,data=ordered,errors=remount-ro rw rootfstype=ext4 tsc=reliable" func TestAppendKernel(t *testing.T) { kernel := Kernel{ - Path: "/opt/vmlinux.container", - Params: "root=/dev/pmem0p1 rootflags=dax,data=ordered,errors=remount-ro rw rootfstype=ext4 tsc=reliable", + Path: "/opt/vmlinux.container", + InitrdPath: "/opt/initrd.container", + Params: "root=/dev/pmem0p1 rootflags=dax,data=ordered,errors=remount-ro rw rootfstype=ext4 tsc=reliable", } testAppend(kernel, kernelString, t) From a54de1835bdf1516905e500143ff3f8522ab5e27 Mon Sep 17 00:00:00 2001 From: Archana Shinde Date: Wed, 28 Mar 2018 16:12:31 -0700 Subject: [PATCH 099/385] iothread: Add ability to configure iothreads IOthreads also known as x-data-plane allow IO to be processed in a separate thread rather than the main event loop. This produces much better IO throughput and latency. Signed-off-by: Archana Shinde --- qemu/qemu.go | 17 +++++++++++++++++ qemu/qemu_test.go | 14 ++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index 89d053fe9..0b5adb285 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1159,6 +1159,11 @@ type Knobs struct { Realtime bool } +// IOThread allows IO to be performed on a separate thread. +type IOThread struct { + ID string +} + // Config is the qemu configuration structure. // It allows for passing custom settings and parameters to the qemu API. type Config struct { @@ -1213,6 +1218,8 @@ type Config struct { // fds is a list of open file descriptors to be passed to the spawned qemu process fds []*os.File + IOThreads []IOThread + qemuParams []string } @@ -1481,6 +1488,15 @@ func (config *Config) appendBios() { } } +func (config *Config) appendIOThreads() { + for _, t := range config.IOThreads { + if t.ID != "" { + config.qemuParams = append(config.qemuParams, "-object") + config.qemuParams = append(config.qemuParams, fmt.Sprintf("iothread,id=%s", t.ID)) + } + } +} + // LaunchQemu can be used to launch a new qemu instance. // // The Config parameter contains a set of qemu parameters and settings. @@ -1504,6 +1520,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { config.appendKnobs() config.appendKernel() config.appendBios() + config.appendIOThreads() if err := config.appendCPUs(); err != nil { return "", err diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index b7e60e727..1c63e42bd 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -67,6 +67,10 @@ func testAppend(structure interface{}, expected string, t *testing.T) { case RTC: config.RTC = s config.appendRTC() + + case IOThread: + config.IOThreads = []IOThread{s} + config.appendIOThreads() } result := strings.Join(config.qemuParams, " ") @@ -525,3 +529,13 @@ func TestAppendRTC(t *testing.T) { testAppend(rtc, rtcString, t) } + +var ioThreadString = "-object iothread,id=iothread1" + +func TestAppendIOThread(t *testing.T) { + ioThread := IOThread{ + ID: "iothread1", + } + + testAppend(ioThread, ioThreadString, t) +} From 9130f375166febfa9ca1937d126d2c6aa155b2a1 Mon Sep 17 00:00:00 2001 From: Archana Shinde Date: Wed, 28 Mar 2018 16:15:52 -0700 Subject: [PATCH 100/385] scsi: Allow scsi controller to associate with an IO thread. This enable data-plane for scsi. All drives attached to the scsi controller will have their IO processed in a single separate IO thread instead of qemu's main event loop. Signed-off-by: Archana Shinde --- qemu/qemu.go | 6 ++++++ qemu/qemu_test.go | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 0b5adb285..4b0e41795 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -841,6 +841,9 @@ type SCSIController struct { // DisableModern prevents qemu from relying on fast MMIO. DisableModern bool + + // IOThread is the IO thread on which IO will be handled + IOThread string } // Valid returns true if the SCSIController structure is valid and complete. @@ -867,6 +870,9 @@ func (scsiCon SCSIController) QemuParams(config *Config) []string { if scsiCon.DisableModern { devParams = append(devParams, fmt.Sprintf("disable-modern=true")) } + if scsiCon.IOThread != "" { + devParams = append(devParams, fmt.Sprintf("iothread=%s", scsiCon.IOThread)) + } qemuParams = append(qemuParams, "-device") qemuParams = append(qemuParams, strings.Join(devParams, ",")) diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 1c63e42bd..0506f4240 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -350,7 +350,7 @@ func TestVSOCKValid(t *testing.T) { } var deviceSCSIControllerStr = "-device virtio-scsi-pci,id=foo" -var deviceSCSIControllerBusAddrStr = "-device virtio-scsi-pci,id=foo,bus=pci.0,addr=00:04.0,disable-modern=true" +var deviceSCSIControllerBusAddrStr = "-device virtio-scsi-pci,id=foo,bus=pci.0,addr=00:04.0,disable-modern=true,iothread=iothread1" func TestAppendDeviceSCSIController(t *testing.T) { scsiCon := SCSIController{ @@ -361,6 +361,7 @@ func TestAppendDeviceSCSIController(t *testing.T) { scsiCon.Bus = "pci.0" scsiCon.Addr = "00:04.0" scsiCon.DisableModern = true + scsiCon.IOThread = "iothread1" testAppend(scsiCon, deviceSCSIControllerBusAddrStr, t) } From 30aeacb89e31cdead0f5be2a94ce307bb6e25976 Mon Sep 17 00:00:00 2001 From: Archana Shinde Date: Tue, 3 Apr 2018 11:57:26 -0700 Subject: [PATCH 101/385] qemu: Add qemu parameter for PCI address for a bridge. We need to be able to specify the PCI slot for a bridge while adding it. Add test to verify bridge is correctly added. Signed-off-by: Archana Shinde --- qemu/qemu.go | 10 ++++++++++ qemu/qemu_test.go | 16 ++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index 4b0e41795..f2f4f5b8b 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -907,6 +907,9 @@ type BridgeDevice struct { // SHPC is used to enable or disable the standard hot plug controller SHPC bool + + // PCI Slot + Addr string } // Valid returns true if the BridgeDevice structure is valid and complete. @@ -941,6 +944,13 @@ func (bridgeDev BridgeDevice) QemuParams(config *Config) []string { } deviceParam := fmt.Sprintf("%s,bus=%s,id=%s,chassis_nr=%d,shpc=%s", deviceName, bridgeDev.Bus, bridgeDev.ID, bridgeDev.Chassis, shpc) + if bridgeDev.Addr != "" { + addr, err := strconv.Atoi(bridgeDev.Addr) + if err == nil && addr >= 0 { + deviceParam += fmt.Sprintf(",addr=%x", addr) + } + } + qemuParams = append(qemuParams, "-device") qemuParams = append(qemuParams, deviceParam) diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 0506f4240..895fe0f15 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -365,6 +365,22 @@ func TestAppendDeviceSCSIController(t *testing.T) { testAppend(scsiCon, deviceSCSIControllerBusAddrStr, t) } +var deviceBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff" + +func TestAppendBridgeDevice(t *testing.T) { + + bridge := BridgeDevice{ + Type: PCIBridge, + ID: "mybridge", + Bus: "/pci-bus/pcie.0", + Addr: "255", + Chassis: 5, + SHPC: true, + } + + testAppend(bridge, deviceBridgeString, t) +} + func TestAppendEmptyDevice(t *testing.T) { device := SerialDevice{} From 283d7df99e4be6fa0eeb30f80597a1e90b7e9f78 Mon Sep 17 00:00:00 2001 From: Peng Tao Date: Mon, 7 May 2018 17:34:33 +0800 Subject: [PATCH 102/385] qemu: add file backed memory device support It allows a caller to use a local file as the memory backend of the guest, and it also allows the file backed memory device to be set shared or not. Signed-off-by: Peng Tao --- qemu/qemu.go | 26 ++++++++++++++++++++++++++ qemu/qemu_test.go | 31 ++++++++++++++++++------------- 2 files changed, 44 insertions(+), 13 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index f2f4f5b8b..6022fe470 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1126,6 +1126,10 @@ type Memory struct { // MaxMem is the maximum amount of memory that can be made available // to the guest through e.g. hot pluggable memory. MaxMem string + + // Path is the file path of the memory device. It points to a local + // file path used by FileBackedMem. + Path string } // Kernel is the guest kernel configuration structure. @@ -1167,6 +1171,13 @@ type Knobs struct { // MemPrealloc will allocate all the RAM upfront MemPrealloc bool + // FileBackedMem requires Memory.Size and Memory.Path of the VM to + // be set. + FileBackedMem bool + + // FileBackedMemShared will set the FileBackedMem device as shared. + FileBackedMemShared bool + // Mlock will control locking of memory // Only active when Realtime is set to true Mlock bool @@ -1474,6 +1485,21 @@ func (config *Config) appendKnobs() { config.qemuParams = append(config.qemuParams, "-device") config.qemuParams = append(config.qemuParams, deviceMemParam) } + } else if config.Knobs.FileBackedMem == true { + if config.Memory.Size != "" && config.Memory.Path != "" { + dimmName := "dimm1" + objMemParam := "memory-backend-file,id=" + dimmName + ",size=" + config.Memory.Size + ",mem-path=" + config.Memory.Path + if config.Knobs.FileBackedMemShared == true { + objMemParam += ",share=on" + } + numaMemParam := "node,memdev=" + dimmName + + config.qemuParams = append(config.qemuParams, "-object") + config.qemuParams = append(config.qemuParams, objMemParam) + + config.qemuParams = append(config.qemuParams, "-numa") + config.qemuParams = append(config.qemuParams, numaMemParam) + } } if config.Knobs.Realtime == true { diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 895fe0f15..09c652377 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -390,13 +390,15 @@ func TestAppendEmptyDevice(t *testing.T) { func TestAppendKnobsAllTrue(t *testing.T) { var knobsString = "-no-user-config -nodefaults -nographic -daemonize -realtime mlock=on" knobs := Knobs{ - NoUserConfig: true, - NoDefaults: true, - NoGraphic: true, - Daemonize: true, - MemPrealloc: true, - Realtime: true, - Mlock: true, + NoUserConfig: true, + NoDefaults: true, + NoGraphic: true, + Daemonize: true, + MemPrealloc: true, + FileBackedMem: true, + FileBackedMemShared: true, + Realtime: true, + Mlock: true, } testAppend(knobs, knobsString, t) @@ -405,12 +407,14 @@ func TestAppendKnobsAllTrue(t *testing.T) { func TestAppendKnobsAllFalse(t *testing.T) { var knobsString = "-realtime mlock=off" knobs := Knobs{ - NoUserConfig: false, - NoDefaults: false, - NoGraphic: false, - MemPrealloc: false, - Realtime: false, - Mlock: false, + NoUserConfig: false, + NoDefaults: false, + NoGraphic: false, + MemPrealloc: false, + FileBackedMem: false, + FileBackedMemShared: false, + Realtime: false, + Mlock: false, } testAppend(knobs, knobsString, t) @@ -435,6 +439,7 @@ func TestAppendMemory(t *testing.T) { Size: "2G", Slots: 2, MaxMem: "3G", + Path: "", } testAppend(memory, memoryString, t) From 723bc5f3c610936e48ee24f7c2c2c087393d2845 Mon Sep 17 00:00:00 2001 From: Peng Tao Date: Mon, 7 May 2018 17:38:54 +0800 Subject: [PATCH 103/385] qemu: allow to create a stopped guest When Knobs.Stopped is set, the guest CPU will not be started at startup. Signed-off-by: Peng Tao --- qemu/qemu.go | 7 +++++++ qemu/qemu_test.go | 4 +++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 6022fe470..33b4489c3 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1182,6 +1182,9 @@ type Knobs struct { // Only active when Realtime is set to true Mlock bool + // Stopped will not start guest CPU at startup + Stopped bool + // Realtime will enable realtime QEMU Realtime bool } @@ -1521,6 +1524,10 @@ func (config *Config) appendKnobs() { config.qemuParams = append(config.qemuParams, "mlock=off") } } + + if config.Knobs.Stopped == true { + config.qemuParams = append(config.qemuParams, "-S") + } } func (config *Config) appendBios() { diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 09c652377..8e805dc7e 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -388,7 +388,7 @@ func TestAppendEmptyDevice(t *testing.T) { } func TestAppendKnobsAllTrue(t *testing.T) { - var knobsString = "-no-user-config -nodefaults -nographic -daemonize -realtime mlock=on" + var knobsString = "-no-user-config -nodefaults -nographic -daemonize -realtime mlock=on -S" knobs := Knobs{ NoUserConfig: true, NoDefaults: true, @@ -399,6 +399,7 @@ func TestAppendKnobsAllTrue(t *testing.T) { FileBackedMemShared: true, Realtime: true, Mlock: true, + Stopped: true, } testAppend(knobs, knobsString, t) @@ -415,6 +416,7 @@ func TestAppendKnobsAllFalse(t *testing.T) { FileBackedMemShared: false, Realtime: false, Mlock: false, + Stopped: false, } testAppend(knobs, knobsString, t) From 0ace4176b4a41e1ee3865f9335abf4094806bf22 Mon Sep 17 00:00:00 2001 From: Peng Tao Date: Mon, 7 May 2018 17:50:19 +0800 Subject: [PATCH 104/385] qemu: allow to set migration incoming It is useful when we want to specify migration incoming source. Supported source are fd and exec right now. Signed-off-by: Peng Tao --- qemu/qemu.go | 36 ++++++++++++++++++++++++++++++++++++ qemu/qemu_test.go | 25 +++++++++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index 33b4489c3..04a5fa6f7 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1194,6 +1194,24 @@ type IOThread struct { ID string } +const ( + // MigrationFD is the migration incoming type based on open file descriptor. + // Skip default 0 so that it must be set on purpose. + MigrationFD = 1 + // MigrationExec is the migration incoming type based on commands. + MigrationExec = 2 +) + +// Incoming controls migration source preparation +type Incoming struct { + // Possible values are MigrationFD, MigrationExec + MigrationType int + // Only valid if MigrationType == MigrationFD + FD *os.File + // Only valid if MigrationType == MigrationExec + Exec string +} + // Config is the qemu configuration structure. // It allows for passing custom settings and parameters to the qemu API. type Config struct { @@ -1245,6 +1263,9 @@ type Config struct { // Bios is the -bios parameter Bios string + // Incoming controls migration source preparation + Incoming Incoming + // fds is a list of open file descriptors to be passed to the spawned qemu process fds []*os.File @@ -1546,6 +1567,20 @@ func (config *Config) appendIOThreads() { } } +func (config *Config) appendIncoming() { + var uri string + switch config.Incoming.MigrationType { + case MigrationExec: + uri = fmt.Sprintf("exec:%s", config.Incoming.Exec) + case MigrationFD: + chFDs := config.appendFDs([]*os.File{config.Incoming.FD}) + uri = fmt.Sprintf("fd:%d", chFDs[0]) + default: + return + } + config.qemuParams = append(config.qemuParams, "-S", "-incoming", uri) +} + // LaunchQemu can be used to launch a new qemu instance. // // The Config parameter contains a set of qemu parameters and settings. @@ -1570,6 +1605,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { config.appendKernel() config.appendBios() config.appendIOThreads() + config.appendIncoming() if err := config.appendCPUs(); err != nil { return "", err diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 8e805dc7e..43fe257e6 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -71,6 +71,9 @@ func testAppend(structure interface{}, expected string, t *testing.T) { case IOThread: config.IOThreads = []IOThread{s} config.appendIOThreads() + case Incoming: + config.Incoming = s + config.appendIncoming() } result := strings.Join(config.qemuParams, " ") @@ -563,3 +566,25 @@ func TestAppendIOThread(t *testing.T) { testAppend(ioThread, ioThreadString, t) } + +var incomingStringFD = "-S -incoming fd:3" + +func TestAppendIncomingFD(t *testing.T) { + source := Incoming{ + MigrationType: MigrationFD, + FD: os.Stdout, + } + + testAppend(source, incomingStringFD, t) +} + +var incomingStringExec = "-S -incoming exec:test migration cmd" + +func TestAppendIncomingExec(t *testing.T) { + source := Incoming{ + MigrationType: MigrationExec, + Exec: "test migration cmd", + } + + testAppend(source, incomingStringExec, t) +} From a03d4968e11ed945d045b118eff3b48ad0bbc3c2 Mon Sep 17 00:00:00 2001 From: Peng Tao Date: Mon, 7 May 2018 18:08:25 +0800 Subject: [PATCH 105/385] qmp: add set migration capabilities It allows to set guest migration capabilities. Signed-off-by: Peng Tao --- qemu/qmp.go | 9 +++++++++ qemu/qmp_test.go | 23 +++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/qemu/qmp.go b/qemu/qmp.go index 8888ad4d4..8a2b4bc1f 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -828,3 +828,12 @@ func (q *QMP) ExecuteQueryHotpluggableCPUs(ctx context.Context) ([]HotpluggableC return cpus, nil } + +// ExecSetMigrationCaps sets migration capabilities +func (q *QMP) ExecSetMigrationCaps(ctx context.Context, caps []map[string]interface{}) error { + args := map[string]interface{}{ + "capabilities": caps, + } + + return q.executeCommand(ctx, "migrate-set-capabilities", args, nil) +} diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 85850fcb5..62018675c 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -887,3 +887,26 @@ func TestQMPExecuteQueryHotpluggableCPUs(t *testing.T) { q.Shutdown() <-disconnectedCh } + +// Checks that migrate capabilities can be set +func TestExecSetMigrationCaps(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("migrate-set-capabilities", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + caps := []map[string]interface{}{ + { + "capability": "bypass-shared-memory", + "state": true, + }, + } + err := q.ExecSetMigrationCaps(context.Background(), caps) + if err != nil { + t.Fatalf("Unexpected error: %v\n", err) + } + q.Shutdown() + <-disconnectedCh +} From 8aeca1538875f939748c2f09ad288c3ac2b7b755 Mon Sep 17 00:00:00 2001 From: Peng Tao Date: Mon, 7 May 2018 18:19:17 +0800 Subject: [PATCH 106/385] qmp: add migrate set arguments It allows to set migration arguments so that callers can control how migration is done. Signed-off-by: Peng Tao --- qemu/qmp.go | 9 +++++++++ qemu/qmp_test.go | 17 +++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/qemu/qmp.go b/qemu/qmp.go index 8a2b4bc1f..9e3782181 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -837,3 +837,12 @@ func (q *QMP) ExecSetMigrationCaps(ctx context.Context, caps []map[string]interf return q.executeCommand(ctx, "migrate-set-capabilities", args, nil) } + +// ExecSetMigrateArguments sets the command line used for migration +func (q *QMP) ExecSetMigrateArguments(ctx context.Context, url string) error { + args := map[string]interface{}{ + "uri": url, + } + + return q.executeCommand(ctx, "migrate", args, nil) +} diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 62018675c..9b471d6c6 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -910,3 +910,20 @@ func TestExecSetMigrationCaps(t *testing.T) { q.Shutdown() <-disconnectedCh } + +// Checks that migrate arguments can be set +func TestExecSetMigrateArguments(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("migrate", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + err := q.ExecSetMigrateArguments(context.Background(), "exec:foobar") + if err != nil { + t.Fatalf("Unexpected error: %v\n", err) + } + q.Shutdown() + <-disconnectedCh +} From e66a9b481b3747ac67b5889a567c5fb67a6a0495 Mon Sep 17 00:00:00 2001 From: Peng Tao Date: Mon, 7 May 2018 19:28:12 +0800 Subject: [PATCH 107/385] qemu: add appendMemoryKnobs helper To fix travis failure about cyclomatic complexity in appendKnobs(). Signed-off-by: Peng Tao --- qemu/qemu.go | 38 ++++++++++--------- qemu/qemu_test.go | 96 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+), 17 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 04a5fa6f7..41381d80e 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1468,23 +1468,7 @@ func (config *Config) appendKernel() { } } -func (config *Config) appendKnobs() { - if config.Knobs.NoUserConfig == true { - config.qemuParams = append(config.qemuParams, "-no-user-config") - } - - if config.Knobs.NoDefaults == true { - config.qemuParams = append(config.qemuParams, "-nodefaults") - } - - if config.Knobs.NoGraphic == true { - config.qemuParams = append(config.qemuParams, "-nographic") - } - - if config.Knobs.Daemonize == true { - config.qemuParams = append(config.qemuParams, "-daemonize") - } - +func (config *Config) appendMemoryKnobs() { if config.Knobs.HugePages == true { if config.Memory.Size != "" { dimmName := "dimm1" @@ -1525,6 +1509,26 @@ func (config *Config) appendKnobs() { config.qemuParams = append(config.qemuParams, numaMemParam) } } +} + +func (config *Config) appendKnobs() { + if config.Knobs.NoUserConfig == true { + config.qemuParams = append(config.qemuParams, "-no-user-config") + } + + if config.Knobs.NoDefaults == true { + config.qemuParams = append(config.qemuParams, "-nodefaults") + } + + if config.Knobs.NoGraphic == true { + config.qemuParams = append(config.qemuParams, "-nographic") + } + + if config.Knobs.Daemonize == true { + config.qemuParams = append(config.qemuParams, "-daemonize") + } + + config.appendMemoryKnobs() if config.Knobs.Realtime == true { config.qemuParams = append(config.qemuParams, "-realtime") diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 43fe257e6..14637910d 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -28,7 +28,12 @@ const volumeUUID = "67d86208-b46c-4465-9018-e14187d4010" func testAppend(structure interface{}, expected string, t *testing.T) { var config Config + testConfigAppend(&config, structure, expected, t) + return +} + +func testConfigAppend(config *Config, structure interface{}, expected string, t *testing.T) { switch s := structure.(type) { case Machine: config.Machine = s @@ -425,6 +430,97 @@ func TestAppendKnobsAllFalse(t *testing.T) { testAppend(knobs, knobsString, t) } +func TestAppendMemoryHugePages(t *testing.T) { + conf := &Config{ + Memory: Memory{ + Size: "1G", + Slots: 8, + MaxMem: "3G", + Path: "foobar", + }, + } + memString := "-m 1G,slots=8,maxmem=3G" + testConfigAppend(conf, conf.Memory, memString, t) + + knobs := Knobs{ + HugePages: true, + MemPrealloc: true, + FileBackedMem: true, + FileBackedMemShared: true, + } + knobsString := "-object memory-backend-file,id=dimm1,size=1G,mem-path=/dev/hugepages,share=on,prealloc=on -numa node,memdev=dimm1" + mlockFalseString := "-realtime mlock=off" + + testConfigAppend(conf, knobs, memString+" "+knobsString+" "+mlockFalseString, t) +} + +func TestAppendMemoryMemPrealloc(t *testing.T) { + conf := &Config{ + Memory: Memory{ + Size: "1G", + Slots: 8, + MaxMem: "3G", + Path: "foobar", + }, + } + memString := "-m 1G,slots=8,maxmem=3G" + testConfigAppend(conf, conf.Memory, memString, t) + + knobs := Knobs{ + MemPrealloc: true, + FileBackedMem: true, + FileBackedMemShared: true, + } + knobsString := "-object memory-backend-ram,id=dimm1,size=1G,prealloc=on -device pc-dimm,id=dimm1,memdev=dimm1" + mlockFalseString := "-realtime mlock=off" + + testConfigAppend(conf, knobs, memString+" "+knobsString+" "+mlockFalseString, t) +} + +func TestAppendMemoryFileBackedMemShared(t *testing.T) { + conf := &Config{ + Memory: Memory{ + Size: "1G", + Slots: 8, + MaxMem: "3G", + Path: "foobar", + }, + } + memString := "-m 1G,slots=8,maxmem=3G" + testConfigAppend(conf, conf.Memory, memString, t) + + knobs := Knobs{ + FileBackedMem: true, + FileBackedMemShared: true, + } + knobsString := "-object memory-backend-file,id=dimm1,size=1G,mem-path=foobar,share=on -numa node,memdev=dimm1" + mlockFalseString := "-realtime mlock=off" + + testConfigAppend(conf, knobs, memString+" "+knobsString+" "+mlockFalseString, t) +} + +func TestAppendMemoryFileBackedMem(t *testing.T) { + conf := &Config{ + Memory: Memory{ + Size: "1G", + Slots: 8, + MaxMem: "3G", + Path: "foobar", + }, + } + memString := "-m 1G,slots=8,maxmem=3G" + testConfigAppend(conf, conf.Memory, memString, t) + + knobs := Knobs{ + FileBackedMem: true, + FileBackedMemShared: false, + } + knobsString := "-object memory-backend-file,id=dimm1,size=1G,mem-path=foobar -numa node,memdev=dimm1" + mlockFalseString := "-realtime mlock=off" + + testConfigAppend(conf, knobs, memString+" "+knobsString+" "+mlockFalseString, t) +} + var kernelString = "-kernel /opt/vmlinux.container -initrd /opt/initrd.container -append root=/dev/pmem0p1 rootflags=dax,data=ordered,errors=remount-ro rw rootfstype=ext4 tsc=reliable" func TestAppendKernel(t *testing.T) { From 54caf7810b3c0bf33a7e865660297a008380978e Mon Sep 17 00:00:00 2001 From: Peng Tao Date: Tue, 8 May 2018 00:46:16 +0800 Subject: [PATCH 108/385] qmp: add hotplug memory It adds size of MiB memory to the guest. Signed-off-by: Peng Tao --- qemu/qmp.go | 35 +++++++++++++++++++++++++++++++++++ qemu/qmp_test.go | 18 ++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/qemu/qmp.go b/qemu/qmp.go index 9e3782181..37334e99e 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -846,3 +846,38 @@ func (q *QMP) ExecSetMigrateArguments(ctx context.Context, url string) error { return q.executeCommand(ctx, "migrate", args, nil) } + +// ExecHotplugMemory adds size of MiB memory to the guest +func (q *QMP) ExecHotplugMemory(ctx context.Context, qomtype, id, mempath string, size int) error { + args := map[string]interface{}{ + "qom-type": qomtype, + "id": id, + "props": map[string]interface{}{"size": uint64(size) << 20}, + } + if mempath != "" { + args["mem-path"] = mempath + } + err := q.executeCommand(ctx, "object-add", args, nil) + if err != nil { + return err + } + + defer func() { + if err != nil { + q.cfg.Logger.Errorf("Unable to hotplug memory device: %v", err) + err = q.executeCommand(ctx, "object-del", map[string]interface{}{"id": id}, nil) + if err != nil { + q.cfg.Logger.Warningf("Unable to clean up memory object: %v", err) + } + } + }() + + args = map[string]interface{}{ + "driver": "pc-dimm", + "id": "dimm" + id, + "memdev": id, + } + err = q.executeCommand(ctx, "device_add", args, nil) + + return err +} diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 9b471d6c6..f5b472d74 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -927,3 +927,21 @@ func TestExecSetMigrateArguments(t *testing.T) { q.Shutdown() <-disconnectedCh } + +// Checks hotplug memory +func TestExecHotplugMemory(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("object-add", nil, "return", nil) + buf.AddCommand("device_add", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + err := q.ExecHotplugMemory(context.Background(), "memory-backend-ram", "mem0", "", 128) + if err != nil { + t.Fatalf("Unexpected error: %v\n", err) + } + q.Shutdown() + <-disconnectedCh +} From ffc06e6bc40eed80e80646fcf16be6efa4807024 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Thu, 28 Jun 2018 15:11:13 +0100 Subject: [PATCH 109/385] qemu,qmp: Add staticcheck to travis and fix errors This commit enables staticcheck in the travis builds and fixes the existing errors detected by staticcheck. There was one type of error repeated in qemu.go in which the type of some constants was not explicitly specified. Signed-off-by: Mark Ryan --- .travis.yml | 2 +- qemu/qemu.go | 56 +++++++++++++++++++++++++++------------------------- qemu/qmp.go | 2 +- 3 files changed, 31 insertions(+), 29 deletions(-) diff --git a/.travis.yml b/.travis.yml index 03a39421f..fb5bc4419 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,4 +19,4 @@ before_install: script: - go env - $GOPATH/bin/goveralls -v -service=travis-ci - - gometalinter --tests --vendor --disable-all --enable=misspell --enable=vet --enable=ineffassign --enable=gofmt --enable=gocyclo --cyclo-over=15 --enable=golint --enable=errcheck --enable=deadcode ./... + - gometalinter --tests --vendor --disable-all --enable=misspell --enable=vet --enable=ineffassign --enable=gofmt --enable=gocyclo --cyclo-over=15 --enable=golint --enable=errcheck --enable=deadcode --enable=staticcheck ./... diff --git a/qemu/qemu.go b/qemu/qemu.go index 41381d80e..831608af3 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -63,25 +63,25 @@ const ( NVDIMM DeviceDriver = "nvdimm" // Virtio9P is the 9pfs device driver. - Virtio9P = "virtio-9p-pci" + Virtio9P DeviceDriver = "virtio-9p-pci" // VirtioNet is the virt-io networking device driver. - VirtioNet = "virtio-net" + VirtioNet DeviceDriver = "virtio-net" // VirtioNetPCI is the virt-io pci networking device driver. - VirtioNetPCI = "virtio-net-pci" + VirtioNetPCI DeviceDriver = "virtio-net-pci" // VirtioSerial is the serial device driver. - VirtioSerial = "virtio-serial-pci" + VirtioSerial DeviceDriver = "virtio-serial-pci" // VirtioBlock is the block device driver. - VirtioBlock = "virtio-blk" + VirtioBlock DeviceDriver = "virtio-blk" // Console is the console device driver. - Console = "virtconsole" + Console DeviceDriver = "virtconsole" // VirtioSerialPort is the serial port device driver. - VirtioSerialPort = "virtserialport" + VirtioSerialPort DeviceDriver = "virtserialport" ) // ObjectType is a string representing a qemu object type. @@ -168,10 +168,10 @@ const ( Local FSDriver = "local" // Handle is the handle qemu filesystem driver. - Handle = "handle" + Handle FSDriver = "handle" // Proxy is the proxy qemu filesystem driver. - Proxy = "proxy" + Proxy FSDriver = "proxy" ) const ( @@ -179,13 +179,13 @@ const ( None SecurityModelType = "none" // PassThrough uses the same credentials on both the host and guest. - PassThrough = "passthrough" + PassThrough SecurityModelType = "passthrough" // MappedXattr stores some files attributes as extended attributes. - MappedXattr = "mapped-xattr" + MappedXattr SecurityModelType = "mapped-xattr" // MappedFile stores some files attributes in the .virtfs directory. - MappedFile = "mapped-file" + MappedFile SecurityModelType = "mapped-file" ) // FSDevice represents a qemu filesystem configuration. @@ -256,19 +256,19 @@ const ( Pipe CharDeviceBackend = "pipe" // Socket creates a 2 way stream socket (TCP or Unix). - Socket = "socket" + Socket CharDeviceBackend = "socket" // CharConsole sends traffic from the guest to QEMU's standard output. - CharConsole = "console" + CharConsole CharDeviceBackend = "console" // Serial sends traffic from the guest to a serial device on the host. - Serial = "serial" + Serial CharDeviceBackend = "serial" // TTY is an alias for Serial. - TTY = "tty" + TTY CharDeviceBackend = "tty" // PTY creates a new pseudo-terminal on the host and connect to it. - PTY = "pty" + PTY CharDeviceBackend = "pty" ) // CharDevice represents a qemu character device. @@ -345,19 +345,19 @@ const ( TAP NetDeviceType = "tap" // MACVTAP is a macvtap networking device type. - MACVTAP = "macvtap" + MACVTAP NetDeviceType = "macvtap" // IPVTAP is a ipvtap virtual networking device type. - IPVTAP = "ipvtap" + IPVTAP NetDeviceType = "ipvtap" // VETHTAP is a veth-tap virtual networking device type. - VETHTAP = "vethtap" + VETHTAP NetDeviceType = "vethtap" // VFIO is a direct assigned PCI device or PCI VF - VFIO = "VFIO" + VFIO NetDeviceType = "VFIO" // VHOSTUSER is a vhost-user port (socket) - VHOSTUSER = "vhostuser" + VHOSTUSER NetDeviceType = "vhostuser" ) // QemuNetdevParam converts to the QEMU -netdev parameter notation @@ -634,7 +634,7 @@ const ( NoInterface BlockDeviceInterface = "none" // SCSI represents a SCSI block device interface. - SCSI = "scsi" + SCSI BlockDeviceInterface = "scsi" ) const ( @@ -642,7 +642,7 @@ const ( Threads BlockDeviceAIO = "threads" // Native is the pthread asynchronous I/O implementation. - Native = "native" + Native BlockDeviceAIO = "native" ) const ( @@ -967,7 +967,9 @@ type VSOCKDevice struct { const ( // MinimalGuestCID is the smallest valid context ID for a guest. MinimalGuestCID uint32 = 3 +) +const ( // VhostVSOCKPCI is the VSOCK vhost device type. VhostVSOCKPCI = "vhost-vsock-pci" @@ -1010,7 +1012,7 @@ const ( UTC RTCBaseType = "utc" // LocalTime is the local base time for qemu RTC. - LocalTime = "localtime" + LocalTime RTCBaseType = "localtime" ) const ( @@ -1018,7 +1020,7 @@ const ( Host RTCClock = "host" // VM is for using the guest clock as a reference - VM = "vm" + VM RTCClock = "vm" ) const ( @@ -1026,7 +1028,7 @@ const ( Slew RTCDriftFix = "slew" // NoDriftFix means we don't want/need to fix qemu's RTC drift. - NoDriftFix = "none" + NoDriftFix RTCDriftFix = "none" ) // RTC represents a qemu Real Time Clock configuration. diff --git a/qemu/qmp.go b/qemu/qmp.go index 37334e99e..814a7dd50 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -415,7 +415,7 @@ func (q *QMP) mainLoop() { close(q.disconnectedCh) }() - version := []byte{} + var version []byte var cmdDoneCh <-chan struct{} DONE: From 430e72c63b835038a7471e9d909f5b68faad173d Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Thu, 28 Jun 2018 15:56:27 +0100 Subject: [PATCH 110/385] qemu,qmp: Enable gas security checker This commit enables the gas security checker on govmm builds. The security checker has signalled 4 issues all of which I've checked and have determined to be non issues. These issues are disabled by this commit. Signed-off-by: Mark Ryan --- .travis.yml | 2 +- qemu/image.go | 2 ++ qemu/qemu.go | 1 + qemu/qmp.go | 1 + 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index fb5bc4419..f23679412 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,4 +19,4 @@ before_install: script: - go env - $GOPATH/bin/goveralls -v -service=travis-ci - - gometalinter --tests --vendor --disable-all --enable=misspell --enable=vet --enable=ineffassign --enable=gofmt --enable=gocyclo --cyclo-over=15 --enable=golint --enable=errcheck --enable=deadcode --enable=staticcheck ./... + - gometalinter --tests --vendor --disable-all --enable=misspell --enable=vet --enable=ineffassign --enable=gofmt --enable=gocyclo --cyclo-over=15 --enable=golint --enable=errcheck --enable=deadcode --enable=staticcheck -enable=gas ./... diff --git a/qemu/image.go b/qemu/image.go index 4f064c681..352659adb 100644 --- a/qemu/image.go +++ b/qemu/image.go @@ -45,9 +45,11 @@ func CreateCloudInitISO(ctx context.Context, scratchDir, isoPath string, userDataPath := path.Join(dataDirPath, "user_data") defer func() { + /* #nosec */ _ = os.RemoveAll(configDrivePath) }() + /* #nosec */ err := os.MkdirAll(dataDirPath, 0755) if err != nil { return fmt.Errorf("Unable to create config drive directory %s : %v", diff --git a/qemu/qemu.go b/qemu/qemu.go index 831608af3..d14661094 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1652,6 +1652,7 @@ func LaunchCustomQemu(ctx context.Context, path string, params []string, fds []* path = "qemu-system-x86_64" } + /* #nosec */ cmd := exec.Command(path, params...) if len(fds) > 0 { logger.Infof("Adding extra file %v", fds) diff --git a/qemu/qmp.go b/qemu/qmp.go index 814a7dd50..a66ef2930 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -409,6 +409,7 @@ func (q *QMP) mainLoop() { if q.cfg.EventCh != nil { close(q.cfg.EventCh) } + /* #nosec */ _ = q.conn.Close() _ = <-fromVMCh failOutstandingCommands(cmdQueue) From 4ca232ecdf15216bb26484911b54f434dd6d09cc Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Thu, 28 Jun 2018 16:05:00 +0100 Subject: [PATCH 111/385] qmp_test: Fix Warning and Error level logs This commit fixes an issue with the log handlers defined by qmp_test. The issue was picked up by the latest version of go vet on go tip. qemu/qmp_test.go:56::error: missing ... in args forwarded to printf-like function (vet) qemu/qmp_test.go:60::error: missing ... in args forwarded to printf-like function (vet) Signed-off-by: Mark Ryan --- qemu/qmp_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index f5b472d74..2abb196c0 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -53,11 +53,11 @@ func (l qmpTestLogger) Infof(format string, v ...interface{}) { } func (l qmpTestLogger) Warningf(format string, v ...interface{}) { - l.Infof(format, v) + l.Infof(format, v...) } func (l qmpTestLogger) Errorf(format string, v ...interface{}) { - l.Infof(format, v) + l.Infof(format, v...) } type qmpTestCommand struct { From f700a97beef89be2d759a1616a7364e92bc8ec77 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Fri, 13 Jul 2018 12:05:19 -0500 Subject: [PATCH 112/385] qemu/qmp: implement function to hotplug vsock-pci Implement function to hotplug vsocks, vsocks are needed to communicate processes are running inside the VM with processes are running on the host. Signed-off-by: Julio Montes --- qemu/qemu.go | 3 +++ qemu/qmp.go | 10 ++++++++++ qemu/qmp_test.go | 17 +++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index 41381d80e..e91136484 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -82,6 +82,9 @@ const ( // VirtioSerialPort is the serial port device driver. VirtioSerialPort = "virtserialport" + + // VHostVSockPCI is the vhost vsock pci driver. + VHostVSockPCI = "vhost-vsock-pci" ) // ObjectType is a string representing a qemu object type. diff --git a/qemu/qmp.go b/qemu/qmp.go index 37334e99e..32a59ef04 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -881,3 +881,13 @@ func (q *QMP) ExecHotplugMemory(ctx context.Context, qomtype, id, mempath string return err } + +// ExecutePCIVSockAdd adds a vhost-vsock-pci bus +func (q *QMP) ExecutePCIVSockAdd(ctx context.Context, id, guestCID string) error { + args := map[string]interface{}{ + "driver": VHostVSockPCI, + "id": id, + "guest-cid": guestCID, + } + return q.executeCommand(ctx, "device_add", args, nil) +} diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index f5b472d74..c87822ae8 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -945,3 +945,20 @@ func TestExecHotplugMemory(t *testing.T) { q.Shutdown() <-disconnectedCh } + +// Checks vsock-pci hotplug +func TestExecutePCIVSockAdd(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("device_add", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + err := q.ExecutePCIVSockAdd(context.Background(), "vsock-pci0", "3") + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} From 3830b4419f4ddee5de05dc89e6d934e345837e76 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Tue, 24 Jul 2018 13:37:28 -0500 Subject: [PATCH 113/385] qemu: add vhostfd and disable-modern to vhost-vsock-pci `vhostfd` is the vhost file descriptor that holds the socket context ID `disable-modern` prevents qemu from relying on fast MMIO Signed-off-by: Julio Montes --- qemu/qemu.go | 20 ++++++++++++++++++-- qemu/qemu_test.go | 14 +++++++++----- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index e91136484..4f7a383ee 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -965,6 +965,12 @@ type VSOCKDevice struct { ID string ContextID uint32 + + // VHostFD vhost file descriptor that holds the ContextID + VHostFD *os.File + + // DisableModern prevents qemu from relying on fast MMIO. + DisableModern bool } const ( @@ -989,12 +995,22 @@ func (vsock VSOCKDevice) Valid() bool { // QemuParams returns the qemu parameters built out of the VSOCK device. func (vsock VSOCKDevice) QemuParams(config *Config) []string { + var deviceParams []string var qemuParams []string - deviceParam := fmt.Sprintf("%s,id=%s,%s=%d", VhostVSOCKPCI, vsock.ID, VSOCKGuestCID, vsock.ContextID) + deviceParams = append(deviceParams, fmt.Sprintf("%s", VhostVSOCKPCI)) + if vsock.DisableModern { + deviceParams = append(deviceParams, ",disable-modern=true") + } + if vsock.VHostFD != nil { + qemuFDs := config.appendFDs([]*os.File{vsock.VHostFD}) + deviceParams = append(deviceParams, fmt.Sprintf(",vhostfd=%d", qemuFDs[0])) + } + deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", vsock.ID)) + deviceParams = append(deviceParams, fmt.Sprintf(",%s=%d", VSOCKGuestCID, vsock.ContextID)) qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, deviceParam) + qemuParams = append(qemuParams, strings.Join(deviceParams, "")) return qemuParams } diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 14637910d..be9657b0e 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -329,12 +329,14 @@ func TestAppendDeviceVFIO(t *testing.T) { testAppend(vfioDevice, deviceVFIOString, t) } -var deviceVSOCKString = "-device vhost-vsock-pci,id=vhost-vsock-pci0,guest-cid=4" +var deviceVSOCKString = "-device vhost-vsock-pci,disable-modern=true,id=vhost-vsock-pci0,guest-cid=4" func TestAppendVSOCK(t *testing.T) { vsockDevice := VSOCKDevice{ - ID: "vhost-vsock-pci0", - ContextID: 4, + ID: "vhost-vsock-pci0", + ContextID: 4, + VHostFD: nil, + DisableModern: true, } testAppend(vsockDevice, deviceVSOCKString, t) @@ -342,8 +344,10 @@ func TestAppendVSOCK(t *testing.T) { func TestVSOCKValid(t *testing.T) { vsockDevice := VSOCKDevice{ - ID: "vhost-vsock-pci0", - ContextID: MinimalGuestCID - 1, + ID: "vhost-vsock-pci0", + ContextID: MinimalGuestCID - 1, + VHostFD: nil, + DisableModern: true, } if vsockDevice.Valid() { From 12dfa872936de1f8cd003238711a044b37be9b59 Mon Sep 17 00:00:00 2001 From: Ruidong Cao Date: Tue, 24 Jul 2018 17:06:22 +0800 Subject: [PATCH 114/385] qemu/qmp: implement function for hotplug network Implement function to hotplug and delete a network device to QEMU Signed-off-by: Ruidong Cao --- qemu/qmp.go | 45 ++++++++++++++++++++++++++++++++++++ qemu/qmp_test.go | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+) diff --git a/qemu/qmp.go b/qemu/qmp.go index 37334e99e..c4e9f7356 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -727,6 +727,51 @@ func (q *QMP) ExecuteBlockdevDel(ctx context.Context, blockdevID string) error { return q.executeCommand(ctx, "x-blockdev-del", args, nil) } +// ExecuteNetdevAdd adds a Net device to a QEMU instance +// using the netdev_add command. netdevID is the id of the device to add. +// Must be valid QMP identifier. +func (q *QMP) ExecuteNetdevAdd(ctx context.Context, netdevType, netdevID, ifname, downscript, script string, queues int) error { + args := map[string]interface{}{ + "type": netdevType, + "id": netdevID, + "ifname": ifname, + "downscript": downscript, + "script": script, + } + if queues > 1 { + args["queues"] = queues + } + + return q.executeCommand(ctx, "netdev_add", args, nil) +} + +// ExecuteNetdevDel deletes a Net device from a QEMU instance +// using the netdev_del command. netdevID is the id of the device to delete. +func (q *QMP) ExecuteNetdevDel(ctx context.Context, netdevID string) error { + args := map[string]interface{}{ + "id": netdevID, + } + return q.executeCommand(ctx, "netdev_del", args, nil) +} + +// ExecuteNetPCIDeviceAdd adds a Net PCI device to a QEMU instance +// using the device_add command. devID is the id of the device to add. +// Must be valid QMP identifier. netdevID is the id of nic added by previous netdev_add. +func (q *QMP) ExecuteNetPCIDeviceAdd(ctx context.Context, netdevID, devID, macAddr, addr, bus string) error { + args := map[string]interface{}{ + "id": devID, + "driver": VirtioNetPCI, + "netdev": netdevID, + "mac": macAddr, + "addr": addr, + } + + if bus != "" { + args["bus"] = bus + } + return q.executeCommand(ctx, "device_add", args, nil) +} + // ExecuteDeviceDel deletes guest portion of a QEMU device by sending a // device_del command. devId is the identifier of the device to delete. // Typically it would match the devID parameter passed to an earlier call diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index f5b472d74..72ef08ddf 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -364,6 +364,66 @@ func TestQMPBlockdevAdd(t *testing.T) { <-disconnectedCh } +// Checks that the netdev_add command is correctly sent. +// +// We start a QMPLoop, send the netdev_add command and stop the loop. +// +// The netdev_add command should be correctly sent and the QMP loop should +// exit gracefully. +func TestQMPNetdevAdd(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("netdev_add", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + q.version = checkVersion(t, connectedCh) + err := q.ExecuteNetdevAdd(context.Background(), "tap", "br0", "tap0", "no", "no", 8) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} + +// Checks that the netdev_del command is correctly sent. +// +// We start a QMPLoop, send the netdev_del command and stop the loop. +// +// The netdev_del command should be correctly sent and the QMP loop should +// exit gracefully. +func TestQMPNetdevDel(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("netdev_del", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + q.version = checkVersion(t, connectedCh) + err := q.ExecuteNetdevDel(context.Background(), "br0") + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} + +func TestQMPNetPCIDeviceAdd(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("device_add", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + err := q.ExecuteNetPCIDeviceAdd(context.Background(), "br0", "virtio-0", "02:42:ac:11:00:02", "0x7", "") + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} + // Checks that the device_add command is correctly sent. // // We start a QMPLoop, send the device_add command and stop the loop. From 84b212f1b85711e969eee035884de8787aebffd8 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Fri, 20 Jul 2018 15:58:31 -0500 Subject: [PATCH 115/385] qemu: add vhostfd and disable-modern to vsock hotplug `vhostfd` is used to specify the vhost-vsock device fd, and it holds the context ID previously opened. `disable-modern` is to disable the use of "modern" devices, by using virtio 0.9 instead of virtio 1.0. Particularly, this is useful when running the VM in a nested environment. Signed-off-by: Julio Montes --- qemu/qmp.go | 8 +++++++- qemu/qmp_test.go | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 32a59ef04..61788e0fa 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -883,11 +883,17 @@ func (q *QMP) ExecHotplugMemory(ctx context.Context, qomtype, id, mempath string } // ExecutePCIVSockAdd adds a vhost-vsock-pci bus -func (q *QMP) ExecutePCIVSockAdd(ctx context.Context, id, guestCID string) error { +func (q *QMP) ExecutePCIVSockAdd(ctx context.Context, id, guestCID, vhostfd string, disableModern bool) error { args := map[string]interface{}{ "driver": VHostVSockPCI, "id": id, "guest-cid": guestCID, + "vhostfd": vhostfd, } + + if disableModern { + args["disable-modern"] = disableModern + } + return q.executeCommand(ctx, "device_add", args, nil) } diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index c87822ae8..5b238648d 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -955,7 +955,7 @@ func TestExecutePCIVSockAdd(t *testing.T) { cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) - err := q.ExecutePCIVSockAdd(context.Background(), "vsock-pci0", "3") + err := q.ExecutePCIVSockAdd(context.Background(), "vsock-pci0", "3", "1", true) if err != nil { t.Fatalf("Unexpected error %v", err) } From 03f1a1c3a8a3b10a389c99aa1b37b6b772463420 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Mon, 30 Jul 2018 15:07:11 -0500 Subject: [PATCH 116/385] qemu/qmp: implement getfd `getfd` receives a file descriptor via SCM rights and assign it a name, this command is useful to send file descriptors from the host, and then hot plug devices that needs file descriptors like vhost-vsock-pci devices. Signed-off-by: Julio Montes --- qemu/qmp.go | 28 ++++++++++++++++++++++++---- qemu/qmp_test.go | 18 ++++++++++++++++++ 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 61788e0fa..3913e9cf7 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -24,6 +24,8 @@ import ( "fmt" "io" "net" + "os" + "syscall" "time" "context" @@ -118,6 +120,7 @@ type qmpCommand struct { args map[string]interface{} filter *qmpEventFilter resultReceived bool + oob []byte } // QMP is a structure that contains the internal state used by startQMPLoop and @@ -302,7 +305,12 @@ func (q *QMP) writeNextQMPCommand(cmdQueue *list.List) { } q.cfg.Logger.Infof("%s", string(encodedCmd)) encodedCmd = append(encodedCmd, '\n') - _, err = q.conn.Write(encodedCmd) + if unixConn, ok := q.conn.(*net.UnixConn); ok && len(cmd.oob) > 0 { + _, _, err = unixConn.WriteMsgUnix(encodedCmd, cmd.oob, nil) + } else { + _, err = q.conn.Write(encodedCmd) + } + if err != nil { cmd.res <- qmpResult{ err: fmt.Errorf("Unable to write command to qmp socket %v", err), @@ -485,7 +493,7 @@ func startQMPLoop(conn io.ReadWriteCloser, cfg QMPConfig, } func (q *QMP) executeCommandWithResponse(ctx context.Context, name string, args map[string]interface{}, - filter *qmpEventFilter) (interface{}, error) { + oob []byte, filter *qmpEventFilter) (interface{}, error) { var err error var response interface{} resCh := make(chan qmpResult) @@ -498,6 +506,7 @@ func (q *QMP) executeCommandWithResponse(ctx context.Context, name string, args name: name, args: args, filter: filter, + oob: oob, }: } @@ -519,7 +528,7 @@ func (q *QMP) executeCommandWithResponse(ctx context.Context, name string, args func (q *QMP) executeCommand(ctx context.Context, name string, args map[string]interface{}, filter *qmpEventFilter) error { - _, err := q.executeCommandWithResponse(ctx, name, args, filter) + _, err := q.executeCommandWithResponse(ctx, name, args, nil, filter) return err } @@ -809,7 +818,7 @@ func (q *QMP) ExecuteCPUDeviceAdd(ctx context.Context, driver, cpuID, socketID, // ExecuteQueryHotpluggableCPUs returns a slice with the list of hotpluggable CPUs func (q *QMP) ExecuteQueryHotpluggableCPUs(ctx context.Context) ([]HotpluggableCPU, error) { - response, err := q.executeCommandWithResponse(ctx, "query-hotpluggable-cpus", nil, nil) + response, err := q.executeCommandWithResponse(ctx, "query-hotpluggable-cpus", nil, nil, nil) if err != nil { return nil, err } @@ -897,3 +906,14 @@ func (q *QMP) ExecutePCIVSockAdd(ctx context.Context, id, guestCID, vhostfd stri return q.executeCommand(ctx, "device_add", args, nil) } + +// ExecuteGetFD sends a file descriptor via SCM rights and assigns it a name +func (q *QMP) ExecuteGetFD(ctx context.Context, fdname string, fd *os.File) error { + oob := syscall.UnixRights(int(fd.Fd())) + args := map[string]interface{}{ + "fdname": fdname, + } + + _, err := q.executeCommandWithResponse(ctx, "getfd", args, oob, nil) + return err +} diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 5b238648d..415387924 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -22,6 +22,7 @@ import ( "errors" "fmt" "log" + "os" "reflect" "sync" "testing" @@ -962,3 +963,20 @@ func TestExecutePCIVSockAdd(t *testing.T) { q.Shutdown() <-disconnectedCh } + +// Checks getfd +func TestExecuteGetFdD(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("getfd", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + err := q.ExecuteGetFD(context.Background(), "foo", os.NewFile(0, "foo")) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} From ca46f21f3ffdbd23e8f4468a523d3c1cafa8d142 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Fri, 3 Aug 2018 08:01:05 -0500 Subject: [PATCH 117/385] qemu/qmp: implement function to hotplug character devices implement function to hotplug character devices using as backend unix sockets, binding a character device with a serial port allows the communnication between processes running in the guest with processes running in the host. Signed-off-by: Julio Montes --- qemu/qmp.go | 23 +++++++++++++++++++++++ qemu/qmp_test.go | 17 +++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/qemu/qmp.go b/qemu/qmp.go index 1e57aaa9e..fccc0f56a 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -963,3 +963,26 @@ func (q *QMP) ExecuteGetFD(ctx context.Context, fdname string, fd *os.File) erro _, err := q.executeCommandWithResponse(ctx, "getfd", args, oob, nil) return err } + +// ExecuteCharDevUnixSocketAdd adds a character device using as backend a unix socket, +// id is an identifier for the device, path specifies the local path of the unix socket, +// wait is to block waiting for a client to connect, server specifies that the socket is a listening socket. +func (q *QMP) ExecuteCharDevUnixSocketAdd(ctx context.Context, id, path string, wait, server bool) error { + args := map[string]interface{}{ + "id": id, + "backend": map[string]interface{}{ + "type": "socket", + "data": map[string]interface{}{ + "wait": wait, + "server": server, + "addr": map[string]interface{}{ + "type": "unix", + "data": map[string]interface{}{ + "path": path, + }, + }, + }, + }, + } + return q.executeCommand(ctx, "chardev-add", args, nil) +} diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 0ffdf5bc3..2f60db1ab 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1040,3 +1040,20 @@ func TestExecuteGetFdD(t *testing.T) { q.Shutdown() <-disconnectedCh } + +// Checks chardev-add unix socket +func TestExecuteCharDevUnixSocketAdd(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("chardev-add", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + err := q.ExecuteCharDevUnixSocketAdd(context.Background(), "foo", "foo.sock", false, true) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} From 80ed88edb120b5f70e748e5864c68e234a365d4a Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Fri, 3 Aug 2018 08:10:44 -0500 Subject: [PATCH 118/385] qemu/qmp: implement function to hotplug serial ports Implement function to hotplug virtio serial ports, the serial ports are visible in the guest at the directory /dev/virtio-ports. Signed-off-by: Julio Montes --- qemu/qmp.go | 14 ++++++++++++++ qemu/qmp_test.go | 17 +++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/qemu/qmp.go b/qemu/qmp.go index fccc0f56a..40e4781a6 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -986,3 +986,17 @@ func (q *QMP) ExecuteCharDevUnixSocketAdd(ctx context.Context, id, path string, } return q.executeCommand(ctx, "chardev-add", args, nil) } + +// ExecuteVirtSerialPortAdd adds a virtserialport. +// id is an identifier for the virtserialport, name is a name for the virtserialport and +// it will be visible in the VM, chardev is the character device id previously added. +func (q *QMP) ExecuteVirtSerialPortAdd(ctx context.Context, id, name, chardev string) error { + args := map[string]interface{}{ + "driver": VirtioSerialPort, + "id": id, + "name": name, + "chardev": chardev, + } + + return q.executeCommand(ctx, "device_add", args, nil) +} diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 2f60db1ab..c6c4ed4f0 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1057,3 +1057,20 @@ func TestExecuteCharDevUnixSocketAdd(t *testing.T) { q.Shutdown() <-disconnectedCh } + +// Checks virtio serial port hotplug +func TestExecuteVirtSerialPortAdd(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("device_add", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + err := q.ExecuteVirtSerialPortAdd(context.Background(), "foo", "foo.channel", "foo") + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} From 10efa84132bacc8fd3bf22880a6a1740f5027e18 Mon Sep 17 00:00:00 2001 From: Ruidong Cao Date: Tue, 7 Aug 2018 16:33:22 +0800 Subject: [PATCH 119/385] qemu/qmp: add function for hotplug network by fds Implement function to hotplug a network device to QEMU by fds. Macvtap can only be hotplug by this way. Signed-off-by: Ruidong Cao --- qemu/qmp.go | 18 ++++++++++++++++++ qemu/qmp_test.go | 22 ++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/qemu/qmp.go b/qemu/qmp.go index 40e4781a6..ea6cb6454 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -29,6 +29,7 @@ import ( "time" "context" + "strings" ) // QMPLog is a logging interface used by the qemu package to log various @@ -755,6 +756,23 @@ func (q *QMP) ExecuteNetdevAdd(ctx context.Context, netdevType, netdevID, ifname return q.executeCommand(ctx, "netdev_add", args, nil) } +// ExecuteNetdevAddByFds adds a Net device to a QEMU instance +// using the netdev_add command by fds and vhostfds. netdevID is the id of the device to add. +// Must be valid QMP identifier. +func (q *QMP) ExecuteNetdevAddByFds(ctx context.Context, netdevType, netdevID string, fdNames, vhostFdNames []string) error { + fdNameStr := strings.Join(fdNames, ":") + vhostFdNameStr := strings.Join(vhostFdNames, ":") + args := map[string]interface{}{ + "type": netdevType, + "id": netdevID, + "fds": fdNameStr, + "vhost": "on", + "vhostfds": vhostFdNameStr, + } + + return q.executeCommand(ctx, "netdev_add", args, nil) +} + // ExecuteNetdevDel deletes a Net device from a QEMU instance // using the netdev_del command. netdevID is the id of the device to delete. func (q *QMP) ExecuteNetdevDel(ctx context.Context, netdevID string) error { diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index c6c4ed4f0..fe3d0b5b7 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -387,6 +387,28 @@ func TestQMPNetdevAdd(t *testing.T) { <-disconnectedCh } +// Checks that the netdev_add command with fds is correctly sent. +// +// We start a QMPLoop, send the netdev_add command with fds and stop the loop. +// +// The netdev_add command with fds should be correctly sent and the QMP loop should +// exit gracefully. +func TestQMPNetdevAddByFds(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("netdev_add", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + q.version = checkVersion(t, connectedCh) + err := q.ExecuteNetdevAddByFds(context.Background(), "tap", "br0", nil, nil) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} + // Checks that the netdev_del command is correctly sent. // // We start a QMPLoop, send the netdev_del command and stop the loop. From 685199980d27f7aaddb30fdb44f01ee1417b9ec6 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Tue, 7 Aug 2018 13:33:13 -0500 Subject: [PATCH 120/385] qemu/qmp: add addr and bus to hotplug vsock devices For machines types based on PCIe like q35, device addr and bus must be specified. For machines types based on PCI like pc, device addr must be specified and bus is optional since devices can be hot plugged directly on the root bus. Signed-off-by: Julio Montes --- qemu/qmp.go | 7 ++++++- qemu/qmp_test.go | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 40e4781a6..22a59d91d 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -938,12 +938,17 @@ func (q *QMP) ExecHotplugMemory(ctx context.Context, qomtype, id, mempath string } // ExecutePCIVSockAdd adds a vhost-vsock-pci bus -func (q *QMP) ExecutePCIVSockAdd(ctx context.Context, id, guestCID, vhostfd string, disableModern bool) error { +func (q *QMP) ExecutePCIVSockAdd(ctx context.Context, id, guestCID, vhostfd, addr, bus string, disableModern bool) error { args := map[string]interface{}{ "driver": VHostVSockPCI, "id": id, "guest-cid": guestCID, "vhostfd": vhostfd, + "addr": addr, + } + + if bus != "" { + args["bus"] = bus } if disableModern { diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index c6c4ed4f0..3abcf9649 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1016,7 +1016,7 @@ func TestExecutePCIVSockAdd(t *testing.T) { cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) - err := q.ExecutePCIVSockAdd(context.Background(), "vsock-pci0", "3", "1", true) + err := q.ExecutePCIVSockAdd(context.Background(), "vsock-pci0", "3", "1", "1", "1", true) if err != nil { t.Fatalf("Unexpected error %v", err) } From 4461c459a3465e06e07e9e31d4466f5948b640d8 Mon Sep 17 00:00:00 2001 From: Archana Shinde Date: Mon, 6 Aug 2018 17:29:39 -0700 Subject: [PATCH 121/385] disk: Add --share-rw option for hotplugging disks With qemu 2.10, a write lock was added for qcow images that prevents the same image to be passed more than once. This can be over-ridden using the --share-rw option which is desired for raw images. This solves an issue with running Kata with devicemapper using the privileged mode as in this case all devices on the host are passed to the container using the block device associated with the rootfs, causing it to be passed twice to qemu. Signed-off-by: Archana Shinde --- qemu/qmp.go | 23 ++++++++++++++++++----- qemu/qmp_test.go | 12 ++++++------ 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 40e4781a6..efa672b61 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -670,7 +670,8 @@ func (q *QMP) ExecuteBlockdevAdd(ctx context.Context, device, blockdevID string) // to a previous call to ExecuteBlockdevAdd. devID is the id of the device to // add. Both strings must be valid QMP identifiers. driver is the name of the // driver,e.g., virtio-blk-pci, and bus is the name of the bus. bus is optional. -func (q *QMP) ExecuteDeviceAdd(ctx context.Context, blockdevID, devID, driver, bus string) error { +// shared denotes if the drive can be shared allowing it to be passed more than once. +func (q *QMP) ExecuteDeviceAdd(ctx context.Context, blockdevID, devID, driver, bus string, shared bool) error { args := map[string]interface{}{ "id": devID, "driver": driver, @@ -679,6 +680,9 @@ func (q *QMP) ExecuteDeviceAdd(ctx context.Context, blockdevID, devID, driver, b if bus != "" { args["bus"] = bus } + if shared && (q.version.Major > 2 || (q.version.Major == 2 && q.version.Minor >= 10)) { + args["share-rw"] = "on" + } return q.executeCommand(ctx, "device_add", args, nil) } @@ -688,8 +692,9 @@ func (q *QMP) ExecuteDeviceAdd(ctx context.Context, blockdevID, devID, driver, b // the device to add. Both strings must be valid QMP identifiers. driver is the name of the // scsi driver,e.g., scsi-hd, and bus is the name of a SCSI controller bus. // scsiID is the SCSI id, lun is logical unit number. scsiID and lun are optional, a negative value -// for scsiID and lun is ignored. -func (q *QMP) ExecuteSCSIDeviceAdd(ctx context.Context, blockdevID, devID, driver, bus string, scsiID, lun int) error { +// for scsiID and lun is ignored. shared denotes if the drive can be shared allowing it +// to be passed more than once. +func (q *QMP) ExecuteSCSIDeviceAdd(ctx context.Context, blockdevID, devID, driver, bus string, scsiID, lun int, shared bool) error { // TBD: Add drivers for scsi passthrough like scsi-generic and scsi-block drivers := []string{"scsi-hd", "scsi-cd", "scsi-disk"} @@ -717,6 +722,9 @@ func (q *QMP) ExecuteSCSIDeviceAdd(ctx context.Context, blockdevID, devID, drive if lun >= 0 { args["lun"] = lun } + if shared && (q.version.Major > 2 || (q.version.Major == 2 && q.version.Minor >= 10)) { + args["share-rw"] = "on" + } return q.executeCommand(ctx, "device_add", args, nil) } @@ -802,8 +810,9 @@ func (q *QMP) ExecuteDeviceDel(ctx context.Context, devID string) error { // ExecutePCIDeviceAdd is the PCI version of ExecuteDeviceAdd. This function can be used // to hot plug PCI devices on PCI(E) bridges, unlike ExecuteDeviceAdd this function receive the -// device address on its parent bus. bus is optional. -func (q *QMP) ExecutePCIDeviceAdd(ctx context.Context, blockdevID, devID, driver, addr, bus string) error { +// device address on its parent bus. bus is optional. shared denotes if the drive can be shared +// allowing it to be passed more than once. +func (q *QMP) ExecutePCIDeviceAdd(ctx context.Context, blockdevID, devID, driver, addr, bus string, shared bool) error { args := map[string]interface{}{ "id": devID, "driver": driver, @@ -813,6 +822,10 @@ func (q *QMP) ExecutePCIDeviceAdd(ctx context.Context, blockdevID, devID, driver if bus != "" { args["bus"] = bus } + if shared && (q.version.Major > 2 || (q.version.Major == 2 && q.version.Minor >= 10)) { + args["share-rw"] = "on" + } + return q.executeCommand(ctx, "device_add", args, nil) } diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index c6c4ed4f0..4ebda65d6 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -438,11 +438,11 @@ func TestQMPDeviceAdd(t *testing.T) { buf.AddCommand("device_add", nil, "return", nil) cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) - checkVersion(t, connectedCh) + q.version = checkVersion(t, connectedCh) blockdevID := fmt.Sprintf("drive_%s", volumeUUID) devID := fmt.Sprintf("device_%s", volumeUUID) err := q.ExecuteDeviceAdd(context.Background(), blockdevID, devID, - "virtio-blk-pci", "") + "virtio-blk-pci", "", true) if err != nil { t.Fatalf("Unexpected error %v", err) } @@ -463,11 +463,11 @@ func TestQMPSCSIDeviceAdd(t *testing.T) { buf.AddCommand("device_add", nil, "return", nil) cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) - checkVersion(t, connectedCh) + q.version = checkVersion(t, connectedCh) blockdevID := fmt.Sprintf("drive_%s", volumeUUID) devID := fmt.Sprintf("device_%s", volumeUUID) err := q.ExecuteSCSIDeviceAdd(context.Background(), blockdevID, devID, - "scsi-hd", "scsi0.0", 1, 2) + "scsi-hd", "scsi0.0", 1, 2, true) if err != nil { t.Fatalf("Unexpected error %v", err) } @@ -881,11 +881,11 @@ func TestQMPPCIDeviceAdd(t *testing.T) { buf.AddCommand("device_add", nil, "return", nil) cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) - checkVersion(t, connectedCh) + q.version = checkVersion(t, connectedCh) blockdevID := fmt.Sprintf("drive_%s", volumeUUID) devID := fmt.Sprintf("device_%s", volumeUUID) err := q.ExecutePCIDeviceAdd(context.Background(), blockdevID, devID, - "virtio-blk-pci", "0x1", "") + "virtio-blk-pci", "0x1", "", true) if err != nil { t.Fatalf("Unexpected error %v", err) } From fcaf61dcb1ee8512a043fbc38b0bdc57c7d1bd38 Mon Sep 17 00:00:00 2001 From: Zhao Xinda Date: Fri, 10 Aug 2018 12:43:22 +0800 Subject: [PATCH 122/385] qemu/qmp: add vfio mediated device support In addition to normal VFIO device, this patch adds VFIO mediated device as a supplement to do hot plug on PCI(E) bridges. Signed-off-by: Zhao Xinda --- qemu/qmp.go | 18 ++++++++++++++++++ qemu/qmp_test.go | 24 ++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/qemu/qmp.go b/qemu/qmp.go index e5dbb9318..002ea42cf 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -837,6 +837,24 @@ func (q *QMP) ExecutePCIVFIODeviceAdd(ctx context.Context, devID, bdf, addr, bus return q.executeCommand(ctx, "device_add", args, nil) } +// ExecutePCIVFIOMediatedDeviceAdd adds a VFIO mediated device to a QEMU instance using the device_add command. +// This function can be used to hot plug VFIO mediated devices on PCI(E) bridges, unlike +// ExecuteVFIODeviceAdd this function receives the bus and the device address on its parent bus. +// bus is optional. devID is the id of the device to add. Must be valid QMP identifier. sysfsdev is the VFIO +// mediated device. +func (q *QMP) ExecutePCIVFIOMediatedDeviceAdd(ctx context.Context, devID, sysfsdev, addr, bus string) error { + args := map[string]interface{}{ + "id": devID, + "driver": "vfio-pci", + "sysfsdev": sysfsdev, + "addr": addr, + } + if bus != "" { + args["bus"] = bus + } + return q.executeCommand(ctx, "device_add", args, nil) +} + // ExecuteCPUDeviceAdd adds a CPU to a QEMU instance using the device_add command. // driver is the CPU model, cpuID must be a unique ID to identify the CPU, socketID is the socket number within // node/board the CPU belongs to, coreID is the core number within socket the CPU belongs to, threadID is the diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 3733918e1..8e1bce381 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -892,6 +892,30 @@ func TestQMPPCIDeviceAdd(t *testing.T) { <-disconnectedCh } +// Checks that PCI VFIO mediated devices are correctly added using device_add. +// +// We start a QMPLoop, send the device_add command and stop the loop. +// +// The device_add command should be correctly sent and the QMP loop should +// exit gracefully. +func TestQMPPCIVFIOMediatedDeviceAdd(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("device_add", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + sysfsDev := "/sys/bus/pci/devices/0000:00:02.0/a297db4a-f4c2-11e6-90f6-d3b88d6c9525" + devID := fmt.Sprintf("device_%s", volumeUUID) + err := q.ExecutePCIVFIOMediatedDeviceAdd(context.Background(), devID, sysfsDev, "0x1", "") + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} + // Checks that CPU are correctly added using device_add func TestQMPCPUDeviceAdd(t *testing.T) { connectedCh := make(chan *QMPVersion) From e46092e03ac049660d2eb5bf0c4e3cb7ed2ce03d Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Fri, 10 Aug 2018 14:54:22 +0100 Subject: [PATCH 123/385] qemu: Do not try and generate invalid RTC parameters If no RTC is specified in the config then do not generate any RTC command line options. RTC command line options are optional for QEMU so make Valid() return false when presented with the empty version of the RTC struct containing empty strings. Signed-off-by: Rob Bradford --- qemu/qemu.go | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 31254231d..1337b8af2 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1064,16 +1064,12 @@ type RTC struct { // Valid returns true if the RTC structure is valid and complete. func (rtc RTC) Valid() bool { - if rtc.Clock != "" { - if rtc.Clock != Host && rtc.Clock != VM { - return false - } + if rtc.Clock != Host && rtc.Clock != VM { + return false } - if rtc.DriftFix != "" { - if rtc.DriftFix != Slew && rtc.DriftFix != NoDriftFix { - return false - } + if rtc.DriftFix != Slew && rtc.DriftFix != NoDriftFix { + return false } return true From 2706a07be5fc3be655e0ac1d3c38b52ce347140c Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Tue, 14 Aug 2018 15:01:08 +0100 Subject: [PATCH 124/385] qemu: Use the supplied context.Context for launching This will kill the process when the context is cancelled. As using a nil context is not permitted it is necessary to substitute with a real context if it is not initialised in the Config struct. Signed-off-by: Rob Bradford --- qemu/qemu.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 1337b8af2..d2f27f51d 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1235,7 +1235,7 @@ type Config struct { // Path is the qemu binary path. Path string - // Ctx is not used at the moment. + // Ctx is the context used when launching qemu. Ctx context.Context // Name is the qemu guest name @@ -1632,7 +1632,12 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { return "", err } - return LaunchCustomQemu(config.Ctx, config.Path, config.qemuParams, + ctx := config.Ctx + if ctx == nil { + ctx = context.Background() + } + + return LaunchCustomQemu(ctx, config.Path, config.qemuParams, config.fds, nil, logger) } @@ -1640,10 +1645,6 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { // // The path parameter is used to pass the qemu executable path. // -// The ctx parameter is not currently used but has been added so that the -// signature of this function will not need to change when launch cancellation -// is implemented. -// // params is a slice of options to pass to qemu-system-x86_64 and fds is a // list of open file descriptors that are to be passed to the spawned qemu // process. The attrs parameter can be used to control aspects of the @@ -1668,7 +1669,7 @@ func LaunchCustomQemu(ctx context.Context, path string, params []string, fds []* } /* #nosec */ - cmd := exec.Command(path, params...) + cmd := exec.CommandContext(ctx, path, params...) if len(fds) > 0 { logger.Infof("Adding extra file %v", fds) cmd.ExtraFiles = fds From 17cacc72387012762c1f9d56c85833f1f3581123 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Mon, 20 Aug 2018 14:45:03 +0100 Subject: [PATCH 125/385] Add negative test cases for qemu.go This commit adds some negative test cases for the append functions in qemu.go that build up the qemu command line. Signed-off-by: Mark Ryan --- qemu/qemu_test.go | 292 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 292 insertions(+) diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index be9657b0e..7fdaa9bff 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -688,3 +688,295 @@ func TestAppendIncomingExec(t *testing.T) { testAppend(source, incomingStringExec, t) } + +func TestBadName(t *testing.T) { + c := &Config{} + c.appendName() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } +} + +func TestBadMachine(t *testing.T) { + c := &Config{} + c.appendMachine() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } +} + +func TestBadCPUModel(t *testing.T) { + c := &Config{} + c.appendCPUModel() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } +} + +func TestBadQMPSockets(t *testing.T) { + c := &Config{} + c.appendQMPSockets() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } + + c = &Config{ + QMPSockets: []QMPSocket{{}}, + } + + c.appendQMPSockets() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } + + c = &Config{ + QMPSockets: []QMPSocket{{Name: "test"}}, + } + + c.appendQMPSockets() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } + + c = &Config{ + QMPSockets: []QMPSocket{ + { + Name: "test", + Type: QMPSocketType("ip"), + }, + }, + } + + c.appendQMPSockets() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } +} + +func TestBadDevices(t *testing.T) { + c := &Config{} + c.appendDevices() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } + + c = &Config{ + Devices: []Device{ + FSDevice{}, + FSDevice{ + ID: "id0", + MountTag: "tag", + }, + CharDevice{}, + CharDevice{ + ID: "id1", + }, + NetDevice{}, + NetDevice{ + ID: "id1", + IFName: "if", + Type: IPVTAP, + }, + SerialDevice{}, + SerialDevice{ + ID: "id0", + }, + BlockDevice{}, + BlockDevice{ + Driver: "drv", + ID: "id1", + }, + VhostUserDevice{}, + VhostUserDevice{ + CharDevID: "devid", + }, + VhostUserDevice{ + CharDevID: "devid", + SocketPath: "/var/run/sock", + }, + VhostUserDevice{ + CharDevID: "devid", + SocketPath: "/var/run/sock", + VhostUserType: VhostUserNet, + }, + VhostUserDevice{ + CharDevID: "devid", + SocketPath: "/var/run/sock", + VhostUserType: VhostUserSCSI, + }, + }, + } + + c.appendDevices() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } +} + +func TestBadRTC(t *testing.T) { + c := &Config{} + c.appendRTC() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } + + c = &Config{ + RTC: RTC{ + Clock: RTCClock("invalid"), + }, + } + c.appendRTC() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } + + c = &Config{ + RTC: RTC{ + Clock: Host, + DriftFix: RTCDriftFix("invalid"), + }, + } + c.appendRTC() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } +} + +func TestBadGlobalParam(t *testing.T) { + c := &Config{} + c.appendGlobalParam() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } +} + +func TestBadVGA(t *testing.T) { + c := &Config{} + c.appendVGA() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } +} + +func TestBadKernel(t *testing.T) { + c := &Config{} + c.appendKernel() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } +} + +func TestBadMemoryKnobs(t *testing.T) { + c := &Config{} + c.appendMemoryKnobs() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } + + c = &Config{ + Knobs: Knobs{ + HugePages: true, + }, + } + c.appendMemoryKnobs() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } + + c = &Config{ + Knobs: Knobs{ + HugePages: true, + }, + } + c.appendMemoryKnobs() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } + + c = &Config{ + Knobs: Knobs{ + MemPrealloc: true, + }, + } + c.appendMemoryKnobs() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } + + c = &Config{ + Knobs: Knobs{ + FileBackedMem: true, + }, + Memory: Memory{ + Size: "1024", + }, + } + c.appendMemoryKnobs() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } +} + +func TestBadKnobs(t *testing.T) { + c := &Config{ + Knobs: Knobs{ + Mlock: true, + }, + } + c.appendKnobs() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } +} + +func TestBadBios(t *testing.T) { + c := &Config{} + c.appendBios() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } +} + +func TestBadIOThreads(t *testing.T) { + c := &Config{} + c.appendIOThreads() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } + + c = &Config{ + IOThreads: []IOThread{{ID: ""}}, + } + c.appendIOThreads() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } +} + +func TestBadIncoming(t *testing.T) { + c := &Config{} + c.appendIncoming() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } +} + +func TestBadCPUs(t *testing.T) { + c := &Config{} + if err := c.appendCPUs(); err != nil { + t.Fatalf("No error expected got %v", err) + } + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } + + c = &Config{ + SMP: SMP{ + MaxCPUs: 1, + CPUs: 2, + }, + } + if c.appendCPUs() == nil { + t.Errorf("Error expected") + } +} From ed34f616641e6b90bbbf256b26f1feec11d88d98 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Mon, 20 Aug 2018 15:31:09 +0100 Subject: [PATCH 126/385] Add some negative test cases for qmp.go This commit adds a couple of negative test cases for qmp.go, one which checks that failed commands return errors and the other checks that QMPStart exits gracefully when passed an invalid socket path. Signed-off-by: Mark Ryan --- qemu/qmp_test.go | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 7a59edc6f..d5718c11a 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -251,6 +251,22 @@ func TestQMPStartStopLoop(t *testing.T) { <-disconnectedCh } +// Checks that a call to QMPStart with an invalid path exits gracefully. +// +// We call QMPStart with an invalid path. +// +// An error should be returned and the disconnected channel should be closed. +func TestQMPStartBadPath(t *testing.T) { + cfg := QMPConfig{Logger: qmpTestLogger{}} + disconnectedCh := make(chan struct{}) + q, _, err := QMPStart(context.Background(), "", cfg, disconnectedCh) + if err == nil { + t.Errorf("Expected error") + q.Shutdown() + } + <-disconnectedCh +} + // Checks that the qmp_capabilities command is correctly sent. // // We start a QMPLoop, send the qmp_capabilities command and stop the @@ -274,6 +290,28 @@ func TestQMPCapabilities(t *testing.T) { <-disconnectedCh } +// Checks that an error returned by a QMP command is correctly handled. +// +// We start a QMPLoop, send the qmp_capabilities command and stop the +// loop. +// +// The qmp_capabilities command fails and yet we should exit gracefully. +func TestQMPBadCapabilities(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("qmp_capabilities", nil, "error", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + err := q.ExecuteQMPCapabilities(context.Background()) + if err == nil { + t.Fatalf("Expected error") + } + q.Shutdown() + <-disconnectedCh +} + // Checks that the stop command is correctly sent. // // We start a QMPLoop, send the stop command and stop the From 21504d31ff612b0939daf7063917b49f0bfc552d Mon Sep 17 00:00:00 2001 From: Sebastien Boeuf Date: Tue, 21 Aug 2018 10:51:14 -0700 Subject: [PATCH 127/385] qemu/qmp: Add netdev_add with chardev support In order to be able to hotplug network devices such as vhost user net, we need to be able to define a previously declared chardev as a parameter of this new network device. Signed-off-by: Sebastien Boeuf --- qemu/qmp.go | 16 ++++++++++++++++ qemu/qmp_test.go | 22 ++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/qemu/qmp.go b/qemu/qmp.go index 92000fe03..264601d7c 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -764,6 +764,22 @@ func (q *QMP) ExecuteNetdevAdd(ctx context.Context, netdevType, netdevID, ifname return q.executeCommand(ctx, "netdev_add", args, nil) } +// ExecuteNetdevChardevAdd adds a Net device to a QEMU instance +// using the netdev_add command. netdevID is the id of the device to add. +// Must be valid QMP identifier. +func (q *QMP) ExecuteNetdevChardevAdd(ctx context.Context, netdevType, netdevID, chardev string, queues int) error { + args := map[string]interface{}{ + "type": netdevType, + "id": netdevID, + "chardev": chardev, + } + if queues > 1 { + args["queues"] = queues + } + + return q.executeCommand(ctx, "netdev_add", args, nil) +} + // ExecuteNetdevAddByFds adds a Net device to a QEMU instance // using the netdev_add command by fds and vhostfds. netdevID is the id of the device to add. // Must be valid QMP identifier. diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index d5718c11a..47ab3fd92 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -425,6 +425,28 @@ func TestQMPNetdevAdd(t *testing.T) { <-disconnectedCh } +// Checks that the netdev_add command is correctly sent. +// +// We start a QMPLoop, send the netdev_add command and stop the loop. +// +// The netdev_add command should be correctly sent and the QMP loop should +// exit gracefully. +func TestQMPNetdevChardevAdd(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("netdev_add", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + q.version = checkVersion(t, connectedCh) + err := q.ExecuteNetdevChardevAdd(context.Background(), "tap", "br0", "chr0", 8) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} + // Checks that the netdev_add command with fds is correctly sent. // // We start a QMPLoop, send the netdev_add command with fds and stop the loop. From 8515ae4817f6aad7ffbe68d078884c1689bf3e1e Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Wed, 22 Aug 2018 17:07:21 +0100 Subject: [PATCH 128/385] qmp: Remind users that you must first call ExecuteQMPCapabilities() Before calling any other command it is necessary to call ExecuteQMPCapabilities() otherwise QEMU will not process the subsequent QMP commands. Signed-off-by: Rob Bradford --- qemu/qmp.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/qemu/qmp.go b/qemu/qmp.go index 264601d7c..c78d1ae6a 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -561,6 +561,10 @@ func (q *QMP) executeCommand(ctx context.Context, name string, args map[string]i // block until they have received a success or failure message from QMP, // i.e., {"return": {}} or {"error":{}}, and in some cases certain events // are received. +// +// QEMU currently requires that the "qmp_capabilties" command is sent before any +// other command. Therefore you must call qmp.ExecuteQMPCapabilities() before +// you execute any other command. func QMPStart(ctx context.Context, socket string, cfg QMPConfig, disconnectedCh chan struct{}) (*QMP, *QMPVersion, error) { if cfg.Logger == nil { cfg.Logger = qmpNullLogger{} From 0286ff9e6eaabe9294d697c0cd45ce69d1f2928d Mon Sep 17 00:00:00 2001 From: Ruidong Cao Date: Tue, 21 Aug 2018 18:48:42 +0800 Subject: [PATCH 129/385] qemu/qmp: support hotplug a nic whose qdisc is mq If we hotplug a nic with args mq=on, its qdisc will be mq by default. This aligns with cold plug nics. Signed-off-by: Ruidong Cao --- qemu/qmp.go | 15 ++++++++++++++- qemu/qmp_test.go | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 92000fe03..08c9de11a 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -793,7 +793,8 @@ func (q *QMP) ExecuteNetdevDel(ctx context.Context, netdevID string) error { // ExecuteNetPCIDeviceAdd adds a Net PCI device to a QEMU instance // using the device_add command. devID is the id of the device to add. // Must be valid QMP identifier. netdevID is the id of nic added by previous netdev_add. -func (q *QMP) ExecuteNetPCIDeviceAdd(ctx context.Context, netdevID, devID, macAddr, addr, bus string) error { +// queues is the number of queues of a nic. +func (q *QMP) ExecuteNetPCIDeviceAdd(ctx context.Context, netdevID, devID, macAddr, addr, bus string, queues int) error { args := map[string]interface{}{ "id": devID, "driver": VirtioNetPCI, @@ -805,6 +806,18 @@ func (q *QMP) ExecuteNetPCIDeviceAdd(ctx context.Context, netdevID, devID, macAd if bus != "" { args["bus"] = bus } + + if queues > 0 { + // (2N+2 vectors, N for tx queues, N for rx queues, 1 for config, and one for possible control vq) + // -device virtio-net-pci,mq=on,vectors=2N+2... + // enable mq in guest by 'ethtool -L eth0 combined $queue_num' + // Clearlinux automatically sets up the queues properly + // The agent implementation should do this to ensure that it is + // always set + args["mq"] = "on" + args["vectors"] = 2*queues + 2 + } + return q.executeCommand(ctx, "device_add", args, nil) } diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 7a59edc6f..2d1da0a09 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -439,7 +439,7 @@ func TestQMPNetPCIDeviceAdd(t *testing.T) { cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) - err := q.ExecuteNetPCIDeviceAdd(context.Background(), "br0", "virtio-0", "02:42:ac:11:00:02", "0x7", "") + err := q.ExecuteNetPCIDeviceAdd(context.Background(), "br0", "virtio-0", "02:42:ac:11:00:02", "0x7", "", 8) if err != nil { t.Fatalf("Unexpected error %v", err) } From ce070d11f7abbf8c7651274d13b0295f2fa38ae5 Mon Sep 17 00:00:00 2001 From: flyflypeng Date: Fri, 24 Aug 2018 22:56:27 +0800 Subject: [PATCH 130/385] govmm: modify govmm to be compatible with qemu 2.8 govmm has ExecuteBlockdevAdd() function and ExecuteBlockdevDel() function doesn't compatible with qemu 2.8,because blockdev-add and x-blockdev-del usages are different between qemu 2.7 and qemu 2.8 Follow the qemu 2.7 and qemu 2.8 qmp-commands.txt documents to modify ExecuteBlockdevAdd() function and ExecuteBlockdevDel() function to be compatible with qemu 2.8 Signed-off-by: flyflypeng --- qemu/qmp.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 3f468d881..58b8924fd 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -657,7 +657,7 @@ func (q *QMP) ExecuteBlockdevAdd(ctx context.Context, device, blockdevID string) }, } - if q.version.Major > 2 || (q.version.Major == 2 && q.version.Minor >= 9) { + if q.version.Major > 2 || (q.version.Major == 2 && q.version.Minor >= 8) { blockdevArgs["node-name"] = blockdevID args = blockdevArgs } else { @@ -746,7 +746,12 @@ func (q *QMP) ExecuteBlockdevDel(ctx context.Context, blockdevID string) error { return q.executeCommand(ctx, "blockdev-del", args, nil) } - args["id"] = blockdevID + if q.version.Major == 2 && q.version.Minor == 8 { + args["node-name"] = blockdevID + } else { + args["id"] = blockdevID + } + return q.executeCommand(ctx, "x-blockdev-del", args, nil) } From b16291cfabb128994d3dd59e2f32f4a9418732e0 Mon Sep 17 00:00:00 2001 From: Clare Chen Date: Tue, 28 Aug 2018 22:18:51 -0400 Subject: [PATCH 131/385] qemu/qmp: support query-memory-devices qmp command. Implement query qemu memory devices function and testcase. Signed-off-by: Clare Chen --- qemu/qmp.go | 40 ++++++++++++++++++++++++++++++++++++++++ qemu/qmp_test.go | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) diff --git a/qemu/qmp.go b/qemu/qmp.go index 58b8924fd..addf4b2fa 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -160,6 +160,24 @@ type HotpluggableCPU struct { QOMPath string `json:"qom-path"` } +// MemoryDevicesData cotains the data describes a memory device +type MemoryDevicesData struct { + Slot int `json:"slot"` + Node int `json:"node"` + Addr uint64 `json:"addr"` + Memdev string `json:"memdev"` + ID string `json:"id"` + Hotpluggable bool `json:"hotpluggable"` + Hotplugged bool `json:"hotplugged"` + Size uint64 `json:"size"` +} + +// MemoryDevices represents memory devices of vm +type MemoryDevices struct { + Data MemoryDevicesData `json:"data"` + Type string `json:"type"` +} + func (q *QMP) readLoop(fromVMCh chan<- []byte) { scanner := bufio.NewScanner(q.conn) for scanner.Scan() { @@ -989,6 +1007,28 @@ func (q *QMP) ExecSetMigrateArguments(ctx context.Context, url string) error { return q.executeCommand(ctx, "migrate", args, nil) } +// ExecQueryMemoryDevices returns a slice with the list of memory devices +func (q *QMP) ExecQueryMemoryDevices(ctx context.Context) ([]MemoryDevices, error) { + response, err := q.executeCommandWithResponse(ctx, "query-memory-devices", nil, nil, nil) + if err != nil { + return nil, err + } + + // convert response to json + data, err := json.Marshal(response) + if err != nil { + return nil, fmt.Errorf("Unable to extract memory devices information: %v", err) + } + + var memoryDevices []MemoryDevices + // convert json to []MemoryDevices + if err = json.Unmarshal(data, &memoryDevices); err != nil { + return nil, fmt.Errorf("unable to convert json to memory devices: %v", err) + } + + return memoryDevices, nil +} + // ExecHotplugMemory adds size of MiB memory to the guest func (q *QMP) ExecHotplugMemory(ctx context.Context, qomtype, id, mempath string, size int) error { args := map[string]interface{}{ diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 7d0b40ec2..07c6126fe 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1055,6 +1055,42 @@ func TestQMPExecuteQueryHotpluggableCPUs(t *testing.T) { <-disconnectedCh } +// Checks that memory devices are listed correctly +func TestQMPExecuteQueryMemoryDevices(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + memoryDevices := MemoryDevices{ + Type: "dimm", + Data: MemoryDevicesData{ + Slot: 1, + Node: 0, + Addr: 1234, + Memdev: "dimm1", + ID: "mem1", + Hotpluggable: true, + Hotplugged: false, + Size: 1234, + }, + } + buf.AddCommand("query-memory-devices", nil, "return", []interface{}{memoryDevices}) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + memDevices, err := q.ExecQueryMemoryDevices(context.Background()) + if err != nil { + t.Fatalf("Unexpected error: %v\n", err) + } + if len(memDevices) != 1 { + t.Fatalf("Expected memory devices length equals to 1\n") + } + if reflect.DeepEqual(memDevices[0], memoryDevices) == false { + t.Fatalf("Expected %v equals to %v\n", memDevices[0], memoryDevices) + } + q.Shutdown() + <-disconnectedCh +} + // Checks that migrate capabilities can be set func TestExecSetMigrationCaps(t *testing.T) { connectedCh := make(chan *QMPVersion) From 6c3d84ea8cdf61d1ae87266d12909330ad953cba Mon Sep 17 00:00:00 2001 From: Jose Carlos Venegas Munoz Date: Fri, 7 Sep 2018 12:07:36 -0500 Subject: [PATCH 132/385] qemu: Add virtio RNG device. Add support for virtio-rng divice. Signed-off-by: Jose Carlos Venegas Munoz --- qemu/qemu.go | 60 +++++++++++++++++++++++++++++++++++++++++++++++ qemu/qemu_test.go | 43 +++++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index d2f27f51d..c883de53a 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -85,6 +85,9 @@ const ( // VHostVSockPCI is the vhost vsock pci driver. VHostVSockPCI DeviceDriver = "vhost-vsock-pci" + + // VirtioRng is the paravirtualized RNG device driver. + VirtioRng DeviceDriver = "virtio-rng" ) // ObjectType is a string representing a qemu object type. @@ -1017,6 +1020,63 @@ func (vsock VSOCKDevice) QemuParams(config *Config) []string { return qemuParams } +// RngDevice represents a random number generator device. +type RngDevice struct { + // ID is the device ID + ID string + // Filename is entropy source on the host + Filename string + // MaxBytes is the bytes allowed to guest to get from the host’s entropy per period + MaxBytes uint + // Period is duration of a read period in seconds + Period uint +} + +// Valid returns true if the RngDevice structure is valid and complete. +func (v RngDevice) Valid() bool { + if v.ID == "" { + return false + } + + return true +} + +// QemuParams returns the qemu parameters built out of the RngDevice. +func (v RngDevice) QemuParams(_ *Config) []string { + var qemuParams []string + + //-object rng-random,filename=/dev/hwrng,id=rng0 + var objectParams []string + //-device virtio-rng-pci,rng=rng0,max-bytes=1024,period=1000 + var deviceParams []string + + objectParams = append(objectParams, "rng-random") + objectParams = append(objectParams, "id="+v.ID) + + deviceParams = append(deviceParams, string(VirtioRng)) + deviceParams = append(deviceParams, "rng="+v.ID) + + if v.Filename != "" { + objectParams = append(objectParams, "filename="+v.Filename) + } + + if v.MaxBytes > 0 { + deviceParams = append(deviceParams, fmt.Sprintf("max-bytes=%d", v.MaxBytes)) + } + + if v.Period > 0 { + deviceParams = append(deviceParams, fmt.Sprintf("period=%d", v.Period)) + } + + qemuParams = append(qemuParams, "-object") + qemuParams = append(qemuParams, strings.Join(objectParams, ",")) + + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) + + return qemuParams +} + // RTCBaseType is the qemu RTC base time type. type RTCBaseType string diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 7fdaa9bff..f8bdf34eb 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -17,6 +17,7 @@ package qemu import ( + "fmt" "io/ioutil" "os" "strings" @@ -361,6 +362,48 @@ func TestVSOCKValid(t *testing.T) { } } +func TestAppendVirtioRng(t *testing.T) { + var objectString = "-object rng-random,id=rng0" + var deviceString = "-device " + string(VirtioRng) + ",rng=rng0" + rngDevice := RngDevice{ + ID: "rng0", + } + + testAppend(rngDevice, objectString+" "+deviceString, t) + + rngDevice.Filename = "/dev/urandom" + objectString += ",filename=" + rngDevice.Filename + + testAppend(rngDevice, objectString+" "+deviceString, t) + + rngDevice.MaxBytes = 20 + + deviceString += fmt.Sprintf(",max-bytes=%d", rngDevice.MaxBytes) + testAppend(rngDevice, objectString+" "+deviceString, t) + + rngDevice.Period = 500 + + deviceString += fmt.Sprintf(",period=%d", rngDevice.Period) + testAppend(rngDevice, objectString+" "+deviceString, t) + +} + +func TestVirtioRngValid(t *testing.T) { + rng := RngDevice{ + ID: "", + } + + if rng.Valid() { + t.Fatalf("rng should be not valid when ID is empty") + } + + rng.ID = "rng0" + if !rng.Valid() { + t.Fatalf("rng should be valid") + } + +} + var deviceSCSIControllerStr = "-device virtio-scsi-pci,id=foo" var deviceSCSIControllerBusAddrStr = "-device virtio-scsi-pci,id=foo,bus=pci.0,addr=00:04.0,disable-modern=true,iothread=iothread1" From 1a1fee75e5a4230399e09bf25841549dd9f86846 Mon Sep 17 00:00:00 2001 From: Ruidong Cao Date: Mon, 10 Sep 2018 11:28:21 +0800 Subject: [PATCH 133/385] qemu/qmp: nic can works without vhost If host doesn't support vhost_net, we won't pass vhost="on" in QMP. Signed-off-by: Ruidong Cao --- qemu/qmp.go | 14 ++++++++------ qemu/qmp_test.go | 7 ++++++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index addf4b2fa..e9fa65e52 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -812,13 +812,15 @@ func (q *QMP) ExecuteNetdevChardevAdd(ctx context.Context, netdevType, netdevID, // Must be valid QMP identifier. func (q *QMP) ExecuteNetdevAddByFds(ctx context.Context, netdevType, netdevID string, fdNames, vhostFdNames []string) error { fdNameStr := strings.Join(fdNames, ":") - vhostFdNameStr := strings.Join(vhostFdNames, ":") args := map[string]interface{}{ - "type": netdevType, - "id": netdevID, - "fds": fdNameStr, - "vhost": "on", - "vhostfds": vhostFdNameStr, + "type": netdevType, + "id": netdevID, + "fds": fdNameStr, + } + if len(vhostFdNames) > 0 { + vhostFdNameStr := strings.Join(vhostFdNames, ":") + args["vhost"] = "on" + args["vhostfds"] = vhostFdNameStr } return q.executeCommand(ctx, "netdev_add", args, nil) diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 07c6126fe..a1831a863 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -458,10 +458,15 @@ func TestQMPNetdevAddByFds(t *testing.T) { disconnectedCh := make(chan struct{}) buf := newQMPTestCommandBuffer(t) buf.AddCommand("netdev_add", nil, "return", nil) + buf.AddCommand("netdev_add", nil, "return", nil) cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) q.version = checkVersion(t, connectedCh) - err := q.ExecuteNetdevAddByFds(context.Background(), "tap", "br0", nil, nil) + err := q.ExecuteNetdevAddByFds(context.Background(), "tap", "br0", nil, []string{}) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + err = q.ExecuteNetdevAddByFds(context.Background(), "tap", "br1", nil, []string{"3"}) if err != nil { t.Fatalf("Unexpected error %v", err) } From de00d7a6817f579628648c65a1b1930bfc6bab85 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Thu, 13 Sep 2018 09:18:47 +0200 Subject: [PATCH 134/385] qemu/image: Reduce permissions of .iso creation dir The contents of .iso used to bootstrap VMs with cloudinit are initialised using a precreated, short-lived directory. The permissions on this directory were too lenient. This commit restricts access to this directory to the user and his/her group. Signed-off-by: Mark Ryan --- qemu/image.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/qemu/image.go b/qemu/image.go index 352659adb..b2f906f7c 100644 --- a/qemu/image.go +++ b/qemu/image.go @@ -49,8 +49,7 @@ func CreateCloudInitISO(ctx context.Context, scratchDir, isoPath string, _ = os.RemoveAll(configDrivePath) }() - /* #nosec */ - err := os.MkdirAll(dataDirPath, 0755) + err := os.MkdirAll(dataDirPath, 0750) if err != nil { return fmt.Errorf("Unable to create config drive directory %s : %v", dataDirPath, err) From de5d27888950aaf0090d1be96a26c5cce5987dde Mon Sep 17 00:00:00 2001 From: Zhao Xinda Date: Tue, 18 Sep 2018 15:54:53 +0800 Subject: [PATCH 135/385] qemu/qmp: add vfio mediated device support on root bus In addition to supporting hotplug for VFIO mediated device on PCI bridge, this patch adds hotplug functionality on root bus. When parameter bus and addr are set to be empty, the system will pick up an empty slot on root bus. Signed-off-by: Zhao Xinda --- qemu/qmp.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index e9fa65e52..9f764f123 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -937,20 +937,22 @@ func (q *QMP) ExecutePCIVFIODeviceAdd(ctx context.Context, devID, bdf, addr, bus } // ExecutePCIVFIOMediatedDeviceAdd adds a VFIO mediated device to a QEMU instance using the device_add command. -// This function can be used to hot plug VFIO mediated devices on PCI(E) bridges, unlike +// This function can be used to hot plug VFIO mediated devices on PCI(E) bridges or root bus, unlike // ExecuteVFIODeviceAdd this function receives the bus and the device address on its parent bus. -// bus is optional. devID is the id of the device to add. Must be valid QMP identifier. sysfsdev is the VFIO -// mediated device. +// devID is the id of the device to add. Must be valid QMP identifier. sysfsdev is the VFIO mediated device. +// Both bus and addr are optional. If they are both set to be empty, the system will pick up an empty slot on root bus. func (q *QMP) ExecutePCIVFIOMediatedDeviceAdd(ctx context.Context, devID, sysfsdev, addr, bus string) error { args := map[string]interface{}{ "id": devID, "driver": "vfio-pci", "sysfsdev": sysfsdev, - "addr": addr, } if bus != "" { args["bus"] = bus } + if addr != "" { + args["addr"] = addr + } return q.executeCommand(ctx, "device_add", args, nil) } From 1130aab85ec72354f3cd96247a4cfee5d4b551c8 Mon Sep 17 00:00:00 2001 From: Wei Zhang Date: Wed, 19 Sep 2018 10:09:46 +0800 Subject: [PATCH 136/385] qmp: add "query-cpus" support Add "query-cpus" and "query-cpus-fast" to query CPU information from qemu Signed-off-by: Wei Zhang --- qemu/qmp.go | 72 +++++++++++++++++++++++++++++++++++++++++++++- qemu/qmp_test.go | 74 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 145 insertions(+), 1 deletion(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 9f764f123..ea3e97cb1 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -144,7 +144,7 @@ type QMPVersion struct { Capabilities []string } -// CPUProperties contains the properties to be used for hotplugging a CPU instance +// CPUProperties contains the properties of a CPU instance type CPUProperties struct { Node int `json:"node-id"` Socket int `json:"socket-id"` @@ -178,6 +178,28 @@ type MemoryDevices struct { Type string `json:"type"` } +// CPUInfo represents information about each virtual CPU +type CPUInfo struct { + CPU int `json:"CPU"` + Current bool `json:"current"` + Halted bool `json:"halted"` + QomPath string `json:"qom_path"` + Arch string `json:"arch"` + Pc int `json:"pc"` + ThreadID int `json:"thread_id"` + Props CPUProperties `json:"props"` +} + +// CPUInfoFast represents information about each virtual CPU +type CPUInfoFast struct { + CPUIndex int `json:"cpu-index"` + QomPath string `json:"qom-path"` + Arch string `json:"arch"` + ThreadID int `json:"thread-id"` + Target string `json:"target"` + Props CPUProperties `json:"props"` +} + func (q *QMP) readLoop(fromVMCh chan<- []byte) { scanner := bufio.NewScanner(q.conn) for scanner.Scan() { @@ -1033,6 +1055,54 @@ func (q *QMP) ExecQueryMemoryDevices(ctx context.Context) ([]MemoryDevices, erro return memoryDevices, nil } +// ExecQueryCpus returns a slice with the list of `CpuInfo` +// Since qemu 2.12, we have `query-cpus-fast` as a better choice in production +// we can still choose `ExecQueryCpus` for compatibility though not recommended. +func (q *QMP) ExecQueryCpus(ctx context.Context) ([]CPUInfo, error) { + response, err := q.executeCommandWithResponse(ctx, "query-cpus", nil, nil, nil) + if err != nil { + return nil, err + } + + // convert response to json + data, err := json.Marshal(response) + if err != nil { + return nil, fmt.Errorf("Unable to extract memory devices information: %v", err) + } + + var cpuInfo []CPUInfo + // convert json to []CPUInfo + if err = json.Unmarshal(data, &cpuInfo); err != nil { + return nil, fmt.Errorf("unable to convert json to CPUInfo: %v", err) + } + + return cpuInfo, nil +} + +// ExecQueryCpusFast returns a slice with the list of `CpuInfoFast` +// This is introduced since 2.12, it does not incur a performance penalty and +// should be used in production instead of query-cpus. +func (q *QMP) ExecQueryCpusFast(ctx context.Context) ([]CPUInfoFast, error) { + response, err := q.executeCommandWithResponse(ctx, "query-cpus-fast", nil, nil, nil) + if err != nil { + return nil, err + } + + // convert response to json + data, err := json.Marshal(response) + if err != nil { + return nil, fmt.Errorf("Unable to extract memory devices information: %v", err) + } + + var cpuInfoFast []CPUInfoFast + // convert json to []CPUInfoFast + if err = json.Unmarshal(data, &cpuInfoFast); err != nil { + return nil, fmt.Errorf("unable to convert json to CPUInfoFast: %v", err) + } + + return cpuInfoFast, nil +} + // ExecHotplugMemory adds size of MiB memory to the guest func (q *QMP) ExecHotplugMemory(ctx context.Context, qomtype, id, mempath string, size int) error { args := map[string]interface{}{ diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index a1831a863..8014cbe0c 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1096,6 +1096,80 @@ func TestQMPExecuteQueryMemoryDevices(t *testing.T) { <-disconnectedCh } +// Checks that cpus are listed correctly +func TestQMPExecuteQueryCpus(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + cpuInfo := CPUInfo{ + CPU: 1, + Current: false, + Halted: false, + Arch: "x86_64", + QomPath: "/tmp/testQom", + Pc: 123456, + ThreadID: 123457, + Props: CPUProperties{ + Node: 0, + Socket: 1, + Core: 1, + Thread: 1966, + }, + } + buf.AddCommand("query-cpus", nil, "return", []interface{}{cpuInfo}) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + cpus, err := q.ExecQueryCpus(context.Background()) + if err != nil { + t.Fatalf("Unexpected error: %v\n", err) + } + if len(cpus) != 1 { + t.Fatalf("Expected memory devices length equals to 1\n") + } + if reflect.DeepEqual(cpus[0], cpuInfo) == false { + t.Fatalf("Expected %v equals to %v\n", cpus[0], cpuInfo) + } + q.Shutdown() + <-disconnectedCh +} + +// Checks that cpus are listed correctly +func TestQMPExecuteQueryCpusFast(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + cpuInfoFast := CPUInfoFast{ + CPUIndex: 1, + Arch: "x86", + Target: "x86_64", + QomPath: "/tmp/testQom", + ThreadID: 123457, + Props: CPUProperties{ + Node: 0, + Socket: 1, + Core: 1, + Thread: 1966, + }, + } + buf.AddCommand("query-cpus-fast", nil, "return", []interface{}{cpuInfoFast}) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + cpus, err := q.ExecQueryCpusFast(context.Background()) + if err != nil { + t.Fatalf("Unexpected error: %v\n", err) + } + if len(cpus) != 1 { + t.Fatalf("Expected memory devices length equals to 1\n") + } + if reflect.DeepEqual(cpus[0], cpuInfoFast) == false { + t.Fatalf("Expected %v equals to %v\n", cpus[0], cpuInfoFast) + } + q.Shutdown() + <-disconnectedCh +} + // Checks that migrate capabilities can be set func TestExecSetMigrationCaps(t *testing.T) { connectedCh := make(chan *QMPVersion) From a429677a0b9bd44079744b1a4cbb109959389236 Mon Sep 17 00:00:00 2001 From: Peng Tao Date: Fri, 7 Sep 2018 22:02:47 +0800 Subject: [PATCH 137/385] govmm: fix memory prealloc The memory-backend-ram should also be set to a numa node instead of being inserted as a new device. Otherwise it becomes additional memory and requires explicit online to be available, instead of just being a backend of the memory specified by -m option. Signed-off-by: Peng Tao --- qemu/qemu.go | 6 +++--- qemu/qemu_test.go | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index d2f27f51d..0b97025da 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1502,13 +1502,13 @@ func (config *Config) appendMemoryKnobs() { if config.Memory.Size != "" { dimmName := "dimm1" objMemParam := "memory-backend-ram,id=" + dimmName + ",size=" + config.Memory.Size + ",prealloc=on" - deviceMemParam := "pc-dimm,id=" + dimmName + ",memdev=" + dimmName + numaMemParam := "node,memdev=" + dimmName config.qemuParams = append(config.qemuParams, "-object") config.qemuParams = append(config.qemuParams, objMemParam) - config.qemuParams = append(config.qemuParams, "-device") - config.qemuParams = append(config.qemuParams, deviceMemParam) + config.qemuParams = append(config.qemuParams, "-numa") + config.qemuParams = append(config.qemuParams, numaMemParam) } } else if config.Knobs.FileBackedMem == true { if config.Memory.Size != "" && config.Memory.Path != "" { diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 7fdaa9bff..014c58d9c 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -475,7 +475,7 @@ func TestAppendMemoryMemPrealloc(t *testing.T) { FileBackedMem: true, FileBackedMemShared: true, } - knobsString := "-object memory-backend-ram,id=dimm1,size=1G,prealloc=on -device pc-dimm,id=dimm1,memdev=dimm1" + knobsString := "-object memory-backend-ram,id=dimm1,size=1G,prealloc=on -numa node,memdev=dimm1" mlockFalseString := "-realtime mlock=off" testConfigAppend(conf, knobs, memString+" "+knobsString+" "+mlockFalseString, t) From 56f645eac6a2db58e5d8bff43b01121405cf738d Mon Sep 17 00:00:00 2001 From: Peng Tao Date: Tue, 18 Sep 2018 16:14:32 +0800 Subject: [PATCH 138/385] qmp: add ExecuteQueryMigration It sends query-migrate qmp command to check migration status. Signed-off-by: Peng Tao --- qemu/qmp.go | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ qemu/qmp_test.go | 50 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+) diff --git a/qemu/qmp.go b/qemu/qmp.go index ea3e97cb1..58cd76709 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -200,6 +200,46 @@ type CPUInfoFast struct { Props CPUProperties `json:"props"` } +// MigrationRAM represents migration ram status +type MigrationRAM struct { + Total int64 `json:"total"` + Remaining int64 `json:"remaining"` + Transferred int64 `json:"transferred"` + TotalTime int64 `json:"total-time"` + SetupTime int64 `json:"setup-time"` + ExpectedDowntime int64 `json:"expected-downtime"` + Duplicate int64 `json:"duplicate"` + Normal int64 `json:"normal"` + NormalBytes int64 `json:"normal-bytes"` + DirtySyncCount int64 `json:"dirty-sync-count"` +} + +// MigrationDisk represents migration disk status +type MigrationDisk struct { + Total int64 `json:"total"` + Remaining int64 `json:"remaining"` + Transferred int64 `json:"transferred"` +} + +// MigrationXbzrleCache represents migration XbzrleCache status +type MigrationXbzrleCache struct { + CacheSize int64 `json:"cache-size"` + Bytes int64 `json:"bytes"` + Pages int64 `json:"pages"` + CacheMiss int64 `json:"cache-miss"` + CacheMissRate int64 `json:"cache-miss-rate"` + Overflow int64 `json:"overflow"` +} + +// MigrationStatus represents migration status of a vm +type MigrationStatus struct { + Status string `json:"status"` + Capabilities []map[string]interface{} `json:"capabilities,omitempty"` + RAM MigrationRAM `json:"ram,omitempty"` + Disk MigrationDisk `json:"disk,omitempty"` + XbzrleCache MigrationXbzrleCache `json:"xbzrle-cache,omitempty"` +} + func (q *QMP) readLoop(fromVMCh chan<- []byte) { scanner := bufio.NewScanner(q.conn) for scanner.Scan() { @@ -1206,3 +1246,23 @@ func (q *QMP) ExecuteVirtSerialPortAdd(ctx context.Context, id, name, chardev st return q.executeCommand(ctx, "device_add", args, nil) } + +// ExecuteQueryMigration queries migration progress. +func (q *QMP) ExecuteQueryMigration(ctx context.Context) (MigrationStatus, error) { + response, err := q.executeCommandWithResponse(ctx, "query-migrate", nil, nil, nil) + if err != nil { + return MigrationStatus{}, err + } + + data, err := json.Marshal(response) + if err != nil { + return MigrationStatus{}, fmt.Errorf("Unable to extract migrate status information: %v", err) + } + + var status MigrationStatus + if err = json.Unmarshal(data, &status); err != nil { + return MigrationStatus{}, fmt.Errorf("Unable to convert migrate status information: %v", err) + } + + return status, nil +} diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 8014cbe0c..6a70d02c6 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1295,3 +1295,53 @@ func TestExecuteVirtSerialPortAdd(t *testing.T) { q.Shutdown() <-disconnectedCh } + +// Checks migration status +func TestExecuteQueryMigration(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + status := MigrationStatus{ + Status: "completed", + RAM: MigrationRAM{ + Total: 100, + Remaining: 101, + Transferred: 101, + TotalTime: 101, + SetupTime: 101, + ExpectedDowntime: 101, + Duplicate: 101, + Normal: 101, + NormalBytes: 101, + DirtySyncCount: 101, + }, + Disk: MigrationDisk{ + Total: 200, + Remaining: 200, + Transferred: 200, + }, + XbzrleCache: MigrationXbzrleCache{ + CacheSize: 300, + Bytes: 300, + Pages: 300, + CacheMiss: 300, + CacheMissRate: 300, + Overflow: 300, + }, + } + caps := map[string]interface{}{"foo": true} + status.Capabilities = append(status.Capabilities, caps) + buf.AddCommand("query-migrate", nil, "return", interface{}(status)) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + s, err := q.ExecuteQueryMigration(context.Background()) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + if !reflect.DeepEqual(s, status) { + t.Fatalf("expected %v\n got %v", status, s) + } + q.Shutdown() + <-disconnectedCh +} From ef7250508cda2be77112f145b6c8b4e1aeb5b700 Mon Sep 17 00:00:00 2001 From: Sebastien Boeuf Date: Tue, 2 Oct 2018 13:43:24 -0700 Subject: [PATCH 139/385] qemu: Fix the support of PCIe bridge In case the type of bridge is PCIEBridge, which we expect as ending up using pcie-pci-bridge device from Qemu, the properties chassis_nr and shpc don't exist. This commit simply fixes this use case by removing those parameters from the command line. Signed-off-by: Sebastien Boeuf --- qemu/qemu.go | 19 ++++++++++--------- qemu/qemu_test.go | 20 +++++++++++++++++--- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 2d55ebed0..a44cc63f4 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -938,18 +938,19 @@ func (bridgeDev BridgeDevice) Valid() bool { // QemuParams returns the qemu parameters built out of this bridge device. func (bridgeDev BridgeDevice) QemuParams(config *Config) []string { var qemuParams []string + var deviceParam string - shpc := "off" - if bridgeDev.SHPC { - shpc = "on" + switch bridgeDev.Type { + case PCIEBridge: + deviceParam = fmt.Sprintf("pcie-pci-bridge,bus=%s,id=%s", bridgeDev.Bus, bridgeDev.ID) + default: + shpc := "off" + if bridgeDev.SHPC { + shpc = "on" + } + deviceParam = fmt.Sprintf("pci-bridge,bus=%s,id=%s,chassis_nr=%d,shpc=%s", bridgeDev.Bus, bridgeDev.ID, bridgeDev.Chassis, shpc) } - deviceName := "pci-bridge" - if bridgeDev.Type == PCIEBridge { - deviceName = "pcie-pci-bridge" - } - - deviceParam := fmt.Sprintf("%s,bus=%s,id=%s,chassis_nr=%d,shpc=%s", deviceName, bridgeDev.Bus, bridgeDev.ID, bridgeDev.Chassis, shpc) if bridgeDev.Addr != "" { addr, err := strconv.Atoi(bridgeDev.Addr) if err == nil && addr >= 0 { diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 002d06fc7..ea568ca0c 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -420,9 +420,9 @@ func TestAppendDeviceSCSIController(t *testing.T) { testAppend(scsiCon, deviceSCSIControllerBusAddrStr, t) } -var deviceBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff" +var devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff" -func TestAppendBridgeDevice(t *testing.T) { +func TestAppendPCIBridgeDevice(t *testing.T) { bridge := BridgeDevice{ Type: PCIBridge, @@ -433,7 +433,21 @@ func TestAppendBridgeDevice(t *testing.T) { SHPC: true, } - testAppend(bridge, deviceBridgeString, t) + testAppend(bridge, devicePCIBridgeString, t) +} + +var devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff" + +func TestAppendPCIEBridgeDevice(t *testing.T) { + + bridge := BridgeDevice{ + Type: PCIEBridge, + ID: "mybridge", + Bus: "/pci-bus/pcie.0", + Addr: "255", + } + + testAppend(bridge, devicePCIEBridgeString, t) } func TestAppendEmptyDevice(t *testing.T) { From 46970781fae7623434406bab5cb9ebf1c387f48d Mon Sep 17 00:00:00 2001 From: "James O. D. Hunt" Date: Wed, 3 Oct 2018 16:41:08 +0100 Subject: [PATCH 140/385] qemu: Show full path to qemu binary at launch time Rather than show the generic "qemu", log the full path to the particular qemu binary being used. Signed-off-by: James O. D. Hunt --- qemu/qemu.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index a44cc63f4..5fbfb81a5 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1740,11 +1740,11 @@ func LaunchCustomQemu(ctx context.Context, path string, params []string, fds []* var stderr bytes.Buffer cmd.Stderr = &stderr - logger.Infof("launching qemu with: %v", params) + logger.Infof("launching %s with: %v", path, params) err := cmd.Run() if err != nil { - logger.Errorf("Unable to launch qemu: %v", err) + logger.Errorf("Unable to launch %s: %v", path, err) errStr = stderr.String() logger.Errorf("%s", errStr) } From ec83abe69e130c17c3920d4acff7861269f7b50b Mon Sep 17 00:00:00 2001 From: Jose Carlos Venegas Munoz Date: Wed, 3 Oct 2018 16:19:33 -0500 Subject: [PATCH 141/385] qemu: Add virtio-balloon device suppport. Add support for virtio-balloon. - Add test - Support disable-modern - Support deflate-on-oom Signed-off-by: Jose Carlos Venegas Munoz --- qemu/qemu.go | 48 +++++++++++++++++++++++++++++++++++++++++++++++ qemu/qemu_test.go | 39 ++++++++++++++++++++++++++++++++++++++ qemu/qmp.go | 9 +++++++++ qemu/qmp_test.go | 18 ++++++++++++++++++ 4 files changed, 114 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index 5fbfb81a5..a518da52c 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -88,6 +88,9 @@ const ( // VirtioRng is the paravirtualized RNG device driver. VirtioRng DeviceDriver = "virtio-rng" + + // VirtioBalloon is the memory balloon device driver. + VirtioBalloon DeviceDriver = "virtio-balloon" ) // ObjectType is a string representing a qemu object type. @@ -1078,6 +1081,51 @@ func (v RngDevice) QemuParams(_ *Config) []string { return qemuParams } +// BalloonDevice represents a memory balloon device. +type BalloonDevice struct { + DeflateOnOOM bool + DisableModern bool + ID string +} + +// QemuParams returns the qemu parameters built out of the BalloonDevice. +func (b BalloonDevice) QemuParams(_ *Config) []string { + var qemuParams []string + var deviceParams []string + + deviceParams = append(deviceParams, string(VirtioBalloon)) + + if b.ID != "" { + deviceParams = append(deviceParams, "id="+b.ID) + } + + if b.DeflateOnOOM { + deviceParams = append(deviceParams, "deflate-on-oom=on") + } else { + deviceParams = append(deviceParams, "deflate-on-oom=off") + } + + if b.DisableModern { + deviceParams = append(deviceParams, "disable-modern=on") + } else { + deviceParams = append(deviceParams, "disable-modern=off") + } + + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) + + return qemuParams +} + +// Valid returns true if the balloonDevice structure is valid and complete. +func (b BalloonDevice) Valid() bool { + if b.ID == "" { + return false + } + + return true +} + // RTCBaseType is the qemu RTC base time type. type RTCBaseType string diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index ea568ca0c..e1d9fb341 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -404,6 +404,45 @@ func TestVirtioRngValid(t *testing.T) { } +func TestAppendVirtioBalloon(t *testing.T) { + balloonDevice := BalloonDevice{ + ID: "balloon", + } + + var deviceString = "-device " + string(VirtioBalloon) + deviceString += ",id=" + balloonDevice.ID + + var OnDeflateOnOMM = ",deflate-on-oom=on" + var OffDeflateOnOMM = ",deflate-on-oom=off" + + var OnDisableModern = ",disable-modern=on" + var OffDisableModern = ",disable-modern=off" + + testAppend(balloonDevice, deviceString+OffDeflateOnOMM+OffDisableModern, t) + + balloonDevice.DeflateOnOOM = true + testAppend(balloonDevice, deviceString+OnDeflateOnOMM+OffDisableModern, t) + + balloonDevice.DisableModern = true + testAppend(balloonDevice, deviceString+OnDeflateOnOMM+OnDisableModern, t) + +} + +func TestVirtioBalloonValid(t *testing.T) { + balloon := BalloonDevice{ + ID: "", + } + + if balloon.Valid() { + t.Fatalf("balloon should be not valid when ID is empty") + } + + balloon.ID = "balloon0" + if !balloon.Valid() { + t.Fatalf("balloon should be valid") + } +} + var deviceSCSIControllerStr = "-device virtio-scsi-pci,id=foo" var deviceSCSIControllerBusAddrStr = "-device virtio-scsi-pci,id=foo,bus=pci.0,addr=00:04.0,disable-modern=true,iothread=iothread1" diff --git a/qemu/qmp.go b/qemu/qmp.go index 58cd76709..aac906f44 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -1178,6 +1178,15 @@ func (q *QMP) ExecHotplugMemory(ctx context.Context, qomtype, id, mempath string return err } +// ExecuteBalloon sets the size of the balloon, hence updates the memory +// allocated for the VM. +func (q *QMP) ExecuteBalloon(ctx context.Context, bytes uint64) error { + args := map[string]interface{}{ + "value": bytes, + } + return q.executeCommand(ctx, "balloon", args, nil) +} + // ExecutePCIVSockAdd adds a vhost-vsock-pci bus func (q *QMP) ExecutePCIVSockAdd(ctx context.Context, id, guestCID, vhostfd, addr, bus string, disableModern bool) error { args := map[string]interface{}{ diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 6a70d02c6..b7c201f02 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1345,3 +1345,21 @@ func TestExecuteQueryMigration(t *testing.T) { q.Shutdown() <-disconnectedCh } + +// Checks balloon +func TestExecuteBalloon(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("balloon", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + err := q.ExecuteBalloon(context.Background(), 1073741824) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} From e74de3c7f198ad8e0de285bbc45a42d8023fcbdb Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Wed, 10 Oct 2018 10:05:58 +0200 Subject: [PATCH 142/385] Update guidelines on security issue reporting This commit clarifies the process to be used when reporting security issues. Signed-off-by: Mark Ryan --- CONTRIBUTING.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9e94d1d02..b97d45671 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -60,3 +60,5 @@ We request you give quality assurance some consideration by: If you have a problem, please let us know. If it's a bug not already documented, by all means please [open an issue in github](https://github.com/intel/govmm/issues/new) so we all get visibility the problem and work toward resolution. + +Any security issues discovered with govmm should be reported by following the instructions on https://01.org/security. From 7fdfc6a4c979ed691f90e279d65746c8fa49cdb3 Mon Sep 17 00:00:00 2001 From: Sebastien Boeuf Date: Mon, 8 Oct 2018 16:04:17 -0700 Subject: [PATCH 143/385] qemu: Add support for romfile option Any device inheriting from virtio-pci can specify a ROM file. This option is provisioned by default with "efi-virtio.rom", but most of the time, firmwares such as OVMF or seabios will already support what is provided by this ROM file. In order to reduce the "forced" dependency on such ROM file, govmm should provide an empty path if the consumer of the library does not provide one. This patch reorganizes the list of devices, so that it gets easier to list which devices inherit from virtio-pci, and then adds the romfile option to every single device that support this option. Signed-off-by: Sebastien Boeuf --- qemu/qemu.go | 189 +++++++++++++++++++++++++++++++++++++--------- qemu/qemu_test.go | 69 ++++++++++------- qemu/qmp.go | 62 +++++++++------ qemu/qmp_test.go | 14 ++-- 4 files changed, 245 insertions(+), 89 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index a518da52c..f26f09392 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -91,8 +91,52 @@ const ( // VirtioBalloon is the memory balloon device driver. VirtioBalloon DeviceDriver = "virtio-balloon" + + //VhostUserSCSI represents a SCSI vhostuser device type. + VhostUserSCSI DeviceDriver = "vhost-user-scsi-pci" + + //VhostUserNet represents a net vhostuser device type. + VhostUserNet DeviceDriver = "virtio-net-pci" + + //VhostUserBlk represents a block vhostuser device type. + VhostUserBlk DeviceDriver = "vhost-user-blk-pci" + + // VfioPCI represent a VFIO device type. + VfioPCI DeviceDriver = "vfio-pci" + + // VirtioScsiPCI represents a SCSI device type. + VirtioScsiPCI DeviceDriver = "virtio-scsi-pci" + + // PCIBridgeDriver represents a PCI bridge device type. + PCIBridgeDriver DeviceDriver = "pci-bridge" + + // PCIePCIBridgeDriver represents a PCIe to PCI bridge device type. + PCIePCIBridgeDriver DeviceDriver = "pcie-pci-bridge" ) +// isVirtioPCI is a map indicating if a DeviceDriver is considered as a +// virtio PCI device, which is helpful to determine if the option "romfile" +// applies or not to this specific device. +var isVirtioPCI = map[DeviceDriver]bool{ + NVDIMM: false, + Virtio9P: true, + VirtioNet: true, + VirtioNetPCI: true, + VirtioSerial: true, + VirtioBlock: true, + Console: false, + VirtioSerialPort: false, + VHostVSockPCI: true, + VirtioRng: true, + VirtioBalloon: true, + VhostUserSCSI: true, + VhostUserBlk: true, + VfioPCI: true, + VirtioScsiPCI: true, + PCIBridgeDriver: true, + PCIePCIBridgeDriver: true, +} + // ObjectType is a string representing a qemu object type. type ObjectType string @@ -219,6 +263,9 @@ type FSDevice struct { // DisableModern prevents qemu from relying on fast MMIO. DisableModern bool + + // ROMFile specifies the ROM file being used for this device. + ROMFile string } // Valid returns true if the FSDevice structure is valid and complete. @@ -242,6 +289,9 @@ func (fsdev FSDevice) QemuParams(config *Config) []string { } deviceParams = append(deviceParams, fmt.Sprintf(",fsdev=%s", fsdev.ID)) deviceParams = append(deviceParams, fmt.Sprintf(",mount_tag=%s", fsdev.MountTag)) + if isVirtioPCI[fsdev.Driver] { + deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", fsdev.ROMFile)) + } fsParams = append(fsParams, string(fsdev.FSDriver)) fsParams = append(fsParams, fmt.Sprintf(",id=%s", fsdev.ID)) @@ -299,6 +349,9 @@ type CharDevice struct { // DisableModern prevents qemu from relying on fast MMIO. DisableModern bool + + // ROMFile specifies the ROM file being used for this device. + ROMFile string } // Valid returns true if the CharDevice structure is valid and complete. @@ -328,6 +381,9 @@ func (cdev CharDevice) QemuParams(config *Config) []string { if cdev.Name != "" { deviceParams = append(deviceParams, fmt.Sprintf(",name=%s", cdev.Name)) } + if isVirtioPCI[cdev.Driver] { + deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", cdev.ROMFile)) + } cdevParams = append(cdevParams, string(cdev.Backend)) cdevParams = append(cdevParams, fmt.Sprintf(",id=%s", cdev.ID)) @@ -391,7 +447,7 @@ func (n NetDeviceType) QemuNetdevParam() string { } // QemuDeviceParam converts to the QEMU -device parameter notation -func (n NetDeviceType) QemuDeviceParam() string { +func (n NetDeviceType) QemuDeviceParam() DeviceDriver { switch n { case TAP: return "virtio-net-pci" @@ -450,6 +506,9 @@ type NetDevice struct { // DisableModern prevents qemu from relying on fast MMIO. DisableModern bool + + // ROMFile specifies the ROM file being used for this device. + ROMFile string } // Valid returns true if the NetDevice structure is valid and complete. @@ -476,8 +535,7 @@ func (netdev NetDevice) QemuDeviceParams(config *Config) []string { return nil } - deviceParams = append(deviceParams, "driver=") - deviceParams = append(deviceParams, netdev.Type.QemuDeviceParam()) + deviceParams = append(deviceParams, fmt.Sprintf("driver=%s", netdev.Type.QemuDeviceParam())) deviceParams = append(deviceParams, fmt.Sprintf(",netdev=%s", netdev.ID)) deviceParams = append(deviceParams, fmt.Sprintf(",mac=%s", netdev.MACAddress)) @@ -513,6 +571,10 @@ func (netdev NetDevice) QemuDeviceParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf(",vectors=%d", vectors)) } + if isVirtioPCI[netdev.Driver] { + deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", netdev.ROMFile)) + } + return deviceParams } @@ -601,6 +663,9 @@ type SerialDevice struct { // DisableModern prevents qemu from relying on fast MMIO. DisableModern bool + + // ROMFile specifies the ROM file being used for this device. + ROMFile string } // Valid returns true if the SerialDevice structure is valid and complete. @@ -622,6 +687,9 @@ func (dev SerialDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, ",disable-modern=true") } deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", dev.ID)) + if isVirtioPCI[dev.Driver] { + deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", dev.ROMFile)) + } qemuParams = append(qemuParams, "-device") qemuParams = append(qemuParams, strings.Join(deviceParams, "")) @@ -672,6 +740,9 @@ type BlockDevice struct { // DisableModern prevents qemu from relying on fast MMIO. DisableModern bool + + // ROMFile specifies the ROM file being used for this device. + ROMFile string } // Valid returns true if the BlockDevice structure is valid and complete. @@ -702,6 +773,10 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, ",config-wce=off") } + if isVirtioPCI[blkdev.Driver] { + deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", blkdev.ROMFile)) + } + blkParams = append(blkParams, fmt.Sprintf("id=%s", blkdev.ID)) blkParams = append(blkParams, fmt.Sprintf(",file=%s", blkdev.File)) blkParams = append(blkParams, fmt.Sprintf(",aio=%s", blkdev.AIO)) @@ -717,18 +792,6 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string { return qemuParams } -// VhostUserDeviceType is a qemu vhost-user device type. -type VhostUserDeviceType string - -const ( - //VhostUserSCSI represents a SCSI vhostuser device type - VhostUserSCSI = "vhost-user-scsi-pci" - //VhostUserNet represents a net vhostuser device type - VhostUserNet = "virtio-net-pci" - //VhostUserBlk represents a block vhostuser device type - VhostUserBlk = "vhost-user-blk-pci" -) - // VhostUserDevice represents a qemu vhost-user device meant to be passed // in to the guest type VhostUserDevice struct { @@ -736,7 +799,10 @@ type VhostUserDevice struct { CharDevID string TypeDevID string //variable QEMU parameter based on value of VhostUserType Address string //used for MAC address in net case - VhostUserType VhostUserDeviceType + VhostUserType DeviceDriver + + // ROMFile specifies the ROM file being used for this device. + ROMFile string } // Valid returns true if there is a valid structure defined for VhostUserDevice @@ -769,6 +835,7 @@ func (vhostuserDev VhostUserDevice) QemuParams(config *Config) []string { var charParams []string var netParams []string var devParams []string + var driver DeviceDriver charParams = append(charParams, "socket") charParams = append(charParams, fmt.Sprintf("id=%s", vhostuserDev.CharDevID)) @@ -777,20 +844,23 @@ func (vhostuserDev VhostUserDevice) QemuParams(config *Config) []string { switch vhostuserDev.VhostUserType { // if network based vhost device: case VhostUserNet: + driver = VhostUserNet netParams = append(netParams, "type=vhost-user") netParams = append(netParams, fmt.Sprintf("id=%s", vhostuserDev.TypeDevID)) netParams = append(netParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) netParams = append(netParams, "vhostforce") - devParams = append(devParams, VhostUserNet) + devParams = append(devParams, string(driver)) devParams = append(devParams, fmt.Sprintf("netdev=%s", vhostuserDev.TypeDevID)) devParams = append(devParams, fmt.Sprintf("mac=%s", vhostuserDev.Address)) case VhostUserSCSI: - devParams = append(devParams, VhostUserSCSI) + driver = VhostUserSCSI + devParams = append(devParams, string(driver)) devParams = append(devParams, fmt.Sprintf("id=%s", vhostuserDev.TypeDevID)) devParams = append(devParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) case VhostUserBlk: - devParams = append(devParams, VhostUserBlk) + driver = VhostUserBlk + devParams = append(devParams, string(driver)) devParams = append(devParams, "logical_block_size=4096") devParams = append(devParams, "size=512M") devParams = append(devParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) @@ -798,6 +868,10 @@ func (vhostuserDev VhostUserDevice) QemuParams(config *Config) []string { return nil } + if isVirtioPCI[driver] { + devParams = append(devParams, fmt.Sprintf("romfile=%s", vhostuserDev.ROMFile)) + } + qemuParams = append(qemuParams, "-chardev") qemuParams = append(qemuParams, strings.Join(charParams, ",")) @@ -816,6 +890,9 @@ func (vhostuserDev VhostUserDevice) QemuParams(config *Config) []string { type VFIODevice struct { // Bus-Device-Function of device BDF string + + // ROMFile specifies the ROM file being used for this device. + ROMFile string } // Valid returns true if the VFIODevice structure is valid and complete. @@ -830,10 +907,17 @@ func (vfioDev VFIODevice) Valid() bool { // QemuParams returns the qemu parameters built out of this vfio device. func (vfioDev VFIODevice) QemuParams(config *Config) []string { var qemuParams []string + var deviceParams []string + + driver := VfioPCI + + deviceParams = append(deviceParams, fmt.Sprintf("%s,host=%s", driver, vfioDev.BDF)) + if isVirtioPCI[driver] { + deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", vfioDev.ROMFile)) + } - deviceParam := fmt.Sprintf("vfio-pci,host=%s", vfioDev.BDF) qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, deviceParam) + qemuParams = append(qemuParams, strings.Join(deviceParams, "")) return qemuParams } @@ -853,6 +937,9 @@ type SCSIController struct { // IOThread is the IO thread on which IO will be handled IOThread string + + // ROMFile specifies the ROM file being used for this device. + ROMFile string } // Valid returns true if the SCSIController structure is valid and complete. @@ -869,7 +956,8 @@ func (scsiCon SCSIController) QemuParams(config *Config) []string { var qemuParams []string var devParams []string - devParams = append(devParams, fmt.Sprintf("virtio-scsi-pci,id=%s", scsiCon.ID)) + driver := VirtioScsiPCI + devParams = append(devParams, fmt.Sprintf("%s,id=%s", driver, scsiCon.ID)) if scsiCon.Bus != "" { devParams = append(devParams, fmt.Sprintf("bus=%s", scsiCon.Bus)) } @@ -882,6 +970,9 @@ func (scsiCon SCSIController) QemuParams(config *Config) []string { if scsiCon.IOThread != "" { devParams = append(devParams, fmt.Sprintf("iothread=%s", scsiCon.IOThread)) } + if isVirtioPCI[driver] { + devParams = append(devParams, fmt.Sprintf("romfile=%s", scsiCon.ROMFile)) + } qemuParams = append(qemuParams, "-device") qemuParams = append(qemuParams, strings.Join(devParams, ",")) @@ -919,6 +1010,9 @@ type BridgeDevice struct { // PCI Slot Addr string + + // ROMFile specifies the ROM file being used for this device. + ROMFile string } // Valid returns true if the BridgeDevice structure is valid and complete. @@ -941,28 +1035,35 @@ func (bridgeDev BridgeDevice) Valid() bool { // QemuParams returns the qemu parameters built out of this bridge device. func (bridgeDev BridgeDevice) QemuParams(config *Config) []string { var qemuParams []string - var deviceParam string + var deviceParam []string + var driver DeviceDriver switch bridgeDev.Type { case PCIEBridge: - deviceParam = fmt.Sprintf("pcie-pci-bridge,bus=%s,id=%s", bridgeDev.Bus, bridgeDev.ID) + driver = PCIePCIBridgeDriver + deviceParam = append(deviceParam, fmt.Sprintf("%s,bus=%s,id=%s", driver, bridgeDev.Bus, bridgeDev.ID)) default: + driver = PCIBridgeDriver shpc := "off" if bridgeDev.SHPC { shpc = "on" } - deviceParam = fmt.Sprintf("pci-bridge,bus=%s,id=%s,chassis_nr=%d,shpc=%s", bridgeDev.Bus, bridgeDev.ID, bridgeDev.Chassis, shpc) + deviceParam = append(deviceParam, fmt.Sprintf("%s,bus=%s,id=%s,chassis_nr=%d,shpc=%s", driver, bridgeDev.Bus, bridgeDev.ID, bridgeDev.Chassis, shpc)) } if bridgeDev.Addr != "" { addr, err := strconv.Atoi(bridgeDev.Addr) if err == nil && addr >= 0 { - deviceParam += fmt.Sprintf(",addr=%x", addr) + deviceParam = append(deviceParam, fmt.Sprintf(",addr=%x", addr)) } } + if isVirtioPCI[driver] { + deviceParam = append(deviceParam, fmt.Sprintf(",romfile=%s", bridgeDev.ROMFile)) + } + qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, deviceParam) + qemuParams = append(qemuParams, strings.Join(deviceParam, "")) return qemuParams } @@ -978,16 +1079,14 @@ type VSOCKDevice struct { // DisableModern prevents qemu from relying on fast MMIO. DisableModern bool + + // ROMFile specifies the ROM file being used for this device. + ROMFile string } const ( // MinimalGuestCID is the smallest valid context ID for a guest. MinimalGuestCID uint32 = 3 -) - -const ( - // VhostVSOCKPCI is the VSOCK vhost device type. - VhostVSOCKPCI = "vhost-vsock-pci" // VSOCKGuestCID is the VSOCK guest CID parameter. VSOCKGuestCID = "guest-cid" @@ -1007,7 +1106,8 @@ func (vsock VSOCKDevice) QemuParams(config *Config) []string { var deviceParams []string var qemuParams []string - deviceParams = append(deviceParams, fmt.Sprintf("%s", VhostVSOCKPCI)) + driver := VHostVSockPCI + deviceParams = append(deviceParams, fmt.Sprintf("%s", driver)) if vsock.DisableModern { deviceParams = append(deviceParams, ",disable-modern=true") } @@ -1018,6 +1118,10 @@ func (vsock VSOCKDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", vsock.ID)) deviceParams = append(deviceParams, fmt.Sprintf(",%s=%d", VSOCKGuestCID, vsock.ContextID)) + if isVirtioPCI[driver] { + deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", vsock.ROMFile)) + } + qemuParams = append(qemuParams, "-device") qemuParams = append(qemuParams, strings.Join(deviceParams, "")) @@ -1034,6 +1138,8 @@ type RngDevice struct { MaxBytes uint // Period is duration of a read period in seconds Period uint + // ROMFile specifies the ROM file being used for this device. + ROMFile string } // Valid returns true if the RngDevice structure is valid and complete. @@ -1054,12 +1160,17 @@ func (v RngDevice) QemuParams(_ *Config) []string { //-device virtio-rng-pci,rng=rng0,max-bytes=1024,period=1000 var deviceParams []string + driver := VirtioRng objectParams = append(objectParams, "rng-random") objectParams = append(objectParams, "id="+v.ID) - deviceParams = append(deviceParams, string(VirtioRng)) + deviceParams = append(deviceParams, string(driver)) deviceParams = append(deviceParams, "rng="+v.ID) + if isVirtioPCI[driver] { + deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", v.ROMFile)) + } + if v.Filename != "" { objectParams = append(objectParams, "filename="+v.Filename) } @@ -1086,6 +1197,9 @@ type BalloonDevice struct { DeflateOnOOM bool DisableModern bool ID string + + // ROMFile specifies the ROM file being used for this device. + ROMFile string } // QemuParams returns the qemu parameters built out of the BalloonDevice. @@ -1093,12 +1207,17 @@ func (b BalloonDevice) QemuParams(_ *Config) []string { var qemuParams []string var deviceParams []string - deviceParams = append(deviceParams, string(VirtioBalloon)) + driver := VirtioBalloon + deviceParams = append(deviceParams, string(driver)) if b.ID != "" { deviceParams = append(deviceParams, "id="+b.ID) } + if isVirtioPCI[driver] { + deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", b.ROMFile)) + } + if b.DeflateOnOOM { deviceParams = append(deviceParams, "deflate-on-oom=on") } else { diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index e1d9fb341..e1c70e56d 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -126,7 +126,7 @@ func TestAppendDeviceNVDIMM(t *testing.T) { testAppend(object, deviceNVDIMMString, t) } -var deviceFSString = "-device virtio-9p-pci,disable-modern=true,fsdev=workload9p,mount_tag=rootfs -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none" +var deviceFSString = "-device virtio-9p-pci,disable-modern=true,fsdev=workload9p,mount_tag=rootfs,romfile=efi-virtio.rom -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none" func TestAppendDeviceFS(t *testing.T) { fsdev := FSDevice{ @@ -137,12 +137,13 @@ func TestAppendDeviceFS(t *testing.T) { MountTag: "rootfs", SecurityModel: None, DisableModern: true, + ROMFile: "efi-virtio.rom", } testAppend(fsdev, deviceFSString, t) } -var deviceNetworkString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,disable-modern=true" +var deviceNetworkString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,disable-modern=true,romfile=efi-virtio.rom" func TestAppendDeviceNetwork(t *testing.T) { netdev := NetDevice{ @@ -155,12 +156,13 @@ func TestAppendDeviceNetwork(t *testing.T) { VHost: true, MACAddress: "01:02:de:ad:be:ef", DisableModern: true, + ROMFile: "efi-virtio.rom", } testAppend(netdev, deviceNetworkString, t) } -var deviceNetworkStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,disable-modern=true,mq=on,vectors=6" +var deviceNetworkStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,disable-modern=true,mq=on,vectors=6,romfile=efi-virtio.rom" func TestAppendDeviceNetworkMq(t *testing.T) { foo, _ := ioutil.TempFile(os.TempDir(), "govmm-qemu-test") @@ -184,12 +186,13 @@ func TestAppendDeviceNetworkMq(t *testing.T) { VHost: true, MACAddress: "01:02:de:ad:be:ef", DisableModern: true, + ROMFile: "efi-virtio.rom", } testAppend(netdev, deviceNetworkStringMq, t) } -var deviceNetworkPCIString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true" +var deviceNetworkPCIString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true,romfile=efi-virtio.rom" func TestAppendDeviceNetworkPCI(t *testing.T) { @@ -205,12 +208,13 @@ func TestAppendDeviceNetworkPCI(t *testing.T) { VHost: true, MACAddress: "01:02:de:ad:be:ef", DisableModern: true, + ROMFile: "efi-virtio.rom", } testAppend(netdev, deviceNetworkPCIString, t) } -var deviceNetworkPCIStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true,mq=on,vectors=6" +var deviceNetworkPCIStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true,mq=on,vectors=6,romfile=efi-virtio.rom" func TestAppendDeviceNetworkPCIMq(t *testing.T) { foo, _ := ioutil.TempFile(os.TempDir(), "govmm-qemu-test") @@ -236,18 +240,20 @@ func TestAppendDeviceNetworkPCIMq(t *testing.T) { VHost: true, MACAddress: "01:02:de:ad:be:ef", DisableModern: true, + ROMFile: "efi-virtio.rom", } testAppend(netdev, deviceNetworkPCIStringMq, t) } -var deviceSerialString = "-device virtio-serial-pci,disable-modern=true,id=serial0" +var deviceSerialString = "-device virtio-serial-pci,disable-modern=true,id=serial0,romfile=efi-virtio.rom" func TestAppendDeviceSerial(t *testing.T) { sdev := SerialDevice{ Driver: VirtioSerial, ID: "serial0", DisableModern: true, + ROMFile: "efi-virtio.rom", } testAppend(sdev, deviceSerialString, t) @@ -268,7 +274,7 @@ func TestAppendDeviceSerialPort(t *testing.T) { testAppend(chardev, deviceSerialPortString, t) } -var deviceBlockString = "-device virtio-blk,disable-modern=true,drive=hd0,scsi=off,config-wce=off -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none" +var deviceBlockString = "-device virtio-blk,disable-modern=true,drive=hd0,scsi=off,config-wce=off,romfile=efi-virtio.rom -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none" func TestAppendDeviceBlock(t *testing.T) { blkdev := BlockDevice{ @@ -281,14 +287,15 @@ func TestAppendDeviceBlock(t *testing.T) { SCSI: false, WCE: false, DisableModern: true, + ROMFile: "efi-virtio.rom", } testAppend(blkdev, deviceBlockString, t) } -var deviceVhostUserNetString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -netdev type=vhost-user,id=net1,chardev=char1,vhostforce -device virtio-net-pci,netdev=net1,mac=00:11:22:33:44:55" -var deviceVhostUserSCSIString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -device vhost-user-scsi-pci,id=scsi1,chardev=char1" -var deviceVhostUserBlkString = "-chardev socket,id=char2,path=/tmp/nonexistentsocket.socket -device vhost-user-blk-pci,logical_block_size=4096,size=512M,chardev=char2" +var deviceVhostUserNetString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -netdev type=vhost-user,id=net1,chardev=char1,vhostforce -device virtio-net-pci,netdev=net1,mac=00:11:22:33:44:55,romfile=efi-virtio.rom" +var deviceVhostUserSCSIString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -device vhost-user-scsi-pci,id=scsi1,chardev=char1,romfile=efi-virtio.rom" +var deviceVhostUserBlkString = "-chardev socket,id=char2,path=/tmp/nonexistentsocket.socket -device vhost-user-blk-pci,logical_block_size=4096,size=512M,chardev=char2,romfile=efi-virtio.rom" func TestAppendDeviceVhostUser(t *testing.T) { @@ -298,6 +305,7 @@ func TestAppendDeviceVhostUser(t *testing.T) { TypeDevID: "", Address: "", VhostUserType: VhostUserBlk, + ROMFile: "efi-virtio.rom", } testAppend(vhostuserBlkDevice, deviceVhostUserBlkString, t) @@ -307,6 +315,7 @@ func TestAppendDeviceVhostUser(t *testing.T) { TypeDevID: "scsi1", Address: "", VhostUserType: VhostUserSCSI, + ROMFile: "efi-virtio.rom", } testAppend(vhostuserSCSIDevice, deviceVhostUserSCSIString, t) @@ -316,21 +325,23 @@ func TestAppendDeviceVhostUser(t *testing.T) { TypeDevID: "net1", Address: "00:11:22:33:44:55", VhostUserType: VhostUserNet, + ROMFile: "efi-virtio.rom", } testAppend(vhostuserNetDevice, deviceVhostUserNetString, t) } -var deviceVFIOString = "-device vfio-pci,host=02:10.0" +var deviceVFIOString = "-device vfio-pci,host=02:10.0,romfile=efi-virtio.rom" func TestAppendDeviceVFIO(t *testing.T) { vfioDevice := VFIODevice{ - BDF: "02:10.0", + BDF: "02:10.0", + ROMFile: "efi-virtio.rom", } testAppend(vfioDevice, deviceVFIOString, t) } -var deviceVSOCKString = "-device vhost-vsock-pci,disable-modern=true,id=vhost-vsock-pci0,guest-cid=4" +var deviceVSOCKString = "-device vhost-vsock-pci,disable-modern=true,id=vhost-vsock-pci0,guest-cid=4,romfile=efi-virtio.rom" func TestAppendVSOCK(t *testing.T) { vsockDevice := VSOCKDevice{ @@ -338,6 +349,7 @@ func TestAppendVSOCK(t *testing.T) { ContextID: 4, VHostFD: nil, DisableModern: true, + ROMFile: "efi-virtio.rom", } testAppend(vsockDevice, deviceVSOCKString, t) @@ -364,9 +376,10 @@ func TestVSOCKValid(t *testing.T) { func TestAppendVirtioRng(t *testing.T) { var objectString = "-object rng-random,id=rng0" - var deviceString = "-device " + string(VirtioRng) + ",rng=rng0" + var deviceString = "-device " + string(VirtioRng) + ",rng=rng0,romfile=efi-virtio.rom" rngDevice := RngDevice{ - ID: "rng0", + ID: "rng0", + ROMFile: "efi-virtio.rom", } testAppend(rngDevice, objectString+" "+deviceString, t) @@ -406,11 +419,12 @@ func TestVirtioRngValid(t *testing.T) { func TestAppendVirtioBalloon(t *testing.T) { balloonDevice := BalloonDevice{ - ID: "balloon", + ID: "balloon", + ROMFile: "efi-virtio.rom", } var deviceString = "-device " + string(VirtioBalloon) - deviceString += ",id=" + balloonDevice.ID + deviceString += ",id=" + balloonDevice.ID + ",romfile=" + balloonDevice.ROMFile var OnDeflateOnOMM = ",deflate-on-oom=on" var OffDeflateOnOMM = ",deflate-on-oom=off" @@ -443,12 +457,13 @@ func TestVirtioBalloonValid(t *testing.T) { } } -var deviceSCSIControllerStr = "-device virtio-scsi-pci,id=foo" -var deviceSCSIControllerBusAddrStr = "-device virtio-scsi-pci,id=foo,bus=pci.0,addr=00:04.0,disable-modern=true,iothread=iothread1" +var deviceSCSIControllerStr = "-device virtio-scsi-pci,id=foo,romfile=efi-virtio.rom" +var deviceSCSIControllerBusAddrStr = "-device virtio-scsi-pci,id=foo,bus=pci.0,addr=00:04.0,disable-modern=true,iothread=iothread1,romfile=efi-virtio.rom" func TestAppendDeviceSCSIController(t *testing.T) { scsiCon := SCSIController{ - ID: "foo", + ID: "foo", + ROMFile: "efi-virtio.rom", } testAppend(scsiCon, deviceSCSIControllerStr, t) @@ -459,7 +474,7 @@ func TestAppendDeviceSCSIController(t *testing.T) { testAppend(scsiCon, deviceSCSIControllerBusAddrStr, t) } -var devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff" +var devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff,romfile=efi-virtio.rom" func TestAppendPCIBridgeDevice(t *testing.T) { @@ -470,20 +485,22 @@ func TestAppendPCIBridgeDevice(t *testing.T) { Addr: "255", Chassis: 5, SHPC: true, + ROMFile: "efi-virtio.rom", } testAppend(bridge, devicePCIBridgeString, t) } -var devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff" +var devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff,romfile=efi-virtio.rom" func TestAppendPCIEBridgeDevice(t *testing.T) { bridge := BridgeDevice{ - Type: PCIEBridge, - ID: "mybridge", - Bus: "/pci-bus/pcie.0", - Addr: "255", + Type: PCIEBridge, + ID: "mybridge", + Bus: "/pci-bus/pcie.0", + Addr: "255", + ROMFile: "efi-virtio.rom", } testAppend(bridge, devicePCIEBridgeString, t) diff --git a/qemu/qmp.go b/qemu/qmp.go index aac906f44..134608ec7 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -756,7 +756,7 @@ func (q *QMP) ExecuteBlockdevAdd(ctx context.Context, device, blockdevID string) // add. Both strings must be valid QMP identifiers. driver is the name of the // driver,e.g., virtio-blk-pci, and bus is the name of the bus. bus is optional. // shared denotes if the drive can be shared allowing it to be passed more than once. -func (q *QMP) ExecuteDeviceAdd(ctx context.Context, blockdevID, devID, driver, bus string, shared bool) error { +func (q *QMP) ExecuteDeviceAdd(ctx context.Context, blockdevID, devID, driver, bus, romfile string, shared bool) error { args := map[string]interface{}{ "id": devID, "driver": driver, @@ -768,6 +768,10 @@ func (q *QMP) ExecuteDeviceAdd(ctx context.Context, blockdevID, devID, driver, b if shared && (q.version.Major > 2 || (q.version.Major == 2 && q.version.Minor >= 10)) { args["share-rw"] = "on" } + if isVirtioPCI[DeviceDriver(driver)] { + args["romfile"] = romfile + } + return q.executeCommand(ctx, "device_add", args, nil) } @@ -779,7 +783,7 @@ func (q *QMP) ExecuteDeviceAdd(ctx context.Context, blockdevID, devID, driver, b // scsiID is the SCSI id, lun is logical unit number. scsiID and lun are optional, a negative value // for scsiID and lun is ignored. shared denotes if the drive can be shared allowing it // to be passed more than once. -func (q *QMP) ExecuteSCSIDeviceAdd(ctx context.Context, blockdevID, devID, driver, bus string, scsiID, lun int, shared bool) error { +func (q *QMP) ExecuteSCSIDeviceAdd(ctx context.Context, blockdevID, devID, driver, bus, romfile string, scsiID, lun int, shared bool) error { // TBD: Add drivers for scsi passthrough like scsi-generic and scsi-block drivers := []string{"scsi-hd", "scsi-cd", "scsi-disk"} @@ -810,6 +814,9 @@ func (q *QMP) ExecuteSCSIDeviceAdd(ctx context.Context, blockdevID, devID, drive if shared && (q.version.Major > 2 || (q.version.Major == 2 && q.version.Minor >= 10)) { args["share-rw"] = "on" } + if isVirtioPCI[DeviceDriver(driver)] { + args["romfile"] = romfile + } return q.executeCommand(ctx, "device_add", args, nil) } @@ -901,13 +908,14 @@ func (q *QMP) ExecuteNetdevDel(ctx context.Context, netdevID string) error { // using the device_add command. devID is the id of the device to add. // Must be valid QMP identifier. netdevID is the id of nic added by previous netdev_add. // queues is the number of queues of a nic. -func (q *QMP) ExecuteNetPCIDeviceAdd(ctx context.Context, netdevID, devID, macAddr, addr, bus string, queues int) error { +func (q *QMP) ExecuteNetPCIDeviceAdd(ctx context.Context, netdevID, devID, macAddr, addr, bus, romfile string, queues int) error { args := map[string]interface{}{ - "id": devID, - "driver": VirtioNetPCI, - "netdev": netdevID, - "mac": macAddr, - "addr": addr, + "id": devID, + "driver": VirtioNetPCI, + "netdev": netdevID, + "mac": macAddr, + "addr": addr, + "romfile": romfile, } if bus != "" { @@ -950,7 +958,7 @@ func (q *QMP) ExecuteDeviceDel(ctx context.Context, devID string) error { // to hot plug PCI devices on PCI(E) bridges, unlike ExecuteDeviceAdd this function receive the // device address on its parent bus. bus is optional. shared denotes if the drive can be shared // allowing it to be passed more than once. -func (q *QMP) ExecutePCIDeviceAdd(ctx context.Context, blockdevID, devID, driver, addr, bus string, shared bool) error { +func (q *QMP) ExecutePCIDeviceAdd(ctx context.Context, blockdevID, devID, driver, addr, bus, romfile string, shared bool) error { args := map[string]interface{}{ "id": devID, "driver": driver, @@ -963,6 +971,9 @@ func (q *QMP) ExecutePCIDeviceAdd(ctx context.Context, blockdevID, devID, driver if shared && (q.version.Major > 2 || (q.version.Major == 2 && q.version.Minor >= 10)) { args["share-rw"] = "on" } + if isVirtioPCI[DeviceDriver(driver)] { + args["romfile"] = romfile + } return q.executeCommand(ctx, "device_add", args, nil) } @@ -971,11 +982,12 @@ func (q *QMP) ExecutePCIDeviceAdd(ctx context.Context, blockdevID, devID, driver // using the device_add command. devID is the id of the device to add. // Must be valid QMP identifier. bdf is the PCI bus-device-function // of the pci device. -func (q *QMP) ExecuteVFIODeviceAdd(ctx context.Context, devID, bdf string) error { +func (q *QMP) ExecuteVFIODeviceAdd(ctx context.Context, devID, bdf, romfile string) error { args := map[string]interface{}{ - "id": devID, - "driver": "vfio-pci", - "host": bdf, + "id": devID, + "driver": "vfio-pci", + "host": bdf, + "romfile": romfile, } return q.executeCommand(ctx, "device_add", args, nil) } @@ -985,12 +997,13 @@ func (q *QMP) ExecuteVFIODeviceAdd(ctx context.Context, devID, bdf string) error // ExecuteVFIODeviceAdd this function receives the bus and the device address on its parent bus. // bus is optional. devID is the id of the device to add.Must be valid QMP identifier. bdf is the // PCI bus-device-function of the pci device. -func (q *QMP) ExecutePCIVFIODeviceAdd(ctx context.Context, devID, bdf, addr, bus string) error { +func (q *QMP) ExecutePCIVFIODeviceAdd(ctx context.Context, devID, bdf, addr, bus, romfile string) error { args := map[string]interface{}{ - "id": devID, - "driver": "vfio-pci", - "host": bdf, - "addr": addr, + "id": devID, + "driver": "vfio-pci", + "host": bdf, + "addr": addr, + "romfile": romfile, } if bus != "" { args["bus"] = bus @@ -1003,11 +1016,12 @@ func (q *QMP) ExecutePCIVFIODeviceAdd(ctx context.Context, devID, bdf, addr, bus // ExecuteVFIODeviceAdd this function receives the bus and the device address on its parent bus. // devID is the id of the device to add. Must be valid QMP identifier. sysfsdev is the VFIO mediated device. // Both bus and addr are optional. If they are both set to be empty, the system will pick up an empty slot on root bus. -func (q *QMP) ExecutePCIVFIOMediatedDeviceAdd(ctx context.Context, devID, sysfsdev, addr, bus string) error { +func (q *QMP) ExecutePCIVFIOMediatedDeviceAdd(ctx context.Context, devID, sysfsdev, addr, bus, romfile string) error { args := map[string]interface{}{ "id": devID, "driver": "vfio-pci", "sysfsdev": sysfsdev, + "romfile": romfile, } if bus != "" { args["bus"] = bus @@ -1022,7 +1036,7 @@ func (q *QMP) ExecutePCIVFIOMediatedDeviceAdd(ctx context.Context, devID, sysfsd // driver is the CPU model, cpuID must be a unique ID to identify the CPU, socketID is the socket number within // node/board the CPU belongs to, coreID is the core number within socket the CPU belongs to, threadID is the // thread number within core the CPU belongs to. -func (q *QMP) ExecuteCPUDeviceAdd(ctx context.Context, driver, cpuID, socketID, coreID, threadID string) error { +func (q *QMP) ExecuteCPUDeviceAdd(ctx context.Context, driver, cpuID, socketID, coreID, threadID, romfile string) error { args := map[string]interface{}{ "driver": driver, "id": cpuID, @@ -1030,6 +1044,11 @@ func (q *QMP) ExecuteCPUDeviceAdd(ctx context.Context, driver, cpuID, socketID, "core-id": coreID, "thread-id": threadID, } + + if isVirtioPCI[DeviceDriver(driver)] { + args["romfile"] = romfile + } + return q.executeCommand(ctx, "device_add", args, nil) } @@ -1188,13 +1207,14 @@ func (q *QMP) ExecuteBalloon(ctx context.Context, bytes uint64) error { } // ExecutePCIVSockAdd adds a vhost-vsock-pci bus -func (q *QMP) ExecutePCIVSockAdd(ctx context.Context, id, guestCID, vhostfd, addr, bus string, disableModern bool) error { +func (q *QMP) ExecutePCIVSockAdd(ctx context.Context, id, guestCID, vhostfd, addr, bus, romfile string, disableModern bool) error { args := map[string]interface{}{ "driver": VHostVSockPCI, "id": id, "guest-cid": guestCID, "vhostfd": vhostfd, "addr": addr, + "romfile": romfile, } if bus != "" { diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index b7c201f02..a1a784dd6 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -504,7 +504,7 @@ func TestQMPNetPCIDeviceAdd(t *testing.T) { cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) - err := q.ExecuteNetPCIDeviceAdd(context.Background(), "br0", "virtio-0", "02:42:ac:11:00:02", "0x7", "", 8) + err := q.ExecuteNetPCIDeviceAdd(context.Background(), "br0", "virtio-0", "02:42:ac:11:00:02", "0x7", "", "", 8) if err != nil { t.Fatalf("Unexpected error %v", err) } @@ -529,7 +529,7 @@ func TestQMPDeviceAdd(t *testing.T) { blockdevID := fmt.Sprintf("drive_%s", volumeUUID) devID := fmt.Sprintf("device_%s", volumeUUID) err := q.ExecuteDeviceAdd(context.Background(), blockdevID, devID, - "virtio-blk-pci", "", true) + "virtio-blk-pci", "", "", true) if err != nil { t.Fatalf("Unexpected error %v", err) } @@ -554,7 +554,7 @@ func TestQMPSCSIDeviceAdd(t *testing.T) { blockdevID := fmt.Sprintf("drive_%s", volumeUUID) devID := fmt.Sprintf("device_%s", volumeUUID) err := q.ExecuteSCSIDeviceAdd(context.Background(), blockdevID, devID, - "scsi-hd", "scsi0.0", 1, 2, true) + "scsi-hd", "scsi0.0", "", 1, 2, true) if err != nil { t.Fatalf("Unexpected error %v", err) } @@ -972,7 +972,7 @@ func TestQMPPCIDeviceAdd(t *testing.T) { blockdevID := fmt.Sprintf("drive_%s", volumeUUID) devID := fmt.Sprintf("device_%s", volumeUUID) err := q.ExecutePCIDeviceAdd(context.Background(), blockdevID, devID, - "virtio-blk-pci", "0x1", "", true) + "virtio-blk-pci", "0x1", "", "", true) if err != nil { t.Fatalf("Unexpected error %v", err) } @@ -996,7 +996,7 @@ func TestQMPPCIVFIOMediatedDeviceAdd(t *testing.T) { checkVersion(t, connectedCh) sysfsDev := "/sys/bus/pci/devices/0000:00:02.0/a297db4a-f4c2-11e6-90f6-d3b88d6c9525" devID := fmt.Sprintf("device_%s", volumeUUID) - err := q.ExecutePCIVFIOMediatedDeviceAdd(context.Background(), devID, sysfsDev, "0x1", "") + err := q.ExecutePCIVFIOMediatedDeviceAdd(context.Background(), devID, sysfsDev, "0x1", "", "") if err != nil { t.Fatalf("Unexpected error %v", err) } @@ -1018,7 +1018,7 @@ func TestQMPCPUDeviceAdd(t *testing.T) { socketID := "0" coreID := "1" threadID := "0" - err := q.ExecuteCPUDeviceAdd(context.Background(), driver, cpuID, socketID, coreID, threadID) + err := q.ExecuteCPUDeviceAdd(context.Background(), driver, cpuID, socketID, coreID, threadID, "") if err != nil { t.Fatalf("Unexpected error %v", err) } @@ -1237,7 +1237,7 @@ func TestExecutePCIVSockAdd(t *testing.T) { cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) - err := q.ExecutePCIVSockAdd(context.Background(), "vsock-pci0", "3", "1", "1", "1", true) + err := q.ExecutePCIVSockAdd(context.Background(), "vsock-pci0", "3", "1", "1", "1", "", true) if err != nil { t.Fatalf("Unexpected error %v", err) } From 9c819db5a3523bc38fb036bd7c91bb334eb872a8 Mon Sep 17 00:00:00 2001 From: Sebastien Boeuf Date: Tue, 16 Oct 2018 13:20:55 -0700 Subject: [PATCH 144/385] qemu: Fix virtio-net-pci QMP command This patch fixes the wrong behavior of specifying a netdev, MAC address or PCI address entry when those were empty. Instead, it does not provide those entries if the content is empty. Signed-off-by: Sebastien Boeuf --- qemu/qmp.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 134608ec7..43daed369 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -912,15 +912,21 @@ func (q *QMP) ExecuteNetPCIDeviceAdd(ctx context.Context, netdevID, devID, macAd args := map[string]interface{}{ "id": devID, "driver": VirtioNetPCI, - "netdev": netdevID, - "mac": macAddr, - "addr": addr, "romfile": romfile, } if bus != "" { args["bus"] = bus } + if addr != "" { + args["addr"] = addr + } + if macAddr != "" { + args["mac"] = macAddr + } + if netdevID != "" { + args["netdev"] = netdevID + } if queues > 0 { // (2N+2 vectors, N for tx queues, N for rx queues, 1 for config, and one for possible control vq) From 10c36a13da29ba68405db0d7a103b723b6fd957c Mon Sep 17 00:00:00 2001 From: l00397676 Date: Wed, 21 Nov 2018 19:32:43 +0800 Subject: [PATCH 145/385] qemu: add support for pidfile option Add input for -pidfile option of qemu, so that we can get pid of qemu main process, and apply resource limitations to it. Fixes #62 Signed-off-by: l00397676 --- qemu/qemu.go | 11 +++++++++++ qemu/qemu_test.go | 5 ++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index f26f09392..a7e637140 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1516,6 +1516,9 @@ type Config struct { IOThreads []IOThread + // PidFile is the -pidfile parameter + PidFile string + qemuParams []string } @@ -1830,6 +1833,13 @@ func (config *Config) appendIncoming() { config.qemuParams = append(config.qemuParams, "-S", "-incoming", uri) } +func (config *Config) appendPidFile() { + if config.PidFile != "" { + config.qemuParams = append(config.qemuParams, "-pidfile") + config.qemuParams = append(config.qemuParams, config.PidFile) + } +} + // LaunchQemu can be used to launch a new qemu instance. // // The Config parameter contains a set of qemu parameters and settings. @@ -1855,6 +1865,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { config.appendBios() config.appendIOThreads() config.appendIncoming() + config.appendPidFile() if err := config.appendCPUs(); err != nil { return "", err diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index e1c70e56d..c74ef36b2 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -738,7 +738,8 @@ func TestAppendQMPSocketServer(t *testing.T) { testAppend(qmp, qmpSocketServerString, t) } -var qemuString = "-name cc-qemu -cpu host -uuid " + agentUUID +var pidfile = "/run/vc/vm/iamsandboxid/pidfile" +var qemuString = "-name cc-qemu -cpu host -uuid " + agentUUID + " -pidfile " + pidfile func TestAppendStrings(t *testing.T) { config := Config{ @@ -746,11 +747,13 @@ func TestAppendStrings(t *testing.T) { Name: "cc-qemu", UUID: agentUUID, CPUModel: "host", + PidFile: pidfile, } config.appendName() config.appendCPUModel() config.appendUUID() + config.appendPidFile() result := strings.Join(config.qemuParams, " ") if result != qemuString { From a0b0c86e9c51e69d3ac5e56774548afda5405e1f Mon Sep 17 00:00:00 2001 From: Hui Zhu Date: Fri, 23 Nov 2018 09:33:21 +0800 Subject: [PATCH 146/385] qmp_test: Change QMP version from 2.6 to 2.9 Also change TestQMPXBlockdevDel to TestQMPBlockdevDel because QMP verion 2.9 and older use blockdev-del but not x-blockdev-del. Signed-off-by: Hui Zhu --- qemu/qmp_test.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index a1a784dd6..592e70d48 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -33,10 +33,10 @@ import ( const ( microStr = "50" - minorStr = "6" + minorStr = "9" majorStr = "2" micro = 50 - minor = 6 + minor = 9 major = 2 cap1 = "one" cap2 = "two" @@ -562,17 +562,17 @@ func TestQMPSCSIDeviceAdd(t *testing.T) { <-disconnectedCh } -// Checks that the x-blockdev-del command is correctly sent. +// Checks that the blockdev-del command is correctly sent. // -// We start a QMPLoop, send the x-blockdev-del command and stop the loop. +// We start a QMPLoop, send the blockdev-del command and stop the loop. // -// The x-blockdev-del command should be correctly sent and the QMP loop should +// The blockdev-del command should be correctly sent and the QMP loop should // exit gracefully. -func TestQMPXBlockdevDel(t *testing.T) { +func TestQMPBlockdevDel(t *testing.T) { connectedCh := make(chan *QMPVersion) disconnectedCh := make(chan struct{}) buf := newQMPTestCommandBuffer(t) - buf.AddCommand("x-blockdev-del", nil, "return", nil) + buf.AddCommand("blockdev-del", nil, "return", nil) cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) q.version = checkVersion(t, connectedCh) From 110d2fa0493db5992c3e0ab89d256576bf5ee86d Mon Sep 17 00:00:00 2001 From: Hui Zhu Date: Mon, 19 Nov 2018 12:33:05 +0800 Subject: [PATCH 147/385] qemu/qmp: add new function ExecuteBlockdevAddWithCache ExecuteBlockdevAddWithCache has two more parameters direct and noFlush than ExecuteBlockdevAdd. They are cache-related options for block devices that are described in https://github.com/qemu/qemu/blob/master/qapi/block-core.json. direct denotes whether use of O_DIRECT (bypass the host page cache) is enabled. noFlush denotes whether flush requests for the device are ignored. Signed-off-by: Hui Zhu --- qemu/qmp.go | 39 ++++++++++++++++++++++++++++++++++----- qemu/qmp_test.go | 24 ++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 5 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 43daed369..97d549ece 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -722,11 +722,7 @@ func (q *QMP) ExecuteQuit(ctx context.Context) error { return q.executeCommand(ctx, "quit", nil, nil) } -// ExecuteBlockdevAdd sends a blockdev-add to the QEMU instance. device is the -// path of the device to add, e.g., /dev/rdb0, and blockdevID is an identifier -// used to name the device. As this identifier will be passed directly to QMP, -// it must obey QMP's naming rules, e,g., it must start with a letter. -func (q *QMP) ExecuteBlockdevAdd(ctx context.Context, device, blockdevID string) error { +func (q *QMP) blockdevAddBaseArgs(device, blockdevID string) (map[string]interface{}, map[string]interface{}) { var args map[string]interface{} blockdevArgs := map[string]interface{}{ @@ -747,6 +743,39 @@ func (q *QMP) ExecuteBlockdevAdd(ctx context.Context, device, blockdevID string) } } + return args, blockdevArgs +} + +// ExecuteBlockdevAdd sends a blockdev-add to the QEMU instance. device is the +// path of the device to add, e.g., /dev/rdb0, and blockdevID is an identifier +// used to name the device. As this identifier will be passed directly to QMP, +// it must obey QMP's naming rules, e,g., it must start with a letter. +func (q *QMP) ExecuteBlockdevAdd(ctx context.Context, device, blockdevID string) error { + args, _ := q.blockdevAddBaseArgs(device, blockdevID) + + return q.executeCommand(ctx, "blockdev-add", args, nil) +} + +// ExecuteBlockdevAddWithCache has two more parameters direct and noFlush +// than ExecuteBlockdevAdd. +// They are cache-related options for block devices that are described in +// https://github.com/qemu/qemu/blob/master/qapi/block-core.json. +// direct denotes whether use of O_DIRECT (bypass the host page cache) +// is enabled. noFlush denotes whether flush requests for the device are +// ignored. +func (q *QMP) ExecuteBlockdevAddWithCache(ctx context.Context, device, blockdevID string, direct, noFlush bool) error { + args, blockdevArgs := q.blockdevAddBaseArgs(device, blockdevID) + + if q.version.Major < 2 || (q.version.Major == 2 && q.version.Minor < 9) { + return fmt.Errorf("versions of qemu (%d.%d) older than 2.9 do not support set cache-related options for block devices", + q.version.Major, q.version.Minor) + } + + blockdevArgs["cache"] = map[string]interface{}{ + "direct": direct, + "no-flush": noFlush, + } + return q.executeCommand(ctx, "blockdev-add", args, nil) } diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 592e70d48..7d158d1b8 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -403,6 +403,30 @@ func TestQMPBlockdevAdd(t *testing.T) { <-disconnectedCh } +// Checks that the blockdev-add with cache options command is correctly sent. +// +// We start a QMPLoop, send the blockdev-add with cache options +// command and stop the loop. +// +// The blockdev-add with cache options command should be correctly sent and +// the QMP loop should exit gracefully. +func TestQMPBlockdevAddWithCache(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("blockdev-add", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + q.version = checkVersion(t, connectedCh) + err := q.ExecuteBlockdevAddWithCache(context.Background(), "/dev/rbd0", + fmt.Sprintf("drive_%s", volumeUUID), true, true) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} + // Checks that the netdev_add command is correctly sent. // // We start a QMPLoop, send the netdev_add command and stop the loop. From e4892e33961be91b8bc132d5bf5677ae366038ba Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Tue, 20 Nov 2018 10:57:13 +0100 Subject: [PATCH 148/385] qemu/qmp: preparation for s390x support This PR prepares for the s390x support. It introduces: - a generalization of ccw and pci devices. The variables for the pci devices have been renamed by removing the Pci suffix. They have been moved to the qemu_arch_base.go - the mapping isVirtioPCI has been move to qemu_arch_base.go because in this way a different mapping can be added for other architecture (e.g s390x) - the functions QemuNetdevParam and QemuDeviceParam have been moved to qemu_arch_base.go. In this way, they could be reimplemented for other architecture for the case VHOSTUSER - a function disableModern has been introduced to check if the device is a pci device and then returns the right parameters. In the case of ccw devices, they don't have the disable-modern flag - a function mqParameter has been introduced to return the right parameters for the mq case. The virtio-net-ccw device doesn't have the vectors flag - in qemu_arch_base_test.go contains the test and strings that can be overwritten for other architectures (e.g s390). The devices names and the flags for the devices can be overwritten. - the string for the romfile has been replaced by a variable romfile that could be left empty if the devices doesn't support a romfile as for the ccw devices for s390. - clean-up: the disable-modern=on/off options have been changed to disable-modern=true/false. In the code there was a mixture of on/true off/false Fixes: #61 Co-authored-by: Yash D Jain Signed-off-by: Alice Frosi --- qemu/qemu.go | 176 ++++++++++++------------------------ qemu/qemu_arch_base.go | 103 +++++++++++++++++++++ qemu/qemu_arch_base_test.go | 99 ++++++++++++++++++++ qemu/qemu_test.go | 114 +++-------------------- qemu/qmp.go | 10 +- 5 files changed, 281 insertions(+), 221 deletions(-) create mode 100644 qemu/qemu_arch_base.go create mode 100644 qemu/qemu_arch_base_test.go diff --git a/qemu/qemu.go b/qemu/qemu.go index f26f09392..be23be84f 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -62,18 +62,9 @@ const ( // NVDIMM is the Non Volatile DIMM device driver. NVDIMM DeviceDriver = "nvdimm" - // Virtio9P is the 9pfs device driver. - Virtio9P DeviceDriver = "virtio-9p-pci" - - // VirtioNet is the virt-io networking device driver. - VirtioNet DeviceDriver = "virtio-net" - // VirtioNetPCI is the virt-io pci networking device driver. VirtioNetPCI DeviceDriver = "virtio-net-pci" - // VirtioSerial is the serial device driver. - VirtioSerial DeviceDriver = "virtio-serial-pci" - // VirtioBlock is the block device driver. VirtioBlock DeviceDriver = "virtio-blk" @@ -83,9 +74,6 @@ const ( // VirtioSerialPort is the serial port device driver. VirtioSerialPort DeviceDriver = "virtserialport" - // VHostVSockPCI is the vhost vsock pci driver. - VHostVSockPCI DeviceDriver = "vhost-vsock-pci" - // VirtioRng is the paravirtualized RNG device driver. VirtioRng DeviceDriver = "virtio-rng" @@ -101,12 +89,6 @@ const ( //VhostUserBlk represents a block vhostuser device type. VhostUserBlk DeviceDriver = "vhost-user-blk-pci" - // VfioPCI represent a VFIO device type. - VfioPCI DeviceDriver = "vfio-pci" - - // VirtioScsiPCI represents a SCSI device type. - VirtioScsiPCI DeviceDriver = "virtio-scsi-pci" - // PCIBridgeDriver represents a PCI bridge device type. PCIBridgeDriver DeviceDriver = "pci-bridge" @@ -114,27 +96,19 @@ const ( PCIePCIBridgeDriver DeviceDriver = "pcie-pci-bridge" ) -// isVirtioPCI is a map indicating if a DeviceDriver is considered as a -// virtio PCI device, which is helpful to determine if the option "romfile" -// applies or not to this specific device. -var isVirtioPCI = map[DeviceDriver]bool{ - NVDIMM: false, - Virtio9P: true, - VirtioNet: true, - VirtioNetPCI: true, - VirtioSerial: true, - VirtioBlock: true, - Console: false, - VirtioSerialPort: false, - VHostVSockPCI: true, - VirtioRng: true, - VirtioBalloon: true, - VhostUserSCSI: true, - VhostUserBlk: true, - VfioPCI: true, - VirtioScsiPCI: true, - PCIBridgeDriver: true, - PCIePCIBridgeDriver: true, +// disableModern returns the parameters with the disable-modern option. +// In case the device driver is not a PCI device and it doesn't have the option +// an empty string is returned. +func (driver DeviceDriver) disableModern(disable bool) string { + if !isVirtioPCI[driver] { + return "" + } + + if disable { + return "disable-modern=true" + } + + return "disable-modern=false" } // ObjectType is a string representing a qemu object type. @@ -284,8 +258,8 @@ func (fsdev FSDevice) QemuParams(config *Config) []string { var qemuParams []string deviceParams = append(deviceParams, fmt.Sprintf("%s", fsdev.Driver)) - if fsdev.DisableModern { - deviceParams = append(deviceParams, ",disable-modern=true") + if s := fsdev.Driver.disableModern(fsdev.DisableModern); s != "" { + deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) } deviceParams = append(deviceParams, fmt.Sprintf(",fsdev=%s", fsdev.ID)) deviceParams = append(deviceParams, fmt.Sprintf(",mount_tag=%s", fsdev.MountTag)) @@ -370,8 +344,8 @@ func (cdev CharDevice) QemuParams(config *Config) []string { var qemuParams []string deviceParams = append(deviceParams, fmt.Sprintf("%s", cdev.Driver)) - if cdev.DisableModern { - deviceParams = append(deviceParams, ",disable-modern=true") + if s := cdev.Driver.disableModern(cdev.DisableModern); s != "" { + deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) } if cdev.Bus != "" { deviceParams = append(deviceParams, fmt.Sprintf(",bus=%s", cdev.Bus)) @@ -425,48 +399,6 @@ const ( VHOSTUSER NetDeviceType = "vhostuser" ) -// QemuNetdevParam converts to the QEMU -netdev parameter notation -func (n NetDeviceType) QemuNetdevParam() string { - switch n { - case TAP: - return "tap" - case MACVTAP: - return "tap" - case IPVTAP: - return "tap" - case VETHTAP: - return "tap" // -netdev type=tap -device virtio-net-pci - case VFIO: - return "" // -device vfio-pci (no netdev) - case VHOSTUSER: - return "vhost-user" // -netdev type=vhost-user (no device) - default: - return "" - - } -} - -// QemuDeviceParam converts to the QEMU -device parameter notation -func (n NetDeviceType) QemuDeviceParam() DeviceDriver { - switch n { - case TAP: - return "virtio-net-pci" - case MACVTAP: - return "virtio-net-pci" - case IPVTAP: - return "virtio-net-pci" - case VETHTAP: - return "virtio-net-pci" // -netdev type=tap -device virtio-net-pci - case VFIO: - return "vfio-pci" // -device vfio-pci (no netdev) - case VHOSTUSER: - return "" // -netdev type=vhost-user (no device) - default: - return "" - - } -} - // NetDevice represents a guest networking device type NetDevice struct { // Type is the netdev type (e.g. tap). @@ -527,6 +459,29 @@ func (netdev NetDevice) Valid() bool { } } +// mqParameter returns the parameters for multi-queue driver. If the driver is a PCI device then the +// vector flag is required. If the driver is a CCW type than the vector flag is not implemented and only +// multi-queue option mq needs to be activated. See comment in libvirt code at +// https://github.com/libvirt/libvirt/blob/6e7e965dcd3d885739129b1454ce19e819b54c25/src/qemu/qemu_command.c#L3633 +func (netdev NetDevice) mqParameter() string { + p := []string{",mq=on"} + + if isVirtioPCI[netdev.Driver] { + // https://www.linux-kvm.org/page/Multiqueue + // -netdev tap,vhost=on,queues=N + // enable mq and specify msix vectors in qemu cmdline + // (2N+2 vectors, N for tx queues, N for rx queues, 1 for config, and one for possible control vq) + // -device virtio-net-pci,mq=on,vectors=2N+2... + // enable mq in guest by 'ethtool -L eth0 combined $queue_num' + // Clearlinux automatically sets up the queues properly + // The agent implementation should do this to ensure that it is + // always set + vectors := len(netdev.FDs)*2 + 2 + p = append(p, fmt.Sprintf(",vectors=%d", vectors)) + } + return strings.Join(p, "") +} + // QemuDeviceParams returns the -device parameters for this network device func (netdev NetDevice) QemuDeviceParams(config *Config) []string { var deviceParams []string @@ -549,26 +504,13 @@ func (netdev NetDevice) QemuDeviceParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf(",addr=%x", addr)) } } - - if netdev.DisableModern { - deviceParams = append(deviceParams, ",disable-modern=true") + if s := netdev.Driver.disableModern(netdev.DisableModern); s != "" { + deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) } if len(netdev.FDs) > 0 { - // https://www.linux-kvm.org/page/Multiqueue - // -netdev tap,vhost=on,queues=N - // enable mq and specify msix vectors in qemu cmdline - // (2N+2 vectors, N for tx queues, N for rx queues, 1 for config, and one for possible control vq) - // -device virtio-net-pci,mq=on,vectors=2N+2... - // enable mq in guest by 'ethtool -L eth0 combined $queue_num' - // Clearlinux automatically sets up the queues properly - // The agent implementation should do this to ensure that it is - // always set - vectors := len(netdev.FDs)*2 + 2 - // Note: We are appending to the device params here - deviceParams = append(deviceParams, ",mq=on") - deviceParams = append(deviceParams, fmt.Sprintf(",vectors=%d", vectors)) + deviceParams = append(deviceParams, netdev.mqParameter()) } if isVirtioPCI[netdev.Driver] { @@ -683,8 +625,8 @@ func (dev SerialDevice) QemuParams(config *Config) []string { var qemuParams []string deviceParams = append(deviceParams, fmt.Sprintf("%s", dev.Driver)) - if dev.DisableModern { - deviceParams = append(deviceParams, ",disable-modern=true") + if s := dev.Driver.disableModern(dev.DisableModern); s != "" { + deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) } deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", dev.ID)) if isVirtioPCI[dev.Driver] { @@ -761,8 +703,8 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string { var qemuParams []string deviceParams = append(deviceParams, fmt.Sprintf("%s", blkdev.Driver)) - if blkdev.DisableModern { - deviceParams = append(deviceParams, ",disable-modern=true") + if s := blkdev.Driver.disableModern(blkdev.DisableModern); s != "" { + deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) } deviceParams = append(deviceParams, fmt.Sprintf(",drive=%s", blkdev.ID)) if blkdev.SCSI == false { @@ -909,7 +851,7 @@ func (vfioDev VFIODevice) QemuParams(config *Config) []string { var qemuParams []string var deviceParams []string - driver := VfioPCI + driver := Vfio deviceParams = append(deviceParams, fmt.Sprintf("%s,host=%s", driver, vfioDev.BDF)) if isVirtioPCI[driver] { @@ -956,7 +898,7 @@ func (scsiCon SCSIController) QemuParams(config *Config) []string { var qemuParams []string var devParams []string - driver := VirtioScsiPCI + driver := VirtioScsi devParams = append(devParams, fmt.Sprintf("%s,id=%s", driver, scsiCon.ID)) if scsiCon.Bus != "" { devParams = append(devParams, fmt.Sprintf("bus=%s", scsiCon.Bus)) @@ -964,8 +906,8 @@ func (scsiCon SCSIController) QemuParams(config *Config) []string { if scsiCon.Addr != "" { devParams = append(devParams, fmt.Sprintf("addr=%s", scsiCon.Addr)) } - if scsiCon.DisableModern { - devParams = append(devParams, fmt.Sprintf("disable-modern=true")) + if s := driver.disableModern(scsiCon.DisableModern); s != "" { + devParams = append(devParams, fmt.Sprintf("%s", s)) } if scsiCon.IOThread != "" { devParams = append(devParams, fmt.Sprintf("iothread=%s", scsiCon.IOThread)) @@ -1087,7 +1029,9 @@ type VSOCKDevice struct { const ( // MinimalGuestCID is the smallest valid context ID for a guest. MinimalGuestCID uint32 = 3 +) +const ( // VSOCKGuestCID is the VSOCK guest CID parameter. VSOCKGuestCID = "guest-cid" ) @@ -1106,10 +1050,10 @@ func (vsock VSOCKDevice) QemuParams(config *Config) []string { var deviceParams []string var qemuParams []string - driver := VHostVSockPCI + driver := VHostVSock deviceParams = append(deviceParams, fmt.Sprintf("%s", driver)) - if vsock.DisableModern { - deviceParams = append(deviceParams, ",disable-modern=true") + if s := driver.disableModern(vsock.DisableModern); s != "" { + deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) } if vsock.VHostFD != nil { qemuFDs := config.appendFDs([]*os.File{vsock.VHostFD}) @@ -1223,13 +1167,9 @@ func (b BalloonDevice) QemuParams(_ *Config) []string { } else { deviceParams = append(deviceParams, "deflate-on-oom=off") } - - if b.DisableModern { - deviceParams = append(deviceParams, "disable-modern=on") - } else { - deviceParams = append(deviceParams, "disable-modern=off") + if s := driver.disableModern(b.DisableModern); s != "" { + deviceParams = append(deviceParams, fmt.Sprintf("%s", s)) } - qemuParams = append(qemuParams, "-device") qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) diff --git a/qemu/qemu_arch_base.go b/qemu/qemu_arch_base.go new file mode 100644 index 000000000..0db1ecaed --- /dev/null +++ b/qemu/qemu_arch_base.go @@ -0,0 +1,103 @@ +// +build !s390x + +/* +// Copyright (c) 2016 Intel Corporation +// +// 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. +*/ + +package qemu + +const ( + // Virtio9P is the 9pfs device driver. + Virtio9P DeviceDriver = "virtio-9p-pci" + + // VirtioSerial is the serial device driver. + VirtioSerial DeviceDriver = "virtio-serial-pci" + + // VirtioNet is the virt-io pci networking device driver. + VirtioNet DeviceDriver = VirtioNetPCI + + // Vfio is the vfio driver + Vfio DeviceDriver = "vfio-pci" + + // VirtioScsi is the virtio-scsi device + VirtioScsi DeviceDriver = "virtio-scsi-pci" + + // VHostVSock is a generic Vsock vhost device + VHostVSock DeviceDriver = "vhost-vsock-pci" +) + +// isVirtioPCI is a map indicating if a DeviceDriver is considered as a +// virtio PCI device, which is helpful to determine if the option "romfile" +// applies or not to this specific device. +var isVirtioPCI = map[DeviceDriver]bool{ + NVDIMM: false, + Virtio9P: true, + VirtioNetPCI: true, + VirtioSerial: true, + VirtioBlock: true, + Console: false, + VirtioSerialPort: false, + VHostVSock: true, + VirtioRng: true, + VirtioBalloon: true, + VhostUserSCSI: true, + VhostUserBlk: true, + Vfio: true, + VirtioScsi: true, + PCIBridgeDriver: true, + PCIePCIBridgeDriver: true, +} + +// QemuNetdevParam converts to the QEMU -netdev parameter notation +func (n NetDeviceType) QemuNetdevParam() string { + switch n { + case TAP: + return "tap" + case MACVTAP: + return "tap" + case IPVTAP: + return "tap" + case VETHTAP: + return "tap" // -netdev type=tap -device virtio-net-pci + case VFIO: + return "" // -device vfio-pci (no netdev) + case VHOSTUSER: + return "vhost-user" // -netdev type=vhost-user (no device) + default: + return "" + + } +} + +// QemuDeviceParam converts to the QEMU -device parameter notation +func (n NetDeviceType) QemuDeviceParam() DeviceDriver { + switch n { + case TAP: + return "virtio-net-pci" + case MACVTAP: + return "virtio-net-pci" + case IPVTAP: + return "virtio-net-pci" + case VETHTAP: + return "virtio-net-pci" // -netdev type=tap -device virtio-net-pci + case VFIO: + return "vfio-pci" // -device vfio-pci (no netdev) + case VHOSTUSER: + return "" // -netdev type=vhost-user (no device) + default: + return "" + + } +} diff --git a/qemu/qemu_arch_base_test.go b/qemu/qemu_arch_base_test.go new file mode 100644 index 000000000..a30b3bdbd --- /dev/null +++ b/qemu/qemu_arch_base_test.go @@ -0,0 +1,99 @@ +// +build !s390x + +/* +// Copyright (c) 2016 Intel Corporation +// +// 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. +*/ + +package qemu + +import "testing" + +var ( + deviceFSString = "-device virtio-9p-pci,disable-modern=true,fsdev=workload9p,mount_tag=rootfs,romfile=efi-virtio.rom -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none" + deviceNetworkString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,disable-modern=true,romfile=efi-virtio.rom" + deviceNetworkStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,disable-modern=true,mq=on,vectors=6,romfile=efi-virtio.rom" + deviceNetworkPCIString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true,romfile=efi-virtio.rom" + deviceNetworkPCIStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true,mq=on,vectors=6,romfile=efi-virtio.rom" + deviceSerialString = "-device virtio-serial-pci,disable-modern=true,id=serial0,romfile=efi-virtio.rom" + deviceVhostUserNetString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -netdev type=vhost-user,id=net1,chardev=char1,vhostforce -device virtio-net-pci,netdev=net1,mac=00:11:22:33:44:55,romfile=efi-virtio.rom" + deviceVSOCKString = "-device vhost-vsock-pci,disable-modern=true,id=vhost-vsock-pci0,guest-cid=4,romfile=efi-virtio.rom" + deviceVFIOString = "-device vfio-pci,host=02:10.0,romfile=efi-virtio.rom" + deviceSCSIControllerStr = "-device virtio-scsi-pci,id=foo,disable-modern=false,romfile=efi-virtio.rom" + deviceSCSIControllerBusAddrStr = "-device virtio-scsi-pci,id=foo,bus=pci.0,addr=00:04.0,disable-modern=true,iothread=iothread1,romfile=efi-virtio.rom" + deviceVhostUserSCSIString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -device vhost-user-scsi-pci,id=scsi1,chardev=char1,romfile=efi-virtio.rom" + deviceVhostUserBlkString = "-chardev socket,id=char2,path=/tmp/nonexistentsocket.socket -device vhost-user-blk-pci,logical_block_size=4096,size=512M,chardev=char2,romfile=efi-virtio.rom" + deviceBlockString = "-device virtio-blk,disable-modern=true,drive=hd0,scsi=off,config-wce=off,romfile=efi-virtio.rom -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none" + devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff,romfile=efi-virtio.rom" + devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff,romfile=efi-virtio.rom" + romfile = "efi-virtio.rom" +) + +func TestAppendDeviceVhostUser(t *testing.T) { + + vhostuserBlkDevice := VhostUserDevice{ + SocketPath: "/tmp/nonexistentsocket.socket", + CharDevID: "char2", + TypeDevID: "", + Address: "", + VhostUserType: VhostUserBlk, + ROMFile: romfile, + } + testAppend(vhostuserBlkDevice, deviceVhostUserBlkString, t) + + vhostuserSCSIDevice := VhostUserDevice{ + SocketPath: "/tmp/nonexistentsocket.socket", + CharDevID: "char1", + TypeDevID: "scsi1", + Address: "", + VhostUserType: VhostUserSCSI, + ROMFile: romfile, + } + testAppend(vhostuserSCSIDevice, deviceVhostUserSCSIString, t) + + vhostuserNetDevice := VhostUserDevice{ + SocketPath: "/tmp/nonexistentsocket.socket", + CharDevID: "char1", + TypeDevID: "net1", + Address: "00:11:22:33:44:55", + VhostUserType: VhostUserNet, + ROMFile: romfile, + } + testAppend(vhostuserNetDevice, deviceVhostUserNetString, t) +} + +func TestAppendVirtioBalloon(t *testing.T) { + balloonDevice := BalloonDevice{ + ID: "balloon", + ROMFile: romfile, + } + + var deviceString = "-device " + string(VirtioBalloon) + deviceString += ",id=" + balloonDevice.ID + ",romfile=" + balloonDevice.ROMFile + + var OnDeflateOnOMM = ",deflate-on-oom=on" + var OffDeflateOnOMM = ",deflate-on-oom=off" + + var OnDisableModern = ",disable-modern=true" + var OffDisableModern = ",disable-modern=false" + + testAppend(balloonDevice, deviceString+OffDeflateOnOMM+OffDisableModern, t) + + balloonDevice.DeflateOnOOM = true + testAppend(balloonDevice, deviceString+OnDeflateOnOMM+OffDisableModern, t) + + balloonDevice.DisableModern = true + testAppend(balloonDevice, deviceString+OnDeflateOnOMM+OnDisableModern, t) + +} diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index e1c70e56d..5dcdb8aeb 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -126,8 +126,6 @@ func TestAppendDeviceNVDIMM(t *testing.T) { testAppend(object, deviceNVDIMMString, t) } -var deviceFSString = "-device virtio-9p-pci,disable-modern=true,fsdev=workload9p,mount_tag=rootfs,romfile=efi-virtio.rom -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none" - func TestAppendDeviceFS(t *testing.T) { fsdev := FSDevice{ Driver: Virtio9P, @@ -143,8 +141,6 @@ func TestAppendDeviceFS(t *testing.T) { testAppend(fsdev, deviceFSString, t) } -var deviceNetworkString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,disable-modern=true,romfile=efi-virtio.rom" - func TestAppendDeviceNetwork(t *testing.T) { netdev := NetDevice{ Driver: VirtioNet, @@ -162,8 +158,6 @@ func TestAppendDeviceNetwork(t *testing.T) { testAppend(netdev, deviceNetworkString, t) } -var deviceNetworkStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,disable-modern=true,mq=on,vectors=6,romfile=efi-virtio.rom" - func TestAppendDeviceNetworkMq(t *testing.T) { foo, _ := ioutil.TempFile(os.TempDir(), "govmm-qemu-test") bar, _ := ioutil.TempFile(os.TempDir(), "govmm-qemu-test") @@ -192,12 +186,10 @@ func TestAppendDeviceNetworkMq(t *testing.T) { testAppend(netdev, deviceNetworkStringMq, t) } -var deviceNetworkPCIString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true,romfile=efi-virtio.rom" - func TestAppendDeviceNetworkPCI(t *testing.T) { netdev := NetDevice{ - Driver: VirtioNetPCI, + Driver: VirtioNet, Type: TAP, ID: "tap0", IFName: "ceth0", @@ -208,14 +200,12 @@ func TestAppendDeviceNetworkPCI(t *testing.T) { VHost: true, MACAddress: "01:02:de:ad:be:ef", DisableModern: true, - ROMFile: "efi-virtio.rom", + ROMFile: romfile, } testAppend(netdev, deviceNetworkPCIString, t) } -var deviceNetworkPCIStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true,mq=on,vectors=6,romfile=efi-virtio.rom" - func TestAppendDeviceNetworkPCIMq(t *testing.T) { foo, _ := ioutil.TempFile(os.TempDir(), "govmm-qemu-test") bar, _ := ioutil.TempFile(os.TempDir(), "govmm-qemu-test") @@ -228,7 +218,7 @@ func TestAppendDeviceNetworkPCIMq(t *testing.T) { }() netdev := NetDevice{ - Driver: VirtioNetPCI, + Driver: VirtioNet, Type: TAP, ID: "tap0", IFName: "ceth0", @@ -240,20 +230,18 @@ func TestAppendDeviceNetworkPCIMq(t *testing.T) { VHost: true, MACAddress: "01:02:de:ad:be:ef", DisableModern: true, - ROMFile: "efi-virtio.rom", + ROMFile: romfile, } testAppend(netdev, deviceNetworkPCIStringMq, t) } -var deviceSerialString = "-device virtio-serial-pci,disable-modern=true,id=serial0,romfile=efi-virtio.rom" - func TestAppendDeviceSerial(t *testing.T) { sdev := SerialDevice{ Driver: VirtioSerial, ID: "serial0", DisableModern: true, - ROMFile: "efi-virtio.rom", + ROMFile: romfile, } testAppend(sdev, deviceSerialString, t) @@ -274,8 +262,6 @@ func TestAppendDeviceSerialPort(t *testing.T) { testAppend(chardev, deviceSerialPortString, t) } -var deviceBlockString = "-device virtio-blk,disable-modern=true,drive=hd0,scsi=off,config-wce=off,romfile=efi-virtio.rom -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none" - func TestAppendDeviceBlock(t *testing.T) { blkdev := BlockDevice{ Driver: VirtioBlock, @@ -287,69 +273,28 @@ func TestAppendDeviceBlock(t *testing.T) { SCSI: false, WCE: false, DisableModern: true, - ROMFile: "efi-virtio.rom", + ROMFile: romfile, } testAppend(blkdev, deviceBlockString, t) } -var deviceVhostUserNetString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -netdev type=vhost-user,id=net1,chardev=char1,vhostforce -device virtio-net-pci,netdev=net1,mac=00:11:22:33:44:55,romfile=efi-virtio.rom" -var deviceVhostUserSCSIString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -device vhost-user-scsi-pci,id=scsi1,chardev=char1,romfile=efi-virtio.rom" -var deviceVhostUserBlkString = "-chardev socket,id=char2,path=/tmp/nonexistentsocket.socket -device vhost-user-blk-pci,logical_block_size=4096,size=512M,chardev=char2,romfile=efi-virtio.rom" - -func TestAppendDeviceVhostUser(t *testing.T) { - - vhostuserBlkDevice := VhostUserDevice{ - SocketPath: "/tmp/nonexistentsocket.socket", - CharDevID: "char2", - TypeDevID: "", - Address: "", - VhostUserType: VhostUserBlk, - ROMFile: "efi-virtio.rom", - } - testAppend(vhostuserBlkDevice, deviceVhostUserBlkString, t) - - vhostuserSCSIDevice := VhostUserDevice{ - SocketPath: "/tmp/nonexistentsocket.socket", - CharDevID: "char1", - TypeDevID: "scsi1", - Address: "", - VhostUserType: VhostUserSCSI, - ROMFile: "efi-virtio.rom", - } - testAppend(vhostuserSCSIDevice, deviceVhostUserSCSIString, t) - - vhostuserNetDevice := VhostUserDevice{ - SocketPath: "/tmp/nonexistentsocket.socket", - CharDevID: "char1", - TypeDevID: "net1", - Address: "00:11:22:33:44:55", - VhostUserType: VhostUserNet, - ROMFile: "efi-virtio.rom", - } - testAppend(vhostuserNetDevice, deviceVhostUserNetString, t) -} - -var deviceVFIOString = "-device vfio-pci,host=02:10.0,romfile=efi-virtio.rom" - func TestAppendDeviceVFIO(t *testing.T) { vfioDevice := VFIODevice{ BDF: "02:10.0", - ROMFile: "efi-virtio.rom", + ROMFile: romfile, } testAppend(vfioDevice, deviceVFIOString, t) } -var deviceVSOCKString = "-device vhost-vsock-pci,disable-modern=true,id=vhost-vsock-pci0,guest-cid=4,romfile=efi-virtio.rom" - func TestAppendVSOCK(t *testing.T) { vsockDevice := VSOCKDevice{ ID: "vhost-vsock-pci0", ContextID: 4, VHostFD: nil, DisableModern: true, - ROMFile: "efi-virtio.rom", + ROMFile: romfile, } testAppend(vsockDevice, deviceVSOCKString, t) @@ -376,10 +321,13 @@ func TestVSOCKValid(t *testing.T) { func TestAppendVirtioRng(t *testing.T) { var objectString = "-object rng-random,id=rng0" - var deviceString = "-device " + string(VirtioRng) + ",rng=rng0,romfile=efi-virtio.rom" + var deviceString = "-device " + string(VirtioRng) + ",rng=rng0" + if romfile != "" { + deviceString = deviceString + ",romfile=efi-virtio.rom" + } rngDevice := RngDevice{ ID: "rng0", - ROMFile: "efi-virtio.rom", + ROMFile: romfile, } testAppend(rngDevice, objectString+" "+deviceString, t) @@ -417,31 +365,6 @@ func TestVirtioRngValid(t *testing.T) { } -func TestAppendVirtioBalloon(t *testing.T) { - balloonDevice := BalloonDevice{ - ID: "balloon", - ROMFile: "efi-virtio.rom", - } - - var deviceString = "-device " + string(VirtioBalloon) - deviceString += ",id=" + balloonDevice.ID + ",romfile=" + balloonDevice.ROMFile - - var OnDeflateOnOMM = ",deflate-on-oom=on" - var OffDeflateOnOMM = ",deflate-on-oom=off" - - var OnDisableModern = ",disable-modern=on" - var OffDisableModern = ",disable-modern=off" - - testAppend(balloonDevice, deviceString+OffDeflateOnOMM+OffDisableModern, t) - - balloonDevice.DeflateOnOOM = true - testAppend(balloonDevice, deviceString+OnDeflateOnOMM+OffDisableModern, t) - - balloonDevice.DisableModern = true - testAppend(balloonDevice, deviceString+OnDeflateOnOMM+OnDisableModern, t) - -} - func TestVirtioBalloonValid(t *testing.T) { balloon := BalloonDevice{ ID: "", @@ -457,13 +380,10 @@ func TestVirtioBalloonValid(t *testing.T) { } } -var deviceSCSIControllerStr = "-device virtio-scsi-pci,id=foo,romfile=efi-virtio.rom" -var deviceSCSIControllerBusAddrStr = "-device virtio-scsi-pci,id=foo,bus=pci.0,addr=00:04.0,disable-modern=true,iothread=iothread1,romfile=efi-virtio.rom" - func TestAppendDeviceSCSIController(t *testing.T) { scsiCon := SCSIController{ ID: "foo", - ROMFile: "efi-virtio.rom", + ROMFile: romfile, } testAppend(scsiCon, deviceSCSIControllerStr, t) @@ -474,8 +394,6 @@ func TestAppendDeviceSCSIController(t *testing.T) { testAppend(scsiCon, deviceSCSIControllerBusAddrStr, t) } -var devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff,romfile=efi-virtio.rom" - func TestAppendPCIBridgeDevice(t *testing.T) { bridge := BridgeDevice{ @@ -485,14 +403,12 @@ func TestAppendPCIBridgeDevice(t *testing.T) { Addr: "255", Chassis: 5, SHPC: true, - ROMFile: "efi-virtio.rom", + ROMFile: romfile, } testAppend(bridge, devicePCIBridgeString, t) } -var devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff,romfile=efi-virtio.rom" - func TestAppendPCIEBridgeDevice(t *testing.T) { bridge := BridgeDevice{ diff --git a/qemu/qmp.go b/qemu/qmp.go index 43daed369..7f89bdbda 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -991,7 +991,7 @@ func (q *QMP) ExecutePCIDeviceAdd(ctx context.Context, blockdevID, devID, driver func (q *QMP) ExecuteVFIODeviceAdd(ctx context.Context, devID, bdf, romfile string) error { args := map[string]interface{}{ "id": devID, - "driver": "vfio-pci", + "driver": Vfio, "host": bdf, "romfile": romfile, } @@ -1006,11 +1006,12 @@ func (q *QMP) ExecuteVFIODeviceAdd(ctx context.Context, devID, bdf, romfile stri func (q *QMP) ExecutePCIVFIODeviceAdd(ctx context.Context, devID, bdf, addr, bus, romfile string) error { args := map[string]interface{}{ "id": devID, - "driver": "vfio-pci", + "driver": Vfio, "host": bdf, "addr": addr, "romfile": romfile, } + if bus != "" { args["bus"] = bus } @@ -1025,10 +1026,11 @@ func (q *QMP) ExecutePCIVFIODeviceAdd(ctx context.Context, devID, bdf, addr, bus func (q *QMP) ExecutePCIVFIOMediatedDeviceAdd(ctx context.Context, devID, sysfsdev, addr, bus, romfile string) error { args := map[string]interface{}{ "id": devID, - "driver": "vfio-pci", + "driver": Vfio, "sysfsdev": sysfsdev, "romfile": romfile, } + if bus != "" { args["bus"] = bus } @@ -1215,7 +1217,7 @@ func (q *QMP) ExecuteBalloon(ctx context.Context, bytes uint64) error { // ExecutePCIVSockAdd adds a vhost-vsock-pci bus func (q *QMP) ExecutePCIVSockAdd(ctx context.Context, id, guestCID, vhostfd, addr, bus, romfile string, disableModern bool) error { args := map[string]interface{}{ - "driver": VHostVSockPCI, + "driver": VHostVSock, "id": id, "guest-cid": guestCID, "vhostfd": vhostfd, From 7da6a4c7c630d403aae927d040f47dbe25ed1194 Mon Sep 17 00:00:00 2001 From: NingBo Date: Tue, 27 Nov 2018 15:38:57 +0800 Subject: [PATCH 149/385] qmp: fix mem-path properties for hotplug memory. The QMP command 'object-add' only has three arguments: 'qom-type' 'id' and 'props', thus 'mem-path' has to be saved in 'props'. https://github.com/qemu/qemu/blob/stable-2.0/qapi-schema.json#L2958 https://github.com/qemu/qemu/blob/stable-2.12/qapi/misc.json#L1846 Signed-off-by: NingBo --- qemu/qmp.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 43daed369..2356503ac 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -1170,13 +1170,14 @@ func (q *QMP) ExecQueryCpusFast(ctx context.Context) ([]CPUInfoFast, error) { // ExecHotplugMemory adds size of MiB memory to the guest func (q *QMP) ExecHotplugMemory(ctx context.Context, qomtype, id, mempath string, size int) error { + props := map[string]interface{}{"size": uint64(size) << 20} args := map[string]interface{}{ "qom-type": qomtype, "id": id, - "props": map[string]interface{}{"size": uint64(size) << 20}, + "props": props, } if mempath != "" { - args["mem-path"] = mempath + props["mem-path"] = mempath } err := q.executeCommand(ctx, "object-add", args, nil) if err != nil { From f30fd1354a01c45a538541db091934d6e687ebcb Mon Sep 17 00:00:00 2001 From: NingBo Date: Thu, 29 Nov 2018 16:20:03 +0800 Subject: [PATCH 150/385] qmp: Output error detail when execute QMP command failed Only get 'QMP command failed' error message now when execute QMP command by 'executeCommandWithResponse' failed. This patch will output more error detail. Signed-off-by: NingBo --- qemu/qmp.go | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 43daed369..a5da684ef 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -313,7 +313,7 @@ func (q *QMP) finaliseCommandWithResponse(cmdEl *list.Element, cmdQueue *list.Li if succeeded { cmd.res <- qmpResult{response: response} } else { - cmd.res <- qmpResult{err: fmt.Errorf("QMP command failed")} + cmd.res <- qmpResult{err: fmt.Errorf("QMP command failed: %v", response)} } } if cmdQueue.Len() > 0 { @@ -325,6 +325,23 @@ func (q *QMP) finaliseCommand(cmdEl *list.Element, cmdQueue *list.List, succeede q.finaliseCommandWithResponse(cmdEl, cmdQueue, succeeded, nil) } +func (q *QMP) errorDesc(errorData interface{}) (string, error) { + // convert error to json + data, err := json.Marshal(errorData) + if err != nil { + return "", fmt.Errorf("Unable to extract error information: %v", err) + } + + // see: https://github.com/qemu/qemu/blob/stable-2.12/qapi/qmp-dispatch.c#L125 + var qmpErr map[string]string + // convert json to qmpError + if err = json.Unmarshal(data, &qmpErr); err != nil { + return "", fmt.Errorf("Unable to convert json to qmpError: %v", err) + } + + return qmpErr["desc"], nil +} + func (q *QMP) processQMPInput(line []byte, cmdQueue *list.List) { var vmData map[string]interface{} err := json.Unmarshal(line, &vmData) @@ -339,7 +356,7 @@ func (q *QMP) processQMPInput(line []byte, cmdQueue *list.List) { } response, succeeded := vmData["return"] - _, failed := vmData["error"] + errData, failed := vmData["error"] if !succeeded && !failed { return @@ -353,6 +370,14 @@ func (q *QMP) processQMPInput(line []byte, cmdQueue *list.List) { } cmd := cmdEl.Value.(*qmpCommand) if failed || cmd.filter == nil { + if errData != nil { + desc, err := q.errorDesc(errData) + if err != nil { + q.cfg.Logger.Infof("Get error description failed: %v", err) + } else { + response = desc + } + } q.finaliseCommandWithResponse(cmdEl, cmdQueue, succeeded, response) } else { cmd.resultReceived = true From 3becff5f4e33b1ee4ea37df1846e280c33379daf Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Thu, 29 Nov 2018 13:07:54 +0100 Subject: [PATCH 151/385] qemu: change of ContextID from uint32 to uint64 The correct type used by qemu and in kernel is uint64 and this leads to an endianess problem with ioctl system call. See the issue https://github.com/kata-containers/runtime/issues/947 Fixes: #70 Signed-off-by: Alice Frosi --- qemu/qemu.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index e10fcb5f8..d1dcecdc8 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1014,7 +1014,7 @@ func (bridgeDev BridgeDevice) QemuParams(config *Config) []string { type VSOCKDevice struct { ID string - ContextID uint32 + ContextID uint64 // VHostFD vhost file descriptor that holds the ContextID VHostFD *os.File @@ -1028,7 +1028,10 @@ type VSOCKDevice struct { const ( // MinimalGuestCID is the smallest valid context ID for a guest. - MinimalGuestCID uint32 = 3 + MinimalGuestCID uint64 = 3 + + // MaxGuestCID is the largest valid context ID for a guest. + MaxGuestCID uint64 = 1<<32 - 1 ) const ( @@ -1038,7 +1041,7 @@ const ( // Valid returns true if the VSOCKDevice structure is valid and complete. func (vsock VSOCKDevice) Valid() bool { - if vsock.ID == "" || vsock.ContextID < MinimalGuestCID { + if vsock.ID == "" || vsock.ContextID < MinimalGuestCID || vsock.ContextID > MaxGuestCID { return false } From b3b765cbe620fa09dc2471d870719f98d6cf984d Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Thu, 29 Nov 2018 12:29:46 +0000 Subject: [PATCH 152/385] qemu: test Valid for Vsock for Context ID Add test for the validation when the Context ID is larger than 32 bits Signed-off-by: Alice Frosi --- qemu/qemu_test.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 8dadc465f..528ef4b9d 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -312,6 +312,12 @@ func TestVSOCKValid(t *testing.T) { t.Fatalf("VSOCK Context ID is not valid") } + vsockDevice.ContextID = MaxGuestCID + 1 + + if vsockDevice.Valid() { + t.Fatalf("VSOCK Context ID is not valid") + } + vsockDevice.ID = "" if vsockDevice.Valid() { From 2b7db5473fcbf6df2597c0595d6cdc86dde44e5e Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Fri, 30 Nov 2018 09:18:31 +0100 Subject: [PATCH 153/385] Add the CONTRIBUTORS.md file This file is a partial list of contributors to the Virtual Machine Manager for Go project. To see the full list of contributors, see the revision history in source control. Contributors who wish to be recognized in this file should add themselves (or their employer, as appropriate). Signed-off-by: Mark Ryan --- CONTRIBUTORS.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 CONTRIBUTORS.md diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md new file mode 100644 index 000000000..7f0cbf462 --- /dev/null +++ b/CONTRIBUTORS.md @@ -0,0 +1,18 @@ +This file is a partial list of contributors to the Virtual Machine +Manager for Go project. To see the full list of contributors, see the +revision history in source control. + +Contributors who wish to be recognized in this file should add +themselves (or their employer, as appropriate). + +- archana.m.shinde@intel.com +- eric.ernst@intel.com +- james.o.hunt@intel.com +- jose.carlos.venegas.munoz@intel.com +- julio.montes@intel.com +- manohar.r.castelino@intel.com +- mark.d.ryan@intel.com +- robert.bradford@intel.com +- sameo@linux.intel.com +- sebastien.boeuf@intel.com +- xinda.zhao@intel.com From e68e0056977cc10c1f0122920563651f08bc0899 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Fri, 30 Nov 2018 09:20:38 +0100 Subject: [PATCH 154/385] Update the CONTRIBUTING.md The CONTRIBUTING.md file is updated to provide a template for new source files and to invite contributors to add themselves to the CONTRIBUTORS.md file. Signed-off-by: Mark Ryan --- CONTRIBUTING.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b97d45671..99630bccf 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -44,6 +44,38 @@ Fixes #1 Signed-off-by: Mark Ryan ``` +## New files + +Each Go source file in the Virtual Machine Manager for Go project must +contain the following header: + +``` +/* +// Copyright contributors to the Virtual Machine Manager for Go project +// +// 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. +*/ +``` + +## Contributors File + +This CONTRIBUTORS.md file is a partial list of contributors to the +Virtual Machine Manager for Go project. To see the full list of +contributors, see the revision history in source control. + +Contributors who wish to be recognized in this file should add +themselves (or their employer, as appropriate). + ## Pull requests We accept github pull requests. From ca477a18b6101947ad82bbc4b3578ff0113cf099 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Fri, 30 Nov 2018 09:25:18 +0100 Subject: [PATCH 155/385] Update source file headers This commit updates the headers in the Go source files to adhere to the new guidelines in the CONTRIBUTING.md file. Signed-off-by: Mark Ryan --- qemu/examples_test.go | 2 +- qemu/image.go | 2 +- qemu/qemu.go | 2 +- qemu/qemu_arch_base.go | 2 +- qemu/qemu_arch_base_test.go | 2 +- qemu/qemu_test.go | 2 +- qemu/qmp.go | 2 +- qemu/qmp_test.go | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/qemu/examples_test.go b/qemu/examples_test.go index c3930a1e1..737d58913 100644 --- a/qemu/examples_test.go +++ b/qemu/examples_test.go @@ -1,5 +1,5 @@ /* -// Copyright (c) 2016 Intel Corporation +// Copyright contributors to the Virtual Machine Manager for Go project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/qemu/image.go b/qemu/image.go index b2f906f7c..de12333c4 100644 --- a/qemu/image.go +++ b/qemu/image.go @@ -1,5 +1,5 @@ /* -// Copyright (c) 2017 Intel Corporation +// Copyright contributors to the Virtual Machine Manager for Go project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/qemu/qemu.go b/qemu/qemu.go index d1dcecdc8..7acc3c255 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1,5 +1,5 @@ /* -// Copyright (c) 2016 Intel Corporation +// Copyright contributors to the Virtual Machine Manager for Go project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/qemu/qemu_arch_base.go b/qemu/qemu_arch_base.go index 0db1ecaed..5e293d1d6 100644 --- a/qemu/qemu_arch_base.go +++ b/qemu/qemu_arch_base.go @@ -1,7 +1,7 @@ // +build !s390x /* -// Copyright (c) 2016 Intel Corporation +// Copyright contributors to the Virtual Machine Manager for Go project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/qemu/qemu_arch_base_test.go b/qemu/qemu_arch_base_test.go index a30b3bdbd..64a8415b4 100644 --- a/qemu/qemu_arch_base_test.go +++ b/qemu/qemu_arch_base_test.go @@ -1,7 +1,7 @@ // +build !s390x /* -// Copyright (c) 2016 Intel Corporation +// Copyright contributors to the Virtual Machine Manager for Go project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 528ef4b9d..622f47ea7 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -1,5 +1,5 @@ /* -// Copyright (c) 2016 Intel Corporation +// Copyright contributors to the Virtual Machine Manager for Go project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/qemu/qmp.go b/qemu/qmp.go index 1fb33bdb2..8d3cd2fe1 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -1,5 +1,5 @@ /* -// Copyright (c) 2016 Intel Corporation +// Copyright contributors to the Virtual Machine Manager for Go project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 7d158d1b8..a28e0e91c 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1,5 +1,5 @@ /* -// Copyright (c) 2016 Intel Corporation +// Copyright contributors to the Virtual Machine Manager for Go project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. From c80fc3b12f4e9aa3fddf67976125793dd303d055 Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Wed, 21 Nov 2018 14:33:04 +0100 Subject: [PATCH 156/385] qemu: Add s390x support The PR adds the s390x support. It sets the CCW devices and sets to false all the devices in the mapping isVirtioPCI. It reimplements the functions QemuNetdevParam and QemuDeviceParam to print an error message if the vhost-user devices are used. It introduces a new function ExecuteNetCCWDeviceAdd for qmp for the CCW devices. Fixes: #37 Co-authored-by: Yash D Jain Signed-off-by: Alice Frosi --- qemu/qemu.go | 3 ++ qemu/qemu_s390x.go | 115 ++++++++++++++++++++++++++++++++++++++++ qemu/qemu_s390x_test.go | 57 ++++++++++++++++++++ qemu/qmp.go | 20 +++++++ qemu/qmp_test.go | 16 ++++++ 5 files changed, 211 insertions(+) create mode 100644 qemu/qemu_s390x.go create mode 100644 qemu/qemu_s390x_test.go diff --git a/qemu/qemu.go b/qemu/qemu.go index 7acc3c255..8bd6afbef 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -65,6 +65,9 @@ const ( // VirtioNetPCI is the virt-io pci networking device driver. VirtioNetPCI DeviceDriver = "virtio-net-pci" + // VirtioNetCCW is the virt-io ccw networking device driver. + VirtioNetCCW DeviceDriver = "virtio-net-ccw" + // VirtioBlock is the block device driver. VirtioBlock DeviceDriver = "virtio-blk" diff --git a/qemu/qemu_s390x.go b/qemu/qemu_s390x.go new file mode 100644 index 000000000..d8395837f --- /dev/null +++ b/qemu/qemu_s390x.go @@ -0,0 +1,115 @@ +// +build s390x + +/* +// Copyright contributors to the Virtual Machine Manager for Go project +// +// 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. +*/ + +package qemu + +import "log" + +// IBM Z uses CCW devices intead of PCI devices. +// See https://wiki.qemu.org/Documentation/Platforms/S390X +const ( + // Virtio9P is the 9pfs device driver. + Virtio9P DeviceDriver = "virtio-9p-ccw" + + // VirtioSerial is the serial device driver. + VirtioSerial DeviceDriver = "virtio-serial-ccw" + + // VirtioNet is the virt-io ccw networking device driver. + VirtioNet DeviceDriver = VirtioNetCCW + + // Vfio is the vfio driver + Vfio DeviceDriver = "vfio-ccw" + + // VirtioScsi is the virtio-scsi device + VirtioScsi DeviceDriver = "virtio-scsi-ccw" + + // VHostVSock is a generic Vsock Device + VHostVSock DeviceDriver = "vhost-vsock-ccw" +) + +// isVirtioPCI is a fake map on s390x to always avoid the "romfile" +// option +var isVirtioPCI = map[DeviceDriver]bool{ + NVDIMM: false, + Virtio9P: false, + VirtioNetCCW: false, + VirtioSerial: false, + VirtioBlock: false, + Console: false, + VirtioSerialPort: false, + VHostVSock: false, + VirtioRng: false, + VirtioBalloon: false, + VhostUserSCSI: false, + VhostUserBlk: false, + Vfio: false, + VirtioScsi: false, + PCIBridgeDriver: false, + PCIePCIBridgeDriver: false, +} + +// QemuDeviceParam converts to the QEMU -device parameter notation +// This function has been reimplemented for the s390x architecture to deal +// with the VHOSTUSER case. Vhost user devices are not implemented on s390x +// architecture. For further details see issue +// https://github.com/kata-containers/runtime/issues/659 +func (n NetDeviceType) QemuDeviceParam() string { + switch n { + case TAP: + return string(VirtioNet) + case MACVTAP: + return string(VirtioNet) + case IPVTAP: + return string(VirtioNet) + case VETHTAP: + return string(VirtioNet) + case VFIO: + return string(Vfio) + case VHOSTUSER: + log.Fatal("vhost-user devices are not supported on IBM Z") + return "" + default: + return "" + } +} + +// QemuNetdevParam converts to the QEMU -netdev parameter notation +// This function has been reimplemented for the s390x architecture to deal +// with the VHOSTUSER case. Vhost user devices are not implemented on s390x +// architecture. For further details see issue +// https://github.com/kata-containers/runtime/issues/659 +func (n NetDeviceType) QemuNetdevParam() string { + switch n { + case TAP: + return "tap" + case MACVTAP: + return "tap" + case IPVTAP: + return "tap" + case VETHTAP: + return "tap" + case VFIO: + return "" + case VHOSTUSER: + log.Fatal("vhost-user devices are not supported on IBM Z") + return "" + default: + return "" + + } +} diff --git a/qemu/qemu_s390x_test.go b/qemu/qemu_s390x_test.go new file mode 100644 index 000000000..b76af3ced --- /dev/null +++ b/qemu/qemu_s390x_test.go @@ -0,0 +1,57 @@ +// +build s390x + +/* +// Copyright contributors to the Virtual Machine Manager for Go project +// +// 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. +*/ + +package qemu + +import "testing" + +// -pci devices don't play well with Z hence replace them with corresponding -ccw devices +// See https://wiki.qemu.org/Documentation/Platforms/S390X +var ( + deviceFSString = "-device virtio-9p-ccw,fsdev=workload9p,mount_tag=rootfs -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none" + deviceNetworkString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef" + deviceNetworkStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef,mq=on" + deviceNetworkPCIString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff" + deviceNetworkPCIStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,mq=on" + deviceSerialString = "-device virtio-serial-ccw,id=serial0" + deviceVSOCKString = "-device vhost-vsock-ccw,id=vhost-vsock-pci0,guest-cid=4" + deviceVFIOString = "-device vfio-ccw,host=02:10.0" + deviceSCSIControllerStr = "-device virtio-scsi-ccw,id=foo" + deviceSCSIControllerBusAddrStr = "-device virtio-scsi-ccw,id=foo,bus=pci.0,addr=00:04.0,iothread=iothread1" + deviceBlockString = "-device virtio-blk,drive=hd0,scsi=off,config-wce=off -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none" + devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff" + devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff" + romfile = "" +) + +func TestAppendVirtioBalloon(t *testing.T) { + balloonDevice := BalloonDevice{ + ID: "balloon", + } + + var deviceString = "-device " + string(VirtioBalloon) + deviceString += ",id=" + balloonDevice.ID + + var OnDeflateOnOMM = ",deflate-on-oom=on" + var OffDeflateOnOMM = ",deflate-on-oom=off" + + testAppend(balloonDevice, deviceString+OffDeflateOnOMM, t) + + balloonDevice.DeflateOnOOM = true + testAppend(balloonDevice, deviceString+OnDeflateOnOMM, t) +} diff --git a/qemu/qmp.go b/qemu/qmp.go index ef56415fb..98371e579 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -971,6 +971,26 @@ func (q *QMP) ExecuteNetPCIDeviceAdd(ctx context.Context, netdevID, devID, macAd return q.executeCommand(ctx, "device_add", args, nil) } +// ExecuteNetCCWDeviceAdd adds a Net CCW device to a QEMU instance +// using the device_add command. devID is the id of the device to add. +// Must be valid QMP identifier. netdevID is the id of nic added by previous netdev_add. +// queues is the number of queues of a nic. +func (q *QMP) ExecuteNetCCWDeviceAdd(ctx context.Context, netdevID, devID, macAddr, addr, bus string, queues int) error { + args := map[string]interface{}{ + "id": devID, + "driver": VirtioNetCCW, + "netdev": netdevID, + "mac": macAddr, + "addr": addr, + } + + if queues > 0 { + args["mq"] = "on" + } + + return q.executeCommand(ctx, "device_add", args, nil) +} + // ExecuteDeviceDel deletes guest portion of a QEMU device by sending a // device_del command. devId is the identifier of the device to delete. // Typically it would match the devID parameter passed to an earlier call diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index a28e0e91c..270c47313 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -536,6 +536,22 @@ func TestQMPNetPCIDeviceAdd(t *testing.T) { <-disconnectedCh } +func TestQMPNetCCWDeviceAdd(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("device_add", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + err := q.ExecuteNetCCWDeviceAdd(context.Background(), "br0", "virtio-0", "02:42:ac:11:00:02", "0x7", "", 8) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} + // Checks that the device_add command is correctly sent. // // We start a QMPLoop, send the device_add command and stop the loop. From ee75813ad11d70b39084fefd00018f2ede395372 Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Fri, 30 Nov 2018 10:14:45 +0100 Subject: [PATCH 157/385] contributors: add my name Signed-off-by: Alice Frosi --- CONTRIBUTORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 7f0cbf462..905f08ff9 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -5,6 +5,7 @@ revision history in source control. Contributors who wish to be recognized in this file should add themselves (or their employer, as appropriate). +- afrosi@de.ibm.com - archana.m.shinde@intel.com - eric.ernst@intel.com - james.o.hunt@intel.com From 5ea6da1448375ff81b77c0590845b07418c6c547 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Fri, 30 Nov 2018 15:20:26 +0100 Subject: [PATCH 158/385] Verify govmm builds on s390x This commit adds a single command to the travis script that checks that the s390x build works. We can't run the unit tests but at least we can check that everything builds on this architecture. Signed-off-by: Mark Ryan --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index f23679412..1cfe2ef03 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,3 +20,4 @@ script: - go env - $GOPATH/bin/goveralls -v -service=travis-ci - gometalinter --tests --vendor --disable-all --enable=misspell --enable=vet --enable=ineffassign --enable=gofmt --enable=gocyclo --cyclo-over=15 --enable=golint --enable=errcheck --enable=deadcode --enable=staticcheck -enable=gas ./... + - GOARCH=s390x go install ./... From dab4cf1d70801c4c78ce47dbbd2d2c1300a399f4 Mon Sep 17 00:00:00 2001 From: NingBo Date: Mon, 3 Dec 2018 14:40:26 +0800 Subject: [PATCH 159/385] qmp: Add tests Test execute QMP command with error response. Signed-off-by: NingBo --- qemu/qmp_test.go | 83 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index a1a784dd6..0d9dd0462 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1363,3 +1363,86 @@ func TestExecuteBalloon(t *testing.T) { q.Shutdown() <-disconnectedCh } + +func TestErrorDesc(t *testing.T) { + errDesc := "Somthing err messages" + errData := map[string]string{ + "class": "GenericError", + "desc": errDesc, + } + + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + + desc, err := q.errorDesc(errData) + if err != nil { + t.Fatalf("Unexpected error '%v'", err) + } + if desc != errDesc { + t.Fatalf("expected '%v'\n got '%v'", errDesc, desc) + } + + q.Shutdown() + <-disconnectedCh +} + +func TestExecCommandFailed(t *testing.T) { + errDesc := "unable to map backing store for guest RAM: Cannot allocate memory" + errData := map[string]string{ + "class": "GenericError", + "desc": errDesc, + } + + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("object-add", nil, "error", errData) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + + _, err := q.executeCommandWithResponse(context.Background(), "object-add", nil, nil, nil) + if err == nil { + t.Fatalf("expected error but got nil") + } + + expectedString := "QMP command failed: " + errDesc + if err.Error() != expectedString { + t.Fatalf("expected '%v' but got '%v'", expectedString, err) + } + + q.Shutdown() + <-disconnectedCh +} + +func TestExecCommandFailedWithInnerError(t *testing.T) { + errData := map[string]string{ + "class": "GenericError", + "descFieldInvalid": "Invalid", + } + + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("object-add", nil, "error", errData) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + + _, err := q.executeCommandWithResponse(context.Background(), "object-add", nil, nil, nil) + if err == nil { + t.Fatalf("expected error but got nil") + } + + expectedString := "QMP command failed: " + if err.Error() != expectedString { + t.Fatalf("expected '%v' but got '%v'", expectedString, err) + } + + q.Shutdown() + <-disconnectedCh +} From b41939c6b4da69a53ea2239f22845ae40cb50a12 Mon Sep 17 00:00:00 2001 From: Ruidong Cao Date: Mon, 3 Dec 2018 20:48:35 +0800 Subject: [PATCH 160/385] Contributors: Add my name Signed-off-by: Ruidong Cao --- CONTRIBUTORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 905f08ff9..acfe104bd 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -7,6 +7,7 @@ themselves (or their employer, as appropriate). - afrosi@de.ibm.com - archana.m.shinde@intel.com +- caoruidong@huawei.com - eric.ernst@intel.com - james.o.hunt@intel.com - jose.carlos.venegas.munoz@intel.com From b36b5a8f672d62766f70f373ce9f64015e4443fe Mon Sep 17 00:00:00 2001 From: Clare Chen Date: Mon, 3 Dec 2018 06:22:11 -0500 Subject: [PATCH 161/385] Contributors: Add Clare Chen to CONTRIBUTORS.md Signed-off-by: Clare Chen --- CONTRIBUTORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index acfe104bd..c159b9a1f 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -8,6 +8,7 @@ themselves (or their employer, as appropriate). - afrosi@de.ibm.com - archana.m.shinde@intel.com - caoruidong@huawei.com +- clare.chenhui@huawei.com - eric.ernst@intel.com - james.o.hunt@intel.com - jose.carlos.venegas.munoz@intel.com From d6173077f12c029d8d4c70f500a3602af88b4337 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Mon, 3 Dec 2018 15:53:16 +0100 Subject: [PATCH 162/385] Run tests for the s390x build It turns out it is possible to run the unit tests for the s390x build on travis by renaming the s390x specific files, so that their inclusion in the build is determined only by tags and not by filename, and by introducing a new tag s390x_test that we can use to force their inclusion into a build by using this tag. The .travis file is then updated to include the line go test --tags s390x_test ./... This creates a build on travis that includes the s390x specific files and runs the unit tests. Signed-off-by: Mark Ryan --- .travis.yml | 1 + qemu/qemu_arch_base.go | 2 +- qemu/qemu_arch_base_test.go | 2 +- qemu/{qemu_s390x.go => qemus390x.go} | 2 +- qemu/{qemu_s390x_test.go => qemus390x_test.go} | 2 +- 5 files changed, 5 insertions(+), 4 deletions(-) rename qemu/{qemu_s390x.go => qemus390x.go} (99%) rename qemu/{qemu_s390x_test.go => qemus390x_test.go} (99%) diff --git a/.travis.yml b/.travis.yml index 1cfe2ef03..b8eaf3eb6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,3 +21,4 @@ script: - $GOPATH/bin/goveralls -v -service=travis-ci - gometalinter --tests --vendor --disable-all --enable=misspell --enable=vet --enable=ineffassign --enable=gofmt --enable=gocyclo --cyclo-over=15 --enable=golint --enable=errcheck --enable=deadcode --enable=staticcheck -enable=gas ./... - GOARCH=s390x go install ./... + - go test --tags s390x_test ./... diff --git a/qemu/qemu_arch_base.go b/qemu/qemu_arch_base.go index 5e293d1d6..521741fa6 100644 --- a/qemu/qemu_arch_base.go +++ b/qemu/qemu_arch_base.go @@ -1,4 +1,4 @@ -// +build !s390x +// +build !s390x,!s390x_test /* // Copyright contributors to the Virtual Machine Manager for Go project diff --git a/qemu/qemu_arch_base_test.go b/qemu/qemu_arch_base_test.go index 64a8415b4..93eac3ee5 100644 --- a/qemu/qemu_arch_base_test.go +++ b/qemu/qemu_arch_base_test.go @@ -1,4 +1,4 @@ -// +build !s390x +// +build !s390x,!s390x_test /* // Copyright contributors to the Virtual Machine Manager for Go project diff --git a/qemu/qemu_s390x.go b/qemu/qemus390x.go similarity index 99% rename from qemu/qemu_s390x.go rename to qemu/qemus390x.go index d8395837f..7c45c3edd 100644 --- a/qemu/qemu_s390x.go +++ b/qemu/qemus390x.go @@ -1,4 +1,4 @@ -// +build s390x +// +build s390x s390x_test /* // Copyright contributors to the Virtual Machine Manager for Go project diff --git a/qemu/qemu_s390x_test.go b/qemu/qemus390x_test.go similarity index 99% rename from qemu/qemu_s390x_test.go rename to qemu/qemus390x_test.go index b76af3ced..1aac28434 100644 --- a/qemu/qemu_s390x_test.go +++ b/qemu/qemus390x_test.go @@ -1,4 +1,4 @@ -// +build s390x +// +build s390x s390x_test /* // Copyright contributors to the Virtual Machine Manager for Go project From f9b31c0f80862a2293b8a3247010ca1324a63da8 Mon Sep 17 00:00:00 2001 From: Sebastien Boeuf Date: Tue, 4 Dec 2018 14:03:03 -0800 Subject: [PATCH 163/385] qemu: Allow disable-modern option from QMP For devices that actually support the option disable-modern, this current commit provides a proper flag to the caller. This will allow for better support when used in nested environment as virtio-pci devices should rely on virtio 0.9 instead of 1.0 due to a bug in KVM. Fixes #80 Signed-off-by: Sebastien Boeuf --- qemu/qmp.go | 38 ++++++++++++++++++++++++++++++++++---- qemu/qmp_test.go | 8 ++++---- 2 files changed, 38 insertions(+), 8 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 71ed56f28..65557b7fa 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -810,7 +810,10 @@ func (q *QMP) ExecuteBlockdevAddWithCache(ctx context.Context, device, blockdevI // add. Both strings must be valid QMP identifiers. driver is the name of the // driver,e.g., virtio-blk-pci, and bus is the name of the bus. bus is optional. // shared denotes if the drive can be shared allowing it to be passed more than once. -func (q *QMP) ExecuteDeviceAdd(ctx context.Context, blockdevID, devID, driver, bus, romfile string, shared bool) error { +// disableModern indicates if virtio version 1.0 should be replaced by the +// former version 0.9, as there is a KVM bug that occurs when using virtio +// 1.0 in nested environments. +func (q *QMP) ExecuteDeviceAdd(ctx context.Context, blockdevID, devID, driver, bus, romfile string, shared, disableModern bool) error { args := map[string]interface{}{ "id": devID, "driver": driver, @@ -824,6 +827,10 @@ func (q *QMP) ExecuteDeviceAdd(ctx context.Context, blockdevID, devID, driver, b } if isVirtioPCI[DeviceDriver(driver)] { args["romfile"] = romfile + + if disableModern { + args["disable-modern"] = disableModern + } } return q.executeCommand(ctx, "device_add", args, nil) @@ -837,7 +844,10 @@ func (q *QMP) ExecuteDeviceAdd(ctx context.Context, blockdevID, devID, driver, b // scsiID is the SCSI id, lun is logical unit number. scsiID and lun are optional, a negative value // for scsiID and lun is ignored. shared denotes if the drive can be shared allowing it // to be passed more than once. -func (q *QMP) ExecuteSCSIDeviceAdd(ctx context.Context, blockdevID, devID, driver, bus, romfile string, scsiID, lun int, shared bool) error { +// disableModern indicates if virtio version 1.0 should be replaced by the +// former version 0.9, as there is a KVM bug that occurs when using virtio +// 1.0 in nested environments. +func (q *QMP) ExecuteSCSIDeviceAdd(ctx context.Context, blockdevID, devID, driver, bus, romfile string, scsiID, lun int, shared, disableModern bool) error { // TBD: Add drivers for scsi passthrough like scsi-generic and scsi-block drivers := []string{"scsi-hd", "scsi-cd", "scsi-disk"} @@ -870,6 +880,10 @@ func (q *QMP) ExecuteSCSIDeviceAdd(ctx context.Context, blockdevID, devID, drive } if isVirtioPCI[DeviceDriver(driver)] { args["romfile"] = romfile + + if disableModern { + args["disable-modern"] = disableModern + } } return q.executeCommand(ctx, "device_add", args, nil) @@ -962,7 +976,10 @@ func (q *QMP) ExecuteNetdevDel(ctx context.Context, netdevID string) error { // using the device_add command. devID is the id of the device to add. // Must be valid QMP identifier. netdevID is the id of nic added by previous netdev_add. // queues is the number of queues of a nic. -func (q *QMP) ExecuteNetPCIDeviceAdd(ctx context.Context, netdevID, devID, macAddr, addr, bus, romfile string, queues int) error { +// disableModern indicates if virtio version 1.0 should be replaced by the +// former version 0.9, as there is a KVM bug that occurs when using virtio +// 1.0 in nested environments. +func (q *QMP) ExecuteNetPCIDeviceAdd(ctx context.Context, netdevID, devID, macAddr, addr, bus, romfile string, queues int, disableModern bool) error { args := map[string]interface{}{ "id": devID, "driver": VirtioNetPCI, @@ -981,6 +998,9 @@ func (q *QMP) ExecuteNetPCIDeviceAdd(ctx context.Context, netdevID, devID, macAd if netdevID != "" { args["netdev"] = netdevID } + if disableModern { + args["disable-modern"] = disableModern + } if queues > 0 { // (2N+2 vectors, N for tx queues, N for rx queues, 1 for config, and one for possible control vq) @@ -1038,7 +1058,10 @@ func (q *QMP) ExecuteDeviceDel(ctx context.Context, devID string) error { // to hot plug PCI devices on PCI(E) bridges, unlike ExecuteDeviceAdd this function receive the // device address on its parent bus. bus is optional. shared denotes if the drive can be shared // allowing it to be passed more than once. -func (q *QMP) ExecutePCIDeviceAdd(ctx context.Context, blockdevID, devID, driver, addr, bus, romfile string, shared bool) error { +// disableModern indicates if virtio version 1.0 should be replaced by the +// former version 0.9, as there is a KVM bug that occurs when using virtio +// 1.0 in nested environments. +func (q *QMP) ExecutePCIDeviceAdd(ctx context.Context, blockdevID, devID, driver, addr, bus, romfile string, shared, disableModern bool) error { args := map[string]interface{}{ "id": devID, "driver": driver, @@ -1053,6 +1076,10 @@ func (q *QMP) ExecutePCIDeviceAdd(ctx context.Context, blockdevID, devID, driver } if isVirtioPCI[DeviceDriver(driver)] { args["romfile"] = romfile + + if disableModern { + args["disable-modern"] = disableModern + } } return q.executeCommand(ctx, "device_add", args, nil) @@ -1290,6 +1317,9 @@ func (q *QMP) ExecuteBalloon(ctx context.Context, bytes uint64) error { } // ExecutePCIVSockAdd adds a vhost-vsock-pci bus +// disableModern indicates if virtio version 1.0 should be replaced by the +// former version 0.9, as there is a KVM bug that occurs when using virtio +// 1.0 in nested environments. func (q *QMP) ExecutePCIVSockAdd(ctx context.Context, id, guestCID, vhostfd, addr, bus, romfile string, disableModern bool) error { args := map[string]interface{}{ "driver": VHostVSock, diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 924c4f5bd..222083099 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -528,7 +528,7 @@ func TestQMPNetPCIDeviceAdd(t *testing.T) { cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) - err := q.ExecuteNetPCIDeviceAdd(context.Background(), "br0", "virtio-0", "02:42:ac:11:00:02", "0x7", "", "", 8) + err := q.ExecuteNetPCIDeviceAdd(context.Background(), "br0", "virtio-0", "02:42:ac:11:00:02", "0x7", "", "", 8, false) if err != nil { t.Fatalf("Unexpected error %v", err) } @@ -569,7 +569,7 @@ func TestQMPDeviceAdd(t *testing.T) { blockdevID := fmt.Sprintf("drive_%s", volumeUUID) devID := fmt.Sprintf("device_%s", volumeUUID) err := q.ExecuteDeviceAdd(context.Background(), blockdevID, devID, - "virtio-blk-pci", "", "", true) + "virtio-blk-pci", "", "", true, false) if err != nil { t.Fatalf("Unexpected error %v", err) } @@ -594,7 +594,7 @@ func TestQMPSCSIDeviceAdd(t *testing.T) { blockdevID := fmt.Sprintf("drive_%s", volumeUUID) devID := fmt.Sprintf("device_%s", volumeUUID) err := q.ExecuteSCSIDeviceAdd(context.Background(), blockdevID, devID, - "scsi-hd", "scsi0.0", "", 1, 2, true) + "scsi-hd", "scsi0.0", "", 1, 2, true, false) if err != nil { t.Fatalf("Unexpected error %v", err) } @@ -1012,7 +1012,7 @@ func TestQMPPCIDeviceAdd(t *testing.T) { blockdevID := fmt.Sprintf("drive_%s", volumeUUID) devID := fmt.Sprintf("device_%s", volumeUUID) err := q.ExecutePCIDeviceAdd(context.Background(), blockdevID, devID, - "virtio-blk-pci", "0x1", "", "", true) + "virtio-blk-pci", "0x1", "", "", true, false) if err != nil { t.Fatalf("Unexpected error %v", err) } From c891f5f84b8e8b5340c842074e9b294dc85a2949 Mon Sep 17 00:00:00 2001 From: Hui Zhu Date: Sun, 2 Dec 2018 19:20:08 +0800 Subject: [PATCH 164/385] qmp: Add nvdimm support ExecuteNVDIMMDeviceAdd can add a nvdimm disk to qemu. Not implement NVDIMM device delete function because qemu doesn't support it. Signed-off-by: Hui Zhu --- qemu/qmp.go | 36 ++++++++++++++++++++++++++++++++++++ qemu/qmp_test.go | 18 ++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/qemu/qmp.go b/qemu/qmp.go index 71ed56f28..6dd757181 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -1280,6 +1280,42 @@ func (q *QMP) ExecHotplugMemory(ctx context.Context, qomtype, id, mempath string return err } +// ExecuteNVDIMMDeviceAdd adds a block device to a QEMU instance using +// a NVDIMM driver with the device_add command. +// id is the id of the device to add. It must be a valid QMP identifier. +// mempath is the path of the device to add, e.g., /dev/rdb0. size is +// the data size of the device. +func (q *QMP) ExecuteNVDIMMDeviceAdd(ctx context.Context, id, mempath string, size int64) error { + args := map[string]interface{}{ + "qom-type": "memory-backend-file", + "id": "nvdimmbackmem" + id, + "props": map[string]interface{}{ + "mem-path": mempath, + "size": size, + "share": true, + }, + } + err := q.executeCommand(ctx, "object-add", args, nil) + if err != nil { + return err + } + + args = map[string]interface{}{ + "driver": "nvdimm", + "id": "nvdimm" + id, + "memdev": "nvdimmbackmem" + id, + } + if err = q.executeCommand(ctx, "device_add", args, nil); err != nil { + q.cfg.Logger.Errorf("Unable to hotplug NVDIMM device: %v", err) + err2 := q.executeCommand(ctx, "object-del", map[string]interface{}{"id": "nvdimmbackmem" + id}, nil) + if err2 != nil { + q.cfg.Logger.Warningf("Unable to clean up memory object: %v", err2) + } + } + + return err +} + // ExecuteBalloon sets the size of the balloon, hence updates the memory // allocated for the VM. func (q *QMP) ExecuteBalloon(ctx context.Context, bytes uint64) error { diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 924c4f5bd..24a03fae1 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1486,3 +1486,21 @@ func TestExecCommandFailedWithInnerError(t *testing.T) { q.Shutdown() <-disconnectedCh } + +// Checks NVDIMM device add +func TestExecuteNVDIMMDeviceAdd(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("object-add", nil, "return", nil) + buf.AddCommand("device_add", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + err := q.ExecuteNVDIMMDeviceAdd(context.Background(), "nvdimm0", "/dev/rbd0", 1024) + if err != nil { + t.Fatalf("Unexpected error: %v\n", err) + } + q.Shutdown() + <-disconnectedCh +} From 97fc3435cf16749acb7ffe979ba89a354715ed06 Mon Sep 17 00:00:00 2001 From: Hui Zhu Date: Mon, 3 Dec 2018 15:06:32 +0800 Subject: [PATCH 165/385] contributors: add my name Signed-off-by: Hui Zhu --- CONTRIBUTORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index c159b9a1f..7a822adbe 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -18,4 +18,5 @@ themselves (or their employer, as appropriate). - robert.bradford@intel.com - sameo@linux.intel.com - sebastien.boeuf@intel.com +- teawater@hyper.sh - xinda.zhao@intel.com From 4beea5133ed152abb43c2734dbe0815eb1f7f53e Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Mon, 28 Jan 2019 15:32:07 +0100 Subject: [PATCH 166/385] Fix staticcheck (ST1005) errors staticcheck was complaining as some of the error messages returned by govmm began with a capital letter. This commit fixes the issue. Signed-off-by: Mark Ryan --- qemu/image.go | 8 ++++---- qemu/qmp.go | 30 +++++++++++++++--------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/qemu/image.go b/qemu/image.go index de12333c4..ddee0670e 100644 --- a/qemu/image.go +++ b/qemu/image.go @@ -51,18 +51,18 @@ func CreateCloudInitISO(ctx context.Context, scratchDir, isoPath string, err := os.MkdirAll(dataDirPath, 0750) if err != nil { - return fmt.Errorf("Unable to create config drive directory %s : %v", + return fmt.Errorf("unable to create config drive directory %s : %v", dataDirPath, err) } err = ioutil.WriteFile(metaDataPath, metaData, 0644) if err != nil { - return fmt.Errorf("Unable to create %s : %v", metaDataPath, err) + return fmt.Errorf("unable to create %s : %v", metaDataPath, err) } err = ioutil.WriteFile(userDataPath, userData, 0644) if err != nil { - return fmt.Errorf("Unable to create %s : %v", userDataPath, err) + return fmt.Errorf("unable to create %s : %v", userDataPath, err) } cmd := exec.CommandContext(ctx, "xorriso", "-as", "mkisofs", "-R", "-V", "config-2", @@ -70,7 +70,7 @@ func CreateCloudInitISO(ctx context.Context, scratchDir, isoPath string, cmd.SysProcAttr = attr err = cmd.Run() if err != nil { - return fmt.Errorf("Unable to create cloudinit iso image %v", err) + return fmt.Errorf("unable to create cloudinit iso image %v", err) } return nil diff --git a/qemu/qmp.go b/qemu/qmp.go index 6e4d4f355..3811e052d 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -329,14 +329,14 @@ func (q *QMP) errorDesc(errorData interface{}) (string, error) { // convert error to json data, err := json.Marshal(errorData) if err != nil { - return "", fmt.Errorf("Unable to extract error information: %v", err) + return "", fmt.Errorf("unable to extract error information: %v", err) } // see: https://github.com/qemu/qemu/blob/stable-2.12/qapi/qmp-dispatch.c#L125 var qmpErr map[string]string // convert json to qmpError if err = json.Unmarshal(data, &qmpErr); err != nil { - return "", fmt.Errorf("Unable to convert json to qmpError: %v", err) + return "", fmt.Errorf("unable to convert json to qmpError: %v", err) } return qmpErr["desc"], nil @@ -404,7 +404,7 @@ func (q *QMP) writeNextQMPCommand(cmdQueue *list.List) { encodedCmd, err := json.Marshal(&cmdData) if err != nil { cmd.res <- qmpResult{ - err: fmt.Errorf("Unable to marhsall command %s: %v", + err: fmt.Errorf("unable to marhsall command %s: %v", cmd.name, err), } cmdQueue.Remove(cmdEl) @@ -419,7 +419,7 @@ func (q *QMP) writeNextQMPCommand(cmdQueue *list.List) { if err != nil { cmd.res <- qmpResult{ - err: fmt.Errorf("Unable to write command to qmp socket %v", err), + err: fmt.Errorf("unable to write command to qmp socket %v", err), } cmdQueue.Remove(cmdEl) } @@ -689,12 +689,12 @@ func QMPStart(ctx context.Context, socket string, cfg QMPConfig, disconnectedCh case <-ctx.Done(): q.Shutdown() <-disconnectedCh - return nil, nil, fmt.Errorf("Canceled by caller") + return nil, nil, fmt.Errorf("canceled by caller") case <-disconnectedCh: - return nil, nil, fmt.Errorf("Lost connection to VM") + return nil, nil, fmt.Errorf("lost connection to VM") case q.version = <-connectedCh: if q.version == nil { - return nil, nil, fmt.Errorf("Failed to find QMP version information") + return nil, nil, fmt.Errorf("failed to find QMP version information") } } @@ -860,7 +860,7 @@ func (q *QMP) ExecuteSCSIDeviceAdd(ctx context.Context, blockdevID, devID, drive } if !isSCSIDriver { - return fmt.Errorf("Invalid SCSI driver provided %s", driver) + return fmt.Errorf("invalid SCSI driver provided %s", driver) } args := map[string]interface{}{ @@ -1171,13 +1171,13 @@ func (q *QMP) ExecuteQueryHotpluggableCPUs(ctx context.Context) ([]HotpluggableC // convert response to json data, err := json.Marshal(response) if err != nil { - return nil, fmt.Errorf("Unable to extract CPU information: %v", err) + return nil, fmt.Errorf("unable to extract CPU information: %v", err) } var cpus []HotpluggableCPU // convert json to []HotpluggableCPU if err = json.Unmarshal(data, &cpus); err != nil { - return nil, fmt.Errorf("Unable to convert json to hotpluggable CPU: %v", err) + return nil, fmt.Errorf("unable to convert json to hotpluggable CPU: %v", err) } return cpus, nil @@ -1211,7 +1211,7 @@ func (q *QMP) ExecQueryMemoryDevices(ctx context.Context) ([]MemoryDevices, erro // convert response to json data, err := json.Marshal(response) if err != nil { - return nil, fmt.Errorf("Unable to extract memory devices information: %v", err) + return nil, fmt.Errorf("unable to extract memory devices information: %v", err) } var memoryDevices []MemoryDevices @@ -1235,7 +1235,7 @@ func (q *QMP) ExecQueryCpus(ctx context.Context) ([]CPUInfo, error) { // convert response to json data, err := json.Marshal(response) if err != nil { - return nil, fmt.Errorf("Unable to extract memory devices information: %v", err) + return nil, fmt.Errorf("unable to extract memory devices information: %v", err) } var cpuInfo []CPUInfo @@ -1259,7 +1259,7 @@ func (q *QMP) ExecQueryCpusFast(ctx context.Context) ([]CPUInfoFast, error) { // convert response to json data, err := json.Marshal(response) if err != nil { - return nil, fmt.Errorf("Unable to extract memory devices information: %v", err) + return nil, fmt.Errorf("unable to extract memory devices information: %v", err) } var cpuInfoFast []CPUInfoFast @@ -1434,12 +1434,12 @@ func (q *QMP) ExecuteQueryMigration(ctx context.Context) (MigrationStatus, error data, err := json.Marshal(response) if err != nil { - return MigrationStatus{}, fmt.Errorf("Unable to extract migrate status information: %v", err) + return MigrationStatus{}, fmt.Errorf("unable to extract migrate status information: %v", err) } var status MigrationStatus if err = json.Unmarshal(data, &status); err != nil { - return MigrationStatus{}, fmt.Errorf("Unable to convert migrate status information: %v", err) + return MigrationStatus{}, fmt.Errorf("unable to convert migrate status information: %v", err) } return status, nil From 5f2e630bdad07960f2ebd1a721c21ab8a44b9c87 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Mon, 28 Jan 2019 16:06:49 +0100 Subject: [PATCH 167/385] Fix staticcheck (S1025) staticcheck was complaining as there were quite a lot of fmt.Sprintf("%s",d) in the code where d was either a string or had string as its underlying type. Signed-off-by: Mark Ryan --- qemu/qemu.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 8bd6afbef..f209cae1c 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -260,7 +260,7 @@ func (fsdev FSDevice) QemuParams(config *Config) []string { var deviceParams []string var qemuParams []string - deviceParams = append(deviceParams, fmt.Sprintf("%s", fsdev.Driver)) + deviceParams = append(deviceParams, string(fsdev.Driver)) if s := fsdev.Driver.disableModern(fsdev.DisableModern); s != "" { deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) } @@ -346,7 +346,7 @@ func (cdev CharDevice) QemuParams(config *Config) []string { var deviceParams []string var qemuParams []string - deviceParams = append(deviceParams, fmt.Sprintf("%s", cdev.Driver)) + deviceParams = append(deviceParams, string(cdev.Driver)) if s := cdev.Driver.disableModern(cdev.DisableModern); s != "" { deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) } @@ -627,7 +627,7 @@ func (dev SerialDevice) QemuParams(config *Config) []string { var deviceParams []string var qemuParams []string - deviceParams = append(deviceParams, fmt.Sprintf("%s", dev.Driver)) + deviceParams = append(deviceParams, string(dev.Driver)) if s := dev.Driver.disableModern(dev.DisableModern); s != "" { deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) } @@ -705,7 +705,7 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string { var deviceParams []string var qemuParams []string - deviceParams = append(deviceParams, fmt.Sprintf("%s", blkdev.Driver)) + deviceParams = append(deviceParams, string(blkdev.Driver)) if s := blkdev.Driver.disableModern(blkdev.DisableModern); s != "" { deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) } @@ -910,7 +910,7 @@ func (scsiCon SCSIController) QemuParams(config *Config) []string { devParams = append(devParams, fmt.Sprintf("addr=%s", scsiCon.Addr)) } if s := driver.disableModern(scsiCon.DisableModern); s != "" { - devParams = append(devParams, fmt.Sprintf("%s", s)) + devParams = append(devParams, s) } if scsiCon.IOThread != "" { devParams = append(devParams, fmt.Sprintf("iothread=%s", scsiCon.IOThread)) @@ -1057,7 +1057,7 @@ func (vsock VSOCKDevice) QemuParams(config *Config) []string { var qemuParams []string driver := VHostVSock - deviceParams = append(deviceParams, fmt.Sprintf("%s", driver)) + deviceParams = append(deviceParams, string(driver)) if s := driver.disableModern(vsock.DisableModern); s != "" { deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) } @@ -1174,7 +1174,7 @@ func (b BalloonDevice) QemuParams(_ *Config) []string { deviceParams = append(deviceParams, "deflate-on-oom=off") } if s := driver.disableModern(b.DisableModern); s != "" { - deviceParams = append(deviceParams, fmt.Sprintf("%s", s)) + deviceParams = append(deviceParams, string(s)) } qemuParams = append(qemuParams, "-device") qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) @@ -1528,7 +1528,7 @@ func (config *Config) appendQMPSockets() { } qmpParams := append([]string{}, fmt.Sprintf("%s:", q.Type)) - qmpParams = append(qmpParams, fmt.Sprintf("%s", q.Name)) + qmpParams = append(qmpParams, q.Name) if q.Server == true { qmpParams = append(qmpParams, ",server") if q.NoWait == true { From f0172cd2a6a0e2701f89883df654cd318c832297 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Mon, 28 Jan 2019 16:13:48 +0100 Subject: [PATCH 168/385] Fix staticcheck (S1002) staticcheck was complaining about code that looked like if x == true { } rather than if x { } This commit fixes the issue. Signed-off-by: Mark Ryan --- qemu/qemu.go | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index f209cae1c..47fc3fadf 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -534,7 +534,7 @@ func (netdev NetDevice) QemuNetdevParams(config *Config) []string { netdevParams = append(netdevParams, netdev.Type.QemuNetdevParam()) netdevParams = append(netdevParams, fmt.Sprintf(",id=%s", netdev.ID)) - if netdev.VHost == true { + if netdev.VHost { netdevParams = append(netdevParams, ",vhost=on") if len(netdev.VhostFDs) > 0 { var fdParams []string @@ -710,11 +710,11 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) } deviceParams = append(deviceParams, fmt.Sprintf(",drive=%s", blkdev.ID)) - if blkdev.SCSI == false { + if !blkdev.SCSI { deviceParams = append(deviceParams, ",scsi=off") } - if blkdev.WCE == false { + if !blkdev.WCE { deviceParams = append(deviceParams, ",config-wce=off") } @@ -1523,15 +1523,15 @@ func (config *Config) appendCPUModel() { func (config *Config) appendQMPSockets() { for _, q := range config.QMPSockets { - if q.Valid() == false { + if !q.Valid() { continue } qmpParams := append([]string{}, fmt.Sprintf("%s:", q.Type)) qmpParams = append(qmpParams, q.Name) - if q.Server == true { + if q.Server { qmpParams = append(qmpParams, ",server") - if q.NoWait == true { + if q.NoWait { qmpParams = append(qmpParams, ",nowait") } } @@ -1543,7 +1543,7 @@ func (config *Config) appendQMPSockets() { func (config *Config) appendDevices() { for _, d := range config.Devices { - if d.Valid() == false { + if !d.Valid() { continue } @@ -1611,7 +1611,7 @@ func (config *Config) appendCPUs() error { } func (config *Config) appendRTC() { - if config.RTC.Valid() == false { + if !config.RTC.Valid() { return } @@ -1663,7 +1663,7 @@ func (config *Config) appendKernel() { } func (config *Config) appendMemoryKnobs() { - if config.Knobs.HugePages == true { + if config.Knobs.HugePages { if config.Memory.Size != "" { dimmName := "dimm1" objMemParam := "memory-backend-file,id=" + dimmName + ",size=" + config.Memory.Size + ",mem-path=/dev/hugepages,share=on,prealloc=on" @@ -1675,7 +1675,7 @@ func (config *Config) appendMemoryKnobs() { config.qemuParams = append(config.qemuParams, "-numa") config.qemuParams = append(config.qemuParams, numaMemParam) } - } else if config.Knobs.MemPrealloc == true { + } else if config.Knobs.MemPrealloc { if config.Memory.Size != "" { dimmName := "dimm1" objMemParam := "memory-backend-ram,id=" + dimmName + ",size=" + config.Memory.Size + ",prealloc=on" @@ -1687,11 +1687,11 @@ func (config *Config) appendMemoryKnobs() { config.qemuParams = append(config.qemuParams, "-numa") config.qemuParams = append(config.qemuParams, numaMemParam) } - } else if config.Knobs.FileBackedMem == true { + } else if config.Knobs.FileBackedMem { if config.Memory.Size != "" && config.Memory.Path != "" { dimmName := "dimm1" objMemParam := "memory-backend-file,id=" + dimmName + ",size=" + config.Memory.Size + ",mem-path=" + config.Memory.Path - if config.Knobs.FileBackedMemShared == true { + if config.Knobs.FileBackedMemShared { objMemParam += ",share=on" } numaMemParam := "node,memdev=" + dimmName @@ -1706,45 +1706,45 @@ func (config *Config) appendMemoryKnobs() { } func (config *Config) appendKnobs() { - if config.Knobs.NoUserConfig == true { + if config.Knobs.NoUserConfig { config.qemuParams = append(config.qemuParams, "-no-user-config") } - if config.Knobs.NoDefaults == true { + if config.Knobs.NoDefaults { config.qemuParams = append(config.qemuParams, "-nodefaults") } - if config.Knobs.NoGraphic == true { + if config.Knobs.NoGraphic { config.qemuParams = append(config.qemuParams, "-nographic") } - if config.Knobs.Daemonize == true { + if config.Knobs.Daemonize { config.qemuParams = append(config.qemuParams, "-daemonize") } config.appendMemoryKnobs() - if config.Knobs.Realtime == true { + if config.Knobs.Realtime { config.qemuParams = append(config.qemuParams, "-realtime") // This path is redundant as the default behaviour is locked memory // Realtime today does not control any other feature even though // other features may be added in the future // https://lists.gnu.org/archive/html/qemu-devel/2012-12/msg03330.html - if config.Knobs.Mlock == true { + if config.Knobs.Mlock { config.qemuParams = append(config.qemuParams, "mlock=on") } else { config.qemuParams = append(config.qemuParams, "mlock=off") } } else { // In order to turn mlock off we need the -realtime option as well - if config.Knobs.Mlock == false { + if !config.Knobs.Mlock { //Enable realtime anyway just to get the right swapping behaviour config.qemuParams = append(config.qemuParams, "-realtime") config.qemuParams = append(config.qemuParams, "mlock=off") } } - if config.Knobs.Stopped == true { + if config.Knobs.Stopped { config.qemuParams = append(config.qemuParams, "-S") } } From cb2ce9339c38b3d145660475b859406fb0148a01 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Mon, 28 Jan 2019 16:17:24 +0100 Subject: [PATCH 169/385] Fix staticcheck S1008 static check was complaining about code that looked like if x == "" { return false } return true when what it wants to see is return x != "". This commit fixes the issue. Signed-off-by: Mark Ryan --- qemu/qemu.go | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 47fc3fadf..9703018d5 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -842,11 +842,7 @@ type VFIODevice struct { // Valid returns true if the VFIODevice structure is valid and complete. func (vfioDev VFIODevice) Valid() bool { - if vfioDev.BDF == "" { - return false - } - - return true + return vfioDev.BDF != "" } // QemuParams returns the qemu parameters built out of this vfio device. @@ -889,11 +885,7 @@ type SCSIController struct { // Valid returns true if the SCSIController structure is valid and complete. func (scsiCon SCSIController) Valid() bool { - if scsiCon.ID == "" { - return false - } - - return true + return scsiCon.ID != "" } // QemuParams returns the qemu parameters built out of this SCSIController device. @@ -1094,11 +1086,7 @@ type RngDevice struct { // Valid returns true if the RngDevice structure is valid and complete. func (v RngDevice) Valid() bool { - if v.ID == "" { - return false - } - - return true + return v.ID != "" } // QemuParams returns the qemu parameters built out of the RngDevice. @@ -1184,11 +1172,7 @@ func (b BalloonDevice) QemuParams(_ *Config) []string { // Valid returns true if the balloonDevice structure is valid and complete. func (b BalloonDevice) Valid() bool { - if b.ID == "" { - return false - } - - return true + return b.ID != "" } // RTCBaseType is the qemu RTC base time type. From 932fdc7f501525156fef7fbba38e4dd5ca46f9ee Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Mon, 28 Jan 2019 16:19:20 +0100 Subject: [PATCH 170/385] Fix staticcheck S1023 By removing a redundant return statement. Signed-off-by: Mark Ryan --- qemu/qemu_test.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 622f47ea7..2af0ded79 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -30,8 +30,6 @@ const volumeUUID = "67d86208-b46c-4465-9018-e14187d4010" func testAppend(structure interface{}, expected string, t *testing.T) { var config Config testConfigAppend(&config, structure, expected, t) - - return } func testConfigAppend(config *Config, structure interface{}, expected string, t *testing.T) { From ad310f9fde4fffaafdea0138fc8773b8481cc7bb Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Mon, 28 Jan 2019 16:20:23 +0100 Subject: [PATCH 171/385] Fix staticcheck S1023 Static check was complaining about code that looked like _ = <-ch when it wants to see simply <-ch There was only one instance of this in govmm and this commit fixes that instance. Signed-off-by: Mark Ryan --- qemu/qmp.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 3811e052d..74431c12d 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -525,7 +525,7 @@ func (q *QMP) mainLoop() { } /* #nosec */ _ = q.conn.Close() - _ = <-fromVMCh + <-fromVMCh failOutstandingCommands(cmdQueue) close(q.disconnectedCh) }() From 1f51b4386be382f21810cdc01f3cd4df0a946f45 Mon Sep 17 00:00:00 2001 From: Mark Ryan Date: Mon, 28 Jan 2019 16:31:51 +0100 Subject: [PATCH 172/385] Update the versions of Go used to build GoVMM The .travis file was building GoVMM with some old of date versions of Go that seem to be incompatible with the latest versions of gometalinter. This commit updates the .travis file so that we build against 1.10 and 1.11. Signed-off-by: Mark Ryan --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index b8eaf3eb6..41aec9bb0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,8 @@ language: go go: - - 1.8 - - 1.9 + - "1.10" + - "1.11" - tip go_import_path: github.com/intel/govmm From 4692f6b965d2c8777104dfcb7283d95aacfdb730 Mon Sep 17 00:00:00 2001 From: Nitesh Konkar Date: Mon, 28 Jan 2019 18:48:53 +0530 Subject: [PATCH 173/385] qmp: Conditionally pass threadID and socketID when CPU device add For vCPU hotplug to work on ppc64le, we need not pass threadID and socketID. So conditionally pass arguments when executing CPU device add. Fixes: #83 Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com --- qemu/qmp.go | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 74431c12d..9b21d9648 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -1144,14 +1144,21 @@ func (q *QMP) ExecutePCIVFIOMediatedDeviceAdd(ctx context.Context, devID, sysfsd // ExecuteCPUDeviceAdd adds a CPU to a QEMU instance using the device_add command. // driver is the CPU model, cpuID must be a unique ID to identify the CPU, socketID is the socket number within // node/board the CPU belongs to, coreID is the core number within socket the CPU belongs to, threadID is the -// thread number within core the CPU belongs to. +// thread number within core the CPU belongs to. Note that socketID and threadID are not a requirement for +// architecures like ppc64le. func (q *QMP) ExecuteCPUDeviceAdd(ctx context.Context, driver, cpuID, socketID, coreID, threadID, romfile string) error { args := map[string]interface{}{ - "driver": driver, - "id": cpuID, - "socket-id": socketID, - "core-id": coreID, - "thread-id": threadID, + "driver": driver, + "id": cpuID, + "core-id": coreID, + } + + if socketID != "" { + args["socket-id"] = socketID + } + + if threadID != "" { + args["thread-id"] = threadID } if isVirtioPCI[DeviceDriver(driver)] { From 3c84b1daa3d132d76cbf86061c0b1f876d12917c Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi Date: Thu, 5 Jul 2018 16:04:31 +0100 Subject: [PATCH 174/385] govmm: add VhostUserFS vhost-user device type The QEMU vhost-user-fs-pci device provides virtio-fs host<->guest file system sharing (https://virtio-fs.gitlab.io/). The device is instantiated like this: $ qemu -chardev socket,path=/tmp/vhost-fs.sock,id=chr0 -device vhost-user-fs-pci,tag=myfs,chardev=chr0,cache-size=4G,versiontable=/dev/shm/fuse_shared_versions This patch adds the VhostUserFS DeviceDriver and command-line generation for this QEMU device. Signed-off-by: Stefan Hajnoczi --- qemu/qemu.go | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 9703018d5..c2f734bc5 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -92,6 +92,9 @@ const ( //VhostUserBlk represents a block vhostuser device type. VhostUserBlk DeviceDriver = "vhost-user-blk-pci" + //VhostUserFS represents a virtio-fs vhostuser device type + VhostUserFS DeviceDriver = "vhost-user-fs-pci" + // PCIBridgeDriver represents a PCI bridge device type. PCIBridgeDriver DeviceDriver = "pci-bridge" @@ -740,11 +743,14 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string { // VhostUserDevice represents a qemu vhost-user device meant to be passed // in to the guest type VhostUserDevice struct { - SocketPath string //path to vhostuser socket on host - CharDevID string - TypeDevID string //variable QEMU parameter based on value of VhostUserType - Address string //used for MAC address in net case - VhostUserType DeviceDriver + SocketPath string //path to vhostuser socket on host + CharDevID string + TypeDevID string //variable QEMU parameter based on value of VhostUserType + Address string //used for MAC address in net case + Tag string //virtio-fs volume id for mounting inside guest + CacheSize uint32 //virtio-fs DAX cache size in GiB + SharedVersions bool //enable virtio-fs shared version metadata + VhostUserType DeviceDriver // ROMFile specifies the ROM file being used for this device. ROMFile string @@ -767,6 +773,10 @@ func (vhostuserDev VhostUserDevice) Valid() bool { return false } case VhostUserBlk: + case VhostUserFS: + if vhostuserDev.Tag == "" { + return false + } default: return false } @@ -809,6 +819,15 @@ func (vhostuserDev VhostUserDevice) QemuParams(config *Config) []string { devParams = append(devParams, "logical_block_size=4096") devParams = append(devParams, "size=512M") devParams = append(devParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) + case VhostUserFS: + driver = VhostUserFS + devParams = append(devParams, string(driver)) + devParams = append(devParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) + devParams = append(devParams, fmt.Sprintf("tag=%s", vhostuserDev.Tag)) + devParams = append(devParams, fmt.Sprintf("cache-size=%dG", vhostuserDev.CacheSize)) + if vhostuserDev.SharedVersions { + devParams = append(devParams, "versiontable=/dev/shm/fuse_shared_versions") + } default: return nil } From 5712b1198ec3d28acd4727df7924ec3038ce093f Mon Sep 17 00:00:00 2001 From: jiangpengfei Date: Tue, 12 Mar 2019 20:59:39 -0400 Subject: [PATCH 175/385] qemu/qmp: fix readLoop() reuse scanner.Bytes() underlying array problem Since []byte channel type transfer slice info(include slice underlying array pointer, len, cap) between channel sender and receiver. scanner.Bytes() function returned slice's underlying array may point to data that will be overwritten by a subsequent call to Scan(reference from: https://golang.org/pkg/bufio/#Scanner.Bytes), which may make consecutive scan() call write the read data into the same underlying array which causes receiver read mixed data,so we need to copy line to new allocated space and then send to channel receiver to solve this problem. Fixes: #88 Signed-off-by: jiangpengfei --- qemu/qmp.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 9b21d9648..28a76b0b0 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -247,7 +247,16 @@ func (q *QMP) readLoop(fromVMCh chan<- []byte) { if q.cfg.Logger.V(1) { q.cfg.Logger.Infof("%s", string(line)) } - fromVMCh <- line + + // Since []byte channel type transfer slice info(include slice underlying array pointer, len, cap) + // between channel sender and receiver. scanner.Bytes() returned slice's underlying array + // may point to data that will be overwritten by a subsequent call to Scan(reference from: + // https://golang.org/pkg/bufio/#Scanner.Bytes), which may make receiver read mixed data, + // so we need to copy line to new allocated space and then send to channel receiver + sendLine := make([]byte, len(line)) + copy(sendLine, line) + + fromVMCh <- sendLine } close(fromVMCh) } From 694a7b1c6119668da26d7c5ac223cdb5f6632149 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Thu, 4 Apr 2019 10:35:24 -0600 Subject: [PATCH 176/385] qemu/qmp: re-implement mainLoop In newer versions of QEMU, like 4.0-rc2, QMP events can be thrown even before the QMP-version response, one example of this behaviour is when a virtio serial is closed and a VSERPORT_CHANGE event is thrown. Re-implement mainLoop to check the data received from the VM channel, since it's not a guarantee that the first data read from the VM channel is the QMP version. fixes https://github.com/kata-containers/runtime/issues/1474 Signed-off-by: Julio Montes --- qemu/qmp.go | 55 ++++++++++++++++++++------------------------- qemu/qmp_test.go | 58 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+), 31 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 9b21d9648..f35aa3c31 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -459,7 +459,6 @@ func (q *QMP) parseVersion(version []byte) *QMPVersion { for _, k := range []string{"QMP", "version", "qemu"} { versionMap, _ = versionMap[k].(map[string]interface{}) if versionMap == nil { - q.cfg.Logger.Errorf("Invalid QMP greeting: %s", string(version)) return nil } } @@ -530,31 +529,9 @@ func (q *QMP) mainLoop() { close(q.disconnectedCh) }() - var version []byte var cmdDoneCh <-chan struct{} - -DONE: - for { - var ok bool - select { - case cmd, ok := <-q.cmdCh: - if !ok { - return - } - _ = cmdQueue.PushBack(&cmd) - case version, ok = <-fromVMCh: - if !ok { - return - } - if cmdQueue.Len() >= 1 { - q.writeNextQMPCommand(cmdQueue) - cmdDoneCh = currentCommandDoneCh(cmdQueue) - } - break DONE - } - } - - q.connectedCh <- q.parseVersion(version) + var version *QMPVersion + ready := false for { select { @@ -564,21 +541,37 @@ DONE: } _ = cmdQueue.PushBack(&cmd) - // We only want to execute the new cmd if there - // are no other commands pending. If there are - // commands pending our new command will get - // run when the pending commands complete. - - if cmdQueue.Len() == 1 { + // We only want to execute the new cmd if QMP is + // ready and there are no other commands pending. + // If there are commands pending our new command + // will get run when the pending commands complete. + if ready && cmdQueue.Len() == 1 { q.writeNextQMPCommand(cmdQueue) cmdDoneCh = currentCommandDoneCh(cmdQueue) } + case line, ok := <-fromVMCh: if !ok { return } + + if !ready { + // Not ready yet. Check if line is the QMP version. + // Sometimes QMP events are thrown before the QMP version, + // hence it's not a guarantee that the first data read from + // the channel is the QMP version. + version = q.parseVersion(line) + if version != nil { + q.connectedCh <- version + ready = true + } + // Do not process QMP input to avoid deadlocks. + break + } + q.processQMPInput(line, cmdQueue) cmdDoneCh = currentCommandDoneCh(cmdQueue) + case <-cmdDoneCh: q.cancelCurrentCommand(cmdQueue) cmdDoneCh = currentCommandDoneCh(cmdQueue) diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index b12c798a1..61710669f 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -103,6 +103,19 @@ func newQMPTestCommandBuffer(t *testing.T) *qmpTestCommandBuffer { return b } +func newQMPTestCommandBufferNoGreeting(t *testing.T) *qmpTestCommandBuffer { + b := &qmpTestCommandBuffer{ + newDataCh: make(chan []byte, 1), + t: t, + buf: bytes.NewBuffer([]byte{}), + forceFail: make(chan struct{}), + } + b.cmds = make([]qmpTestCommand, 0, 8) + b.events = make([]qmpTestEvent, 0, 8) + b.results = make([]qmpTestResult, 0, 8) + return b +} + func (b *qmpTestCommandBuffer) startEventLoop(wg *sync.WaitGroup) { wg.Add(1) go func() { @@ -1504,3 +1517,48 @@ func TestExecuteNVDIMMDeviceAdd(t *testing.T) { q.Shutdown() <-disconnectedCh } + +func TestMainLoopEventBeforeGreeting(t *testing.T) { + const ( + seconds = 1352167040730 + microseconds = 123456 + ) + + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBufferNoGreeting(t) + + // Add events + var wg sync.WaitGroup + buf.AddEvent("VSERPORT_CHANGE", time.Millisecond*100, + map[string]interface{}{ + "open": false, + "id": "channel0", + }, + map[string]interface{}{ + "seconds": seconds, + "microseconds": microseconds, + }) + buf.AddEvent("POWERDOWN", time.Millisecond*200, nil, + map[string]interface{}{ + "seconds": seconds, + "microseconds": microseconds, + }) + + // register a channel to receive events + eventCh := make(chan QMPEvent) + cfg := QMPConfig{EventCh: eventCh, Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + + // Start events, this will lead to a deadlock if mainLoop is not implemented + // correctly + buf.startEventLoop(&wg) + wg.Wait() + + // Send greeting and check version + buf.newDataCh <- []byte(qmpHello) + checkVersion(t, connectedCh) + + q.Shutdown() + <-disconnectedCh +} From 058cda06036dfae0c4ba9db70fb3047cb11f9313 Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi Date: Tue, 9 Apr 2019 10:21:43 +0100 Subject: [PATCH 177/385] qemu: use MiB instead of Gib for virtio-fs cache size QEMU supports finer-grained units than GiB. Change the cache size to MiB so users have more control over the cache size. Note that changing the semantics of the CacheSize field is fine because there are no users of this API yet. kata-runtime will be the first users and prefers MiB instead of GiB. Signed-off-by: Stefan Hajnoczi --- qemu/qemu.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index c2f734bc5..16e268d68 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -748,7 +748,7 @@ type VhostUserDevice struct { TypeDevID string //variable QEMU parameter based on value of VhostUserType Address string //used for MAC address in net case Tag string //virtio-fs volume id for mounting inside guest - CacheSize uint32 //virtio-fs DAX cache size in GiB + CacheSize uint32 //virtio-fs DAX cache size in MiB SharedVersions bool //enable virtio-fs shared version metadata VhostUserType DeviceDriver @@ -824,7 +824,7 @@ func (vhostuserDev VhostUserDevice) QemuParams(config *Config) []string { devParams = append(devParams, string(driver)) devParams = append(devParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) devParams = append(devParams, fmt.Sprintf("tag=%s", vhostuserDev.Tag)) - devParams = append(devParams, fmt.Sprintf("cache-size=%dG", vhostuserDev.CacheSize)) + devParams = append(devParams, fmt.Sprintf("cache-size=%dM", vhostuserDev.CacheSize)) if vhostuserDev.SharedVersions { devParams = append(devParams, "versiontable=/dev/shm/fuse_shared_versions") } From 7d3deea4fc16adce85593e9debdc24d8010a1fba Mon Sep 17 00:00:00 2001 From: lifupan Date: Mon, 15 Apr 2019 23:14:49 -0400 Subject: [PATCH 178/385] qemu: Add a virtio-blk-pci device driver support Add a pci bus based virtio block device driver support. Fixes:#92 Signed-off-by: lifupan --- qemu/qemu.go | 3 +++ qemu/qemu_arch_base.go | 1 + 2 files changed, 4 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index 16e268d68..a360ec921 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -71,6 +71,9 @@ const ( // VirtioBlock is the block device driver. VirtioBlock DeviceDriver = "virtio-blk" + // VirtioBlockPCI is a pci bus block device driver + VirtioBlockPCI DeviceDriver = "virtio-blk-pci" + // Console is the console device driver. Console DeviceDriver = "virtconsole" diff --git a/qemu/qemu_arch_base.go b/qemu/qemu_arch_base.go index 521741fa6..ca9d78e73 100644 --- a/qemu/qemu_arch_base.go +++ b/qemu/qemu_arch_base.go @@ -47,6 +47,7 @@ var isVirtioPCI = map[DeviceDriver]bool{ VirtioNetPCI: true, VirtioSerial: true, VirtioBlock: true, + VirtioBlockPCI: true, Console: false, VirtioSerialPort: false, VHostVSock: true, From f0f18dd0f2c1447255e6e42121ab0e8ffd03286b Mon Sep 17 00:00:00 2001 From: Peng Tao Date: Mon, 20 May 2019 22:11:10 -0700 Subject: [PATCH 179/385] qmp: add virtio-blk multiqueue Hotplug virtio-blk with multiqueue support. Signed-off-by: Peng Tao --- qemu/qmp.go | 10 +++++++--- qemu/qmp_test.go | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 1e2542fb6..bada7bc4e 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -25,6 +25,7 @@ import ( "io" "net" "os" + "strconv" "syscall" "time" @@ -1058,12 +1059,12 @@ func (q *QMP) ExecuteDeviceDel(ctx context.Context, devID string) error { // ExecutePCIDeviceAdd is the PCI version of ExecuteDeviceAdd. This function can be used // to hot plug PCI devices on PCI(E) bridges, unlike ExecuteDeviceAdd this function receive the -// device address on its parent bus. bus is optional. shared denotes if the drive can be shared -// allowing it to be passed more than once. +// device address on its parent bus. bus is optional. queues specifies the number of queues of +// a block device. shared denotes if the drive can be shared allowing it to be passed more than once. // disableModern indicates if virtio version 1.0 should be replaced by the // former version 0.9, as there is a KVM bug that occurs when using virtio // 1.0 in nested environments. -func (q *QMP) ExecutePCIDeviceAdd(ctx context.Context, blockdevID, devID, driver, addr, bus, romfile string, shared, disableModern bool) error { +func (q *QMP) ExecutePCIDeviceAdd(ctx context.Context, blockdevID, devID, driver, addr, bus, romfile string, queues int, shared, disableModern bool) error { args := map[string]interface{}{ "id": devID, "driver": driver, @@ -1076,6 +1077,9 @@ func (q *QMP) ExecutePCIDeviceAdd(ctx context.Context, blockdevID, devID, driver if shared && (q.version.Major > 2 || (q.version.Major == 2 && q.version.Minor >= 10)) { args["share-rw"] = "on" } + if queues > 0 { + args["num-queues"] = strconv.Itoa(queues) + } if isVirtioPCI[DeviceDriver(driver)] { args["romfile"] = romfile diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 61710669f..5b11e94f6 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1025,7 +1025,7 @@ func TestQMPPCIDeviceAdd(t *testing.T) { blockdevID := fmt.Sprintf("drive_%s", volumeUUID) devID := fmt.Sprintf("device_%s", volumeUUID) err := q.ExecutePCIDeviceAdd(context.Background(), blockdevID, devID, - "virtio-blk-pci", "0x1", "", "", true, false) + "virtio-blk-pci", "0x1", "", "", 1, true, false) if err != nil { t.Fatalf("Unexpected error %v", err) } From f695ddf8f36d13b1b3e1c6fa2f5af926953ea9a0 Mon Sep 17 00:00:00 2001 From: Peng Tao Date: Fri, 14 Jun 2019 00:24:26 -0700 Subject: [PATCH 180/385] qemu: add migration incoming defer support qemu commandline supports -incoming defer and qmp supports migrate-incoming uri. Signed-off-by: Peng Tao --- qemu/qemu.go | 4 ++++ qemu/qemu_test.go | 10 ++++++++++ qemu/qmp.go | 8 ++++++++ qemu/qmp_test.go | 17 +++++++++++++++++ 4 files changed, 39 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index a360ec921..f281d4ecb 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1397,6 +1397,8 @@ const ( MigrationFD = 1 // MigrationExec is the migration incoming type based on commands. MigrationExec = 2 + // MigrationDefer is the defer incoming type + MigrationDefer = 3 ) // Incoming controls migration source preparation @@ -1779,6 +1781,8 @@ func (config *Config) appendIncoming() { case MigrationFD: chFDs := config.appendFDs([]*os.File{config.Incoming.FD}) uri = fmt.Sprintf("fd:%d", chFDs[0]) + case MigrationDefer: + uri = "defer" default: return } diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 2af0ded79..f5692f501 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -725,6 +725,16 @@ func TestAppendIncomingExec(t *testing.T) { testAppend(source, incomingStringExec, t) } +var incomingStringDefer = "-S -incoming defer" + +func TestAppendIncomingDefer(t *testing.T) { + source := Incoming{ + MigrationType: MigrationDefer, + } + + testAppend(source, incomingStringDefer, t) +} + func TestBadName(t *testing.T) { c := &Config{} c.appendName() diff --git a/qemu/qmp.go b/qemu/qmp.go index bada7bc4e..df2ab2ed5 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -1457,3 +1457,11 @@ func (q *QMP) ExecuteQueryMigration(ctx context.Context) (MigrationStatus, error return status, nil } + +// ExecuteMigrationIncoming start migration from incoming uri. +func (q *QMP) ExecuteMigrationIncoming(ctx context.Context, uri string) error { + args := map[string]interface{}{ + "uri": uri, + } + return q.executeCommand(ctx, "migrate-incoming", args, nil) +} diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 5b11e94f6..092542035 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1349,6 +1349,23 @@ func TestExecuteVirtSerialPortAdd(t *testing.T) { <-disconnectedCh } +// Check migration incoming +func TestExecuteMigrationIncoming(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("migrate-incoming", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + err := q.ExecuteMigrationIncoming(context.Background(), "uri") + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} + // Checks migration status func TestExecuteQueryMigration(t *testing.T) { connectedCh := make(chan *QMPVersion) From 0c900f596ebab7d13201177280e396af4840d61b Mon Sep 17 00:00:00 2001 From: Ganesh Maharaj Mahalingam Date: Tue, 18 Jun 2019 06:16:18 -0700 Subject: [PATCH 181/385] Allow sharing of memory backend file Hotplugged memory could be backed by a file on the host with sharing turned on. This change allows qmp to pass that option to a govmm. Signed-off-by: Ganesh Maharaj Mahalingam --- qemu/qmp.go | 5 ++++- qemu/qmp_test.go | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index df2ab2ed5..359e236e6 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -1285,7 +1285,7 @@ func (q *QMP) ExecQueryCpusFast(ctx context.Context) ([]CPUInfoFast, error) { } // ExecHotplugMemory adds size of MiB memory to the guest -func (q *QMP) ExecHotplugMemory(ctx context.Context, qomtype, id, mempath string, size int) error { +func (q *QMP) ExecHotplugMemory(ctx context.Context, qomtype, id, mempath string, size int, share bool) error { props := map[string]interface{}{"size": uint64(size) << 20} args := map[string]interface{}{ "qom-type": qomtype, @@ -1295,6 +1295,9 @@ func (q *QMP) ExecHotplugMemory(ctx context.Context, qomtype, id, mempath string if mempath != "" { props["mem-path"] = mempath } + if share { + props["share"] = true + } err := q.executeCommand(ctx, "object-add", args, nil) if err != nil { return err diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 092542035..125743f47 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1273,7 +1273,7 @@ func TestExecHotplugMemory(t *testing.T) { cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) - err := q.ExecHotplugMemory(context.Background(), "memory-backend-ram", "mem0", "", 128) + err := q.ExecHotplugMemory(context.Background(), "memory-backend-ram", "mem0", "", 128, true) if err != nil { t.Fatalf("Unexpected error: %v\n", err) } From 9cf98da0be6ba09161259910f9d9a4ec0428b476 Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Mon, 1 Jul 2019 13:43:00 +0200 Subject: [PATCH 182/385] s390x: add devno support DevNo is used to identify the ccw device for s390x systems Signed-off-by: Alice Frosi --- qemu/qemu.go | 69 ++++++++++++++++++++++++++++++++++++++++++ qemu/qemu_arch_base.go | 3 ++ qemu/qemus390x.go | 20 ++++++++++++ qemu/qmp.go | 18 ++++++++--- 4 files changed, 106 insertions(+), 4 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index f281d4ecb..31943e0a1 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -249,6 +249,9 @@ type FSDevice struct { // ROMFile specifies the ROM file being used for this device. ROMFile string + + // DevNo identifies the ccw devices for s390x architecture + DevNo string } // Valid returns true if the FSDevice structure is valid and complete. @@ -275,6 +278,9 @@ func (fsdev FSDevice) QemuParams(config *Config) []string { if isVirtioPCI[fsdev.Driver] { deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", fsdev.ROMFile)) } + if isVirtioCCW[fsdev.Driver] { + deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", fsdev.DevNo)) + } fsParams = append(fsParams, string(fsdev.FSDriver)) fsParams = append(fsParams, fmt.Sprintf(",id=%s", fsdev.ID)) @@ -335,6 +341,9 @@ type CharDevice struct { // ROMFile specifies the ROM file being used for this device. ROMFile string + + // DevNo identifies the ccw devices for s390x architecture + DevNo string } // Valid returns true if the CharDevice structure is valid and complete. @@ -368,6 +377,10 @@ func (cdev CharDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", cdev.ROMFile)) } + if isVirtioCCW[cdev.Driver] { + deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", cdev.DevNo)) + } + cdevParams = append(cdevParams, string(cdev.Backend)) cdevParams = append(cdevParams, fmt.Sprintf(",id=%s", cdev.ID)) if cdev.Backend == Socket { @@ -450,6 +463,9 @@ type NetDevice struct { // ROMFile specifies the ROM file being used for this device. ROMFile string + + // DevNo identifies the ccw devices for s390x architecture + DevNo string } // Valid returns true if the NetDevice structure is valid and complete. @@ -488,6 +504,7 @@ func (netdev NetDevice) mqParameter() string { vectors := len(netdev.FDs)*2 + 2 p = append(p, fmt.Sprintf(",vectors=%d", vectors)) } + return strings.Join(p, "") } @@ -526,6 +543,10 @@ func (netdev NetDevice) QemuDeviceParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", netdev.ROMFile)) } + if isVirtioCCW[netdev.Driver] { + deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", netdev.DevNo)) + } + return deviceParams } @@ -617,6 +638,9 @@ type SerialDevice struct { // ROMFile specifies the ROM file being used for this device. ROMFile string + + // DevNo identifies the ccw devices for s390x architecture + DevNo string } // Valid returns true if the SerialDevice structure is valid and complete. @@ -642,6 +666,10 @@ func (dev SerialDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", dev.ROMFile)) } + if isVirtioCCW[dev.Driver] { + deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", dev.DevNo)) + } + qemuParams = append(qemuParams, "-device") qemuParams = append(qemuParams, strings.Join(deviceParams, "")) @@ -694,6 +722,9 @@ type BlockDevice struct { // ROMFile specifies the ROM file being used for this device. ROMFile string + + // DevNo identifies the ccw devices for s390x architecture + DevNo string } // Valid returns true if the BlockDevice structure is valid and complete. @@ -728,6 +759,10 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", blkdev.ROMFile)) } + if isVirtioCCW[blkdev.Driver] { + deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", blkdev.DevNo)) + } + blkParams = append(blkParams, fmt.Sprintf("id=%s", blkdev.ID)) blkParams = append(blkParams, fmt.Sprintf(",file=%s", blkdev.File)) blkParams = append(blkParams, fmt.Sprintf(",aio=%s", blkdev.AIO)) @@ -860,6 +895,9 @@ type VFIODevice struct { // ROMFile specifies the ROM file being used for this device. ROMFile string + + // DevNo identifies the ccw devices for s390x architecture + DevNo string } // Valid returns true if the VFIODevice structure is valid and complete. @@ -879,6 +917,10 @@ func (vfioDev VFIODevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", vfioDev.ROMFile)) } + if isVirtioCCW[driver] { + deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", vfioDev.DevNo)) + } + qemuParams = append(qemuParams, "-device") qemuParams = append(qemuParams, strings.Join(deviceParams, "")) @@ -903,6 +945,9 @@ type SCSIController struct { // ROMFile specifies the ROM file being used for this device. ROMFile string + + // DevNo identifies the ccw devices for s390x architecture + DevNo string } // Valid returns true if the SCSIController structure is valid and complete. @@ -933,6 +978,10 @@ func (scsiCon SCSIController) QemuParams(config *Config) []string { devParams = append(devParams, fmt.Sprintf("romfile=%s", scsiCon.ROMFile)) } + if isVirtioCCW[driver] { + devParams = append(devParams, fmt.Sprintf("devno=%s", scsiCon.DevNo)) + } + qemuParams = append(qemuParams, "-device") qemuParams = append(qemuParams, strings.Join(devParams, ",")) @@ -1041,6 +1090,9 @@ type VSOCKDevice struct { // ROMFile specifies the ROM file being used for this device. ROMFile string + + // DevNo identifies the ccw devices for s390x architecture + DevNo string } const ( @@ -1086,6 +1138,10 @@ func (vsock VSOCKDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", vsock.ROMFile)) } + if isVirtioCCW[driver] { + deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", vsock.DevNo)) + } + qemuParams = append(qemuParams, "-device") qemuParams = append(qemuParams, strings.Join(deviceParams, "")) @@ -1104,6 +1160,8 @@ type RngDevice struct { Period uint // ROMFile specifies the ROM file being used for this device. ROMFile string + // DevNo identifies the ccw devices for s390x architecture + DevNo string } // Valid returns true if the RngDevice structure is valid and complete. @@ -1131,6 +1189,10 @@ func (v RngDevice) QemuParams(_ *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", v.ROMFile)) } + if isVirtioCCW[driver] { + deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", v.DevNo)) + } + if v.Filename != "" { objectParams = append(objectParams, "filename="+v.Filename) } @@ -1160,6 +1222,9 @@ type BalloonDevice struct { // ROMFile specifies the ROM file being used for this device. ROMFile string + + // DevNo identifies the ccw devices for s390x architecture + DevNo string } // QemuParams returns the qemu parameters built out of the BalloonDevice. @@ -1178,6 +1243,10 @@ func (b BalloonDevice) QemuParams(_ *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", b.ROMFile)) } + if isVirtioCCW[driver] { + deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", b.DevNo)) + } + if b.DeflateOnOOM { deviceParams = append(deviceParams, "deflate-on-oom=on") } else { diff --git a/qemu/qemu_arch_base.go b/qemu/qemu_arch_base.go index ca9d78e73..a7bbed558 100644 --- a/qemu/qemu_arch_base.go +++ b/qemu/qemu_arch_base.go @@ -61,6 +61,9 @@ var isVirtioPCI = map[DeviceDriver]bool{ PCIePCIBridgeDriver: true, } +// isVirtioCCW is a dummy map to return always false on no-s390x arch +var isVirtioCCW = map[DeviceDriver]bool{} + // QemuNetdevParam converts to the QEMU -netdev parameter notation func (n NetDeviceType) QemuNetdevParam() string { switch n { diff --git a/qemu/qemus390x.go b/qemu/qemus390x.go index 7c45c3edd..c94d53a28 100644 --- a/qemu/qemus390x.go +++ b/qemu/qemus390x.go @@ -63,6 +63,26 @@ var isVirtioPCI = map[DeviceDriver]bool{ PCIePCIBridgeDriver: false, } +// isVirtioCCW returns if the device is a ccw device +var isVirtioCCW = map[DeviceDriver]bool{ + NVDIMM: false, + Virtio9P: true, + VirtioNetCCW: true, + VirtioSerial: true, + VirtioBlock: true, + Console: false, + VirtioSerialPort: false, + VHostVSock: true, + VirtioRng: true, + VirtioBalloon: true, + VhostUserSCSI: false, + VhostUserBlk: false, + Vfio: true, + VirtioScsi: true, + PCIBridgeDriver: false, + PCIePCIBridgeDriver: false, +} + // QemuDeviceParam converts to the QEMU -device parameter notation // This function has been reimplemented for the s390x architecture to deal // with the VHOSTUSER case. Vhost user devices are not implemented on s390x diff --git a/qemu/qmp.go b/qemu/qmp.go index 359e236e6..665f69e9d 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -822,9 +822,13 @@ func (q *QMP) ExecuteDeviceAdd(ctx context.Context, blockdevID, devID, driver, b "driver": driver, "drive": blockdevID, } - if bus != "" { + + if isVirtioCCW[DeviceDriver(driver)] { + args["devno"] = bus + } else if bus != "" { args["bus"] = bus } + if shared && (q.version.Major > 2 || (q.version.Major == 2 && q.version.Minor >= 10)) { args["share-rw"] = "on" } @@ -870,8 +874,14 @@ func (q *QMP) ExecuteSCSIDeviceAdd(ctx context.Context, blockdevID, devID, drive "id": devID, "driver": driver, "drive": blockdevID, - "bus": bus, } + + if isVirtioCCW[DeviceDriver(driver)] { + args["devno"] = bus + } else { + args["bus"] = bus + } + if scsiID >= 0 { args["scsi-id"] = scsiID } @@ -1023,13 +1033,13 @@ func (q *QMP) ExecuteNetPCIDeviceAdd(ctx context.Context, netdevID, devID, macAd // using the device_add command. devID is the id of the device to add. // Must be valid QMP identifier. netdevID is the id of nic added by previous netdev_add. // queues is the number of queues of a nic. -func (q *QMP) ExecuteNetCCWDeviceAdd(ctx context.Context, netdevID, devID, macAddr, addr, bus string, queues int) error { +func (q *QMP) ExecuteNetCCWDeviceAdd(ctx context.Context, netdevID, devID, macAddr, bus string, queues int) error { args := map[string]interface{}{ "id": devID, "driver": VirtioNetCCW, "netdev": netdevID, "mac": macAddr, - "addr": addr, + "devno": bus, } if queues > 0 { From 65cc343f7b8e8cfc17df23d1f5611b0bc57ba1b9 Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Mon, 1 Jul 2019 13:50:20 +0200 Subject: [PATCH 183/385] test: add devno in the tests for s390x Add test with devno param Signed-off-by: Alice Frosi --- qemu/qemu_arch_base_test.go | 2 -- qemu/qemu_test.go | 55 +++++++++++++++++++++++++++++++++++-- qemu/qemus390x_test.go | 27 +++++++++--------- qemu/qmp_test.go | 2 +- 4 files changed, 67 insertions(+), 19 deletions(-) diff --git a/qemu/qemu_arch_base_test.go b/qemu/qemu_arch_base_test.go index 93eac3ee5..108a0bfdb 100644 --- a/qemu/qemu_arch_base_test.go +++ b/qemu/qemu_arch_base_test.go @@ -24,8 +24,6 @@ var ( deviceFSString = "-device virtio-9p-pci,disable-modern=true,fsdev=workload9p,mount_tag=rootfs,romfile=efi-virtio.rom -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none" deviceNetworkString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,disable-modern=true,romfile=efi-virtio.rom" deviceNetworkStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,disable-modern=true,mq=on,vectors=6,romfile=efi-virtio.rom" - deviceNetworkPCIString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true,romfile=efi-virtio.rom" - deviceNetworkPCIStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true,mq=on,vectors=6,romfile=efi-virtio.rom" deviceSerialString = "-device virtio-serial-pci,disable-modern=true,id=serial0,romfile=efi-virtio.rom" deviceVhostUserNetString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -netdev type=vhost-user,id=net1,chardev=char1,vhostforce -device virtio-net-pci,netdev=net1,mac=00:11:22:33:44:55,romfile=efi-virtio.rom" deviceVSOCKString = "-device vhost-vsock-pci,disable-modern=true,id=vhost-vsock-pci0,guest-cid=4,romfile=efi-virtio.rom" diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index f5692f501..c9538e836 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -27,6 +27,13 @@ import ( const agentUUID = "4cb19522-1e18-439a-883a-f9b2a3a95f5e" const volumeUUID = "67d86208-b46c-4465-9018-e14187d4010" +var ( + deviceNetworkPCIString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true,romfile=efi-virtio.rom" + deviceNetworkPCIStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true,mq=on,vectors=6,romfile=efi-virtio.rom" +) + +const DevNo = "fe.1.1234" + func testAppend(structure interface{}, expected string, t *testing.T) { var config Config testConfigAppend(&config, structure, expected, t) @@ -136,6 +143,10 @@ func TestAppendDeviceFS(t *testing.T) { ROMFile: "efi-virtio.rom", } + if isVirtioCCW[fsdev.Driver] { + fsdev.DevNo = DevNo + } + testAppend(fsdev, deviceFSString, t) } @@ -153,6 +164,10 @@ func TestAppendDeviceNetwork(t *testing.T) { ROMFile: "efi-virtio.rom", } + if isVirtioCCW[netdev.Driver] { + netdev.DevNo = DevNo + } + testAppend(netdev, deviceNetworkString, t) } @@ -180,6 +195,9 @@ func TestAppendDeviceNetworkMq(t *testing.T) { DisableModern: true, ROMFile: "efi-virtio.rom", } + if isVirtioCCW[netdev.Driver] { + netdev.DevNo = DevNo + } testAppend(netdev, deviceNetworkStringMq, t) } @@ -201,6 +219,10 @@ func TestAppendDeviceNetworkPCI(t *testing.T) { ROMFile: romfile, } + if !isVirtioPCI[netdev.Driver] { + t.Skip("Test valid only for PCI devices") + } + testAppend(netdev, deviceNetworkPCIString, t) } @@ -231,6 +253,10 @@ func TestAppendDeviceNetworkPCIMq(t *testing.T) { ROMFile: romfile, } + if !isVirtioPCI[netdev.Driver] { + t.Skip("Test valid only for PCI devices") + } + testAppend(netdev, deviceNetworkPCIStringMq, t) } @@ -241,6 +267,9 @@ func TestAppendDeviceSerial(t *testing.T) { DisableModern: true, ROMFile: romfile, } + if isVirtioCCW[sdev.Driver] { + sdev.DevNo = DevNo + } testAppend(sdev, deviceSerialString, t) } @@ -256,7 +285,9 @@ func TestAppendDeviceSerialPort(t *testing.T) { Path: "/tmp/char.sock", Name: "channel.0", } - + if isVirtioCCW[chardev.Driver] { + chardev.DevNo = DevNo + } testAppend(chardev, deviceSerialPortString, t) } @@ -273,7 +304,9 @@ func TestAppendDeviceBlock(t *testing.T) { DisableModern: true, ROMFile: romfile, } - + if isVirtioCCW[blkdev.Driver] { + blkdev.DevNo = DevNo + } testAppend(blkdev, deviceBlockString, t) } @@ -283,6 +316,10 @@ func TestAppendDeviceVFIO(t *testing.T) { ROMFile: romfile, } + if isVirtioCCW[Vfio] { + vfioDevice.DevNo = DevNo + } + testAppend(vfioDevice, deviceVFIOString, t) } @@ -295,6 +332,10 @@ func TestAppendVSOCK(t *testing.T) { ROMFile: romfile, } + if isVirtioCCW[VHostVSock] { + vsockDevice.DevNo = DevNo + } + testAppend(vsockDevice, deviceVSOCKString, t) } @@ -334,6 +375,11 @@ func TestAppendVirtioRng(t *testing.T) { ROMFile: romfile, } + if isVirtioCCW[VirtioRng] { + rngDevice.DevNo = DevNo + deviceString += ",devno=" + rngDevice.DevNo + } + testAppend(rngDevice, objectString+" "+deviceString, t) rngDevice.Filename = "/dev/urandom" @@ -389,6 +435,11 @@ func TestAppendDeviceSCSIController(t *testing.T) { ID: "foo", ROMFile: romfile, } + + if isVirtioCCW[VirtioScsi] { + scsiCon.DevNo = DevNo + } + testAppend(scsiCon, deviceSCSIControllerStr, t) scsiCon.Bus = "pci.0" diff --git a/qemu/qemus390x_test.go b/qemu/qemus390x_test.go index 1aac28434..6b87d7b40 100644 --- a/qemu/qemus390x_test.go +++ b/qemu/qemus390x_test.go @@ -23,17 +23,15 @@ import "testing" // -pci devices don't play well with Z hence replace them with corresponding -ccw devices // See https://wiki.qemu.org/Documentation/Platforms/S390X var ( - deviceFSString = "-device virtio-9p-ccw,fsdev=workload9p,mount_tag=rootfs -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none" - deviceNetworkString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef" - deviceNetworkStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef,mq=on" - deviceNetworkPCIString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff" - deviceNetworkPCIStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,mq=on" - deviceSerialString = "-device virtio-serial-ccw,id=serial0" - deviceVSOCKString = "-device vhost-vsock-ccw,id=vhost-vsock-pci0,guest-cid=4" - deviceVFIOString = "-device vfio-ccw,host=02:10.0" - deviceSCSIControllerStr = "-device virtio-scsi-ccw,id=foo" - deviceSCSIControllerBusAddrStr = "-device virtio-scsi-ccw,id=foo,bus=pci.0,addr=00:04.0,iothread=iothread1" - deviceBlockString = "-device virtio-blk,drive=hd0,scsi=off,config-wce=off -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none" + deviceFSString = "-device virtio-9p-ccw,fsdev=workload9p,mount_tag=rootfs,devno=" + DevNo + " -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none" + deviceNetworkString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef,devno=" + DevNo + deviceNetworkStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef,mq=on,devno=" + DevNo + deviceSerialString = "-device virtio-serial-ccw,id=serial0,devno=" + DevNo + deviceVSOCKString = "-device vhost-vsock-ccw,id=vhost-vsock-pci0,guest-cid=4,devno=" + DevNo + deviceVFIOString = "-device vfio-ccw,host=02:10.0,devno=" + DevNo + deviceSCSIControllerStr = "-device virtio-scsi-ccw,id=foo,devno=" + DevNo + deviceSCSIControllerBusAddrStr = "-device virtio-scsi-ccw,id=foo,bus=pci.0,addr=00:04.0,iothread=iothread1,devno=" + DevNo + deviceBlockString = "-device virtio-blk,drive=hd0,scsi=off,config-wce=off,devno=" + DevNo + " -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none" devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff" devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff" romfile = "" @@ -46,12 +44,13 @@ func TestAppendVirtioBalloon(t *testing.T) { var deviceString = "-device " + string(VirtioBalloon) deviceString += ",id=" + balloonDevice.ID + balloonDevice.DevNo = DevNo + devnoOptios := ",devno=" + DevNo var OnDeflateOnOMM = ",deflate-on-oom=on" var OffDeflateOnOMM = ",deflate-on-oom=off" - - testAppend(balloonDevice, deviceString+OffDeflateOnOMM, t) + testAppend(balloonDevice, deviceString+devnoOptios+OffDeflateOnOMM, t) balloonDevice.DeflateOnOOM = true - testAppend(balloonDevice, deviceString+OnDeflateOnOMM, t) + testAppend(balloonDevice, deviceString+devnoOptios+OnDeflateOnOMM, t) } diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 125743f47..8e4374e20 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -557,7 +557,7 @@ func TestQMPNetCCWDeviceAdd(t *testing.T) { cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) - err := q.ExecuteNetCCWDeviceAdd(context.Background(), "br0", "virtio-0", "02:42:ac:11:00:02", "0x7", "", 8) + err := q.ExecuteNetCCWDeviceAdd(context.Background(), "br0", "virtio-0", "02:42:ac:11:00:02", DevNo, 8) if err != nil { t.Fatalf("Unexpected error %v", err) } From 713d0d94066fe296cde0436f5d55ab8ee3e14f83 Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Fri, 17 May 2019 11:42:08 +0200 Subject: [PATCH 184/385] s390x: add virtio-blk-ccw type In order to hotplug virtio-blk, on s390x the CCW device drivers is used instad of PCI. Signed-off-by: Alice Frosi --- qemu/qemu.go | 3 +++ qemu/qemus390x.go | 1 + 2 files changed, 4 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index 31943e0a1..0d46e8479 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -103,6 +103,9 @@ const ( // PCIePCIBridgeDriver represents a PCIe to PCI bridge device type. PCIePCIBridgeDriver DeviceDriver = "pcie-pci-bridge" + + // VirtioBlockCCW is the CCW block device driver + VirtioBlockCCW DeviceDriver = "virtio-blk-ccw" ) // disableModern returns the parameters with the disable-modern option. diff --git a/qemu/qemus390x.go b/qemu/qemus390x.go index c94d53a28..c52edd67c 100644 --- a/qemu/qemus390x.go +++ b/qemu/qemus390x.go @@ -70,6 +70,7 @@ var isVirtioCCW = map[DeviceDriver]bool{ VirtioNetCCW: true, VirtioSerial: true, VirtioBlock: true, + VirtioBlockCCW: true, Console: false, VirtioSerialPort: false, VHostVSock: true, From 8fd28e23acab0f464096502403211b972240480a Mon Sep 17 00:00:00 2001 From: Ace-Tang Date: Thu, 4 Jul 2019 21:59:17 +0800 Subject: [PATCH 185/385] Support x-pci-vendor-id and x-pci-device-id pass to qemu since some vendor id like 1ded can not be identified by virtio-pci driver, so upper level need to pass a specified vendor id to qemu. the upper level will change unavailable id and pass it to qemu. Signed-off-by: Ace-Tang --- qemu/qemu.go | 12 ++++++++++++ qemu/qemu_arch_base_test.go | 2 +- qemu/qemu_test.go | 6 ++++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 0d46e8479..bd883f881 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -901,6 +901,12 @@ type VFIODevice struct { // DevNo identifies the ccw devices for s390x architecture DevNo string + + // VendorID specifies vendor id + VendorID string + + // DeviceID specifies device id + DeviceID string } // Valid returns true if the VFIODevice structure is valid and complete. @@ -917,6 +923,12 @@ func (vfioDev VFIODevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf("%s,host=%s", driver, vfioDev.BDF)) if isVirtioPCI[driver] { + if vfioDev.VendorID != "" { + deviceParams = append(deviceParams, fmt.Sprintf(",x-pci-vendor-id=%s", vfioDev.VendorID)) + } + if vfioDev.DeviceID != "" { + deviceParams = append(deviceParams, fmt.Sprintf(",x-pci-device-id=%s", vfioDev.DeviceID)) + } deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", vfioDev.ROMFile)) } diff --git a/qemu/qemu_arch_base_test.go b/qemu/qemu_arch_base_test.go index 108a0bfdb..76714a482 100644 --- a/qemu/qemu_arch_base_test.go +++ b/qemu/qemu_arch_base_test.go @@ -27,7 +27,7 @@ var ( deviceSerialString = "-device virtio-serial-pci,disable-modern=true,id=serial0,romfile=efi-virtio.rom" deviceVhostUserNetString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -netdev type=vhost-user,id=net1,chardev=char1,vhostforce -device virtio-net-pci,netdev=net1,mac=00:11:22:33:44:55,romfile=efi-virtio.rom" deviceVSOCKString = "-device vhost-vsock-pci,disable-modern=true,id=vhost-vsock-pci0,guest-cid=4,romfile=efi-virtio.rom" - deviceVFIOString = "-device vfio-pci,host=02:10.0,romfile=efi-virtio.rom" + deviceVFIOString = "-device vfio-pci,host=02:10.0,x-pci-vendor-id=0x1234,x-pci-device-id=0x5678,romfile=efi-virtio.rom" deviceSCSIControllerStr = "-device virtio-scsi-pci,id=foo,disable-modern=false,romfile=efi-virtio.rom" deviceSCSIControllerBusAddrStr = "-device virtio-scsi-pci,id=foo,bus=pci.0,addr=00:04.0,disable-modern=true,iothread=iothread1,romfile=efi-virtio.rom" deviceVhostUserSCSIString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -device vhost-user-scsi-pci,id=scsi1,chardev=char1,romfile=efi-virtio.rom" diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index c9538e836..5307c2d9b 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -312,8 +312,10 @@ func TestAppendDeviceBlock(t *testing.T) { func TestAppendDeviceVFIO(t *testing.T) { vfioDevice := VFIODevice{ - BDF: "02:10.0", - ROMFile: romfile, + BDF: "02:10.0", + ROMFile: romfile, + VendorID: "0x1234", + DeviceID: "0x5678", } if isVirtioCCW[Vfio] { From a5c119086ac5db5ddfa9ae13c60b292f6f4b5721 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Mon, 15 Jul 2019 17:35:07 +0000 Subject: [PATCH 186/385] qemu: support x86 SMP die In QEMU 4.1 the CPU topology for x86 will change to: `socket > die > core > thread`. Add `die-id` field to `CPUProperties` and include it in CPU hotplugging Signed-off-by: Julio Montes --- qemu/qmp.go | 9 ++++++++- qemu/qmp_test.go | 8 +++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 665f69e9d..db75ba7c8 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -149,6 +149,7 @@ type QMPVersion struct { type CPUProperties struct { Node int `json:"node-id"` Socket int `json:"socket-id"` + Die int `json:"die-id"` Core int `json:"core-id"` Thread int `json:"thread-id"` } @@ -1162,7 +1163,7 @@ func (q *QMP) ExecutePCIVFIOMediatedDeviceAdd(ctx context.Context, devID, sysfsd // node/board the CPU belongs to, coreID is the core number within socket the CPU belongs to, threadID is the // thread number within core the CPU belongs to. Note that socketID and threadID are not a requirement for // architecures like ppc64le. -func (q *QMP) ExecuteCPUDeviceAdd(ctx context.Context, driver, cpuID, socketID, coreID, threadID, romfile string) error { +func (q *QMP) ExecuteCPUDeviceAdd(ctx context.Context, driver, cpuID, socketID, dieID, coreID, threadID, romfile string) error { args := map[string]interface{}{ "driver": driver, "id": cpuID, @@ -1177,6 +1178,12 @@ func (q *QMP) ExecuteCPUDeviceAdd(ctx context.Context, driver, cpuID, socketID, args["thread-id"] = threadID } + if q.version.Major > 4 || (q.version.Major == 4 && q.version.Minor >= 1) { + if dieID != "" { + args["die-id"] = dieID + } + } + if isVirtioPCI[DeviceDriver(driver)] { args["romfile"] = romfile } diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 8e4374e20..7598c8cd0 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1069,9 +1069,14 @@ func TestQMPCPUDeviceAdd(t *testing.T) { driver := "qemu64-x86_64-cpu" cpuID := "cpu-0" socketID := "0" + dieID := "0" coreID := "1" threadID := "0" - err := q.ExecuteCPUDeviceAdd(context.Background(), driver, cpuID, socketID, coreID, threadID, "") + q.version = &QMPVersion{ + Major: 4, + Minor: 1, + } + err := q.ExecuteCPUDeviceAdd(context.Background(), driver, cpuID, socketID, dieID, coreID, threadID, "") if err != nil { t.Fatalf("Unexpected error %v", err) } @@ -1090,6 +1095,7 @@ func TestQMPExecuteQueryHotpluggableCPUs(t *testing.T) { Properties: CPUProperties{ Node: 1, Socket: 3, + Die: 1, Core: 2, Thread: 4, }, From e0cf9d5c148c70877645acf82f9605938879f390 Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Mon, 22 Jul 2019 13:28:30 +0200 Subject: [PATCH 187/385] qmp: add checks for the CPU toplogy Support for function isSocketIDSupported, isThreadIDSupported and isDieIDSupported. The functions check if the cpu driver and the qemu version support the id parameter. Fixes: #102 Signed-off-by: Alice Frosi --- qemu/qmp.go | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index db75ba7c8..2a645ca24 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -1158,6 +1158,30 @@ func (q *QMP) ExecutePCIVFIOMediatedDeviceAdd(ctx context.Context, devID, sysfsd return q.executeCommand(ctx, "device_add", args, nil) } +// isSocketIDSupported returns if the cpu driver supports the socket id option +func isSocketIDSupported(driver string) bool { + if driver == "host-s390x-cpu" || driver == "host-powerpc64-cpu" { + return false + } + return true +} + +// isThreadIDSupported returns if the cpu driver supports the thread id option +func isThreadIDSupported(driver string) bool { + if driver == "host-s390x-cpu" || driver == "host-powerpc64-cpu" { + return false + } + return true +} + +// isDieIDSupported returns if the cpu driver and the qemu version support the die id option +func (q *QMP) isDieIDSupported(driver string) bool { + if (q.version.Major > 4 || (q.version.Major == 4 && q.version.Minor >= 1)) && driver == "host-x86_64-cpu" { + return true + } + return false +} + // ExecuteCPUDeviceAdd adds a CPU to a QEMU instance using the device_add command. // driver is the CPU model, cpuID must be a unique ID to identify the CPU, socketID is the socket number within // node/board the CPU belongs to, coreID is the core number within socket the CPU belongs to, threadID is the @@ -1170,15 +1194,15 @@ func (q *QMP) ExecuteCPUDeviceAdd(ctx context.Context, driver, cpuID, socketID, "core-id": coreID, } - if socketID != "" { + if socketID != "" && isSocketIDSupported(driver) { args["socket-id"] = socketID } - if threadID != "" { + if threadID != "" && isThreadIDSupported(driver) { args["thread-id"] = threadID } - if q.version.Major > 4 || (q.version.Major == 4 && q.version.Minor >= 1) { + if q.isDieIDSupported(driver) { if dieID != "" { args["die-id"] = dieID } From 68cdf64fe5070c8e25a938d563fbcced23571398 Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Thu, 25 Jul 2019 15:53:33 +0200 Subject: [PATCH 188/385] test: add cpu topology tests Add cpu driver types in TestQMPCPUDeviceAdd Signed-off-by: Alice Frosi --- qemu/qmp_test.go | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 7598c8cd0..11b33a0e0 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1059,29 +1059,32 @@ func TestQMPPCIVFIOMediatedDeviceAdd(t *testing.T) { // Checks that CPU are correctly added using device_add func TestQMPCPUDeviceAdd(t *testing.T) { - connectedCh := make(chan *QMPVersion) - disconnectedCh := make(chan struct{}) - buf := newQMPTestCommandBuffer(t) - buf.AddCommand("device_add", nil, "return", nil) - cfg := QMPConfig{Logger: qmpTestLogger{}} - q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) - checkVersion(t, connectedCh) - driver := "qemu64-x86_64-cpu" + drivers := []string{"host-x86_64-cpu", "host-s390x-cpu", "host-powerpc64-cpu"} cpuID := "cpu-0" socketID := "0" dieID := "0" coreID := "1" threadID := "0" - q.version = &QMPVersion{ + version := &QMPVersion{ Major: 4, Minor: 1, } - err := q.ExecuteCPUDeviceAdd(context.Background(), driver, cpuID, socketID, dieID, coreID, threadID, "") - if err != nil { - t.Fatalf("Unexpected error %v", err) + for _, d := range drivers { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("device_add", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + q.version = version + err := q.ExecuteCPUDeviceAdd(context.Background(), d, cpuID, socketID, dieID, coreID, threadID, "") + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh } - q.Shutdown() - <-disconnectedCh } // Checks that hotpluggable CPUs are listed correctly From 79e0d5333d1545898661e5038e08de8a59be3ea1 Mon Sep 17 00:00:00 2001 From: Ning Bo Date: Thu, 1 Aug 2019 09:05:27 +0800 Subject: [PATCH 189/385] qmp: support command 'query-qmp-schema' The upper hyervisor manager application maybe need to wait some QMP event to control boot sequence, but the event we wanted maybe not exist in some older version, so we need query all QMP ABI and check the event is supported or not. related: kata-containers/runtime#1918 Signed-off-by: Ning Bo --- qemu/qmp.go | 36 ++++++++++++++++++++++++++++++++++++ qemu/qmp_test.go | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) diff --git a/qemu/qmp.go b/qemu/qmp.go index 2a645ca24..186f3fadd 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -84,6 +84,9 @@ type QMPConfig struct { // logger is used by the qmpStart function and all the go routines // it spawns to log information. Logger QMPLog + + // specify the capacity of buffer used by receive QMP response. + MaxCapacity int } type qmpEventFilter struct { @@ -242,8 +245,19 @@ type MigrationStatus struct { XbzrleCache MigrationXbzrleCache `json:"xbzrle-cache,omitempty"` } +// SchemaInfo represents all QMP wire ABI +type SchemaInfo struct { + MetaType string `json:"meta-type"` + Name string `json:"name"` +} + func (q *QMP) readLoop(fromVMCh chan<- []byte) { scanner := bufio.NewScanner(q.conn) + if q.cfg.MaxCapacity > 0 { + buffer := make([]byte, q.cfg.MaxCapacity) + scanner.Buffer(buffer, q.cfg.MaxCapacity) + } + for scanner.Scan() { line := scanner.Bytes() if q.cfg.Logger.V(1) { @@ -260,6 +274,7 @@ func (q *QMP) readLoop(fromVMCh chan<- []byte) { fromVMCh <- sendLine } + q.cfg.Logger.Infof("sanner return error: %v", scanner.Err()) close(fromVMCh) } @@ -1509,3 +1524,24 @@ func (q *QMP) ExecuteMigrationIncoming(ctx context.Context, uri string) error { } return q.executeCommand(ctx, "migrate-incoming", args, nil) } + +// ExecQueryQmpSchema query all QMP wire ABI and returns a slice +func (q *QMP) ExecQueryQmpSchema(ctx context.Context) ([]SchemaInfo, error) { + response, err := q.executeCommandWithResponse(ctx, "query-qmp-schema", nil, nil, nil) + if err != nil { + return nil, err + } + + // convert response to json + data, err := json.Marshal(response) + if err != nil { + return nil, fmt.Errorf("unable to extract memory devices information: %v", err) + } + + var schemaInfo []SchemaInfo + if err = json.Unmarshal(data, &schemaInfo); err != nil { + return nil, fmt.Errorf("unable to convert json to schemaInfo: %v", err) + } + + return schemaInfo, nil +} diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 11b33a0e0..067665371 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1588,3 +1588,38 @@ func TestMainLoopEventBeforeGreeting(t *testing.T) { q.Shutdown() <-disconnectedCh } + +func TestQMPExecQueryQmpSchema(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + schemaInfo := []SchemaInfo{ + { + MetaType: "command", + Name: "object-add", + }, + { + MetaType: "event", + Name: "VSOCK_RUNNING", + }, + } + buf.AddCommand("query-qmp-schema", nil, "return", schemaInfo) + cfg := QMPConfig{ + Logger: qmpTestLogger{}, + MaxCapacity: 1024, + } + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + info, err := q.ExecQueryQmpSchema(context.Background()) + if err != nil { + t.Fatalf("Unexpected error: %v\n", err) + } + if len(schemaInfo) != 2 { + t.Fatalf("Expected schema infos length equals to 2\n") + } + if reflect.DeepEqual(info, schemaInfo) == false { + t.Fatalf("Expected %v equals to %v\n", info, schemaInfo) + } + q.Shutdown() + <-disconnectedCh +} From 30bfcaaa6d7e9fb92346554c57f1af443a44c8fe Mon Sep 17 00:00:00 2001 From: Peng Tao Date: Tue, 13 Aug 2019 01:42:29 -0700 Subject: [PATCH 190/385] qemu: add debug logfile When LogFile is specified, output debug log there. Signed-off-by: Peng Tao --- qemu/qemu.go | 11 +++++++++++ qemu/qemu_test.go | 5 ++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index bd883f881..e1394831e 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1557,6 +1557,9 @@ type Config struct { // PidFile is the -pidfile parameter PidFile string + // LogFile is the -D parameter + LogFile string + qemuParams []string } @@ -1880,6 +1883,13 @@ func (config *Config) appendPidFile() { } } +func (config *Config) appendLogFile() { + if config.LogFile != "" { + config.qemuParams = append(config.qemuParams, "-D") + config.qemuParams = append(config.qemuParams, config.LogFile) + } +} + // LaunchQemu can be used to launch a new qemu instance. // // The Config parameter contains a set of qemu parameters and settings. @@ -1906,6 +1916,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { config.appendIOThreads() config.appendIncoming() config.appendPidFile() + config.appendLogFile() if err := config.appendCPUs(); err != nil { return "", err diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 5307c2d9b..577660d78 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -712,7 +712,8 @@ func TestAppendQMPSocketServer(t *testing.T) { } var pidfile = "/run/vc/vm/iamsandboxid/pidfile" -var qemuString = "-name cc-qemu -cpu host -uuid " + agentUUID + " -pidfile " + pidfile +var logfile = "/run/vc/vm/iamsandboxid/logfile" +var qemuString = "-name cc-qemu -cpu host -uuid " + agentUUID + " -pidfile " + pidfile + " -D " + logfile func TestAppendStrings(t *testing.T) { config := Config{ @@ -721,12 +722,14 @@ func TestAppendStrings(t *testing.T) { UUID: agentUUID, CPUModel: "host", PidFile: pidfile, + LogFile: logfile, } config.appendName() config.appendCPUModel() config.appendUUID() config.appendPidFile() + config.appendLogFile() result := strings.Join(config.qemuParams, " ") if result != qemuString { From 234e0edfd72da840b759bcf5b6b65cb7b05952fd Mon Sep 17 00:00:00 2001 From: Peng Tao Date: Tue, 13 Aug 2019 01:58:51 -0700 Subject: [PATCH 191/385] qemu: fix memory prealloc handling Memory preallocation is just a property of different memory backends. We should treat it similar to memory sharing property. Also rename FileBackedMemShared to MemShared as it is just another memory backend property that works with different memory backends not just file backed memory. Signed-off-by: Peng Tao --- qemu/qemu.go | 70 +++++++++++++------------------- qemu/qemu_test.go | 101 +++++++++++++++++++++++++--------------------- 2 files changed, 84 insertions(+), 87 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index e1394831e..4cb18d10a 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1456,8 +1456,8 @@ type Knobs struct { // be set. FileBackedMem bool - // FileBackedMemShared will set the FileBackedMem device as shared. - FileBackedMemShared bool + // MemShared will set the memory device as shared. + MemShared bool // Mlock will control locking of memory // Only active when Realtime is set to true @@ -1758,46 +1758,34 @@ func (config *Config) appendKernel() { } func (config *Config) appendMemoryKnobs() { - if config.Knobs.HugePages { - if config.Memory.Size != "" { - dimmName := "dimm1" - objMemParam := "memory-backend-file,id=" + dimmName + ",size=" + config.Memory.Size + ",mem-path=/dev/hugepages,share=on,prealloc=on" - numaMemParam := "node,memdev=" + dimmName - - config.qemuParams = append(config.qemuParams, "-object") - config.qemuParams = append(config.qemuParams, objMemParam) - - config.qemuParams = append(config.qemuParams, "-numa") - config.qemuParams = append(config.qemuParams, numaMemParam) - } - } else if config.Knobs.MemPrealloc { - if config.Memory.Size != "" { - dimmName := "dimm1" - objMemParam := "memory-backend-ram,id=" + dimmName + ",size=" + config.Memory.Size + ",prealloc=on" - numaMemParam := "node,memdev=" + dimmName - - config.qemuParams = append(config.qemuParams, "-object") - config.qemuParams = append(config.qemuParams, objMemParam) - - config.qemuParams = append(config.qemuParams, "-numa") - config.qemuParams = append(config.qemuParams, numaMemParam) - } - } else if config.Knobs.FileBackedMem { - if config.Memory.Size != "" && config.Memory.Path != "" { - dimmName := "dimm1" - objMemParam := "memory-backend-file,id=" + dimmName + ",size=" + config.Memory.Size + ",mem-path=" + config.Memory.Path - if config.Knobs.FileBackedMemShared { - objMemParam += ",share=on" - } - numaMemParam := "node,memdev=" + dimmName - - config.qemuParams = append(config.qemuParams, "-object") - config.qemuParams = append(config.qemuParams, objMemParam) - - config.qemuParams = append(config.qemuParams, "-numa") - config.qemuParams = append(config.qemuParams, numaMemParam) - } + if config.Memory.Size == "" { + return } + + var objMemParam, numaMemParam string + dimmName := "dimm1" + if config.Knobs.HugePages { + objMemParam = "memory-backend-file,id=" + dimmName + ",size=" + config.Memory.Size + ",mem-path=/dev/hugepages" + numaMemParam = "node,memdev=" + dimmName + } else if config.Knobs.FileBackedMem && config.Memory.Path != "" { + objMemParam = "memory-backend-file,id=" + dimmName + ",size=" + config.Memory.Size + ",mem-path=" + config.Memory.Path + numaMemParam = "node,memdev=" + dimmName + } else { + objMemParam = "memory-backend-ram,id=" + dimmName + ",size=" + config.Memory.Size + numaMemParam = "node,memdev=" + dimmName + } + + if config.Knobs.MemShared { + objMemParam += ",share=on" + } + if config.Knobs.MemPrealloc { + objMemParam += ",prealloc=on" + } + config.qemuParams = append(config.qemuParams, "-object") + config.qemuParams = append(config.qemuParams, objMemParam) + + config.qemuParams = append(config.qemuParams, "-numa") + config.qemuParams = append(config.qemuParams, numaMemParam) } func (config *Config) appendKnobs() { diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 577660d78..bc527ab6b 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -488,16 +488,16 @@ func TestAppendEmptyDevice(t *testing.T) { func TestAppendKnobsAllTrue(t *testing.T) { var knobsString = "-no-user-config -nodefaults -nographic -daemonize -realtime mlock=on -S" knobs := Knobs{ - NoUserConfig: true, - NoDefaults: true, - NoGraphic: true, - Daemonize: true, - MemPrealloc: true, - FileBackedMem: true, - FileBackedMemShared: true, - Realtime: true, - Mlock: true, - Stopped: true, + NoUserConfig: true, + NoDefaults: true, + NoGraphic: true, + Daemonize: true, + MemPrealloc: true, + FileBackedMem: true, + MemShared: true, + Realtime: true, + Mlock: true, + Stopped: true, } testAppend(knobs, knobsString, t) @@ -506,15 +506,15 @@ func TestAppendKnobsAllTrue(t *testing.T) { func TestAppendKnobsAllFalse(t *testing.T) { var knobsString = "-realtime mlock=off" knobs := Knobs{ - NoUserConfig: false, - NoDefaults: false, - NoGraphic: false, - MemPrealloc: false, - FileBackedMem: false, - FileBackedMemShared: false, - Realtime: false, - Mlock: false, - Stopped: false, + NoUserConfig: false, + NoDefaults: false, + NoGraphic: false, + MemPrealloc: false, + FileBackedMem: false, + MemShared: false, + Realtime: false, + Mlock: false, + Stopped: false, } testAppend(knobs, knobsString, t) @@ -533,10 +533,10 @@ func TestAppendMemoryHugePages(t *testing.T) { testConfigAppend(conf, conf.Memory, memString, t) knobs := Knobs{ - HugePages: true, - MemPrealloc: true, - FileBackedMem: true, - FileBackedMemShared: true, + HugePages: true, + MemPrealloc: true, + FileBackedMem: true, + MemShared: true, } knobsString := "-object memory-backend-file,id=dimm1,size=1G,mem-path=/dev/hugepages,share=on,prealloc=on -numa node,memdev=dimm1" mlockFalseString := "-realtime mlock=off" @@ -557,17 +557,16 @@ func TestAppendMemoryMemPrealloc(t *testing.T) { testConfigAppend(conf, conf.Memory, memString, t) knobs := Knobs{ - MemPrealloc: true, - FileBackedMem: true, - FileBackedMemShared: true, + MemPrealloc: true, + MemShared: true, } - knobsString := "-object memory-backend-ram,id=dimm1,size=1G,prealloc=on -numa node,memdev=dimm1" + knobsString := "-object memory-backend-ram,id=dimm1,size=1G,share=on,prealloc=on -numa node,memdev=dimm1" mlockFalseString := "-realtime mlock=off" testConfigAppend(conf, knobs, memString+" "+knobsString+" "+mlockFalseString, t) } -func TestAppendMemoryFileBackedMemShared(t *testing.T) { +func TestAppendMemoryMemShared(t *testing.T) { conf := &Config{ Memory: Memory{ Size: "1G", @@ -580,8 +579,8 @@ func TestAppendMemoryFileBackedMemShared(t *testing.T) { testConfigAppend(conf, conf.Memory, memString, t) knobs := Knobs{ - FileBackedMem: true, - FileBackedMemShared: true, + FileBackedMem: true, + MemShared: true, } knobsString := "-object memory-backend-file,id=dimm1,size=1G,mem-path=foobar,share=on -numa node,memdev=dimm1" mlockFalseString := "-realtime mlock=off" @@ -602,8 +601,8 @@ func TestAppendMemoryFileBackedMem(t *testing.T) { testConfigAppend(conf, conf.Memory, memString, t) knobs := Knobs{ - FileBackedMem: true, - FileBackedMemShared: false, + FileBackedMem: true, + MemShared: false, } knobsString := "-object memory-backend-file,id=dimm1,size=1G,mem-path=foobar -numa node,memdev=dimm1" mlockFalseString := "-realtime mlock=off" @@ -611,6 +610,29 @@ func TestAppendMemoryFileBackedMem(t *testing.T) { testConfigAppend(conf, knobs, memString+" "+knobsString+" "+mlockFalseString, t) } +func TestAppendMemoryFileBackedMemPrealloc(t *testing.T) { + conf := &Config{ + Memory: Memory{ + Size: "1G", + Slots: 8, + MaxMem: "3G", + Path: "foobar", + }, + } + memString := "-m 1G,slots=8,maxmem=3G" + testConfigAppend(conf, conf.Memory, memString, t) + + knobs := Knobs{ + FileBackedMem: true, + MemShared: true, + MemPrealloc: true, + } + knobsString := "-object memory-backend-file,id=dimm1,size=1G,mem-path=foobar,share=on,prealloc=on -numa node,memdev=dimm1" + mlockFalseString := "-realtime mlock=off" + + testConfigAppend(conf, knobs, memString+" "+knobsString+" "+mlockFalseString, t) +} + var kernelString = "-kernel /opt/vmlinux.container -initrd /opt/initrd.container -append root=/dev/pmem0p1 rootflags=dax,data=ordered,errors=remount-ro rw rootfstype=ext4 tsc=reliable" func TestAppendKernel(t *testing.T) { @@ -987,7 +1009,7 @@ func TestBadMemoryKnobs(t *testing.T) { c = &Config{ Knobs: Knobs{ - HugePages: true, + MemShared: true, }, } c.appendMemoryKnobs() @@ -1004,19 +1026,6 @@ func TestBadMemoryKnobs(t *testing.T) { if len(c.qemuParams) != 0 { t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) } - - c = &Config{ - Knobs: Knobs{ - FileBackedMem: true, - }, - Memory: Memory{ - Size: "1024", - }, - } - c.appendMemoryKnobs() - if len(c.qemuParams) != 0 { - t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) - } } func TestBadKnobs(t *testing.T) { From 73555a409cbc8c3f612a0ac8e36294befb21da48 Mon Sep 17 00:00:00 2001 From: Peng Tao Date: Tue, 13 Aug 2019 02:06:46 -0700 Subject: [PATCH 192/385] qmp: add query-status API So that caller can find out guest status via qmp. Signed-off-by: Peng Tao --- qemu/qmp.go | 27 +++++++++++++++++++++++++++ qemu/qmp_test.go | 27 +++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/qemu/qmp.go b/qemu/qmp.go index 186f3fadd..473ce4afa 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -251,6 +251,13 @@ type SchemaInfo struct { Name string `json:"name"` } +// StatusInfo represents guest running status +type StatusInfo struct { + Running bool `json:"running"` + SingleStep bool `json:"singlestep"` + Status string `json:"status"` +} + func (q *QMP) readLoop(fromVMCh chan<- []byte) { scanner := bufio.NewScanner(q.conn) if q.cfg.MaxCapacity > 0 { @@ -1545,3 +1552,23 @@ func (q *QMP) ExecQueryQmpSchema(ctx context.Context) ([]SchemaInfo, error) { return schemaInfo, nil } + +// ExecuteQueryStatus queries guest status +func (q *QMP) ExecuteQueryStatus(ctx context.Context) (StatusInfo, error) { + response, err := q.executeCommandWithResponse(ctx, "query-status", nil, nil, nil) + if err != nil { + return StatusInfo{}, err + } + + data, err := json.Marshal(response) + if err != nil { + return StatusInfo{}, fmt.Errorf("unable to extract migrate status information: %v", err) + } + + var status StatusInfo + if err = json.Unmarshal(data, &status); err != nil { + return StatusInfo{}, fmt.Errorf("unable to convert migrate status information: %v", err) + } + + return status, nil +} diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 067665371..bfad9d0dd 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1623,3 +1623,30 @@ func TestQMPExecQueryQmpSchema(t *testing.T) { q.Shutdown() <-disconnectedCh } + +func TestQMPExecQueryQmpStatus(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + statusInfo := StatusInfo{ + Running: true, + SingleStep: false, + Status: "running", + } + buf.AddCommand("query-status", nil, "return", statusInfo) + cfg := QMPConfig{ + Logger: qmpTestLogger{}, + MaxCapacity: 1024, + } + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + info, err := q.ExecuteQueryStatus(context.Background()) + if err != nil { + t.Fatalf("Unexpected error: %v\n", err) + } + if reflect.DeepEqual(info, statusInfo) == false { + t.Fatalf("Expected %v equals to %v\n", info, statusInfo) + } + q.Shutdown() + <-disconnectedCh +} From 164bd8cd22d30ea07be6d480cc57d03bc0c44dce Mon Sep 17 00:00:00 2001 From: Peng Tao Date: Tue, 13 Aug 2019 23:36:07 -0700 Subject: [PATCH 193/385] test/fmt: drop extra newlines They are unneeded. Signed-off-by: Peng Tao --- qemu/qemu_test.go | 2 +- qemu/qmp_test.go | 34 +++++++++++++++++----------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index bc527ab6b..7caba015e 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -64,7 +64,7 @@ func testConfigAppend(config *Config, structure interface{}, expected string, t case SMP: config.SMP = s if err := config.appendCPUs(); err != nil { - t.Fatalf("Unexpected error: %v\n", err) + t.Fatalf("Unexpected error: %v", err) } case QMPSocket: diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index bfad9d0dd..c5722765a 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1110,13 +1110,13 @@ func TestQMPExecuteQueryHotpluggableCPUs(t *testing.T) { checkVersion(t, connectedCh) hotCPUs, err := q.ExecuteQueryHotpluggableCPUs(context.Background()) if err != nil { - t.Fatalf("Unexpected error: %v\n", err) + t.Fatalf("Unexpected error: %v", err) } if len(hotCPUs) != 1 { t.Fatalf("Expected hot CPUs length equals to 1\n") } if reflect.DeepEqual(hotCPUs[0], hotCPU) == false { - t.Fatalf("Expected %v equals to %v\n", hotCPUs[0], hotCPU) + t.Fatalf("Expected %v equals to %v", hotCPUs[0], hotCPU) } q.Shutdown() <-disconnectedCh @@ -1146,13 +1146,13 @@ func TestQMPExecuteQueryMemoryDevices(t *testing.T) { checkVersion(t, connectedCh) memDevices, err := q.ExecQueryMemoryDevices(context.Background()) if err != nil { - t.Fatalf("Unexpected error: %v\n", err) + t.Fatalf("Unexpected error: %v", err) } if len(memDevices) != 1 { t.Fatalf("Expected memory devices length equals to 1\n") } if reflect.DeepEqual(memDevices[0], memoryDevices) == false { - t.Fatalf("Expected %v equals to %v\n", memDevices[0], memoryDevices) + t.Fatalf("Expected %v equals to %v", memDevices[0], memoryDevices) } q.Shutdown() <-disconnectedCh @@ -1184,13 +1184,13 @@ func TestQMPExecuteQueryCpus(t *testing.T) { checkVersion(t, connectedCh) cpus, err := q.ExecQueryCpus(context.Background()) if err != nil { - t.Fatalf("Unexpected error: %v\n", err) + t.Fatalf("Unexpected error: %v", err) } if len(cpus) != 1 { t.Fatalf("Expected memory devices length equals to 1\n") } if reflect.DeepEqual(cpus[0], cpuInfo) == false { - t.Fatalf("Expected %v equals to %v\n", cpus[0], cpuInfo) + t.Fatalf("Expected %v equals to %v", cpus[0], cpuInfo) } q.Shutdown() <-disconnectedCh @@ -1220,13 +1220,13 @@ func TestQMPExecuteQueryCpusFast(t *testing.T) { checkVersion(t, connectedCh) cpus, err := q.ExecQueryCpusFast(context.Background()) if err != nil { - t.Fatalf("Unexpected error: %v\n", err) + t.Fatalf("Unexpected error: %v", err) } if len(cpus) != 1 { t.Fatalf("Expected memory devices length equals to 1\n") } if reflect.DeepEqual(cpus[0], cpuInfoFast) == false { - t.Fatalf("Expected %v equals to %v\n", cpus[0], cpuInfoFast) + t.Fatalf("Expected %v equals to %v", cpus[0], cpuInfoFast) } q.Shutdown() <-disconnectedCh @@ -1249,7 +1249,7 @@ func TestExecSetMigrationCaps(t *testing.T) { } err := q.ExecSetMigrationCaps(context.Background(), caps) if err != nil { - t.Fatalf("Unexpected error: %v\n", err) + t.Fatalf("Unexpected error: %v", err) } q.Shutdown() <-disconnectedCh @@ -1266,7 +1266,7 @@ func TestExecSetMigrateArguments(t *testing.T) { checkVersion(t, connectedCh) err := q.ExecSetMigrateArguments(context.Background(), "exec:foobar") if err != nil { - t.Fatalf("Unexpected error: %v\n", err) + t.Fatalf("Unexpected error: %v", err) } q.Shutdown() <-disconnectedCh @@ -1284,7 +1284,7 @@ func TestExecHotplugMemory(t *testing.T) { checkVersion(t, connectedCh) err := q.ExecHotplugMemory(context.Background(), "memory-backend-ram", "mem0", "", 128, true) if err != nil { - t.Fatalf("Unexpected error: %v\n", err) + t.Fatalf("Unexpected error: %v", err) } q.Shutdown() <-disconnectedCh @@ -1419,7 +1419,7 @@ func TestExecuteQueryMigration(t *testing.T) { t.Fatalf("Unexpected error %v", err) } if !reflect.DeepEqual(s, status) { - t.Fatalf("expected %v\n got %v", status, s) + t.Fatalf("expected %v got %v", status, s) } q.Shutdown() <-disconnectedCh @@ -1538,7 +1538,7 @@ func TestExecuteNVDIMMDeviceAdd(t *testing.T) { checkVersion(t, connectedCh) err := q.ExecuteNVDIMMDeviceAdd(context.Background(), "nvdimm0", "/dev/rbd0", 1024) if err != nil { - t.Fatalf("Unexpected error: %v\n", err) + t.Fatalf("Unexpected error: %v", err) } q.Shutdown() <-disconnectedCh @@ -1612,13 +1612,13 @@ func TestQMPExecQueryQmpSchema(t *testing.T) { checkVersion(t, connectedCh) info, err := q.ExecQueryQmpSchema(context.Background()) if err != nil { - t.Fatalf("Unexpected error: %v\n", err) + t.Fatalf("Unexpected error: %v", err) } if len(schemaInfo) != 2 { t.Fatalf("Expected schema infos length equals to 2\n") } if reflect.DeepEqual(info, schemaInfo) == false { - t.Fatalf("Expected %v equals to %v\n", info, schemaInfo) + t.Fatalf("Expected %v equals to %v", info, schemaInfo) } q.Shutdown() <-disconnectedCh @@ -1642,10 +1642,10 @@ func TestQMPExecQueryQmpStatus(t *testing.T) { checkVersion(t, connectedCh) info, err := q.ExecuteQueryStatus(context.Background()) if err != nil { - t.Fatalf("Unexpected error: %v\n", err) + t.Fatalf("Unexpected error: %v", err) } if reflect.DeepEqual(info, statusInfo) == false { - t.Fatalf("Expected %v equals to %v\n", info, statusInfo) + t.Fatalf("Expected %v equals to %v", info, statusInfo) } q.Shutdown() <-disconnectedCh From 9463486d58e8e481a6b79a6cb348d358a93cf23c Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Mon, 26 Aug 2019 16:05:17 +0200 Subject: [PATCH 194/385] s390x: dimm not supported Dimm is not supported on s390x Fixes: #106 Signed-off-by: Alice Frosi --- qemu/qemu.go | 4 +++- qemu/qemu_arch_base.go | 4 ++++ qemu/qemu_test.go | 20 ++++++++++++++++++++ qemu/qemus390x.go | 4 ++++ 4 files changed, 31 insertions(+), 1 deletion(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 4cb18d10a..daac268bd 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1761,7 +1761,9 @@ func (config *Config) appendMemoryKnobs() { if config.Memory.Size == "" { return } - + if !isDimmSupported() { + return + } var objMemParam, numaMemParam string dimmName := "dimm1" if config.Knobs.HugePages { diff --git a/qemu/qemu_arch_base.go b/qemu/qemu_arch_base.go index a7bbed558..f295099ce 100644 --- a/qemu/qemu_arch_base.go +++ b/qemu/qemu_arch_base.go @@ -105,3 +105,7 @@ func (n NetDeviceType) QemuDeviceParam() DeviceDriver { } } + +func isDimmSupported() bool { + return true +} diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 7caba015e..3c2307858 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -521,6 +521,10 @@ func TestAppendKnobsAllFalse(t *testing.T) { } func TestAppendMemoryHugePages(t *testing.T) { + if !isDimmSupported() { + t.Skip("Dimm not supported") + } + conf := &Config{ Memory: Memory{ Size: "1G", @@ -545,6 +549,10 @@ func TestAppendMemoryHugePages(t *testing.T) { } func TestAppendMemoryMemPrealloc(t *testing.T) { + if !isDimmSupported() { + t.Skip("Dimm not supported") + } + conf := &Config{ Memory: Memory{ Size: "1G", @@ -567,6 +575,10 @@ func TestAppendMemoryMemPrealloc(t *testing.T) { } func TestAppendMemoryMemShared(t *testing.T) { + if !isDimmSupported() { + t.Skip("Dimm not supported") + } + conf := &Config{ Memory: Memory{ Size: "1G", @@ -589,6 +601,10 @@ func TestAppendMemoryMemShared(t *testing.T) { } func TestAppendMemoryFileBackedMem(t *testing.T) { + if !isDimmSupported() { + t.Skip("Dimm not supported") + } + conf := &Config{ Memory: Memory{ Size: "1G", @@ -611,6 +627,10 @@ func TestAppendMemoryFileBackedMem(t *testing.T) { } func TestAppendMemoryFileBackedMemPrealloc(t *testing.T) { + if !isDimmSupported() { + t.Skip("Dimm not supported") + } + conf := &Config{ Memory: Memory{ Size: "1G", diff --git a/qemu/qemus390x.go b/qemu/qemus390x.go index c52edd67c..0aeffceeb 100644 --- a/qemu/qemus390x.go +++ b/qemu/qemus390x.go @@ -134,3 +134,7 @@ func (n NetDeviceType) QemuNetdevParam() string { } } + +func isDimmSupported() bool { + return false +} From cb9f640b4e6166c295e34f1ac4acea56e78940a6 Mon Sep 17 00:00:00 2001 From: Jan Schintag Date: Fri, 13 Sep 2019 08:58:23 +0200 Subject: [PATCH 195/385] virtio-blk: Add support for share-rw flag This allows multiple instances of qemu to share the same file for virtio-blk device. Fixes: #108 Signed-off-by: Jan Schintag --- qemu/qemu.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index daac268bd..f2b80ccd1 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -728,6 +728,9 @@ type BlockDevice struct { // DevNo identifies the ccw devices for s390x architecture DevNo string + + // ShareRW enables multiple qemu instances to share the File + ShareRW bool } // Valid returns true if the BlockDevice structure is valid and complete. @@ -766,6 +769,10 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", blkdev.DevNo)) } + if blkdev.ShareRW { + deviceParams = append(deviceParams, fmt.Sprintf(",share-rw=on")) + } + blkParams = append(blkParams, fmt.Sprintf("id=%s", blkdev.ID)) blkParams = append(blkParams, fmt.Sprintf(",file=%s", blkdev.File)) blkParams = append(blkParams, fmt.Sprintf(",aio=%s", blkdev.AIO)) From 175ac4993ec3b00973b667ac0865ecde631406a3 Mon Sep 17 00:00:00 2001 From: Chenbin Date: Sat, 21 Sep 2019 19:52:56 +0800 Subject: [PATCH 196/385] typo fix --- qemu/qmp.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 473ce4afa..0067ea450 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -281,7 +281,7 @@ func (q *QMP) readLoop(fromVMCh chan<- []byte) { fromVMCh <- sendLine } - q.cfg.Logger.Infof("sanner return error: %v", scanner.Err()) + q.cfg.Logger.Infof("scanner return error: %v", scanner.Err()) close(fromVMCh) } From 6d6b2d88927b6ac858190c70ec9c2185d1457965 Mon Sep 17 00:00:00 2001 From: Alice Frosi Date: Tue, 17 Dec 2019 14:45:43 +0100 Subject: [PATCH 197/385] s390x: add s390x travis support Since we have travis support for s390x. Let's enable it Signed-off-by: Alice Frosi --- .travis.yml | 5 +++-- qemu/qemu_arch_base.go | 2 +- qemu/qemu_arch_base_test.go | 2 +- qemu/{qemus390x.go => qemu_s390x.go} | 2 +- qemu/{qemus390x_test.go => qemu_s390x_test.go} | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) rename qemu/{qemus390x.go => qemu_s390x.go} (99%) rename qemu/{qemus390x_test.go => qemu_s390x_test.go} (99%) diff --git a/.travis.yml b/.travis.yml index 41aec9bb0..162aa5042 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,9 @@ go: - "1.10" - "1.11" - tip +arch: + - amd64 + - s390x go_import_path: github.com/intel/govmm @@ -20,5 +23,3 @@ script: - go env - $GOPATH/bin/goveralls -v -service=travis-ci - gometalinter --tests --vendor --disable-all --enable=misspell --enable=vet --enable=ineffassign --enable=gofmt --enable=gocyclo --cyclo-over=15 --enable=golint --enable=errcheck --enable=deadcode --enable=staticcheck -enable=gas ./... - - GOARCH=s390x go install ./... - - go test --tags s390x_test ./... diff --git a/qemu/qemu_arch_base.go b/qemu/qemu_arch_base.go index f295099ce..d73c34f9a 100644 --- a/qemu/qemu_arch_base.go +++ b/qemu/qemu_arch_base.go @@ -1,4 +1,4 @@ -// +build !s390x,!s390x_test +// +build !s390x /* // Copyright contributors to the Virtual Machine Manager for Go project diff --git a/qemu/qemu_arch_base_test.go b/qemu/qemu_arch_base_test.go index 76714a482..242eb8200 100644 --- a/qemu/qemu_arch_base_test.go +++ b/qemu/qemu_arch_base_test.go @@ -1,4 +1,4 @@ -// +build !s390x,!s390x_test +// +build !s390x /* // Copyright contributors to the Virtual Machine Manager for Go project diff --git a/qemu/qemus390x.go b/qemu/qemu_s390x.go similarity index 99% rename from qemu/qemus390x.go rename to qemu/qemu_s390x.go index 0aeffceeb..6e54f9b71 100644 --- a/qemu/qemus390x.go +++ b/qemu/qemu_s390x.go @@ -1,4 +1,4 @@ -// +build s390x s390x_test +// +build s390x /* // Copyright contributors to the Virtual Machine Manager for Go project diff --git a/qemu/qemus390x_test.go b/qemu/qemu_s390x_test.go similarity index 99% rename from qemu/qemus390x_test.go rename to qemu/qemu_s390x_test.go index 6b87d7b40..a9cc66cc5 100644 --- a/qemu/qemus390x_test.go +++ b/qemu/qemu_s390x_test.go @@ -1,4 +1,4 @@ -// +build s390x s390x_test +// +build s390x /* // Copyright contributors to the Virtual Machine Manager for Go project From 13aeba09d56ce44e531cd0aaf531f01fe11acaee Mon Sep 17 00:00:00 2001 From: Liu Xiaodong Date: Tue, 14 Jan 2020 00:09:52 -0500 Subject: [PATCH 198/385] qmp: support command 'chardev-remove' So that caller can remove hotremove chardev via qmp Signed-off-by: Liu Xiaodong --- qemu/qmp.go | 11 +++++++++++ qemu/qmp_test.go | 22 ++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/qemu/qmp.go b/qemu/qmp.go index 473ce4afa..a22edba12 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -946,6 +946,17 @@ func (q *QMP) ExecuteBlockdevDel(ctx context.Context, blockdevID string) error { return q.executeCommand(ctx, "x-blockdev-del", args, nil) } +// ExecuteChardevDel deletes a char device by sending a chardev-remove command. +// chardevID is the id of the char device to be deleted. Typically, this will +// match the id passed to ExecuteCharDevUnixSocketAdd. It must be a valid QMP id. +func (q *QMP) ExecuteChardevDel(ctx context.Context, chardevID string) error { + args := map[string]interface{}{ + "id": chardevID, + } + + return q.executeCommand(ctx, "chardev-remove", args, nil) +} + // ExecuteNetdevAdd adds a Net device to a QEMU instance // using the netdev_add command. netdevID is the id of the device to add. // Must be valid QMP identifier. diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index c5722765a..8137910a8 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -638,6 +638,28 @@ func TestQMPBlockdevDel(t *testing.T) { <-disconnectedCh } +// Checks that the chardev-remove command is correctly sent. +// +// We start a QMPLoop, send the chardev-remove command and stop the loop. +// +// The chardev-remove command should be correctly sent and the QMP loop should +// exit gracefully. +func TestQMPChardevDel(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("chardev-remove", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + q.version = checkVersion(t, connectedCh) + err := q.ExecuteChardevDel(context.Background(), "chardev-0") + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} + // Checks that the device_del command is correctly sent. // // We start a QMPLoop, send the device_del command and wait for it to complete. From e04be2cc3819c3b6822513262aeb4db24c395f8d Mon Sep 17 00:00:00 2001 From: Liu Xiaodong Date: Tue, 14 Jan 2020 00:13:26 -0500 Subject: [PATCH 199/385] qmp: add ExecutePCIVhostUserDevAdd API Caller can hotplug vhost-user device via qmp. The Qemu vhost-user device, like vhost-user-blk-pci and vhost-user-scsi-pci can be hotplugged by qmp API: ExecuteCharDevUnixSocketAdd() together with ExecutePCIVhostUserDevAdd() Signed-off-by: Liu Xiaodong --- qemu/qmp.go | 21 +++++++++++++++++++++ qemu/qmp_test.go | 20 ++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/qemu/qmp.go b/qemu/qmp.go index a22edba12..9d27dbeef 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -1135,6 +1135,27 @@ func (q *QMP) ExecutePCIDeviceAdd(ctx context.Context, blockdevID, devID, driver return q.executeCommand(ctx, "device_add", args, nil) } +// ExecutePCIVhostUserDevAdd adds a vhost-user device to a QEMU instance using the device_add command. +// This function can be used to hot plug vhost-user devices on PCI(E) bridges. +// It receives the bus and the device address on its parent bus. bus is optional. +// devID is the id of the device to add.Must be valid QMP identifier. chardevID +// is the QMP identifier of character device using a unix socket as backend. +// driver is the name of vhost-user driver, like vhost-user-blk-pci. +func (q *QMP) ExecutePCIVhostUserDevAdd(ctx context.Context, driver, devID, chardevID, addr, bus string) error { + args := map[string]interface{}{ + "driver": driver, + "id": devID, + "chardev": chardevID, + "addr": addr, + } + + if bus != "" { + args["bus"] = bus + } + + return q.executeCommand(ctx, "device_add", args, nil) +} + // ExecuteVFIODeviceAdd adds a VFIO device to a QEMU instance // using the device_add command. devID is the id of the device to add. // Must be valid QMP identifier. bdf is the PCI bus-device-function diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 8137910a8..71f97bcad 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1329,6 +1329,26 @@ func TestExecutePCIVSockAdd(t *testing.T) { <-disconnectedCh } +// Checks vhost-user-pci hotplug +func TestExecutePCIVhostUserDevAdd(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("device_add", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + driver := "vhost-user-blk-pci" + devID := "vhost-user-blk0" + chardevID := "vhost-user-blk-char0" + err := q.ExecutePCIVhostUserDevAdd(context.Background(), driver, devID, chardevID, "1", "1") + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} + // Checks getfd func TestExecuteGetFdD(t *testing.T) { connectedCh := make(chan *QMPVersion) From 201fd0ae82643d980888c381b399464ebdded76a Mon Sep 17 00:00:00 2001 From: Hui Zhu Date: Sun, 19 Jan 2020 14:51:17 +0800 Subject: [PATCH 200/385] qmp: Add ExecMemdevAdd and ExecQomSet API Add ExecMemdevAdd and ExecQomSet API to support virtio-mem. Signed-off-by: Hui Zhu --- qemu/qmp.go | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 9d27dbeef..00e9fed27 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -1379,8 +1379,8 @@ func (q *QMP) ExecQueryCpusFast(ctx context.Context) ([]CPUInfoFast, error) { return cpuInfoFast, nil } -// ExecHotplugMemory adds size of MiB memory to the guest -func (q *QMP) ExecHotplugMemory(ctx context.Context, qomtype, id, mempath string, size int, share bool) error { +// ExecMemdevAdd adds size of MiB memory device to the guest +func (q *QMP) ExecMemdevAdd(ctx context.Context, qomtype, id, mempath string, size int, share bool, driver, driverID string) error { props := map[string]interface{}{"size": uint64(size) << 20} args := map[string]interface{}{ "qom-type": qomtype, @@ -1400,17 +1400,17 @@ func (q *QMP) ExecHotplugMemory(ctx context.Context, qomtype, id, mempath string defer func() { if err != nil { - q.cfg.Logger.Errorf("Unable to hotplug memory device: %v", err) + q.cfg.Logger.Errorf("Unable to add memory device %s: %v", id, err) err = q.executeCommand(ctx, "object-del", map[string]interface{}{"id": id}, nil) if err != nil { - q.cfg.Logger.Warningf("Unable to clean up memory object: %v", err) + q.cfg.Logger.Warningf("Unable to clean up memory object %s: %v", id, err) } } }() args = map[string]interface{}{ - "driver": "pc-dimm", - "id": "dimm" + id, + "driver": driver, + "id": driverID, "memdev": id, } err = q.executeCommand(ctx, "device_add", args, nil) @@ -1418,6 +1418,11 @@ func (q *QMP) ExecHotplugMemory(ctx context.Context, qomtype, id, mempath string return err } +// ExecHotplugMemory adds size of MiB memory to the guest +func (q *QMP) ExecHotplugMemory(ctx context.Context, qomtype, id, mempath string, size int, share bool) error { + return q.ExecMemdevAdd(ctx, qomtype, id, mempath, size, share, "pc-dimm", "dimm"+id) +} + // ExecuteNVDIMMDeviceAdd adds a block device to a QEMU instance using // a NVDIMM driver with the device_add command. // id is the id of the device to add. It must be a valid QMP identifier. @@ -1604,3 +1609,14 @@ func (q *QMP) ExecuteQueryStatus(ctx context.Context) (StatusInfo, error) { return status, nil } + +// ExecQomSet qom-set path property value +func (q *QMP) ExecQomSet(ctx context.Context, path, property string, value uint64) error { + args := map[string]interface{}{ + "path": path, + "property": property, + "value": value, + } + + return q.executeCommand(ctx, "qom-set", args, nil) +} From 6667f4e90b476fdf1f6044a5388c1b9f18787e46 Mon Sep 17 00:00:00 2001 From: Hui Zhu Date: Tue, 21 Jan 2020 10:26:59 +0800 Subject: [PATCH 201/385] qmp_test: Add TestExecMemdevAdd and TestExecQomSet Add TestExecMemdevAdd and TestExecQomSet to qmp_test.go. They can test ExecMemdevAdd and ExecQomSet. Signed-off-by: Hui Zhu --- qemu/qmp_test.go | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 71f97bcad..fc1b2a875 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1294,6 +1294,24 @@ func TestExecSetMigrateArguments(t *testing.T) { <-disconnectedCh } +// Checks add memory device +func TestExecMemdevAdd(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("object-add", nil, "return", nil) + buf.AddCommand("device_add", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + err := q.ExecMemdevAdd(context.Background(), "memory-backend-ram", "mem0", "", 128, true, "virtio-mem-pci", "virtiomem0") + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + q.Shutdown() + <-disconnectedCh +} + // Checks hotplug memory func TestExecHotplugMemory(t *testing.T) { connectedCh := make(chan *QMPVersion) @@ -1692,3 +1710,20 @@ func TestQMPExecQueryQmpStatus(t *testing.T) { q.Shutdown() <-disconnectedCh } + +// Checks qom-set +func TestExecQomSet(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("qom-set", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + err := q.ExecQomSet(context.Background(), "virtiomem0", "requested-size", 1024) + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + q.Shutdown() + <-disconnectedCh +} From f1252f6e1743db4f52933cf35dcd6c71a0ba36aa Mon Sep 17 00:00:00 2001 From: Jimmy Xu Date: Sun, 26 Jan 2020 21:44:11 +0800 Subject: [PATCH 202/385] qemu: Add pcie-root-port device support. --- qemu/qemu.go | 106 ++++++++++++++++++++++++++++++++++++ qemu/qemu_arch_base.go | 1 + qemu/qemu_arch_base_test.go | 82 ++++++++++++++++++++++++++++ qemu/qmp.go | 13 +++-- qemu/qmp_test.go | 21 +++++++ 5 files changed, 218 insertions(+), 5 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index f2b80ccd1..c9e0eb151 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -106,6 +106,9 @@ const ( // VirtioBlockCCW is the CCW block device driver VirtioBlockCCW DeviceDriver = "virtio-blk-ccw" + + // PCIeRootPort is a PCIe Root Port, the PCIe device should be hotplugged to this port. + PCIeRootPort DeviceDriver = "pcie-root-port" ) // disableModern returns the parameters with the disable-modern option. @@ -898,6 +901,102 @@ func (vhostuserDev VhostUserDevice) QemuParams(config *Config) []string { return qemuParams } +// PCIeRootPortDevice represents a memory balloon device. +type PCIeRootPortDevice struct { + ID string // format: rp{n}, n>=0 + + Bus string // default is pcie.0 + Chassis string // (slot, chassis) pair is mandatory and must be unique for each pcie-root-port, >=0, default is 0x00 + Slot string // >=0, default is 0x00 + + Multifunction bool // true => "on", false => "off", default is off + Addr string // >=0, default is 0x00 + + // The PCIE-PCI bridge can be hot-plugged only into pcie-root-port that has 'bus-reserve' property value to + // provide secondary bus for the hot-plugged bridge. + BusReserve string + Pref64Reserve string // reserve prefetched MMIO aperture, 64-bit + Pref32Reserve string // reserve prefetched MMIO aperture, 32-bit + MemReserve string // reserve non-prefetched MMIO aperture, 32-bit *only* + IOReserve string // IO reservation + + ROMFile string // ROMFile specifies the ROM file being used for this device. +} + +// QemuParams returns the qemu parameters built out of the PCIeRootPortDevice. +func (b PCIeRootPortDevice) QemuParams(_ *Config) []string { + var qemuParams []string + var deviceParams []string + driver := PCIeRootPort + + deviceParams = append(deviceParams, fmt.Sprintf("%s,id=%s", driver, b.ID)) + + if b.Bus == "" { + b.Bus = "pcie.0" + } + deviceParams = append(deviceParams, fmt.Sprintf("bus=%s", b.Bus)) + + if b.Chassis == "" { + b.Chassis = "0x00" + } + deviceParams = append(deviceParams, fmt.Sprintf("chassis=%s", b.Chassis)) + + if b.Slot == "" { + b.Slot = "0x00" + } + deviceParams = append(deviceParams, fmt.Sprintf("slot=%s", b.Slot)) + + multifunction := "off" + if b.Multifunction { + multifunction = "on" + if b.Addr == "" { + b.Addr = "0x00" + } + deviceParams = append(deviceParams, fmt.Sprintf("addr=%s", b.Addr)) + } + deviceParams = append(deviceParams, fmt.Sprintf("multifunction=%v", multifunction)) + + if b.BusReserve != "" { + deviceParams = append(deviceParams, fmt.Sprintf("bus-reserve=%s", b.BusReserve)) + } + + if b.Pref64Reserve != "" { + deviceParams = append(deviceParams, fmt.Sprintf("pref64-reserve=%s", b.Pref64Reserve)) + } + + if b.Pref32Reserve != "" { + deviceParams = append(deviceParams, fmt.Sprintf("pref32-reserve=%s", b.Pref32Reserve)) + } + + if b.MemReserve != "" { + deviceParams = append(deviceParams, fmt.Sprintf("mem-reserve=%s", b.MemReserve)) + } + + if b.IOReserve != "" { + deviceParams = append(deviceParams, fmt.Sprintf("io-reserve=%s", b.IOReserve)) + } + + if isVirtioPCI[driver] && b.ROMFile != "" { + deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", b.ROMFile)) + } + + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) + return qemuParams +} + +// Valid returns true if the PCIeRootPortDevice structure is valid and complete. +func (b PCIeRootPortDevice) Valid() bool { + // the "pref32-reserve" and "pref64-reserve" hints are mutually exclusive. + if b.Pref64Reserve != "" && b.Pref32Reserve != "" { + return false + } + if b.ID == "" { + return false + } + return true +} + // VFIODevice represents a qemu vfio device meant for direct access by guest OS. type VFIODevice struct { // Bus-Device-Function of device @@ -914,6 +1013,9 @@ type VFIODevice struct { // DeviceID specifies device id DeviceID string + + // Bus specifies device bus + Bus string } // Valid returns true if the VFIODevice structure is valid and complete. @@ -939,6 +1041,10 @@ func (vfioDev VFIODevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", vfioDev.ROMFile)) } + if vfioDev.Bus != "" { + deviceParams = append(deviceParams, fmt.Sprintf(",bus=%s", vfioDev.Bus)) + } + if isVirtioCCW[driver] { deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", vfioDev.DevNo)) } diff --git a/qemu/qemu_arch_base.go b/qemu/qemu_arch_base.go index d73c34f9a..3e2e03d00 100644 --- a/qemu/qemu_arch_base.go +++ b/qemu/qemu_arch_base.go @@ -59,6 +59,7 @@ var isVirtioPCI = map[DeviceDriver]bool{ VirtioScsi: true, PCIBridgeDriver: true, PCIePCIBridgeDriver: true, + PCIeRootPort: true, } // isVirtioCCW is a dummy map to return always false on no-s390x arch diff --git a/qemu/qemu_arch_base_test.go b/qemu/qemu_arch_base_test.go index 242eb8200..348f46538 100644 --- a/qemu/qemu_arch_base_test.go +++ b/qemu/qemu_arch_base_test.go @@ -28,6 +28,10 @@ var ( deviceVhostUserNetString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -netdev type=vhost-user,id=net1,chardev=char1,vhostforce -device virtio-net-pci,netdev=net1,mac=00:11:22:33:44:55,romfile=efi-virtio.rom" deviceVSOCKString = "-device vhost-vsock-pci,disable-modern=true,id=vhost-vsock-pci0,guest-cid=4,romfile=efi-virtio.rom" deviceVFIOString = "-device vfio-pci,host=02:10.0,x-pci-vendor-id=0x1234,x-pci-device-id=0x5678,romfile=efi-virtio.rom" + devicePCIeRootPortSimpleString = "-device pcie-root-port,id=rp1,bus=pcie.0,chassis=0x00,slot=0x00,multifunction=off" + devicePCIeRootPortFullString = "-device pcie-root-port,id=rp2,bus=pcie.0,chassis=0x0,slot=0x1,addr=0x2,multifunction=on,bus-reserve=0x3,pref64-reserve=16G,mem-reserve=1G,io-reserve=512M,romfile=efi-virtio.rom" + deviceVFIOPCIeSimpleString = "-device vfio-pci,host=02:00.0,romfile=,bus=rp0" + deviceVFIOPCIeFullString = "-device vfio-pci,host=02:00.0,x-pci-vendor-id=0x10de,x-pci-device-id=0x15f8,romfile=efi-virtio.rom,bus=rp1" deviceSCSIControllerStr = "-device virtio-scsi-pci,id=foo,disable-modern=false,romfile=efi-virtio.rom" deviceSCSIControllerBusAddrStr = "-device virtio-scsi-pci,id=foo,bus=pci.0,addr=00:04.0,disable-modern=true,iothread=iothread1,romfile=efi-virtio.rom" deviceVhostUserSCSIString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -device vhost-user-scsi-pci,id=scsi1,chardev=char1,romfile=efi-virtio.rom" @@ -95,3 +99,81 @@ func TestAppendVirtioBalloon(t *testing.T) { testAppend(balloonDevice, deviceString+OnDeflateOnOMM+OnDisableModern, t) } + +func TestAppendDevicePCIeRootPort(t *testing.T) { + var pcieRootPortID string + + // test empty ID + pcieRootPortDevice := PCIeRootPortDevice{} + if pcieRootPortDevice.Valid() { + t.Fatalf("failed to validdate empty ID") + } + + // test pref64_reserve and pre64_reserve + pcieRootPortID = "rp0" + pcieRootPortDevice = PCIeRootPortDevice{ + ID: pcieRootPortID, + Pref64Reserve: "16G", + Pref32Reserve: "256M", + } + if pcieRootPortDevice.Valid() { + t.Fatalf("failed to validate pref32-reserve and pref64-reserve for %v", pcieRootPortID) + } + + // default test + pcieRootPortID = "rp1" + pcieRootPortDevice = PCIeRootPortDevice{ + ID: pcieRootPortID, + } + if !pcieRootPortDevice.Valid() { + t.Fatalf("failed to validate for %v", pcieRootPortID) + } + testAppend(pcieRootPortDevice, devicePCIeRootPortSimpleString, t) + + // full test + pcieRootPortID = "rp2" + pcieRootPortDevice = PCIeRootPortDevice{ + ID: pcieRootPortID, + Multifunction: true, + Bus: "pcie.0", + Chassis: "0x0", + Slot: "0x1", + Addr: "0x2", + Pref64Reserve: "16G", + IOReserve: "512M", + MemReserve: "1G", + BusReserve: "0x3", + ROMFile: romfile, + } + if !pcieRootPortDevice.Valid() { + t.Fatalf("failed to validate for %v", pcieRootPortID) + } + testAppend(pcieRootPortDevice, devicePCIeRootPortFullString, t) +} + +func TestAppendDeviceVFIOPCIe(t *testing.T) { + // default test + pcieRootPortID := "rp0" + vfioDevice := VFIODevice{ + BDF: "02:00.0", + Bus: pcieRootPortID, + } + if isVirtioCCW[Vfio] { + vfioDevice.DevNo = DevNo + } + testAppend(vfioDevice, deviceVFIOPCIeSimpleString, t) + + // full test + pcieRootPortID = "rp1" + vfioDevice = VFIODevice{ + BDF: "02:00.0", + Bus: pcieRootPortID, + ROMFile: romfile, + VendorID: "0x10de", + DeviceID: "0x15f8", + } + if isVirtioCCW[Vfio] { + vfioDevice.DevNo = DevNo + } + testAppend(vfioDevice, deviceVFIOPCIeFullString, t) +} diff --git a/qemu/qmp.go b/qemu/qmp.go index 9d27dbeef..f874fb6af 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -1156,17 +1156,20 @@ func (q *QMP) ExecutePCIVhostUserDevAdd(ctx context.Context, driver, devID, char return q.executeCommand(ctx, "device_add", args, nil) } -// ExecuteVFIODeviceAdd adds a VFIO device to a QEMU instance -// using the device_add command. devID is the id of the device to add. -// Must be valid QMP identifier. bdf is the PCI bus-device-function -// of the pci device. -func (q *QMP) ExecuteVFIODeviceAdd(ctx context.Context, devID, bdf, romfile string) error { +// ExecuteVFIODeviceAdd adds a VFIO device to a QEMU instance using the device_add command. +// devID is the id of the device to add. Must be valid QMP identifier. +// bdf is the PCI bus-device-function of the pci device. +// bus is optional. When hot plugging a PCIe device, the bus can be the ID of the pcie-root-port. +func (q *QMP) ExecuteVFIODeviceAdd(ctx context.Context, devID, bdf, bus, romfile string) error { args := map[string]interface{}{ "id": devID, "driver": Vfio, "host": bdf, "romfile": romfile, } + if bus != "" { + args["bus"] = bus + } return q.executeCommand(ctx, "device_add", args, nil) } diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 71f97bcad..dcd8e68ab 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1079,6 +1079,27 @@ func TestQMPPCIVFIOMediatedDeviceAdd(t *testing.T) { <-disconnectedCh } +func TestQMPPCIVFIOPCIeDeviceAdd(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("device_add", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + bdf := "04:00.0" + bus := "rp0" + addr := "0x1" + romfile := "" + devID := fmt.Sprintf("device_%s", volumeUUID) + err := q.ExecutePCIVFIODeviceAdd(context.Background(), devID, bdf, addr, bus, romfile) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} + // Checks that CPU are correctly added using device_add func TestQMPCPUDeviceAdd(t *testing.T) { drivers := []string{"host-x86_64-cpu", "host-s390x-cpu", "host-powerpc64-cpu"} From 2ee53b00ca98a1c4b13ca7b3f1a29426bf14c3af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Wed, 5 Feb 2020 21:09:47 +0100 Subject: [PATCH 203/385] qemu: Don't set ".cache-size=" when CacheSize is 0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As there's no guarantee that ".cache-size" is a supported QEMU property, let's not add it to the QEMU command line when the user explicitly set virtio_fs_cache_size to zero. By not always setting ".cache-size" property we avoid errors like: ``` $ sudo podman --runtime=/usr/bin/kata-runtime run --security-opt label=disable -it fedora:31 /bin/bash Error: failed to launch qemu: exit status 1, error messages from qemu log: qemu-kvm: -device vhost-user-fs-pci,chardev=char-88c350403e95d3db,tag=kataShared,cache-size=0M: Property '.cache-size' not found: OCI runtime error ``` Signed-off-by: Fabiano Fidêncio --- qemu/qemu.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index c9e0eb151..4346d6eb8 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -875,7 +875,9 @@ func (vhostuserDev VhostUserDevice) QemuParams(config *Config) []string { devParams = append(devParams, string(driver)) devParams = append(devParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) devParams = append(devParams, fmt.Sprintf("tag=%s", vhostuserDev.Tag)) - devParams = append(devParams, fmt.Sprintf("cache-size=%dM", vhostuserDev.CacheSize)) + if vhostuserDev.CacheSize != 0 { + devParams = append(devParams, fmt.Sprintf("cache-size=%dM", vhostuserDev.CacheSize)) + } if vhostuserDev.SharedVersions { devParams = append(devParams, "versiontable=/dev/shm/fuse_shared_versions") } From 88a25a2d68117ca344c6924263a4c6fb0da24a24 Mon Sep 17 00:00:00 2001 From: Sergio Lopez Date: Fri, 7 Feb 2020 17:54:25 +0100 Subject: [PATCH 204/385] Refactor code to support multiple virtio transports at runtime Currently, virtio transports for each device are determined with architecture dependent build time conditionals. This isn't the ideal solution, as virtio transports aren't exactly tied to the host's architecture. For example, aarch64 VMs do support both PCI and MMIO devices, and after the recent introduction of the microvm machine type, that's also the case for x86_64. This patch extends each device that supports multiple transports with a VirtioTransport field, so users of the library can manually specify a transport for each device. To avoid breaking the compatibility, if VirtioTransport is empty a behavior equivalent to the legacy one is achieved by checking runtime.GOARCH and Config.Machine.Type. Keeping support for isVirtioPCI/isVirtioCCW in qmp.go is a bit tricky. Eventually, the hot-plug API should be extended so callers must manually specify the transport for the device. Signed-off-by: Sergio Lopez --- qemu/qemu.go | 592 +++++++++++++++++++++++++++++++----- qemu/qemu_arch_base.go | 112 ------- qemu/qemu_arch_base_test.go | 10 +- qemu/qemu_s390x.go | 140 --------- qemu/qemu_s390x_test.go | 4 +- qemu/qemu_test.go | 45 +-- qemu/qmp.go | 46 ++- 7 files changed, 566 insertions(+), 383 deletions(-) delete mode 100644 qemu/qemu_arch_base.go delete mode 100644 qemu/qemu_s390x.go diff --git a/qemu/qemu.go b/qemu/qemu.go index c9e0eb151..da2c95643 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -27,8 +27,10 @@ package qemu import ( "bytes" "fmt" + "log" "os" "os/exec" + "runtime" "strconv" "strings" "syscall" @@ -62,6 +64,9 @@ const ( // NVDIMM is the Non Volatile DIMM device driver. NVDIMM DeviceDriver = "nvdimm" + // VirtioNet is the virtio networking device driver. + VirtioNet DeviceDriver = "virtio-net" + // VirtioNetPCI is the virt-io pci networking device driver. VirtioNetPCI DeviceDriver = "virtio-net-pci" @@ -71,12 +76,15 @@ const ( // VirtioBlock is the block device driver. VirtioBlock DeviceDriver = "virtio-blk" - // VirtioBlockPCI is a pci bus block device driver - VirtioBlockPCI DeviceDriver = "virtio-blk-pci" - // Console is the console device driver. Console DeviceDriver = "virtconsole" + // Virtio9P is the 9pfs device driver. + Virtio9P DeviceDriver = "virtio-9p" + + // VirtioSerial is the serial device driver. + VirtioSerial DeviceDriver = "virtio-serial" + // VirtioSerialPort is the serial port device driver. VirtioSerialPort DeviceDriver = "virtserialport" @@ -87,16 +95,16 @@ const ( VirtioBalloon DeviceDriver = "virtio-balloon" //VhostUserSCSI represents a SCSI vhostuser device type. - VhostUserSCSI DeviceDriver = "vhost-user-scsi-pci" + VhostUserSCSI DeviceDriver = "vhost-user-scsi" //VhostUserNet represents a net vhostuser device type. - VhostUserNet DeviceDriver = "virtio-net-pci" + VhostUserNet DeviceDriver = "virtio-net" //VhostUserBlk represents a block vhostuser device type. - VhostUserBlk DeviceDriver = "vhost-user-blk-pci" + VhostUserBlk DeviceDriver = "vhost-user-blk" //VhostUserFS represents a virtio-fs vhostuser device type - VhostUserFS DeviceDriver = "vhost-user-fs-pci" + VhostUserFS DeviceDriver = "vhost-user-fs" // PCIBridgeDriver represents a PCI bridge device type. PCIBridgeDriver DeviceDriver = "pci-bridge" @@ -104,18 +112,87 @@ const ( // PCIePCIBridgeDriver represents a PCIe to PCI bridge device type. PCIePCIBridgeDriver DeviceDriver = "pcie-pci-bridge" - // VirtioBlockCCW is the CCW block device driver - VirtioBlockCCW DeviceDriver = "virtio-blk-ccw" + // VfioPCI is the vfio driver with PCI transport. + VfioPCI DeviceDriver = "vfio-pci" + + // VfioCCW is the vfio driver with CCW transport. + VfioCCW DeviceDriver = "vfio-ccw" + + // VHostVSockPCI is a generic Vsock vhost device with PCI transport. + VHostVSockPCI DeviceDriver = "vhost-vsock-pci" // PCIeRootPort is a PCIe Root Port, the PCIe device should be hotplugged to this port. PCIeRootPort DeviceDriver = "pcie-root-port" ) +func isDimmSupported(config *Config) bool { + switch runtime.GOARCH { + case "amd64", "386": + return true + default: + return false + } +} + +// VirtioTransport is the transport in use for a virtio device. +type VirtioTransport string + +const ( + // TransportPCI is the PCI transport for virtio device. + TransportPCI VirtioTransport = "pci" + + // TransportCCW is the CCW transport for virtio devices. + TransportCCW VirtioTransport = "ccw" + + // TransportMMIO is the MMIO transport for virtio devices. + TransportMMIO VirtioTransport = "mmio" +) + +// defaultTransport returns the default transport for the current combination +// of host's architecture and QEMU machine type. +func (transport VirtioTransport) defaultTransport(config *Config) VirtioTransport { + switch runtime.GOARCH { + case "amd64", "386": + return TransportPCI + case "s390x": + return TransportCCW + default: + return TransportPCI + } +} + +// isVirtioPCI returns true if the transport is PCI. +func (transport VirtioTransport) isVirtioPCI(config *Config) bool { + if transport == "" { + transport = transport.defaultTransport(config) + } + + return transport == TransportPCI +} + +// isVirtioCCW returns true if the transport is CCW. +func (transport VirtioTransport) isVirtioCCW(config *Config) bool { + if transport == "" { + transport = transport.defaultTransport(config) + } + + return transport == TransportCCW +} + +// getName returns the name of the current transport. +func (transport VirtioTransport) getName(config *Config) string { + if transport == "" { + transport = transport.defaultTransport(config) + } + + return string(transport) +} + // disableModern returns the parameters with the disable-modern option. // In case the device driver is not a PCI device and it doesn't have the option // an empty string is returned. -func (driver DeviceDriver) disableModern(disable bool) string { - if !isVirtioPCI[driver] { +func (transport VirtioTransport) disableModern(config *Config, disable bool) string { + if !transport.isVirtioPCI(config) { return "" } @@ -258,6 +335,17 @@ type FSDevice struct { // DevNo identifies the ccw devices for s390x architecture DevNo string + + // Transport is the virtio transport for this device. + Transport VirtioTransport +} + +// Virtio9PTransport is a map of the virtio-9p device name that corresponds +// to each transport. +var Virtio9PTransport = map[VirtioTransport]string{ + TransportPCI: "virtio-9p-pci", + TransportCCW: "virtio-9p-ccw", + TransportMMIO: "virtio-9p-device", } // Valid returns true if the FSDevice structure is valid and complete. @@ -275,16 +363,16 @@ func (fsdev FSDevice) QemuParams(config *Config) []string { var deviceParams []string var qemuParams []string - deviceParams = append(deviceParams, string(fsdev.Driver)) - if s := fsdev.Driver.disableModern(fsdev.DisableModern); s != "" { + deviceParams = append(deviceParams, fsdev.deviceName(config)) + if s := fsdev.Transport.disableModern(config, fsdev.DisableModern); s != "" { deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) } deviceParams = append(deviceParams, fmt.Sprintf(",fsdev=%s", fsdev.ID)) deviceParams = append(deviceParams, fmt.Sprintf(",mount_tag=%s", fsdev.MountTag)) - if isVirtioPCI[fsdev.Driver] { + if fsdev.Transport.isVirtioPCI(config) { deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", fsdev.ROMFile)) } - if isVirtioCCW[fsdev.Driver] { + if fsdev.Transport.isVirtioCCW(config) { deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", fsdev.DevNo)) } @@ -302,6 +390,21 @@ func (fsdev FSDevice) QemuParams(config *Config) []string { return qemuParams } +// deviceName returns the QEMU shared filesystem device name for the current +// combination of driver and transport. +func (fsdev FSDevice) deviceName(config *Config) string { + if fsdev.Transport == "" { + fsdev.Transport = fsdev.Transport.defaultTransport(config) + } + + switch fsdev.Driver { + case Virtio9P: + return Virtio9PTransport[fsdev.Transport] + } + + return string(fsdev.Driver) +} + // CharDeviceBackend is the character device backend for qemu type CharDeviceBackend string @@ -350,6 +453,17 @@ type CharDevice struct { // DevNo identifies the ccw devices for s390x architecture DevNo string + + // Transport is the virtio transport for this device. + Transport VirtioTransport +} + +// VirtioSerialTransport is a map of the virtio-serial device name that +// corresponds to each transport. +var VirtioSerialTransport = map[VirtioTransport]string{ + TransportPCI: "virtio-serial-pci", + TransportCCW: "virtio-serial-ccw", + TransportMMIO: "virtio-serial-device", } // Valid returns true if the CharDevice structure is valid and complete. @@ -367,9 +481,11 @@ func (cdev CharDevice) QemuParams(config *Config) []string { var deviceParams []string var qemuParams []string - deviceParams = append(deviceParams, string(cdev.Driver)) - if s := cdev.Driver.disableModern(cdev.DisableModern); s != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) + deviceParams = append(deviceParams, cdev.deviceName(config)) + if cdev.Driver == VirtioSerial { + if s := cdev.Transport.disableModern(config, cdev.DisableModern); s != "" { + deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) + } } if cdev.Bus != "" { deviceParams = append(deviceParams, fmt.Sprintf(",bus=%s", cdev.Bus)) @@ -379,11 +495,11 @@ func (cdev CharDevice) QemuParams(config *Config) []string { if cdev.Name != "" { deviceParams = append(deviceParams, fmt.Sprintf(",name=%s", cdev.Name)) } - if isVirtioPCI[cdev.Driver] { + if cdev.Driver == VirtioSerial && cdev.Transport.isVirtioPCI(config) { deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", cdev.ROMFile)) } - if isVirtioCCW[cdev.Driver] { + if cdev.Driver == VirtioSerial && cdev.Transport.isVirtioCCW(config) { deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", cdev.DevNo)) } @@ -404,6 +520,21 @@ func (cdev CharDevice) QemuParams(config *Config) []string { return qemuParams } +// deviceName returns the QEMU device name for the current combination of +// driver and transport. +func (cdev CharDevice) deviceName(config *Config) string { + if cdev.Transport == "" { + cdev.Transport = cdev.Transport.defaultTransport(config) + } + + switch cdev.Driver { + case VirtioSerial: + return VirtioSerialTransport[cdev.Transport] + } + + return string(cdev.Driver) +} + // NetDeviceType is a qemu networking device type. type NetDeviceType string @@ -427,6 +558,80 @@ const ( VHOSTUSER NetDeviceType = "vhostuser" ) +// QemuNetdevParam converts to the QEMU -netdev parameter notation +func (n NetDeviceType) QemuNetdevParam(netdev *NetDevice, config *Config) string { + if netdev.Transport == "" { + netdev.Transport = netdev.Transport.defaultTransport(config) + } + + switch n { + case TAP: + return "tap" + case MACVTAP: + return "tap" + case IPVTAP: + return "tap" + case VETHTAP: + return "tap" // -netdev type=tap -device virtio-net-pci + case VFIO: + if netdev.Transport == TransportMMIO { + log.Fatal("vfio devices are not support with the MMIO transport") + } + return "" // -device vfio-pci (no netdev) + case VHOSTUSER: + if netdev.Transport == TransportCCW { + log.Fatal("vhost-user devices are not supported on IBM Z") + } + return "vhost-user" // -netdev type=vhost-user (no device) + default: + return "" + + } +} + +// QemuDeviceParam converts to the QEMU -device parameter notation +func (n NetDeviceType) QemuDeviceParam(netdev *NetDevice, config *Config) DeviceDriver { + if netdev.Transport == "" { + netdev.Transport = netdev.Transport.defaultTransport(config) + } + + var device string + + switch n { + case TAP: + device = "virtio-net" + case MACVTAP: + device = "virtio-net" + case IPVTAP: + device = "virtio-net" + case VETHTAP: + device = "virtio-net" // -netdev type=tap -device virtio-net-pci + case VFIO: + if netdev.Transport == TransportMMIO { + log.Fatal("vfio devices are not support with the MMIO transport") + } + device = "vfio" // -device vfio-pci (no netdev) + case VHOSTUSER: + if netdev.Transport == TransportCCW { + log.Fatal("vhost-user devices are not supported on IBM Z") + } + return "" // -netdev type=vhost-user (no device) + default: + return "" + } + + switch netdev.Transport { + case TransportPCI: + return DeviceDriver(device + "-pci") + case TransportCCW: + return DeviceDriver(device + "-ccw") + case TransportMMIO: + return DeviceDriver(device + "-device") + default: + return "" + } +} + // NetDevice represents a guest networking device type NetDevice struct { // Type is the netdev type (e.g. tap). @@ -472,6 +677,17 @@ type NetDevice struct { // DevNo identifies the ccw devices for s390x architecture DevNo string + + // Transport is the virtio transport for this device. + Transport VirtioTransport +} + +// VirtioNetTransport is a map of the virtio-net device name that corresponds +// to each transport. +var VirtioNetTransport = map[VirtioTransport]string{ + TransportPCI: "virtio-net-pci", + TransportCCW: "virtio-net-ccw", + TransportMMIO: "virtio-net-device", } // Valid returns true if the NetDevice structure is valid and complete. @@ -494,10 +710,10 @@ func (netdev NetDevice) Valid() bool { // vector flag is required. If the driver is a CCW type than the vector flag is not implemented and only // multi-queue option mq needs to be activated. See comment in libvirt code at // https://github.com/libvirt/libvirt/blob/6e7e965dcd3d885739129b1454ce19e819b54c25/src/qemu/qemu_command.c#L3633 -func (netdev NetDevice) mqParameter() string { +func (netdev NetDevice) mqParameter(config *Config) string { p := []string{",mq=on"} - if isVirtioPCI[netdev.Driver] { + if netdev.Transport.isVirtioPCI(config) { // https://www.linux-kvm.org/page/Multiqueue // -netdev tap,vhost=on,queues=N // enable mq and specify msix vectors in qemu cmdline @@ -518,11 +734,12 @@ func (netdev NetDevice) mqParameter() string { func (netdev NetDevice) QemuDeviceParams(config *Config) []string { var deviceParams []string - if netdev.Type.QemuDeviceParam() == "" { + driver := netdev.Type.QemuDeviceParam(&netdev, config) + if driver == "" { return nil } - deviceParams = append(deviceParams, fmt.Sprintf("driver=%s", netdev.Type.QemuDeviceParam())) + deviceParams = append(deviceParams, fmt.Sprintf("driver=%s", driver)) deviceParams = append(deviceParams, fmt.Sprintf(",netdev=%s", netdev.ID)) deviceParams = append(deviceParams, fmt.Sprintf(",mac=%s", netdev.MACAddress)) @@ -536,20 +753,20 @@ func (netdev NetDevice) QemuDeviceParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf(",addr=%x", addr)) } } - if s := netdev.Driver.disableModern(netdev.DisableModern); s != "" { + if s := netdev.Transport.disableModern(config, netdev.DisableModern); s != "" { deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) } if len(netdev.FDs) > 0 { // Note: We are appending to the device params here - deviceParams = append(deviceParams, netdev.mqParameter()) + deviceParams = append(deviceParams, netdev.mqParameter(config)) } - if isVirtioPCI[netdev.Driver] { + if netdev.Transport.isVirtioPCI(config) { deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", netdev.ROMFile)) } - if isVirtioCCW[netdev.Driver] { + if netdev.Transport.isVirtioCCW(config) { deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", netdev.DevNo)) } @@ -560,11 +777,12 @@ func (netdev NetDevice) QemuDeviceParams(config *Config) []string { func (netdev NetDevice) QemuNetdevParams(config *Config) []string { var netdevParams []string - if netdev.Type.QemuNetdevParam() == "" { + netdevType := netdev.Type.QemuNetdevParam(&netdev, config) + if netdevType == "" { return nil } - netdevParams = append(netdevParams, netdev.Type.QemuNetdevParam()) + netdevParams = append(netdevParams, netdevType) netdevParams = append(netdevParams, fmt.Sprintf(",id=%s", netdev.ID)) if netdev.VHost { @@ -612,7 +830,7 @@ func (netdev NetDevice) QemuParams(config *Config) []string { return nil // implicit error } - if netdev.Type.QemuNetdevParam() != "" { + if netdev.Type.QemuNetdevParam(&netdev, config) != "" { netdevParams = netdev.QemuNetdevParams(config) if netdevParams != nil { qemuParams = append(qemuParams, "-netdev") @@ -620,7 +838,7 @@ func (netdev NetDevice) QemuParams(config *Config) []string { } } - if netdev.Type.QemuDeviceParam() != "" { + if netdev.Type.QemuDeviceParam(&netdev, config) != "" { deviceParams = netdev.QemuDeviceParams(config) if deviceParams != nil { qemuParams = append(qemuParams, "-device") @@ -647,6 +865,9 @@ type SerialDevice struct { // DevNo identifies the ccw devices for s390x architecture DevNo string + + // Transport is the virtio transport for this device. + Transport VirtioTransport } // Valid returns true if the SerialDevice structure is valid and complete. @@ -663,16 +884,16 @@ func (dev SerialDevice) QemuParams(config *Config) []string { var deviceParams []string var qemuParams []string - deviceParams = append(deviceParams, string(dev.Driver)) - if s := dev.Driver.disableModern(dev.DisableModern); s != "" { + deviceParams = append(deviceParams, dev.deviceName(config)) + if s := dev.Transport.disableModern(config, dev.DisableModern); s != "" { deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) } deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", dev.ID)) - if isVirtioPCI[dev.Driver] { + if dev.Transport.isVirtioPCI(config) { deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", dev.ROMFile)) } - if isVirtioCCW[dev.Driver] { + if dev.Transport.isVirtioCCW(config) { deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", dev.DevNo)) } @@ -682,6 +903,21 @@ func (dev SerialDevice) QemuParams(config *Config) []string { return qemuParams } +// deviceName returns the QEMU device name for the current combination of +// driver and transport. +func (dev SerialDevice) deviceName(config *Config) string { + if dev.Transport == "" { + dev.Transport = dev.Transport.defaultTransport(config) + } + + switch dev.Driver { + case VirtioSerial: + return VirtioSerialTransport[dev.Transport] + } + + return string(dev.Driver) +} + // BlockDeviceInterface defines the type of interface the device is connected to. type BlockDeviceInterface string @@ -734,6 +970,17 @@ type BlockDevice struct { // ShareRW enables multiple qemu instances to share the File ShareRW bool + + // Transport is the virtio transport for this device. + Transport VirtioTransport +} + +// VirtioBlockTransport is a map of the virtio-blk device name that corresponds +// to each transport. +var VirtioBlockTransport = map[VirtioTransport]string{ + TransportPCI: "virtio-blk-pci", + TransportCCW: "virtio-blk-ccw", + TransportMMIO: "virtio-blk-device", } // Valid returns true if the BlockDevice structure is valid and complete. @@ -751,8 +998,8 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string { var deviceParams []string var qemuParams []string - deviceParams = append(deviceParams, string(blkdev.Driver)) - if s := blkdev.Driver.disableModern(blkdev.DisableModern); s != "" { + deviceParams = append(deviceParams, blkdev.deviceName(config)) + if s := blkdev.Transport.disableModern(config, blkdev.DisableModern); s != "" { deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) } deviceParams = append(deviceParams, fmt.Sprintf(",drive=%s", blkdev.ID)) @@ -764,11 +1011,11 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, ",config-wce=off") } - if isVirtioPCI[blkdev.Driver] { + if blkdev.Transport.isVirtioPCI(config) { deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", blkdev.ROMFile)) } - if isVirtioCCW[blkdev.Driver] { + if blkdev.Transport.isVirtioCCW(config) { deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", blkdev.DevNo)) } @@ -791,6 +1038,21 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string { return qemuParams } +// deviceName returns the QEMU device name for the current combination of +// driver and transport. +func (blkdev BlockDevice) deviceName(config *Config) string { + if blkdev.Transport == "" { + blkdev.Transport = blkdev.Transport.defaultTransport(config) + } + + switch blkdev.Driver { + case VirtioBlock: + return VirtioBlockTransport[blkdev.Transport] + } + + return string(blkdev.Driver) +} + // VhostUserDevice represents a qemu vhost-user device meant to be passed // in to the guest type VhostUserDevice struct { @@ -805,6 +1067,41 @@ type VhostUserDevice struct { // ROMFile specifies the ROM file being used for this device. ROMFile string + + // Transport is the virtio transport for this device. + Transport VirtioTransport +} + +// VhostUserNetTransport is a map of the virtio-net device name that +// corresponds to each transport. +var VhostUserNetTransport = map[VirtioTransport]string{ + TransportPCI: "virtio-net-pci", + TransportCCW: "virtio-net-ccw", + TransportMMIO: "virtio-net-device", +} + +// VhostUserSCSITransport is a map of the vhost-user-scsi device name that +// corresponds to each transport. +var VhostUserSCSITransport = map[VirtioTransport]string{ + TransportPCI: "vhost-user-scsi-pci", + TransportCCW: "vhost-user-scsi-ccw", + TransportMMIO: "vhost-user-scsi-device", +} + +// VhostUserBlkTransport is a map of the vhost-user-blk device name that +// corresponds to each transport. +var VhostUserBlkTransport = map[VirtioTransport]string{ + TransportPCI: "vhost-user-blk-pci", + TransportCCW: "vhost-user-blk-ccw", + TransportMMIO: "vhost-user-blk-device", +} + +// VhostUserFSTransport is a map of the vhost-user-fs device name that +// corresponds to each transport. +var VhostUserFSTransport = map[VirtioTransport]string{ + TransportPCI: "vhost-user-fs-pci", + TransportCCW: "vhost-user-fs-ccw", + TransportMMIO: "vhost-user-fs-device", } // Valid returns true if there is a valid structure defined for VhostUserDevice @@ -841,7 +1138,7 @@ func (vhostuserDev VhostUserDevice) QemuParams(config *Config) []string { var charParams []string var netParams []string var devParams []string - var driver DeviceDriver + var driver string charParams = append(charParams, "socket") charParams = append(charParams, fmt.Sprintf("id=%s", vhostuserDev.CharDevID)) @@ -850,29 +1147,45 @@ func (vhostuserDev VhostUserDevice) QemuParams(config *Config) []string { switch vhostuserDev.VhostUserType { // if network based vhost device: case VhostUserNet: - driver = VhostUserNet + driver = vhostuserDev.deviceName(config) + if driver == "" { + return nil + } + netParams = append(netParams, "type=vhost-user") netParams = append(netParams, fmt.Sprintf("id=%s", vhostuserDev.TypeDevID)) netParams = append(netParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) netParams = append(netParams, "vhostforce") - devParams = append(devParams, string(driver)) + devParams = append(devParams, driver) devParams = append(devParams, fmt.Sprintf("netdev=%s", vhostuserDev.TypeDevID)) devParams = append(devParams, fmt.Sprintf("mac=%s", vhostuserDev.Address)) case VhostUserSCSI: - driver = VhostUserSCSI - devParams = append(devParams, string(driver)) + driver = vhostuserDev.deviceName(config) + if driver == "" { + return nil + } + + devParams = append(devParams, driver) devParams = append(devParams, fmt.Sprintf("id=%s", vhostuserDev.TypeDevID)) devParams = append(devParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) case VhostUserBlk: - driver = VhostUserBlk - devParams = append(devParams, string(driver)) + driver = vhostuserDev.deviceName(config) + if driver == "" { + return nil + } + + devParams = append(devParams, driver) devParams = append(devParams, "logical_block_size=4096") devParams = append(devParams, "size=512M") devParams = append(devParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) case VhostUserFS: - driver = VhostUserFS - devParams = append(devParams, string(driver)) + driver = vhostuserDev.deviceName(config) + if driver == "" { + return nil + } + + devParams = append(devParams, driver) devParams = append(devParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) devParams = append(devParams, fmt.Sprintf("tag=%s", vhostuserDev.Tag)) devParams = append(devParams, fmt.Sprintf("cache-size=%dM", vhostuserDev.CacheSize)) @@ -883,7 +1196,7 @@ func (vhostuserDev VhostUserDevice) QemuParams(config *Config) []string { return nil } - if isVirtioPCI[driver] { + if vhostuserDev.Transport.isVirtioPCI(config) { devParams = append(devParams, fmt.Sprintf("romfile=%s", vhostuserDev.ROMFile)) } @@ -901,6 +1214,27 @@ func (vhostuserDev VhostUserDevice) QemuParams(config *Config) []string { return qemuParams } +// deviceName returns the QEMU device name for the current combination of +// driver and transport. +func (vhostuserDev VhostUserDevice) deviceName(config *Config) string { + if vhostuserDev.Transport == "" { + vhostuserDev.Transport = vhostuserDev.Transport.defaultTransport(config) + } + + switch vhostuserDev.VhostUserType { + case VhostUserNet: + return VhostUserNetTransport[vhostuserDev.Transport] + case VhostUserSCSI: + return VhostUserSCSITransport[vhostuserDev.Transport] + case VhostUserBlk: + return VhostUserBlkTransport[vhostuserDev.Transport] + case VhostUserFS: + return VhostUserFSTransport[vhostuserDev.Transport] + default: + return "" + } +} + // PCIeRootPortDevice represents a memory balloon device. type PCIeRootPortDevice struct { ID string // format: rp{n}, n>=0 @@ -921,10 +1255,13 @@ type PCIeRootPortDevice struct { IOReserve string // IO reservation ROMFile string // ROMFile specifies the ROM file being used for this device. + + // Transport is the virtio transport for this device. + Transport VirtioTransport } // QemuParams returns the qemu parameters built out of the PCIeRootPortDevice. -func (b PCIeRootPortDevice) QemuParams(_ *Config) []string { +func (b PCIeRootPortDevice) QemuParams(config *Config) []string { var qemuParams []string var deviceParams []string driver := PCIeRootPort @@ -976,7 +1313,7 @@ func (b PCIeRootPortDevice) QemuParams(_ *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf("io-reserve=%s", b.IOReserve)) } - if isVirtioPCI[driver] && b.ROMFile != "" { + if b.Transport.isVirtioPCI(config) && b.ROMFile != "" { deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", b.ROMFile)) } @@ -1016,6 +1353,17 @@ type VFIODevice struct { // Bus specifies device bus Bus string + + // Transport is the virtio transport for this device. + Transport VirtioTransport +} + +// VFIODeviceTransport is a map of the vfio device name that corresponds to +// each transport. +var VFIODeviceTransport = map[VirtioTransport]string{ + TransportPCI: "vfio-pci", + TransportCCW: "vfio-ccw", + TransportMMIO: "vfio-device", } // Valid returns true if the VFIODevice structure is valid and complete. @@ -1028,10 +1376,10 @@ func (vfioDev VFIODevice) QemuParams(config *Config) []string { var qemuParams []string var deviceParams []string - driver := Vfio + driver := vfioDev.deviceName(config) deviceParams = append(deviceParams, fmt.Sprintf("%s,host=%s", driver, vfioDev.BDF)) - if isVirtioPCI[driver] { + if vfioDev.Transport.isVirtioPCI(config) { if vfioDev.VendorID != "" { deviceParams = append(deviceParams, fmt.Sprintf(",x-pci-vendor-id=%s", vfioDev.VendorID)) } @@ -1045,7 +1393,7 @@ func (vfioDev VFIODevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf(",bus=%s", vfioDev.Bus)) } - if isVirtioCCW[driver] { + if vfioDev.Transport.isVirtioCCW(config) { deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", vfioDev.DevNo)) } @@ -1055,6 +1403,16 @@ func (vfioDev VFIODevice) QemuParams(config *Config) []string { return qemuParams } +// deviceName returns the QEMU device name for the current combination of +// driver and transport. +func (vfioDev VFIODevice) deviceName(config *Config) string { + if vfioDev.Transport == "" { + vfioDev.Transport = vfioDev.Transport.defaultTransport(config) + } + + return VFIODeviceTransport[vfioDev.Transport] +} + // SCSIController represents a SCSI controller device. type SCSIController struct { ID string @@ -1076,6 +1434,17 @@ type SCSIController struct { // DevNo identifies the ccw devices for s390x architecture DevNo string + + // Transport is the virtio transport for this device. + Transport VirtioTransport +} + +// SCSIControllerTransport is a map of the virtio-scsi device name that +// corresponds to each transport. +var SCSIControllerTransport = map[VirtioTransport]string{ + TransportPCI: "virtio-scsi-pci", + TransportCCW: "virtio-scsi-ccw", + TransportMMIO: "virtio-scsi-device", } // Valid returns true if the SCSIController structure is valid and complete. @@ -1088,7 +1457,7 @@ func (scsiCon SCSIController) QemuParams(config *Config) []string { var qemuParams []string var devParams []string - driver := VirtioScsi + driver := scsiCon.deviceName(config) devParams = append(devParams, fmt.Sprintf("%s,id=%s", driver, scsiCon.ID)) if scsiCon.Bus != "" { devParams = append(devParams, fmt.Sprintf("bus=%s", scsiCon.Bus)) @@ -1096,17 +1465,17 @@ func (scsiCon SCSIController) QemuParams(config *Config) []string { if scsiCon.Addr != "" { devParams = append(devParams, fmt.Sprintf("addr=%s", scsiCon.Addr)) } - if s := driver.disableModern(scsiCon.DisableModern); s != "" { + if s := scsiCon.Transport.disableModern(config, scsiCon.DisableModern); s != "" { devParams = append(devParams, s) } if scsiCon.IOThread != "" { devParams = append(devParams, fmt.Sprintf("iothread=%s", scsiCon.IOThread)) } - if isVirtioPCI[driver] { + if scsiCon.Transport.isVirtioPCI(config) { devParams = append(devParams, fmt.Sprintf("romfile=%s", scsiCon.ROMFile)) } - if isVirtioCCW[driver] { + if scsiCon.Transport.isVirtioCCW(config) { devParams = append(devParams, fmt.Sprintf("devno=%s", scsiCon.DevNo)) } @@ -1116,6 +1485,16 @@ func (scsiCon SCSIController) QemuParams(config *Config) []string { return qemuParams } +// deviceName returns the QEMU device name for the current combination of +// driver and transport. +func (scsiCon SCSIController) deviceName(config *Config) string { + if scsiCon.Transport == "" { + scsiCon.Transport = scsiCon.Transport.defaultTransport(config) + } + + return SCSIControllerTransport[scsiCon.Transport] +} + // BridgeType is the type of the bridge type BridgeType uint @@ -1194,7 +1573,8 @@ func (bridgeDev BridgeDevice) QemuParams(config *Config) []string { } } - if isVirtioPCI[driver] { + var transport VirtioTransport + if transport.isVirtioPCI(config) { deviceParam = append(deviceParam, fmt.Sprintf(",romfile=%s", bridgeDev.ROMFile)) } @@ -1221,6 +1601,17 @@ type VSOCKDevice struct { // DevNo identifies the ccw devices for s390x architecture DevNo string + + // Transport is the virtio transport for this device. + Transport VirtioTransport +} + +// VSOCKDeviceTransport is a map of the vhost-vsock device name that +// corresponds to each transport. +var VSOCKDeviceTransport = map[VirtioTransport]string{ + TransportPCI: "vhost-vsock-pci", + TransportCCW: "vhost-vsock-ccw", + TransportMMIO: "vhost-vsock-device", } const ( @@ -1250,9 +1641,9 @@ func (vsock VSOCKDevice) QemuParams(config *Config) []string { var deviceParams []string var qemuParams []string - driver := VHostVSock + driver := vsock.deviceName(config) deviceParams = append(deviceParams, string(driver)) - if s := driver.disableModern(vsock.DisableModern); s != "" { + if s := vsock.Transport.disableModern(config, vsock.DisableModern); s != "" { deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) } if vsock.VHostFD != nil { @@ -1262,11 +1653,11 @@ func (vsock VSOCKDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", vsock.ID)) deviceParams = append(deviceParams, fmt.Sprintf(",%s=%d", VSOCKGuestCID, vsock.ContextID)) - if isVirtioPCI[driver] { + if vsock.Transport.isVirtioPCI(config) { deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", vsock.ROMFile)) } - if isVirtioCCW[driver] { + if vsock.Transport.isVirtioCCW(config) { deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", vsock.DevNo)) } @@ -1276,6 +1667,16 @@ func (vsock VSOCKDevice) QemuParams(config *Config) []string { return qemuParams } +// deviceName returns the QEMU device name for the current combination of +// driver and transport. +func (vsock VSOCKDevice) deviceName(config *Config) string { + if vsock.Transport == "" { + vsock.Transport = vsock.Transport.defaultTransport(config) + } + + return VSOCKDeviceTransport[vsock.Transport] +} + // RngDevice represents a random number generator device. type RngDevice struct { // ID is the device ID @@ -1290,6 +1691,16 @@ type RngDevice struct { ROMFile string // DevNo identifies the ccw devices for s390x architecture DevNo string + // Transport is the virtio transport for this device. + Transport VirtioTransport +} + +// RngDeviceTransport is a map of the virtio-rng device name that corresponds +// to each transport. +var RngDeviceTransport = map[VirtioTransport]string{ + TransportPCI: "virtio-rng-pci", + TransportCCW: "virtio-rng-ccw", + TransportMMIO: "virtio-rng-device", } // Valid returns true if the RngDevice structure is valid and complete. @@ -1298,7 +1709,7 @@ func (v RngDevice) Valid() bool { } // QemuParams returns the qemu parameters built out of the RngDevice. -func (v RngDevice) QemuParams(_ *Config) []string { +func (v RngDevice) QemuParams(config *Config) []string { var qemuParams []string //-object rng-random,filename=/dev/hwrng,id=rng0 @@ -1306,18 +1717,17 @@ func (v RngDevice) QemuParams(_ *Config) []string { //-device virtio-rng-pci,rng=rng0,max-bytes=1024,period=1000 var deviceParams []string - driver := VirtioRng objectParams = append(objectParams, "rng-random") objectParams = append(objectParams, "id="+v.ID) - deviceParams = append(deviceParams, string(driver)) + deviceParams = append(deviceParams, v.deviceName(config)) deviceParams = append(deviceParams, "rng="+v.ID) - if isVirtioPCI[driver] { + if v.Transport.isVirtioPCI(config) { deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", v.ROMFile)) } - if isVirtioCCW[driver] { + if v.Transport.isVirtioCCW(config) { deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", v.DevNo)) } @@ -1342,6 +1752,16 @@ func (v RngDevice) QemuParams(_ *Config) []string { return qemuParams } +// deviceName returns the QEMU device name for the current combination of +// driver and transport. +func (v RngDevice) deviceName(config *Config) string { + if v.Transport == "" { + v.Transport = v.Transport.defaultTransport(config) + } + + return RngDeviceTransport[v.Transport] +} + // BalloonDevice represents a memory balloon device. type BalloonDevice struct { DeflateOnOOM bool @@ -1353,25 +1773,35 @@ type BalloonDevice struct { // DevNo identifies the ccw devices for s390x architecture DevNo string + + // Transport is the virtio transport for this device. + Transport VirtioTransport +} + +// BalloonDeviceTransport is a map of the virtio-balloon device name that +// corresponds to each transport. +var BalloonDeviceTransport = map[VirtioTransport]string{ + TransportPCI: "virtio-balloon-pci", + TransportCCW: "virtio-balloon-ccw", + TransportMMIO: "virtio-balloon-device", } // QemuParams returns the qemu parameters built out of the BalloonDevice. -func (b BalloonDevice) QemuParams(_ *Config) []string { +func (b BalloonDevice) QemuParams(config *Config) []string { var qemuParams []string var deviceParams []string - driver := VirtioBalloon - deviceParams = append(deviceParams, string(driver)) + deviceParams = append(deviceParams, b.deviceName(config)) if b.ID != "" { deviceParams = append(deviceParams, "id="+b.ID) } - if isVirtioPCI[driver] { + if b.Transport.isVirtioPCI(config) { deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", b.ROMFile)) } - if isVirtioCCW[driver] { + if b.Transport.isVirtioCCW(config) { deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", b.DevNo)) } @@ -1380,7 +1810,7 @@ func (b BalloonDevice) QemuParams(_ *Config) []string { } else { deviceParams = append(deviceParams, "deflate-on-oom=off") } - if s := driver.disableModern(b.DisableModern); s != "" { + if s := b.Transport.disableModern(config, b.DisableModern); s != "" { deviceParams = append(deviceParams, string(s)) } qemuParams = append(qemuParams, "-device") @@ -1394,6 +1824,16 @@ func (b BalloonDevice) Valid() bool { return b.ID != "" } +// deviceName returns the QEMU device name for the current combination of +// driver and transport. +func (b BalloonDevice) deviceName(config *Config) string { + if b.Transport == "" { + b.Transport = b.Transport.defaultTransport(config) + } + + return BalloonDeviceTransport[b.Transport] +} + // RTCBaseType is the qemu RTC base time type. type RTCBaseType string @@ -1874,7 +2314,7 @@ func (config *Config) appendMemoryKnobs() { if config.Memory.Size == "" { return } - if !isDimmSupported() { + if !isDimmSupported(config) { return } var objMemParam, numaMemParam string diff --git a/qemu/qemu_arch_base.go b/qemu/qemu_arch_base.go deleted file mode 100644 index 3e2e03d00..000000000 --- a/qemu/qemu_arch_base.go +++ /dev/null @@ -1,112 +0,0 @@ -// +build !s390x - -/* -// Copyright contributors to the Virtual Machine Manager for Go project -// -// 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. -*/ - -package qemu - -const ( - // Virtio9P is the 9pfs device driver. - Virtio9P DeviceDriver = "virtio-9p-pci" - - // VirtioSerial is the serial device driver. - VirtioSerial DeviceDriver = "virtio-serial-pci" - - // VirtioNet is the virt-io pci networking device driver. - VirtioNet DeviceDriver = VirtioNetPCI - - // Vfio is the vfio driver - Vfio DeviceDriver = "vfio-pci" - - // VirtioScsi is the virtio-scsi device - VirtioScsi DeviceDriver = "virtio-scsi-pci" - - // VHostVSock is a generic Vsock vhost device - VHostVSock DeviceDriver = "vhost-vsock-pci" -) - -// isVirtioPCI is a map indicating if a DeviceDriver is considered as a -// virtio PCI device, which is helpful to determine if the option "romfile" -// applies or not to this specific device. -var isVirtioPCI = map[DeviceDriver]bool{ - NVDIMM: false, - Virtio9P: true, - VirtioNetPCI: true, - VirtioSerial: true, - VirtioBlock: true, - VirtioBlockPCI: true, - Console: false, - VirtioSerialPort: false, - VHostVSock: true, - VirtioRng: true, - VirtioBalloon: true, - VhostUserSCSI: true, - VhostUserBlk: true, - Vfio: true, - VirtioScsi: true, - PCIBridgeDriver: true, - PCIePCIBridgeDriver: true, - PCIeRootPort: true, -} - -// isVirtioCCW is a dummy map to return always false on no-s390x arch -var isVirtioCCW = map[DeviceDriver]bool{} - -// QemuNetdevParam converts to the QEMU -netdev parameter notation -func (n NetDeviceType) QemuNetdevParam() string { - switch n { - case TAP: - return "tap" - case MACVTAP: - return "tap" - case IPVTAP: - return "tap" - case VETHTAP: - return "tap" // -netdev type=tap -device virtio-net-pci - case VFIO: - return "" // -device vfio-pci (no netdev) - case VHOSTUSER: - return "vhost-user" // -netdev type=vhost-user (no device) - default: - return "" - - } -} - -// QemuDeviceParam converts to the QEMU -device parameter notation -func (n NetDeviceType) QemuDeviceParam() DeviceDriver { - switch n { - case TAP: - return "virtio-net-pci" - case MACVTAP: - return "virtio-net-pci" - case IPVTAP: - return "virtio-net-pci" - case VETHTAP: - return "virtio-net-pci" // -netdev type=tap -device virtio-net-pci - case VFIO: - return "vfio-pci" // -device vfio-pci (no netdev) - case VHOSTUSER: - return "" // -netdev type=vhost-user (no device) - default: - return "" - - } -} - -func isDimmSupported() bool { - return true -} diff --git a/qemu/qemu_arch_base_test.go b/qemu/qemu_arch_base_test.go index 348f46538..d1eb5d24b 100644 --- a/qemu/qemu_arch_base_test.go +++ b/qemu/qemu_arch_base_test.go @@ -36,7 +36,7 @@ var ( deviceSCSIControllerBusAddrStr = "-device virtio-scsi-pci,id=foo,bus=pci.0,addr=00:04.0,disable-modern=true,iothread=iothread1,romfile=efi-virtio.rom" deviceVhostUserSCSIString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -device vhost-user-scsi-pci,id=scsi1,chardev=char1,romfile=efi-virtio.rom" deviceVhostUserBlkString = "-chardev socket,id=char2,path=/tmp/nonexistentsocket.socket -device vhost-user-blk-pci,logical_block_size=4096,size=512M,chardev=char2,romfile=efi-virtio.rom" - deviceBlockString = "-device virtio-blk,disable-modern=true,drive=hd0,scsi=off,config-wce=off,romfile=efi-virtio.rom -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none" + deviceBlockString = "-device virtio-blk-pci,disable-modern=true,drive=hd0,scsi=off,config-wce=off,romfile=efi-virtio.rom -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none" devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff,romfile=efi-virtio.rom" devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff,romfile=efi-virtio.rom" romfile = "efi-virtio.rom" @@ -81,7 +81,7 @@ func TestAppendVirtioBalloon(t *testing.T) { ROMFile: romfile, } - var deviceString = "-device " + string(VirtioBalloon) + var deviceString = "-device " + string(VirtioBalloon) + "-" + string(TransportPCI) deviceString += ",id=" + balloonDevice.ID + ",romfile=" + balloonDevice.ROMFile var OnDeflateOnOMM = ",deflate-on-oom=on" @@ -158,9 +158,6 @@ func TestAppendDeviceVFIOPCIe(t *testing.T) { BDF: "02:00.0", Bus: pcieRootPortID, } - if isVirtioCCW[Vfio] { - vfioDevice.DevNo = DevNo - } testAppend(vfioDevice, deviceVFIOPCIeSimpleString, t) // full test @@ -172,8 +169,5 @@ func TestAppendDeviceVFIOPCIe(t *testing.T) { VendorID: "0x10de", DeviceID: "0x15f8", } - if isVirtioCCW[Vfio] { - vfioDevice.DevNo = DevNo - } testAppend(vfioDevice, deviceVFIOPCIeFullString, t) } diff --git a/qemu/qemu_s390x.go b/qemu/qemu_s390x.go deleted file mode 100644 index 6e54f9b71..000000000 --- a/qemu/qemu_s390x.go +++ /dev/null @@ -1,140 +0,0 @@ -// +build s390x - -/* -// Copyright contributors to the Virtual Machine Manager for Go project -// -// 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. -*/ - -package qemu - -import "log" - -// IBM Z uses CCW devices intead of PCI devices. -// See https://wiki.qemu.org/Documentation/Platforms/S390X -const ( - // Virtio9P is the 9pfs device driver. - Virtio9P DeviceDriver = "virtio-9p-ccw" - - // VirtioSerial is the serial device driver. - VirtioSerial DeviceDriver = "virtio-serial-ccw" - - // VirtioNet is the virt-io ccw networking device driver. - VirtioNet DeviceDriver = VirtioNetCCW - - // Vfio is the vfio driver - Vfio DeviceDriver = "vfio-ccw" - - // VirtioScsi is the virtio-scsi device - VirtioScsi DeviceDriver = "virtio-scsi-ccw" - - // VHostVSock is a generic Vsock Device - VHostVSock DeviceDriver = "vhost-vsock-ccw" -) - -// isVirtioPCI is a fake map on s390x to always avoid the "romfile" -// option -var isVirtioPCI = map[DeviceDriver]bool{ - NVDIMM: false, - Virtio9P: false, - VirtioNetCCW: false, - VirtioSerial: false, - VirtioBlock: false, - Console: false, - VirtioSerialPort: false, - VHostVSock: false, - VirtioRng: false, - VirtioBalloon: false, - VhostUserSCSI: false, - VhostUserBlk: false, - Vfio: false, - VirtioScsi: false, - PCIBridgeDriver: false, - PCIePCIBridgeDriver: false, -} - -// isVirtioCCW returns if the device is a ccw device -var isVirtioCCW = map[DeviceDriver]bool{ - NVDIMM: false, - Virtio9P: true, - VirtioNetCCW: true, - VirtioSerial: true, - VirtioBlock: true, - VirtioBlockCCW: true, - Console: false, - VirtioSerialPort: false, - VHostVSock: true, - VirtioRng: true, - VirtioBalloon: true, - VhostUserSCSI: false, - VhostUserBlk: false, - Vfio: true, - VirtioScsi: true, - PCIBridgeDriver: false, - PCIePCIBridgeDriver: false, -} - -// QemuDeviceParam converts to the QEMU -device parameter notation -// This function has been reimplemented for the s390x architecture to deal -// with the VHOSTUSER case. Vhost user devices are not implemented on s390x -// architecture. For further details see issue -// https://github.com/kata-containers/runtime/issues/659 -func (n NetDeviceType) QemuDeviceParam() string { - switch n { - case TAP: - return string(VirtioNet) - case MACVTAP: - return string(VirtioNet) - case IPVTAP: - return string(VirtioNet) - case VETHTAP: - return string(VirtioNet) - case VFIO: - return string(Vfio) - case VHOSTUSER: - log.Fatal("vhost-user devices are not supported on IBM Z") - return "" - default: - return "" - } -} - -// QemuNetdevParam converts to the QEMU -netdev parameter notation -// This function has been reimplemented for the s390x architecture to deal -// with the VHOSTUSER case. Vhost user devices are not implemented on s390x -// architecture. For further details see issue -// https://github.com/kata-containers/runtime/issues/659 -func (n NetDeviceType) QemuNetdevParam() string { - switch n { - case TAP: - return "tap" - case MACVTAP: - return "tap" - case IPVTAP: - return "tap" - case VETHTAP: - return "tap" - case VFIO: - return "" - case VHOSTUSER: - log.Fatal("vhost-user devices are not supported on IBM Z") - return "" - default: - return "" - - } -} - -func isDimmSupported() bool { - return false -} diff --git a/qemu/qemu_s390x_test.go b/qemu/qemu_s390x_test.go index a9cc66cc5..e455add55 100644 --- a/qemu/qemu_s390x_test.go +++ b/qemu/qemu_s390x_test.go @@ -31,7 +31,7 @@ var ( deviceVFIOString = "-device vfio-ccw,host=02:10.0,devno=" + DevNo deviceSCSIControllerStr = "-device virtio-scsi-ccw,id=foo,devno=" + DevNo deviceSCSIControllerBusAddrStr = "-device virtio-scsi-ccw,id=foo,bus=pci.0,addr=00:04.0,iothread=iothread1,devno=" + DevNo - deviceBlockString = "-device virtio-blk,drive=hd0,scsi=off,config-wce=off,devno=" + DevNo + " -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none" + deviceBlockString = "-device virtio-blk-ccw,drive=hd0,scsi=off,config-wce=off,devno=" + DevNo + " -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none" devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff" devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff" romfile = "" @@ -42,7 +42,7 @@ func TestAppendVirtioBalloon(t *testing.T) { ID: "balloon", } - var deviceString = "-device " + string(VirtioBalloon) + var deviceString = "-device " + string(VirtioBalloon) + "-" + string(TransportCCW) deviceString += ",id=" + balloonDevice.ID balloonDevice.DevNo = DevNo devnoOptios := ",devno=" + DevNo diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 3c2307858..879642cee 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -143,7 +143,7 @@ func TestAppendDeviceFS(t *testing.T) { ROMFile: "efi-virtio.rom", } - if isVirtioCCW[fsdev.Driver] { + if fsdev.Transport.isVirtioCCW(nil) { fsdev.DevNo = DevNo } @@ -164,7 +164,7 @@ func TestAppendDeviceNetwork(t *testing.T) { ROMFile: "efi-virtio.rom", } - if isVirtioCCW[netdev.Driver] { + if netdev.Transport.isVirtioCCW(nil) { netdev.DevNo = DevNo } @@ -195,7 +195,7 @@ func TestAppendDeviceNetworkMq(t *testing.T) { DisableModern: true, ROMFile: "efi-virtio.rom", } - if isVirtioCCW[netdev.Driver] { + if netdev.Transport.isVirtioCCW(nil) { netdev.DevNo = DevNo } @@ -219,7 +219,7 @@ func TestAppendDeviceNetworkPCI(t *testing.T) { ROMFile: romfile, } - if !isVirtioPCI[netdev.Driver] { + if !netdev.Transport.isVirtioPCI(nil) { t.Skip("Test valid only for PCI devices") } @@ -253,7 +253,7 @@ func TestAppendDeviceNetworkPCIMq(t *testing.T) { ROMFile: romfile, } - if !isVirtioPCI[netdev.Driver] { + if !netdev.Transport.isVirtioPCI(nil) { t.Skip("Test valid only for PCI devices") } @@ -267,7 +267,7 @@ func TestAppendDeviceSerial(t *testing.T) { DisableModern: true, ROMFile: romfile, } - if isVirtioCCW[sdev.Driver] { + if sdev.Transport.isVirtioCCW(nil) { sdev.DevNo = DevNo } @@ -285,7 +285,7 @@ func TestAppendDeviceSerialPort(t *testing.T) { Path: "/tmp/char.sock", Name: "channel.0", } - if isVirtioCCW[chardev.Driver] { + if chardev.Transport.isVirtioCCW(nil) { chardev.DevNo = DevNo } testAppend(chardev, deviceSerialPortString, t) @@ -304,7 +304,7 @@ func TestAppendDeviceBlock(t *testing.T) { DisableModern: true, ROMFile: romfile, } - if isVirtioCCW[blkdev.Driver] { + if blkdev.Transport.isVirtioCCW(nil) { blkdev.DevNo = DevNo } testAppend(blkdev, deviceBlockString, t) @@ -318,7 +318,7 @@ func TestAppendDeviceVFIO(t *testing.T) { DeviceID: "0x5678", } - if isVirtioCCW[Vfio] { + if vfioDevice.Transport.isVirtioCCW(nil) { vfioDevice.DevNo = DevNo } @@ -334,7 +334,7 @@ func TestAppendVSOCK(t *testing.T) { ROMFile: romfile, } - if isVirtioCCW[VHostVSock] { + if vsockDevice.Transport.isVirtioCCW(nil) { vsockDevice.DevNo = DevNo } @@ -368,16 +368,19 @@ func TestVSOCKValid(t *testing.T) { func TestAppendVirtioRng(t *testing.T) { var objectString = "-object rng-random,id=rng0" - var deviceString = "-device " + string(VirtioRng) + ",rng=rng0" - if romfile != "" { - deviceString = deviceString + ",romfile=efi-virtio.rom" - } + var deviceString = "-device " + string(VirtioRng) + rngDevice := RngDevice{ ID: "rng0", ROMFile: romfile, } - if isVirtioCCW[VirtioRng] { + deviceString += "-" + string(rngDevice.Transport.getName(nil)) + ",rng=rng0" + if romfile != "" { + deviceString = deviceString + ",romfile=efi-virtio.rom" + } + + if rngDevice.Transport.isVirtioCCW(nil) { rngDevice.DevNo = DevNo deviceString += ",devno=" + rngDevice.DevNo } @@ -438,7 +441,7 @@ func TestAppendDeviceSCSIController(t *testing.T) { ROMFile: romfile, } - if isVirtioCCW[VirtioScsi] { + if scsiCon.Transport.isVirtioCCW(nil) { scsiCon.DevNo = DevNo } @@ -521,7 +524,7 @@ func TestAppendKnobsAllFalse(t *testing.T) { } func TestAppendMemoryHugePages(t *testing.T) { - if !isDimmSupported() { + if !isDimmSupported(nil) { t.Skip("Dimm not supported") } @@ -549,7 +552,7 @@ func TestAppendMemoryHugePages(t *testing.T) { } func TestAppendMemoryMemPrealloc(t *testing.T) { - if !isDimmSupported() { + if !isDimmSupported(nil) { t.Skip("Dimm not supported") } @@ -575,7 +578,7 @@ func TestAppendMemoryMemPrealloc(t *testing.T) { } func TestAppendMemoryMemShared(t *testing.T) { - if !isDimmSupported() { + if !isDimmSupported(nil) { t.Skip("Dimm not supported") } @@ -601,7 +604,7 @@ func TestAppendMemoryMemShared(t *testing.T) { } func TestAppendMemoryFileBackedMem(t *testing.T) { - if !isDimmSupported() { + if !isDimmSupported(nil) { t.Skip("Dimm not supported") } @@ -627,7 +630,7 @@ func TestAppendMemoryFileBackedMem(t *testing.T) { } func TestAppendMemoryFileBackedMemPrealloc(t *testing.T) { - if !isDimmSupported() { + if !isDimmSupported(nil) { t.Skip("Dimm not supported") } diff --git a/qemu/qmp.go b/qemu/qmp.go index ae5626698..83ac94a04 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -846,7 +846,9 @@ func (q *QMP) ExecuteDeviceAdd(ctx context.Context, blockdevID, devID, driver, b "drive": blockdevID, } - if isVirtioCCW[DeviceDriver(driver)] { + var transport VirtioTransport + + if transport.isVirtioCCW(nil) { args["devno"] = bus } else if bus != "" { args["bus"] = bus @@ -855,7 +857,7 @@ func (q *QMP) ExecuteDeviceAdd(ctx context.Context, blockdevID, devID, driver, b if shared && (q.version.Major > 2 || (q.version.Major == 2 && q.version.Minor >= 10)) { args["share-rw"] = "on" } - if isVirtioPCI[DeviceDriver(driver)] { + if transport.isVirtioPCI(nil) { args["romfile"] = romfile if disableModern { @@ -897,12 +899,7 @@ func (q *QMP) ExecuteSCSIDeviceAdd(ctx context.Context, blockdevID, devID, drive "id": devID, "driver": driver, "drive": blockdevID, - } - - if isVirtioCCW[DeviceDriver(driver)] { - args["devno"] = bus - } else { - args["bus"] = bus + "bus": bus, } if scsiID >= 0 { @@ -914,13 +911,6 @@ func (q *QMP) ExecuteSCSIDeviceAdd(ctx context.Context, blockdevID, devID, drive if shared && (q.version.Major > 2 || (q.version.Major == 2 && q.version.Minor >= 10)) { args["share-rw"] = "on" } - if isVirtioPCI[DeviceDriver(driver)] { - args["romfile"] = romfile - - if disableModern { - args["disable-modern"] = disableModern - } - } return q.executeCommand(ctx, "device_add", args, nil) } @@ -1124,7 +1114,10 @@ func (q *QMP) ExecutePCIDeviceAdd(ctx context.Context, blockdevID, devID, driver if queues > 0 { args["num-queues"] = strconv.Itoa(queues) } - if isVirtioPCI[DeviceDriver(driver)] { + + var transport VirtioTransport + + if transport.isVirtioPCI(nil) { args["romfile"] = romfile if disableModern { @@ -1161,9 +1154,18 @@ func (q *QMP) ExecutePCIVhostUserDevAdd(ctx context.Context, driver, devID, char // bdf is the PCI bus-device-function of the pci device. // bus is optional. When hot plugging a PCIe device, the bus can be the ID of the pcie-root-port. func (q *QMP) ExecuteVFIODeviceAdd(ctx context.Context, devID, bdf, bus, romfile string) error { + var driver string + var transport VirtioTransport + + if transport.isVirtioCCW(nil) { + driver = string(VfioCCW) + } else { + driver = string(VfioPCI) + } + args := map[string]interface{}{ "id": devID, - "driver": Vfio, + "driver": driver, "host": bdf, "romfile": romfile, } @@ -1181,7 +1183,7 @@ func (q *QMP) ExecuteVFIODeviceAdd(ctx context.Context, devID, bdf, bus, romfile func (q *QMP) ExecutePCIVFIODeviceAdd(ctx context.Context, devID, bdf, addr, bus, romfile string) error { args := map[string]interface{}{ "id": devID, - "driver": Vfio, + "driver": VfioPCI, "host": bdf, "addr": addr, "romfile": romfile, @@ -1201,7 +1203,7 @@ func (q *QMP) ExecutePCIVFIODeviceAdd(ctx context.Context, devID, bdf, addr, bus func (q *QMP) ExecutePCIVFIOMediatedDeviceAdd(ctx context.Context, devID, sysfsdev, addr, bus, romfile string) error { args := map[string]interface{}{ "id": devID, - "driver": Vfio, + "driver": VfioPCI, "sysfsdev": sysfsdev, "romfile": romfile, } @@ -1265,10 +1267,6 @@ func (q *QMP) ExecuteCPUDeviceAdd(ctx context.Context, driver, cpuID, socketID, } } - if isVirtioPCI[DeviceDriver(driver)] { - args["romfile"] = romfile - } - return q.executeCommand(ctx, "device_add", args, nil) } @@ -1477,7 +1475,7 @@ func (q *QMP) ExecuteBalloon(ctx context.Context, bytes uint64) error { // 1.0 in nested environments. func (q *QMP) ExecutePCIVSockAdd(ctx context.Context, id, guestCID, vhostfd, addr, bus, romfile string, disableModern bool) error { args := map[string]interface{}{ - "driver": VHostVSock, + "driver": VHostVSockPCI, "id": id, "guest-cid": guestCID, "vhostfd": vhostfd, From 3700c55dd766d37e17af354fb9975dc801619d62 Mon Sep 17 00:00:00 2001 From: Peng Tao Date: Wed, 19 Feb 2020 05:21:18 -0800 Subject: [PATCH 205/385] qemu: add block device readonly support So that we can attach it readonly. Signed-off-by: Peng Tao --- qemu/qemu.go | 7 +++++++ qemu/qemu_arch_base_test.go | 2 +- qemu/qemu_s390x_test.go | 2 +- qemu/qemu_test.go | 2 ++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index d774d35e8..a5e5dfaf9 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -971,6 +971,9 @@ type BlockDevice struct { // ShareRW enables multiple qemu instances to share the File ShareRW bool + // ReadOnly sets the block device in readonly mode + ReadOnly bool + // Transport is the virtio transport for this device. Transport VirtioTransport } @@ -1029,6 +1032,10 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string { blkParams = append(blkParams, fmt.Sprintf(",format=%s", blkdev.Format)) blkParams = append(blkParams, fmt.Sprintf(",if=%s", blkdev.Interface)) + if blkdev.ReadOnly { + blkParams = append(blkParams, ",readonly") + } + qemuParams = append(qemuParams, "-device") qemuParams = append(qemuParams, strings.Join(deviceParams, "")) diff --git a/qemu/qemu_arch_base_test.go b/qemu/qemu_arch_base_test.go index d1eb5d24b..9e96f7847 100644 --- a/qemu/qemu_arch_base_test.go +++ b/qemu/qemu_arch_base_test.go @@ -36,7 +36,7 @@ var ( deviceSCSIControllerBusAddrStr = "-device virtio-scsi-pci,id=foo,bus=pci.0,addr=00:04.0,disable-modern=true,iothread=iothread1,romfile=efi-virtio.rom" deviceVhostUserSCSIString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -device vhost-user-scsi-pci,id=scsi1,chardev=char1,romfile=efi-virtio.rom" deviceVhostUserBlkString = "-chardev socket,id=char2,path=/tmp/nonexistentsocket.socket -device vhost-user-blk-pci,logical_block_size=4096,size=512M,chardev=char2,romfile=efi-virtio.rom" - deviceBlockString = "-device virtio-blk-pci,disable-modern=true,drive=hd0,scsi=off,config-wce=off,romfile=efi-virtio.rom -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none" + deviceBlockString = "-device virtio-blk-pci,disable-modern=true,drive=hd0,scsi=off,config-wce=off,romfile=efi-virtio.rom,share-rw=on -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none,readonly" devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff,romfile=efi-virtio.rom" devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff,romfile=efi-virtio.rom" romfile = "efi-virtio.rom" diff --git a/qemu/qemu_s390x_test.go b/qemu/qemu_s390x_test.go index e455add55..9e9cb4024 100644 --- a/qemu/qemu_s390x_test.go +++ b/qemu/qemu_s390x_test.go @@ -31,7 +31,7 @@ var ( deviceVFIOString = "-device vfio-ccw,host=02:10.0,devno=" + DevNo deviceSCSIControllerStr = "-device virtio-scsi-ccw,id=foo,devno=" + DevNo deviceSCSIControllerBusAddrStr = "-device virtio-scsi-ccw,id=foo,bus=pci.0,addr=00:04.0,iothread=iothread1,devno=" + DevNo - deviceBlockString = "-device virtio-blk-ccw,drive=hd0,scsi=off,config-wce=off,devno=" + DevNo + " -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none" + deviceBlockString = "-device virtio-blk-ccw,drive=hd0,scsi=off,config-wce=off,devno=" + DevNo + ",share-rw=on -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none,readonly" devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff" devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff" romfile = "" diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 879642cee..02f9bd88c 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -303,6 +303,8 @@ func TestAppendDeviceBlock(t *testing.T) { WCE: false, DisableModern: true, ROMFile: romfile, + ShareRW: true, + ReadOnly: true, } if blkdev.Transport.isVirtioCCW(nil) { blkdev.DevNo = DevNo From 5378725f1156bc3f7d75e054f3c3ad61d0b79e93 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Fri, 21 Feb 2020 15:34:53 +0000 Subject: [PATCH 206/385] qemu: add pmem flag to memory-backend-file According to QEMU's nvdimm documentation: When 'pmem' is 'on' and QEMU is built with libpmem support, QEMU will take necessary operations to guarantee the persistence of its own writes to the vNVDIMM backend. Signed-off-by: Julio Montes --- qemu/qmp.go | 13 +++++++++++-- qemu/qmp_test.go | 7 ++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 83ac94a04..bf9a77dda 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -1428,8 +1428,9 @@ func (q *QMP) ExecHotplugMemory(ctx context.Context, qomtype, id, mempath string // a NVDIMM driver with the device_add command. // id is the id of the device to add. It must be a valid QMP identifier. // mempath is the path of the device to add, e.g., /dev/rdb0. size is -// the data size of the device. -func (q *QMP) ExecuteNVDIMMDeviceAdd(ctx context.Context, id, mempath string, size int64) error { +// the data size of the device. pmem is to guarantee the persistence of QEMU writes +// to the vNVDIMM backend. +func (q *QMP) ExecuteNVDIMMDeviceAdd(ctx context.Context, id, mempath string, size int64, pmem *bool) error { args := map[string]interface{}{ "qom-type": "memory-backend-file", "id": "nvdimmbackmem" + id, @@ -1439,6 +1440,14 @@ func (q *QMP) ExecuteNVDIMMDeviceAdd(ctx context.Context, id, mempath string, si "share": true, }, } + + if q.version.Major > 4 || (q.version.Major == 4 && q.version.Minor >= 1) { + if pmem != nil { + props := args["props"].(map[string]interface{}) + props["pmem"] = *pmem + } + } + err := q.executeCommand(ctx, "object-add", args, nil) if err != nil { return err diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index c7b9c9e4d..5bc909fd4 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1617,7 +1617,12 @@ func TestExecuteNVDIMMDeviceAdd(t *testing.T) { cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) - err := q.ExecuteNVDIMMDeviceAdd(context.Background(), "nvdimm0", "/dev/rbd0", 1024) + q.version = &QMPVersion{ + Major: 4, + Minor: 1, + } + pmem := true + err := q.ExecuteNVDIMMDeviceAdd(context.Background(), "nvdimm0", "/dev/rbd0", 1024, &pmem) if err != nil { t.Fatalf("Unexpected error: %v", err) } From 787c86b7e53b448684da5f0aaf3549750295900a Mon Sep 17 00:00:00 2001 From: Liam Merwick Date: Wed, 22 Apr 2020 14:28:37 +0000 Subject: [PATCH 207/385] qemu: Add microvm machine type support Following on from #111 which added support for multiple virtio transports, add code to use virtio-mmio as the transport when booting a guest with the microvm machine type and add a microvm case when checking for NUMA support. Also add a test case for machine string parsing. Signed-off-by: Liam Merwick --- qemu/qemu.go | 12 ++++++++++++ qemu/qemu_test.go | 8 ++++++++ 2 files changed, 20 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index a5e5dfaf9..ed211d3cc 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -51,6 +51,11 @@ type Machine struct { Options string } +const ( + // MachineTypeMicrovm is the QEMU microvm machine type for amd64 + MachineTypeMicrovm string = "microvm" +) + // Device is the qemu device interface. type Device interface { Valid() bool @@ -128,6 +133,10 @@ const ( func isDimmSupported(config *Config) bool { switch runtime.GOARCH { case "amd64", "386": + if config != nil && config.Machine.Type == MachineTypeMicrovm { + // microvm does not support NUMA + return false + } return true default: return false @@ -153,6 +162,9 @@ const ( func (transport VirtioTransport) defaultTransport(config *Config) VirtioTransport { switch runtime.GOARCH { case "amd64", "386": + if config != nil && config.Machine.Type == MachineTypeMicrovm { + return TransportMMIO + } return TransportPCI case "s390x": return TransportCCW diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 02f9bd88c..f1de632c8 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -108,6 +108,14 @@ func TestAppendMachine(t *testing.T) { Options: "gic-version=host,usb=off", } testAppend(machine, machineString, t) + + machineString = "-machine microvm,accel=kvm,pic=off,pit=off" + machine = Machine{ + Type: "microvm", + Acceleration: "kvm", + Options: "pic=off,pit=off", + } + testAppend(machine, machineString, t) } func TestAppendEmptyMachine(t *testing.T) { From 0e98b613a848b261056de71ee1c964220b1fa186 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Fri, 24 Apr 2020 15:10:51 +0000 Subject: [PATCH 208/385] qemu: Add max_ports option to virtio-serial device Allow API consumers to change the maximum number of ports in the virtio-serial devices, setting a lower number of ports can improve the boot time and reduce the attack surface. fixes #120 Signed-off-by: Julio Montes --- qemu/qemu.go | 6 ++++++ qemu/qemu_arch_base_test.go | 2 +- qemu/qemu_test.go | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index ed211d3cc..92ad82a74 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -880,6 +880,9 @@ type SerialDevice struct { // Transport is the virtio transport for this device. Transport VirtioTransport + + // MaxPorts is the maximum number of ports for this device. + MaxPorts uint } // Valid returns true if the SerialDevice structure is valid and complete. @@ -903,6 +906,9 @@ func (dev SerialDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", dev.ID)) if dev.Transport.isVirtioPCI(config) { deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", dev.ROMFile)) + if dev.Driver == VirtioSerial && dev.MaxPorts != 0 { + deviceParams = append(deviceParams, fmt.Sprintf(",max_ports=%d", dev.MaxPorts)) + } } if dev.Transport.isVirtioCCW(config) { diff --git a/qemu/qemu_arch_base_test.go b/qemu/qemu_arch_base_test.go index 9e96f7847..3e22ceeb0 100644 --- a/qemu/qemu_arch_base_test.go +++ b/qemu/qemu_arch_base_test.go @@ -24,7 +24,7 @@ var ( deviceFSString = "-device virtio-9p-pci,disable-modern=true,fsdev=workload9p,mount_tag=rootfs,romfile=efi-virtio.rom -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none" deviceNetworkString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,disable-modern=true,romfile=efi-virtio.rom" deviceNetworkStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,disable-modern=true,mq=on,vectors=6,romfile=efi-virtio.rom" - deviceSerialString = "-device virtio-serial-pci,disable-modern=true,id=serial0,romfile=efi-virtio.rom" + deviceSerialString = "-device virtio-serial-pci,disable-modern=true,id=serial0,romfile=efi-virtio.rom,max_ports=2" deviceVhostUserNetString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -netdev type=vhost-user,id=net1,chardev=char1,vhostforce -device virtio-net-pci,netdev=net1,mac=00:11:22:33:44:55,romfile=efi-virtio.rom" deviceVSOCKString = "-device vhost-vsock-pci,disable-modern=true,id=vhost-vsock-pci0,guest-cid=4,romfile=efi-virtio.rom" deviceVFIOString = "-device vfio-pci,host=02:10.0,x-pci-vendor-id=0x1234,x-pci-device-id=0x5678,romfile=efi-virtio.rom" diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index f1de632c8..1aa9ac3f3 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -274,6 +274,7 @@ func TestAppendDeviceSerial(t *testing.T) { ID: "serial0", DisableModern: true, ROMFile: romfile, + MaxPorts: 2, } if sdev.Transport.isVirtioCCW(nil) { sdev.DevNo = DevNo From 29529a5d72ea7394202e272d9b2a48fe6b978d8e Mon Sep 17 00:00:00 2001 From: Shuicheng Lin Date: Mon, 4 May 2020 22:56:21 +0800 Subject: [PATCH 209/385] Add rt clock definition for rtc clock in qemu There are three different types for the RTC clock: host, rt and vm. Add `rt` to the list of RTC clocks. Signed-off-by: Shuicheng Lin --- qemu/qemu.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index ed211d3cc..3012ceb37 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1876,6 +1876,9 @@ const ( // Host is for using the host clock as a reference. Host RTCClock = "host" + // RT is for using the host monotonic clock as a reference. + RT RTCClock = "rt" + // VM is for using the guest clock as a reference VM RTCClock = "vm" ) @@ -1902,7 +1905,7 @@ type RTC struct { // Valid returns true if the RTC structure is valid and complete. func (rtc RTC) Valid() bool { - if rtc.Clock != Host && rtc.Clock != VM { + if rtc.Clock != Host && rtc.Clock != RT && rtc.Clock != VM { return false } From b2aa0225ac2468809e818dcc5f1bad5c95fa4507 Mon Sep 17 00:00:00 2001 From: "Pradipta Kr. Banerjee" Date: Wed, 13 May 2020 01:21:00 +0530 Subject: [PATCH 210/385] Enable Numa support for Power (ppc64le) architecture Fixes #124 Signed-off-by: bpradipt@in.ibm.com --- qemu/qemu.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 878456af7..6ba204874 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -132,7 +132,7 @@ const ( func isDimmSupported(config *Config) bool { switch runtime.GOARCH { - case "amd64", "386": + case "amd64", "386", "ppc64le": if config != nil && config.Machine.Type == MachineTypeMicrovm { // microvm does not support NUMA return false From e57e86e2eae348cb9bda809f6e78a766ce4cfcb5 Mon Sep 17 00:00:00 2001 From: Adrian Moreno Date: Tue, 10 Mar 2020 18:28:50 +0100 Subject: [PATCH 211/385] qemu: add IOMMU Device The following options can be provided Intremap: activates interrupt remapping DeviceIotlb: enables device IOTLB support for the vIOMMU CachingMode: enables Cahing Mode See: https://wiki.qemu.org/Features/VT-d Signed-off-by: Adrian Moreno --- qemu/qemu.go | 46 ++++++++++++++++++++++++++++++++++++++++++++++ qemu/qemu_test.go | 24 ++++++++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index 6ba204874..a149dad8b 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1861,6 +1861,52 @@ func (b BalloonDevice) deviceName(config *Config) string { return BalloonDeviceTransport[b.Transport] } +// IommuDev represents a Intel IOMMU Device +type IommuDev struct { + Intremap bool + DeviceIotlb bool + CachingMode bool +} + +// Valid returns true if the IommuDev is valid +func (dev IommuDev) Valid() bool { + return true +} + +// deviceName the qemu device name +func (dev IommuDev) deviceName() string { + return "intel-iommu" +} + +// QemuParams returns the qemu parameters built out of the IommuDev. +func (dev IommuDev) QemuParams(_ *Config) []string { + var qemuParams []string + var deviceParams []string + + deviceParams = append(deviceParams, dev.deviceName()) + if dev.Intremap { + deviceParams = append(deviceParams, "intremap=on") + } else { + deviceParams = append(deviceParams, "intremap=off") + } + + if dev.DeviceIotlb { + deviceParams = append(deviceParams, "device-iotlb=on") + } else { + deviceParams = append(deviceParams, "device-iotlb=off") + } + + if dev.CachingMode { + deviceParams = append(deviceParams, "caching-mode=on") + } else { + deviceParams = append(deviceParams, "caching-mode=off") + } + + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) + return qemuParams +} + // RTCBaseType is the qemu RTC base time type. type RTCBaseType string diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 1aa9ac3f3..fe02bbdb4 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -1125,3 +1125,27 @@ func TestBadCPUs(t *testing.T) { t.Errorf("Error expected") } } + +var ( + vIommuString = "-device intel-iommu,intremap=on,device-iotlb=on,caching-mode=on" + vIommuNoCacheString = "-device intel-iommu,intremap=on,device-iotlb=on,caching-mode=off" +) + +func TestIommu(t *testing.T) { + iommu := IommuDev{ + Intremap: true, + DeviceIotlb: true, + CachingMode: true, + } + + if !iommu.Valid() { + t.Fatalf("iommu should be valid") + } + + testAppend(iommu, vIommuString, t) + + iommu.CachingMode = false + + testAppend(iommu, vIommuNoCacheString, t) + +} From cc538766613bd60ef4db042168d20dfc3119d553 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Fri, 29 May 2020 20:40:35 +0000 Subject: [PATCH 212/385] qemu/qmp: use boolean type for the vhost vhost is a Netdev Tap Option used to configure a host TAP network interface backend, according to the QMP API documentation the type for such option must be a boolean. Use boolean type for vhost option to fix the following error on recent versions of QEMU: ``` Invalid parameter type for 'vhost', expected: boolean ``` Signed-off-by: Julio Montes --- qemu/qmp.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index bf9a77dda..5585a8792 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -993,7 +993,7 @@ func (q *QMP) ExecuteNetdevAddByFds(ctx context.Context, netdevType, netdevID st } if len(vhostFdNames) > 0 { vhostFdNameStr := strings.Join(vhostFdNames, ":") - args["vhost"] = "on" + args["vhost"] = true args["vhostfds"] = vhostFdNameStr } From abca6f3ce994daac7abfba93b11f221804df6972 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Wed, 22 Jul 2020 11:36:14 -0500 Subject: [PATCH 213/385] Add multidevs option to fsdev multidevs specifies how to deal with multiple devices being shared with a 9p export. `multidevs=remap` fixes the following warning: ``` 9p: Multiple devices detected in same VirtFS export, which might lead to file ID collisions and severe misbehaviours on guest! You should either use a separate export for each device shared from host or use virtfs option 'multidevs=remap'! ``` Signed-off-by: Julio Montes --- qemu/qemu.go | 25 +++++++++++++++++++++++++ qemu/qemu_arch_base_test.go | 2 +- qemu/qemu_s390x_test.go | 2 +- qemu/qemu_test.go | 1 + 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index a149dad8b..4716595cd 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -288,6 +288,23 @@ func (object Object) QemuParams(config *Config) []string { return qemuParams } +// Virtio9PMultidev filesystem behaviour to deal +// with multiple devices being shared with a 9p export. +type Virtio9PMultidev string + +const ( + // Remap shares multiple devices with only one export. + Remap Virtio9PMultidev = "remap" + + // Warn assumes that only one device is shared by the same export. + // Only a warning message is logged (once) by qemu on host side. + // This is the default behaviour. + Warn Virtio9PMultidev = "warn" + + // Forbid like "warn" but also deny access to additional devices on guest. + Forbid Virtio9PMultidev = "forbid" +) + // FSDriver represents a qemu filesystem driver. type FSDriver string @@ -350,6 +367,10 @@ type FSDevice struct { // Transport is the virtio transport for this device. Transport VirtioTransport + + // Multidev is the filesystem behaviour to deal + // with multiple devices being shared with a 9p export + Multidev Virtio9PMultidev } // Virtio9PTransport is a map of the virtio-9p device name that corresponds @@ -393,6 +414,10 @@ func (fsdev FSDevice) QemuParams(config *Config) []string { fsParams = append(fsParams, fmt.Sprintf(",path=%s", fsdev.Path)) fsParams = append(fsParams, fmt.Sprintf(",security_model=%s", fsdev.SecurityModel)) + if fsdev.Multidev != "" { + fsParams = append(fsParams, fmt.Sprintf(",multidevs=%s", fsdev.Multidev)) + } + qemuParams = append(qemuParams, "-device") qemuParams = append(qemuParams, strings.Join(deviceParams, "")) diff --git a/qemu/qemu_arch_base_test.go b/qemu/qemu_arch_base_test.go index 3e22ceeb0..58de5d1ea 100644 --- a/qemu/qemu_arch_base_test.go +++ b/qemu/qemu_arch_base_test.go @@ -21,7 +21,7 @@ package qemu import "testing" var ( - deviceFSString = "-device virtio-9p-pci,disable-modern=true,fsdev=workload9p,mount_tag=rootfs,romfile=efi-virtio.rom -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none" + deviceFSString = "-device virtio-9p-pci,disable-modern=true,fsdev=workload9p,mount_tag=rootfs,romfile=efi-virtio.rom -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none,multidevs=remap" deviceNetworkString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,disable-modern=true,romfile=efi-virtio.rom" deviceNetworkStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,disable-modern=true,mq=on,vectors=6,romfile=efi-virtio.rom" deviceSerialString = "-device virtio-serial-pci,disable-modern=true,id=serial0,romfile=efi-virtio.rom,max_ports=2" diff --git a/qemu/qemu_s390x_test.go b/qemu/qemu_s390x_test.go index 9e9cb4024..459bb641d 100644 --- a/qemu/qemu_s390x_test.go +++ b/qemu/qemu_s390x_test.go @@ -23,7 +23,7 @@ import "testing" // -pci devices don't play well with Z hence replace them with corresponding -ccw devices // See https://wiki.qemu.org/Documentation/Platforms/S390X var ( - deviceFSString = "-device virtio-9p-ccw,fsdev=workload9p,mount_tag=rootfs,devno=" + DevNo + " -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none" + deviceFSString = "-device virtio-9p-ccw,fsdev=workload9p,mount_tag=rootfs,devno=" + DevNo + " -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none,multidevs=remap" deviceNetworkString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef,devno=" + DevNo deviceNetworkStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef,mq=on,devno=" + DevNo deviceSerialString = "-device virtio-serial-ccw,id=serial0,devno=" + DevNo diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index fe02bbdb4..2e7669a15 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -149,6 +149,7 @@ func TestAppendDeviceFS(t *testing.T) { SecurityModel: None, DisableModern: true, ROMFile: "efi-virtio.rom", + Multidev: Remap, } if fsdev.Transport.isVirtioCCW(nil) { From 6645baf249b59a077ac1d4004a84afe28eb805dc Mon Sep 17 00:00:00 2001 From: Liam Merwick Date: Mon, 20 Jul 2020 13:56:17 +0100 Subject: [PATCH 214/385] qemu: Add NoReboot config Knob for qemuParams The Kata architecture does not support rebooting VMs (the lifecycle being start/exec/kill) and if a VM is killed (e.g. using sysrq-trigger), the VM does not exit fully and other layers do not notice the state change. Kata needs a way to tell QEMU to run with the '--no-reboot' option so that the guest VM exits and does not attempt to reboot. Add a NoReboot boolean Knob so when Knobs.NoReboot is set, the '--no-reboot' command-line option will be passed to QEMU on startup. Signed-off-by: Liam Merwick --- qemu/qemu.go | 7 +++++++ qemu/qemu_test.go | 16 +++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 4716595cd..d5a01c87a 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -2122,6 +2122,9 @@ type Knobs struct { // Realtime will enable realtime QEMU Realtime bool + + // Exit instead of rebooting + NoReboot bool } // IOThread allows IO to be performed on a separate thread. @@ -2457,6 +2460,10 @@ func (config *Config) appendKnobs() { config.qemuParams = append(config.qemuParams, "-nographic") } + if config.Knobs.NoReboot { + config.qemuParams = append(config.qemuParams, "--no-reboot") + } + if config.Knobs.Daemonize { config.qemuParams = append(config.qemuParams, "-daemonize") } diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 2e7669a15..30dedf972 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -501,11 +501,12 @@ func TestAppendEmptyDevice(t *testing.T) { } func TestAppendKnobsAllTrue(t *testing.T) { - var knobsString = "-no-user-config -nodefaults -nographic -daemonize -realtime mlock=on -S" + var knobsString = "-no-user-config -nodefaults -nographic --no-reboot -daemonize -realtime mlock=on -S" knobs := Knobs{ NoUserConfig: true, NoDefaults: true, NoGraphic: true, + NoReboot: true, Daemonize: true, MemPrealloc: true, FileBackedMem: true, @@ -524,6 +525,7 @@ func TestAppendKnobsAllFalse(t *testing.T) { NoUserConfig: false, NoDefaults: false, NoGraphic: false, + NoReboot: false, MemPrealloc: false, FileBackedMem: false, MemShared: false, @@ -668,6 +670,18 @@ func TestAppendMemoryFileBackedMemPrealloc(t *testing.T) { testConfigAppend(conf, knobs, memString+" "+knobsString+" "+mlockFalseString, t) } +func TestNoRebootKnob(t *testing.T) { + conf := &Config{} + + knobs := Knobs{ + NoReboot: true, + } + knobsString := "--no-reboot" + mlockFalseString := "-realtime mlock=off" + + testConfigAppend(conf, knobs, knobsString+" "+mlockFalseString, t) +} + var kernelString = "-kernel /opt/vmlinux.container -initrd /opt/initrd.container -append root=/dev/pmem0p1 rootflags=dax,data=ordered,errors=remount-ro rw rootfstype=ext4 tsc=reliable" func TestAppendKernel(t *testing.T) { From cf0f05d2e9e77465823be132b8fb3b27f1b9d06b Mon Sep 17 00:00:00 2001 From: Qi Feng Huo Date: Wed, 29 Jul 2020 17:12:35 +0800 Subject: [PATCH 215/385] qemu: add iommu_platform knob for qemuParams Signed-off-by: Qi Feng Huo fix typo Signed-off-by: Qi Feng Huo qemu: remove useless fmt.Sprintf for qemuParams Signed-off-by: Qi Feng Huo fix test cases for s390x Signed-off-by: Qi Feng Huo --- qemu/qemu.go | 24 +++++++++++++++++++ qemu/qemu_s390x_test.go | 52 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index d5a01c87a..e326713e1 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -406,6 +406,9 @@ func (fsdev FSDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", fsdev.ROMFile)) } if fsdev.Transport.isVirtioCCW(config) { + if config.Knobs.IOMMUPlatform { + deviceParams = append(deviceParams, ",iommu_platform=on") + } deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", fsdev.DevNo)) } @@ -537,6 +540,9 @@ func (cdev CharDevice) QemuParams(config *Config) []string { } if cdev.Driver == VirtioSerial && cdev.Transport.isVirtioCCW(config) { + if config.Knobs.IOMMUPlatform { + deviceParams = append(deviceParams, ",iommu_platform=on") + } deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", cdev.DevNo)) } @@ -804,6 +810,9 @@ func (netdev NetDevice) QemuDeviceParams(config *Config) []string { } if netdev.Transport.isVirtioCCW(config) { + if config.Knobs.IOMMUPlatform { + deviceParams = append(deviceParams, ",iommu_platform=on") + } deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", netdev.DevNo)) } @@ -937,6 +946,9 @@ func (dev SerialDevice) QemuParams(config *Config) []string { } if dev.Transport.isVirtioCCW(config) { + if config.Knobs.IOMMUPlatform { + deviceParams = append(deviceParams, ",iommu_platform=on") + } deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", dev.DevNo)) } @@ -1528,6 +1540,9 @@ func (scsiCon SCSIController) QemuParams(config *Config) []string { } if scsiCon.Transport.isVirtioCCW(config) { + if config.Knobs.IOMMUPlatform { + devParams = append(devParams, ",iommu_platform=on") + } devParams = append(devParams, fmt.Sprintf("devno=%s", scsiCon.DevNo)) } @@ -1710,6 +1725,9 @@ func (vsock VSOCKDevice) QemuParams(config *Config) []string { } if vsock.Transport.isVirtioCCW(config) { + if config.Knobs.IOMMUPlatform { + deviceParams = append(deviceParams, ",iommu_platform=on") + } deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", vsock.DevNo)) } @@ -1780,6 +1798,9 @@ func (v RngDevice) QemuParams(config *Config) []string { } if v.Transport.isVirtioCCW(config) { + if config.Knobs.IOMMUPlatform { + deviceParams = append(deviceParams, ",iommu_platform=on") + } deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", v.DevNo)) } @@ -2125,6 +2146,9 @@ type Knobs struct { // Exit instead of rebooting NoReboot bool + + // IOMMUPlatform will enable IOMMU for supported devices + IOMMUPlatform bool } // IOThread allows IO to be performed on a separate thread. diff --git a/qemu/qemu_s390x_test.go b/qemu/qemu_s390x_test.go index 459bb641d..afc1afed3 100644 --- a/qemu/qemu_s390x_test.go +++ b/qemu/qemu_s390x_test.go @@ -24,6 +24,7 @@ import "testing" // See https://wiki.qemu.org/Documentation/Platforms/S390X var ( deviceFSString = "-device virtio-9p-ccw,fsdev=workload9p,mount_tag=rootfs,devno=" + DevNo + " -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none,multidevs=remap" + deviceFSIOMMUString = "-device virtio-9p-ccw,fsdev=workload9p,mount_tag=rootfs,iommu_platform=on,devno=" + DevNo + " -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none,multidevs=remap" deviceNetworkString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef,devno=" + DevNo deviceNetworkStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef,mq=on,devno=" + DevNo deviceSerialString = "-device virtio-serial-ccw,id=serial0,devno=" + DevNo @@ -54,3 +55,54 @@ func TestAppendVirtioBalloon(t *testing.T) { balloonDevice.DeflateOnOOM = true testAppend(balloonDevice, deviceString+devnoOptios+OnDeflateOnOMM, t) } + +func TestAppendDeviceFSCCW(t *testing.T) { + defaultKnobs := Knobs{ + NoUserConfig: true, + } + + fsdev := FSDevice{ + Driver: Virtio9P, + FSDriver: Local, + ID: "workload9p", + Path: "/var/lib/docker/devicemapper/mnt/e31ebda2", + MountTag: "rootfs", + SecurityModel: None, + DisableModern: true, + ROMFile: "efi-virtio.rom", + Multidev: Remap, + Transport: TransportCCW, + DevNo: DevNo, + } + + var config Config + config.Knobs = defaultKnobs + + testConfigAppend(&config, fsdev, deviceFSString, t) +} + +func TestAppendDeviceFSCCWIOMMU(t *testing.T) { + defaultKnobs := Knobs{ + NoUserConfig: true, + IOMMUPlatform: true, + } + + fsdev := FSDevice{ + Driver: Virtio9P, + FSDriver: Local, + ID: "workload9p", + Path: "/var/lib/docker/devicemapper/mnt/e31ebda2", + MountTag: "rootfs", + SecurityModel: None, + DisableModern: true, + ROMFile: "efi-virtio.rom", + Multidev: Remap, + Transport: TransportCCW, + DevNo: DevNo, + } + + var config Config + config.Knobs = defaultKnobs + + testConfigAppend(&config, fsdev, deviceFSIOMMUString, t) +} From 4831c6e0a3ffb330788285831ff4cfb0f3ce838d Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Mon, 17 Aug 2020 11:00:07 -0500 Subject: [PATCH 216/385] travis: Run coveralls after success Fix the following error: ``` Bad response status from coveralls: 422 {"message":"service_job_id (717167073) must be unique for Travis Jobs not supplying a Coveralls Repo Token","error":true} The command "$GOPATH/bin/goveralls -v -service=travis-ci" exited with 1. ``` fixes #135 Signed-off-by: Julio Montes --- .travis.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 162aa5042..662abd100 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,5 +21,7 @@ before_install: script: - go env - - $GOPATH/bin/goveralls -v -service=travis-ci - gometalinter --tests --vendor --disable-all --enable=misspell --enable=vet --enable=ineffassign --enable=gofmt --enable=gocyclo --cyclo-over=15 --enable=golint --enable=errcheck --enable=deadcode --enable=staticcheck -enable=gas ./... + +after_success: + - $GOPATH/bin/goveralls -repotoken $COVERALLS_TOKEN -v -service=travis-ci From 1af1c0d783d10a16675ad5a1c05acdcb258d51e5 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Mon, 17 Aug 2020 11:39:54 -0500 Subject: [PATCH 217/385] github: enable github actions Use github actions to run unit tests. Github actions service looks more stable and reliable than travis. fixes #136 Signed-off-by: Julio Montes --- .github/workflows/main.yml | 40 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 000000000..6f55612d3 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,40 @@ +on: ["push", "pull_request"] +name: Unit tests +jobs: + test: + strategy: + matrix: + go-version: [1.13.x, 1.14.x, 1.15.x] + os: [ubuntu-latest] + runs-on: ${{ matrix.os }} + env: + GO111MODULE: off + steps: + - name: Install Go + uses: actions/setup-go@v2 + with: + go-version: ${{ matrix.go-version }} + - name: Setup GOPATH + run: | + gopath_org=$(go env GOPATH)/src/github.com/intel/ + mkdir -p ${gopath_org} + ln -s ${PWD} ${gopath_org} + - name: Checkout code + uses: actions/checkout@v2 + - name: Install gometalinter + run: | + go get github.com/alecthomas/gometalinter + $(go env GOPATH)/bin/gometalinter --install + - name: Running gometalinter + run: | + gopath_repo=$(go env GOPATH)/src/github.com/intel/govmm + pushd ${gopath_repo} + $(go env GOPATH)/bin/gometalinter --tests --vendor --disable-all --enable=misspell --enable=vet --enable=ineffassign --enable=gofmt --enable=gocyclo --cyclo-over=15 --enable=golint --enable=errcheck --enable=deadcode --enable=staticcheck -enable=gas ./... + - name: Send coverage + env: + COVERALLS_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gopath_repo=$(go env GOPATH)/src/github.com/intel/govmm + pushd ${gopath_repo} + go get github.com/mattn/goveralls + $(go env GOPATH)/bin/goveralls -v -service=github From f5bdd53ce635686c0304c5575d837e3bd06a674c Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Mon, 17 Aug 2020 13:03:11 -0500 Subject: [PATCH 218/385] travis: disable amd64 jobs move amd64 CI jobs to github actions Signed-off-by: Julio Montes --- .github/workflows/main.yml | 2 +- .travis.yml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6f55612d3..05784b1b5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,4 +1,4 @@ -on: ["push", "pull_request"] +on: ["pull_request"] name: Unit tests jobs: test: diff --git a/.travis.yml b/.travis.yml index 162aa5042..8ec1cbd8b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,6 @@ go: - "1.11" - tip arch: - - amd64 - s390x go_import_path: github.com/intel/govmm From 39c372a2012caf6efcb50d23619a06f969c0370c Mon Sep 17 00:00:00 2001 From: Jakob-Naucke Date: Thu, 6 Aug 2020 14:39:26 +0200 Subject: [PATCH 219/385] Add support for hot-plugging IBM VFIO-AP devices Add ExecuteAPVFIOMediatedDeviceAdd to qmp.go, which executes a hotplug for an IBM Adjunct processor (AP) VFIO device (see also https://www.kernel.org/doc/html/latest/s390/vfio-ap.html ) Also includes the respective unittest and adds the VfioAP DeviceDriver constant to qemu.go. Pushing again due to incidental CI failure Fixes: #133 Signed-off-by: Jakob-Naucke Reviewed-by: alicefr --- qemu/qemu.go | 3 +++ qemu/qmp.go | 9 +++++++++ qemu/qmp_test.go | 17 +++++++++++++++++ 3 files changed, 29 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index e326713e1..9288f59f8 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -123,6 +123,9 @@ const ( // VfioCCW is the vfio driver with CCW transport. VfioCCW DeviceDriver = "vfio-ccw" + // VfioAP is the vfio driver with AP transport. + VfioAP DeviceDriver = "vfio-ap" + // VHostVSockPCI is a generic Vsock vhost device with PCI transport. VHostVSockPCI DeviceDriver = "vhost-vsock-pci" diff --git a/qemu/qmp.go b/qemu/qmp.go index 5585a8792..9ee81d887 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -1217,6 +1217,15 @@ func (q *QMP) ExecutePCIVFIOMediatedDeviceAdd(ctx context.Context, devID, sysfsd return q.executeCommand(ctx, "device_add", args, nil) } +// ExecuteAPVFIOMediatedDeviceAdd adds a VFIO mediated AP device to a QEMU instance using the device_add command. +func (q *QMP) ExecuteAPVFIOMediatedDeviceAdd(ctx context.Context, sysfsdev string) error { + args := map[string]interface{}{ + "driver": VfioAP, + "sysfsdev": sysfsdev, + } + return q.executeCommand(ctx, "device_add", args, nil) +} + // isSocketIDSupported returns if the cpu driver supports the socket id option func isSocketIDSupported(driver string) bool { if driver == "host-s390x-cpu" || driver == "host-powerpc64-cpu" { diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 5bc909fd4..81cb399de 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1100,6 +1100,23 @@ func TestQMPPCIVFIOPCIeDeviceAdd(t *testing.T) { <-disconnectedCh } +func TestQMPAPVFIOMediatedDeviceAdd(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("device_add", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + sysfsDev := "/sys/devices/vfio_ap/matrix/a297db4a-f4c2-11e6-90f6-d3b88d6c9525" + err := q.ExecuteAPVFIOMediatedDeviceAdd(context.Background(), sysfsDev) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + q.Shutdown() + <-disconnectedCh +} + // Checks that CPU are correctly added using device_add func TestQMPCPUDeviceAdd(t *testing.T) { drivers := []string{"host-x86_64-cpu", "host-s390x-cpu", "host-powerpc64-cpu"} From 3d46d08a902297a211c7dd202b8f13d56d71052d Mon Sep 17 00:00:00 2001 From: David Gibson Date: Thu, 3 Sep 2020 14:02:44 +1000 Subject: [PATCH 220/385] Add qom-get function Add a function to access the qom-get QMP command so we can query information from qemu. Signed-off-by: David Gibson --- qemu/qmp.go | 15 +++++++++++++++ qemu/qmp_test.go | 24 ++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/qemu/qmp.go b/qemu/qmp.go index 4942727c4..fc3f1e3f3 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -1639,3 +1639,18 @@ func (q *QMP) ExecQomSet(ctx context.Context, path, property string, value uint6 return q.executeCommand(ctx, "qom-set", args, nil) } + +// ExecQomGet qom-get path property +func (q *QMP) ExecQomGet(ctx context.Context, path, property string) (interface{}, error) { + args := map[string]interface{}{ + "path": path, + "property": property, + } + + response, err := q.executeCommandWithResponse(ctx, "qom-get", args, nil, nil) + if err != nil { + return "", err + } + + return response, nil +} diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 81cb399de..14bfd2492 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1770,3 +1770,27 @@ func TestExecQomSet(t *testing.T) { q.Shutdown() <-disconnectedCh } + +// Checks qom-get +func TestExecQomGet(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("qom-get", nil, "return", "container") + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + val, err := q.ExecQomGet(context.Background(), "/", "type") + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + vals, ok := val.(string) + if !ok { + t.Fatalf("Unexpected type in qom-get") + } + if vals != "container" { + t.Fatalf("Unpexected value in qom-get") + } + q.Shutdown() + <-disconnectedCh +} From 9f309c2aa1c2157c3a8614f88d4a957b6515b25a Mon Sep 17 00:00:00 2001 From: "James O. D. Hunt" Date: Fri, 9 Oct 2020 09:10:10 +0100 Subject: [PATCH 221/385] misc: Update for new GitHub organisation name `govmm` is now part of the `kata-containers` GitHub organisation, so update to reflect this. Fixes: #145. Signed-off-by: James O. D. Hunt --- .github/workflows/main.yml | 6 +++--- .travis.yml | 2 +- CONTRIBUTING.md | 4 ++-- README.md | 10 +++++----- qemu/examples_test.go | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 05784b1b5..0ced8ae57 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -16,7 +16,7 @@ jobs: go-version: ${{ matrix.go-version }} - name: Setup GOPATH run: | - gopath_org=$(go env GOPATH)/src/github.com/intel/ + gopath_org=$(go env GOPATH)/src/github.com/kata-containers/ mkdir -p ${gopath_org} ln -s ${PWD} ${gopath_org} - name: Checkout code @@ -27,14 +27,14 @@ jobs: $(go env GOPATH)/bin/gometalinter --install - name: Running gometalinter run: | - gopath_repo=$(go env GOPATH)/src/github.com/intel/govmm + gopath_repo=$(go env GOPATH)/src/github.com/kata-containers/govmm pushd ${gopath_repo} $(go env GOPATH)/bin/gometalinter --tests --vendor --disable-all --enable=misspell --enable=vet --enable=ineffassign --enable=gofmt --enable=gocyclo --cyclo-over=15 --enable=golint --enable=errcheck --enable=deadcode --enable=staticcheck -enable=gas ./... - name: Send coverage env: COVERALLS_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - gopath_repo=$(go env GOPATH)/src/github.com/intel/govmm + gopath_repo=$(go env GOPATH)/src/github.com/kata-containers/govmm pushd ${gopath_repo} go get github.com/mattn/goveralls $(go env GOPATH)/bin/goveralls -v -service=github diff --git a/.travis.yml b/.travis.yml index e249dcf84..8dc92a820 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,7 @@ go: arch: - s390x -go_import_path: github.com/intel/govmm +go_import_path: github.com/kata-containers/govmm matrix: allow_failures: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 99630bccf..451903e0a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -85,12 +85,12 @@ We accept github pull requests. We request you give quality assurance some consideration by: * Adding go unit tests for changes where it makes sense. -* Enabling [Travis CI](https://travis-ci.org/intel/govmm) on your github fork of Virtual Machine Manager for Go to get continuous integration feedback on your dev/test branches. +* Enabling [Travis CI](https://travis-ci.org/kata-containers/govmm) on your github fork of Virtual Machine Manager for Go to get continuous integration feedback on your dev/test branches. ## Issue tracking If you have a problem, please let us know. If it's a bug not already documented, by all means please [open an -issue in github](https://github.com/intel/govmm/issues/new) so we all get visibility +issue in github](https://github.com/kata-containers/govmm/issues/new) so we all get visibility the problem and work toward resolution. Any security issues discovered with govmm should be reported by following the instructions on https://01.org/security. diff --git a/README.md b/README.md index 2bb92f0c4..e23bab54b 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ # Virtual Machine Manager for Go -[![Go Report Card](https://goreportcard.com/badge/github.com/intel/govmm)](https://goreportcard.com/report/github.com/intel/govmm) -[![Build Status](https://travis-ci.org/intel/govmm.svg?branch=master)](https://travis-ci.org/intel/govmm) -[![GoDoc](https://godoc.org/github.com/intel/govmm/qemu?status.svg)](https://godoc.org/github.com/intel/govmm/qemu) -[![Coverage Status](https://coveralls.io/repos/github/intel/govmm/badge.svg?branch=master)](https://coveralls.io/github/intel/govmm?branch=master) +[![Go Report Card](https://goreportcard.com/badge/github.com/kata-containers/govmm)](https://goreportcard.com/report/github.com/kata-containers/govmm) +[![Build Status](https://travis-ci.org/kata-containers/govmm.svg?branch=master)](https://travis-ci.org/kata-containers/govmm) +[![GoDoc](https://godoc.org/github.com/kata-containers/govmm/qemu?status.svg)](https://godoc.org/github.com/kata-containers/govmm/qemu) +[![Coverage Status](https://coveralls.io/repos/github/kata-containers/govmm/badge.svg?branch=master)](https://coveralls.io/github/kata-containers/govmm?branch=master) Virtual Machine Manager for Go (govmm) is a suite of packages that provide Go APIs for creating and managing virtual machines. There's currently support for only one hypervisor, qemu/kvm, support for which -is provided by the github.com/intel/govmm/qemu package. +is provided by the github.com/kata-containers/govmm/qemu package. The qemu package provides APIs for launching qemu instances and for managing those instances via QMP, once launched. VM instances can diff --git a/qemu/examples_test.go b/qemu/examples_test.go index 737d58913..014e9be3b 100644 --- a/qemu/examples_test.go +++ b/qemu/examples_test.go @@ -21,7 +21,7 @@ import ( "context" - "github.com/intel/govmm/qemu" + "github.com/kata-containers/govmm/qemu" ) func Example() { From 29ba5a90121534bf6245263d29a2c5cb24f33f75 Mon Sep 17 00:00:00 2001 From: Salvatore Mazzarino Date: Fri, 9 Oct 2020 10:17:58 +0200 Subject: [PATCH 222/385] qemu: add fw_cfg flag to config Signed-off-by: Salvatore Mazzarino --- qemu/qemu.go | 65 +++++++++++++++++++++++++++++++++++++++++++++++ qemu/qemu_test.go | 39 ++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index 9288f59f8..05cf9e16b 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -2103,6 +2103,54 @@ type Kernel struct { Params string } +// FwCfg allows QEMU to pass entries to the guest +// File and Str are mutually exclusive +type FwCfg struct { + Name string + File string + Str string +} + +// Valid returns true if the FwCfg structure is valid and complete. +func (fwcfg FwCfg) Valid() bool { + if fwcfg.Name == "" { + return false + } + + if fwcfg.File != "" && fwcfg.Str != "" { + return false + } + + if fwcfg.File == "" && fwcfg.Str == "" { + return false + } + + return true +} + +// QemuParams returns the qemu parameters built out of the FwCfg object +func (fwcfg FwCfg) QemuParams(config *Config) []string { + var fwcfgParams []string + var qemuParams []string + + if config.FwCfg.Name != "" { + fwcfgParams = append(fwcfgParams, fmt.Sprintf("name=%q", config.FwCfg.Name)) + + if config.FwCfg.File != "" { + fwcfgParams = append(fwcfgParams, fmt.Sprintf(",file=%q", config.FwCfg.File)) + } + + if config.FwCfg.Str != "" { + fwcfgParams = append(fwcfgParams, fmt.Sprintf(",string=%q", config.FwCfg.Str)) + } + } + + qemuParams = append(qemuParams, "-fw_cfg") + qemuParams = append(qemuParams, strings.Join(fwcfgParams, "")) + + return qemuParams +} + // Knobs regroups a set of qemu boolean settings type Knobs struct { // NoUserConfig prevents qemu from loading user config files. @@ -2236,6 +2284,9 @@ type Config struct { // fds is a list of open file descriptors to be passed to the spawned qemu process fds []*os.File + // FwCfg is the -fw_cfg parameter + FwCfg FwCfg + IOThreads []IOThread // PidFile is the -pidfile parameter @@ -2568,6 +2619,19 @@ func (config *Config) appendLogFile() { } } +func (config *Config) appendFwCfg(logger QMPLog) { + if logger == nil { + logger = qmpNullLogger{} + } + + if !config.FwCfg.Valid() { + logger.Errorf("fw_cfg is not valid: %+v", config.FwCfg) + return + } + + config.qemuParams = append(config.qemuParams, config.FwCfg.QemuParams(config)...) +} + // LaunchQemu can be used to launch a new qemu instance. // // The Config parameter contains a set of qemu parameters and settings. @@ -2595,6 +2659,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { config.appendIncoming() config.appendPidFile() config.appendLogFile() + config.appendFwCfg(logger) if err := config.appendCPUs(); err != nil { return "", err diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 30dedf972..6928ede4b 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -44,6 +44,9 @@ func testConfigAppend(config *Config, structure interface{}, expected string, t case Machine: config.Machine = s config.appendMachine() + case FwCfg: + config.FwCfg = s + config.appendFwCfg(nil) case Device: config.Devices = []Device{s} @@ -1141,6 +1144,26 @@ func TestBadCPUs(t *testing.T) { } } +func TestBadFwcfg(t *testing.T) { + c := &Config{} + c.appendFwCfg(nil) + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } + + c = &Config{ + FwCfg: FwCfg{ + Name: "name=opt/com.mycompany/blob", + File: "./my_blob.bin", + Str: "foo", + }, + } + c.appendFwCfg(nil) + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } +} + var ( vIommuString = "-device intel-iommu,intremap=on,device-iotlb=on,caching-mode=on" vIommuNoCacheString = "-device intel-iommu,intremap=on,device-iotlb=on,caching-mode=off" @@ -1164,3 +1187,19 @@ func TestIommu(t *testing.T) { testAppend(iommu, vIommuNoCacheString, t) } + +func TestAppendFwcfg(t *testing.T) { + fwcfgString := "-fw_cfg name=\"opt/com.mycompany/blob\",file=\"./my_blob.bin\"" + fwcfg := FwCfg{ + Name: "opt/com.mycompany/blob", + File: "./my_blob.bin", + } + testAppend(fwcfg, fwcfgString, t) + + fwcfgString = "-fw_cfg name=\"opt/com.mycompany/blob\",string=\"foo\"" + fwcfg = FwCfg{ + Name: "opt/com.mycompany/blob", + Str: "foo", + } + testAppend(fwcfg, fwcfgString, t) +} From cb0d339141c39fcc92bbf37bd0bc181499cd088f Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Fri, 9 Oct 2020 07:50:12 -0500 Subject: [PATCH 223/385] contributors: remove CONTRIBUTORS.md file Remove CONTRIBUTORS.md file since, this repo is now part of the kata-containers organization, the other repos don't have this file and we are not willing to maintain (update) it. Signed-off-by: Julio Montes --- CONTRIBUTORS.md | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 CONTRIBUTORS.md diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md deleted file mode 100644 index 7a822adbe..000000000 --- a/CONTRIBUTORS.md +++ /dev/null @@ -1,22 +0,0 @@ -This file is a partial list of contributors to the Virtual Machine -Manager for Go project. To see the full list of contributors, see the -revision history in source control. - -Contributors who wish to be recognized in this file should add -themselves (or their employer, as appropriate). - -- afrosi@de.ibm.com -- archana.m.shinde@intel.com -- caoruidong@huawei.com -- clare.chenhui@huawei.com -- eric.ernst@intel.com -- james.o.hunt@intel.com -- jose.carlos.venegas.munoz@intel.com -- julio.montes@intel.com -- manohar.r.castelino@intel.com -- mark.d.ryan@intel.com -- robert.bradford@intel.com -- sameo@linux.intel.com -- sebastien.boeuf@intel.com -- teawater@hyper.sh -- xinda.zhao@intel.com From 8cb8b24c05366f5f04137eefb65c789f6da92252 Mon Sep 17 00:00:00 2001 From: Salvatore Mazzarino Date: Mon, 12 Oct 2020 12:29:05 +0200 Subject: [PATCH 224/385] Make fw_cfg a slice Signed-off-by: Salvatore Mazzarino --- qemu/qemu.go | 36 ++++++++++++++++++++---------------- qemu/qemu_test.go | 16 +++++++++------- 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 05cf9e16b..539c78892 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -2133,21 +2133,23 @@ func (fwcfg FwCfg) QemuParams(config *Config) []string { var fwcfgParams []string var qemuParams []string - if config.FwCfg.Name != "" { - fwcfgParams = append(fwcfgParams, fmt.Sprintf("name=%q", config.FwCfg.Name)) + for _, f := range config.FwCfg { + if f.Name != "" { + fwcfgParams = append(fwcfgParams, fmt.Sprintf("name=%s", f.Name)) - if config.FwCfg.File != "" { - fwcfgParams = append(fwcfgParams, fmt.Sprintf(",file=%q", config.FwCfg.File)) + if f.File != "" { + fwcfgParams = append(fwcfgParams, fmt.Sprintf(",file=%s", f.File)) + } + + if f.Str != "" { + fwcfgParams = append(fwcfgParams, fmt.Sprintf(",string=%s", f.Str)) + } } - if config.FwCfg.Str != "" { - fwcfgParams = append(fwcfgParams, fmt.Sprintf(",string=%q", config.FwCfg.Str)) - } + qemuParams = append(qemuParams, "-fw_cfg") + qemuParams = append(qemuParams, strings.Join(fwcfgParams, "")) } - qemuParams = append(qemuParams, "-fw_cfg") - qemuParams = append(qemuParams, strings.Join(fwcfgParams, "")) - return qemuParams } @@ -2285,7 +2287,7 @@ type Config struct { fds []*os.File // FwCfg is the -fw_cfg parameter - FwCfg FwCfg + FwCfg []FwCfg IOThreads []IOThread @@ -2624,12 +2626,14 @@ func (config *Config) appendFwCfg(logger QMPLog) { logger = qmpNullLogger{} } - if !config.FwCfg.Valid() { - logger.Errorf("fw_cfg is not valid: %+v", config.FwCfg) - return - } + for _, f := range config.FwCfg { + if !f.Valid() { + logger.Errorf("fw_cfg is not valid: %+v", config.FwCfg) + continue + } - config.qemuParams = append(config.qemuParams, config.FwCfg.QemuParams(config)...) + config.qemuParams = append(config.qemuParams, f.QemuParams(config)...) + } } // LaunchQemu can be used to launch a new qemu instance. diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 6928ede4b..f0cf81260 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -45,7 +45,7 @@ func testConfigAppend(config *Config, structure interface{}, expected string, t config.Machine = s config.appendMachine() case FwCfg: - config.FwCfg = s + config.FwCfg = []FwCfg{s} config.appendFwCfg(nil) case Device: @@ -1152,10 +1152,12 @@ func TestBadFwcfg(t *testing.T) { } c = &Config{ - FwCfg: FwCfg{ - Name: "name=opt/com.mycompany/blob", - File: "./my_blob.bin", - Str: "foo", + FwCfg: []FwCfg{ + { + Name: "name=opt/com.mycompany/blob", + File: "./my_blob.bin", + Str: "foo", + }, }, } c.appendFwCfg(nil) @@ -1189,14 +1191,14 @@ func TestIommu(t *testing.T) { } func TestAppendFwcfg(t *testing.T) { - fwcfgString := "-fw_cfg name=\"opt/com.mycompany/blob\",file=\"./my_blob.bin\"" + fwcfgString := "-fw_cfg name=opt/com.mycompany/blob,file=./my_blob.bin" fwcfg := FwCfg{ Name: "opt/com.mycompany/blob", File: "./my_blob.bin", } testAppend(fwcfg, fwcfgString, t) - fwcfgString = "-fw_cfg name=\"opt/com.mycompany/blob\",string=\"foo\"" + fwcfgString = "-fw_cfg name=opt/com.mycompany/blob,string=foo" fwcfg = FwCfg{ Name: "opt/com.mycompany/blob", Str: "foo", From 43d774d27b67690e7f7350a4e0da3cb41c7840f5 Mon Sep 17 00:00:00 2001 From: Salvatore Mazzarino Date: Mon, 12 Oct 2020 17:35:06 +0200 Subject: [PATCH 225/385] Add serial to blk device Signed-off-by: Salvatore Mazzarino --- qemu/qemu.go | 2 ++ qemu/qemu_arch_base_test.go | 2 +- qemu/qemu_s390x_test.go | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 05cf9e16b..5b8dee85a 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1084,6 +1084,8 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf(",share-rw=on")) } + deviceParams = append(deviceParams, fmt.Sprintf(",serial=%s", blkdev.ID)) + blkParams = append(blkParams, fmt.Sprintf("id=%s", blkdev.ID)) blkParams = append(blkParams, fmt.Sprintf(",file=%s", blkdev.File)) blkParams = append(blkParams, fmt.Sprintf(",aio=%s", blkdev.AIO)) diff --git a/qemu/qemu_arch_base_test.go b/qemu/qemu_arch_base_test.go index 58de5d1ea..a5f26b823 100644 --- a/qemu/qemu_arch_base_test.go +++ b/qemu/qemu_arch_base_test.go @@ -36,7 +36,7 @@ var ( deviceSCSIControllerBusAddrStr = "-device virtio-scsi-pci,id=foo,bus=pci.0,addr=00:04.0,disable-modern=true,iothread=iothread1,romfile=efi-virtio.rom" deviceVhostUserSCSIString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -device vhost-user-scsi-pci,id=scsi1,chardev=char1,romfile=efi-virtio.rom" deviceVhostUserBlkString = "-chardev socket,id=char2,path=/tmp/nonexistentsocket.socket -device vhost-user-blk-pci,logical_block_size=4096,size=512M,chardev=char2,romfile=efi-virtio.rom" - deviceBlockString = "-device virtio-blk-pci,disable-modern=true,drive=hd0,scsi=off,config-wce=off,romfile=efi-virtio.rom,share-rw=on -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none,readonly" + deviceBlockString = "-device virtio-blk-pci,disable-modern=true,drive=hd0,scsi=off,config-wce=off,romfile=efi-virtio.rom,share-rw=on,serial=hd0 -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none,readonly" devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff,romfile=efi-virtio.rom" devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff,romfile=efi-virtio.rom" romfile = "efi-virtio.rom" diff --git a/qemu/qemu_s390x_test.go b/qemu/qemu_s390x_test.go index afc1afed3..4b99f7ea5 100644 --- a/qemu/qemu_s390x_test.go +++ b/qemu/qemu_s390x_test.go @@ -32,7 +32,7 @@ var ( deviceVFIOString = "-device vfio-ccw,host=02:10.0,devno=" + DevNo deviceSCSIControllerStr = "-device virtio-scsi-ccw,id=foo,devno=" + DevNo deviceSCSIControllerBusAddrStr = "-device virtio-scsi-ccw,id=foo,bus=pci.0,addr=00:04.0,iothread=iothread1,devno=" + DevNo - deviceBlockString = "-device virtio-blk-ccw,drive=hd0,scsi=off,config-wce=off,devno=" + DevNo + ",share-rw=on -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none,readonly" + deviceBlockString = "-device virtio-blk-ccw,drive=hd0,scsi=off,config-wce=off,devno=" + DevNo + ",share-rw=on,serial=hd0 -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none,readonly" devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff" devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff" romfile = "" From d7836877e98957dcf1f8338ab2434e31bdcf5b51 Mon Sep 17 00:00:00 2001 From: bin liu Date: Mon, 19 Oct 2020 16:59:37 +0800 Subject: [PATCH 226/385] qemu: add pvpanic device to get GUEST_PANICKED event Listening to the events channel from QEMU and a guest panic event issued, then we can get the event and do some work for the special event. Fixes: #152 Signed-off-by: bin liu --- qemu/qemu.go | 18 ++++++++++++++++++ qemu/qemu_test.go | 15 +++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index 05cf9e16b..99a7677f2 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1118,6 +1118,24 @@ func (blkdev BlockDevice) deviceName(config *Config) string { return string(blkdev.Driver) } +// PVPanicDevice represents a qemu pvpanic device. +type PVPanicDevice struct { + NoShutdown bool +} + +// Valid always returns true for pvpanic device +func (dev PVPanicDevice) Valid() bool { + return true +} + +// QemuParams returns the qemu parameters built out of this serial device. +func (dev PVPanicDevice) QemuParams(config *Config) []string { + if dev.NoShutdown { + return []string{"-device", "pvpanic", "-no-shutdown"} + } + return []string{"-device", "pvpanic"} +} + // VhostUserDevice represents a qemu vhost-user device meant to be passed // in to the guest type VhostUserDevice struct { diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 6928ede4b..cabc57cc6 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -1203,3 +1203,18 @@ func TestAppendFwcfg(t *testing.T) { } testAppend(fwcfg, fwcfgString, t) } + +func TestAppendPVPanicDevice(t *testing.T) { + testCases := []struct { + dev Device + out string + }{ + {nil, ""}, + {PVPanicDevice{}, "-device pvpanic"}, + {PVPanicDevice{NoShutdown: true}, "-device pvpanic -no-shutdown"}, + } + + for _, tc := range testCases { + testAppend(tc.dev, tc.out, t) + } +} From b8cd7059019012e3d31e56344e7b07f4e4b4134b Mon Sep 17 00:00:00 2001 From: bin liu Date: Mon, 19 Oct 2020 17:09:12 +0800 Subject: [PATCH 227/385] qmp: add dump-guest-memory support By adding `dump-guest-memory` command, user can get kernel memory dump when guest panic occurred. Fixes: #152 Signed-off-by: bin liu --- qemu/qmp.go | 13 ++++++++++++- qemu/qmp_test.go | 19 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index fc3f1e3f3..53ba105a8 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -268,7 +268,7 @@ func (q *QMP) readLoop(fromVMCh chan<- []byte) { for scanner.Scan() { line := scanner.Bytes() if q.cfg.Logger.V(1) { - q.cfg.Logger.Infof("%s", string(line)) + q.cfg.Logger.Infof("read from QMP: %s", string(line)) } // Since []byte channel type transfer slice info(include slice underlying array pointer, len, cap) @@ -1654,3 +1654,14 @@ func (q *QMP) ExecQomGet(ctx context.Context, path, property string) (interface{ return response, nil } + +// ExecuteDumpGuestMemory dump guest memory to host +func (q *QMP) ExecuteDumpGuestMemory(ctx context.Context, protocol string, paging bool, format string) error { + args := map[string]interface{}{ + "protocol": protocol, + "paging": paging, + "format": format, + } + + return q.executeCommand(ctx, "dump-guest-memory", args, nil) +} diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 14bfd2492..60457453c 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1794,3 +1794,22 @@ func TestExecQomGet(t *testing.T) { q.Shutdown() <-disconnectedCh } + +// Checks dump-guest-memory +func TestExecuteDumpGuestMemory(t *testing.T) { + connectedCh := make(chan *QMPVersion) + disconnectedCh := make(chan struct{}) + buf := newQMPTestCommandBuffer(t) + buf.AddCommand("dump-guest-memory", nil, "return", nil) + cfg := QMPConfig{Logger: qmpTestLogger{}} + q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) + checkVersion(t, connectedCh) + + err := q.ExecuteDumpGuestMemory(context.Background(), "file:/tmp/dump.xxx.yyy", false, "elf") + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + + q.Shutdown() + <-disconnectedCh +} From 2079c15c26adc3a0b4b7fae53b32133ef92fe420 Mon Sep 17 00:00:00 2001 From: Edmond AK Dantes Date: Wed, 21 Oct 2020 20:25:57 +0800 Subject: [PATCH 228/385] qemu: enable "-pflash" flash image can store some critical data like firmware, enable it here. Fixes: #140 Signed-off-by: Edmond AK Dantes --- qemu/qemu.go | 11 +++++++++++ qemu/qemu_test.go | 20 ++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index 9b97aba59..567a316f4 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -2300,6 +2300,9 @@ type Config struct { // Bios is the -bios parameter Bios string + // PFlash specifies the parallel flash images (-pflash parameter) + PFlash []string + // Incoming controls migration source preparation Incoming Incoming @@ -2490,6 +2493,13 @@ func (config *Config) appendGlobalParam() { } } +func (config *Config) appendPFlashParam() { + for _, p := range config.PFlash { + config.qemuParams = append(config.qemuParams, "-pflash") + config.qemuParams = append(config.qemuParams, p) + } +} + func (config *Config) appendVGA() { if config.VGA != "" { config.qemuParams = append(config.qemuParams, "-vga") @@ -2675,6 +2685,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { config.appendDevices() config.appendRTC() config.appendGlobalParam() + config.appendPFlashParam() config.appendVGA() config.appendKnobs() config.appendKernel() diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 67b814725..5555ef1a7 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -20,6 +20,7 @@ import ( "fmt" "io/ioutil" "os" + "reflect" "strings" "testing" ) @@ -1026,6 +1027,25 @@ func TestBadGlobalParam(t *testing.T) { } } +func TestBadPFlash(t *testing.T) { + c := &Config{} + c.appendPFlashParam() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } +} + +func TestValidPFlash(t *testing.T) { + c := &Config{} + c.PFlash = []string{"flash0", "flash1"} + c.appendPFlashParam() + expected := []string{"-pflash", "flash0", "-pflash", "flash1"} + ok := reflect.DeepEqual(expected, c.qemuParams) + if !ok { + t.Errorf("Expected %v, found %v", expected, c.qemuParams) + } +} + func TestBadVGA(t *testing.T) { c := &Config{} c.appendVGA() From 0592c825362780372ffa472a22054f6f0188da77 Mon Sep 17 00:00:00 2001 From: Jianyong Wu Date: Wed, 18 Nov 2020 17:17:35 +0800 Subject: [PATCH 229/385] qemu: add arm64 to support list of dimm dimm is supported on arm64, so add is to check list. Signed-off-by: Jianyong Wu Fixes: #155 --- qemu/qemu.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 567a316f4..9cfe39cbd 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -135,7 +135,7 @@ const ( func isDimmSupported(config *Config) bool { switch runtime.GOARCH { - case "amd64", "386", "ppc64le": + case "amd64", "386", "ppc64le", "arm64": if config != nil && config.Machine.Type == MachineTypeMicrovm { // microvm does not support NUMA return false From e2eb549fcdac358ec6d7e3e4dfdfc6c3ddf67f21 Mon Sep 17 00:00:00 2001 From: Eric Ernst Date: Mon, 11 Jan 2021 15:27:51 -0800 Subject: [PATCH 230/385] qmp: Add ro argument for block-device hotplug funcs We should allow users to specify if a block device should be hotplugged as read-only. Fixes: #157 Signed-off-by: Eric Ernst --- qemu/qmp.go | 13 +++++++------ qemu/qmp_test.go | 4 ++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 53ba105a8..73d2ec4cf 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -773,11 +773,12 @@ func (q *QMP) ExecuteQuit(ctx context.Context) error { return q.executeCommand(ctx, "quit", nil, nil) } -func (q *QMP) blockdevAddBaseArgs(device, blockdevID string) (map[string]interface{}, map[string]interface{}) { +func (q *QMP) blockdevAddBaseArgs(device, blockdevID string, ro bool) (map[string]interface{}, map[string]interface{}) { var args map[string]interface{} blockdevArgs := map[string]interface{}{ - "driver": "raw", + "driver": "raw", + "read-only": ro, "file": map[string]interface{}{ "driver": "file", "filename": device, @@ -801,8 +802,8 @@ func (q *QMP) blockdevAddBaseArgs(device, blockdevID string) (map[string]interfa // path of the device to add, e.g., /dev/rdb0, and blockdevID is an identifier // used to name the device. As this identifier will be passed directly to QMP, // it must obey QMP's naming rules, e,g., it must start with a letter. -func (q *QMP) ExecuteBlockdevAdd(ctx context.Context, device, blockdevID string) error { - args, _ := q.blockdevAddBaseArgs(device, blockdevID) +func (q *QMP) ExecuteBlockdevAdd(ctx context.Context, device, blockdevID string, ro bool) error { + args, _ := q.blockdevAddBaseArgs(device, blockdevID, ro) return q.executeCommand(ctx, "blockdev-add", args, nil) } @@ -814,8 +815,8 @@ func (q *QMP) ExecuteBlockdevAdd(ctx context.Context, device, blockdevID string) // direct denotes whether use of O_DIRECT (bypass the host page cache) // is enabled. noFlush denotes whether flush requests for the device are // ignored. -func (q *QMP) ExecuteBlockdevAddWithCache(ctx context.Context, device, blockdevID string, direct, noFlush bool) error { - args, blockdevArgs := q.blockdevAddBaseArgs(device, blockdevID) +func (q *QMP) ExecuteBlockdevAddWithCache(ctx context.Context, device, blockdevID string, direct, noFlush, ro bool) error { + args, blockdevArgs := q.blockdevAddBaseArgs(device, blockdevID, ro) if q.version.Major < 2 || (q.version.Major == 2 && q.version.Minor < 9) { return fmt.Errorf("versions of qemu (%d.%d) older than 2.9 do not support set cache-related options for block devices", diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 60457453c..5a7233f72 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -408,7 +408,7 @@ func TestQMPBlockdevAdd(t *testing.T) { q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) q.version = checkVersion(t, connectedCh) err := q.ExecuteBlockdevAdd(context.Background(), "/dev/rbd0", - fmt.Sprintf("drive_%s", volumeUUID)) + fmt.Sprintf("drive_%s", volumeUUID), false) if err != nil { t.Fatalf("Unexpected error %v", err) } @@ -432,7 +432,7 @@ func TestQMPBlockdevAddWithCache(t *testing.T) { q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) q.version = checkVersion(t, connectedCh) err := q.ExecuteBlockdevAddWithCache(context.Background(), "/dev/rbd0", - fmt.Sprintf("drive_%s", volumeUUID), true, true) + fmt.Sprintf("drive_%s", volumeUUID), true, true, false) if err != nil { t.Fatalf("Unexpected error %v", err) } From 0d47025d051354d4ba7c4990b34445d34a22aa39 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Wed, 24 Mar 2021 10:32:31 -0600 Subject: [PATCH 231/385] qemu: add support for device loaders Devices loaders can be used to load some firmwares. Signed-off-by: Julio Montes --- qemu/qemu.go | 37 +++++++++++++++++++++++++++++++++++++ qemu/qemu_test.go | 17 +++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index 9cfe39cbd..8d982cc63 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -131,6 +131,9 @@ const ( // PCIeRootPort is a PCIe Root Port, the PCIe device should be hotplugged to this port. PCIeRootPort DeviceDriver = "pcie-root-port" + + // Loader is the Loader device driver. + Loader DeviceDriver = "loader" ) func isDimmSupported(config *Config) bool { @@ -1138,6 +1141,40 @@ func (dev PVPanicDevice) QemuParams(config *Config) []string { return []string{"-device", "pvpanic"} } +// LoaderDevice represents a qemu loader device. +type LoaderDevice struct { + File string + ID string +} + +// Valid returns true if there is a valid structure defined for LoaderDevice +func (dev LoaderDevice) Valid() bool { + if dev.File == "" { + return false + } + + if dev.ID == "" { + return false + } + + return true +} + +// QemuParams returns the qemu parameters built out of this loader device. +func (dev LoaderDevice) QemuParams(config *Config) []string { + var qemuParams []string + var devParams []string + + devParams = append(devParams, "loader") + devParams = append(devParams, fmt.Sprintf("file=%s", dev.File)) + devParams = append(devParams, fmt.Sprintf("id=%s", dev.ID)) + + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, strings.Join(devParams, ",")) + + return qemuParams +} + // VhostUserDevice represents a qemu vhost-user device meant to be passed // in to the guest type VhostUserDevice struct { diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 5555ef1a7..39f5c427b 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -1240,3 +1240,20 @@ func TestAppendPVPanicDevice(t *testing.T) { testAppend(tc.dev, tc.out, t) } } + +func TestLoaderDevice(t *testing.T) { + testCases := []struct { + dev Device + out string + }{ + {nil, ""}, + {LoaderDevice{}, ""}, + {LoaderDevice{File: "f"}, ""}, + {LoaderDevice{ID: "id"}, ""}, + {LoaderDevice{File: "f", ID: "id"}, "-device loader,file=f,id=id"}, + } + + for _, tc := range testCases { + testAppend(tc.dev, tc.out, t) + } +} From 6213dea42ae459f5ca05126d4496ff83b380a95b Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Wed, 24 Mar 2021 10:54:05 -0600 Subject: [PATCH 232/385] qemu: support QEMU 6 Use `on` and `off` to enable or disable features, `no` prefix is deprecated Signed-off-by: Julio Montes --- qemu/examples_test.go | 2 +- qemu/qemu.go | 6 +++--- qemu/qemu_test.go | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/qemu/examples_test.go b/qemu/examples_test.go index 014e9be3b..1946aeef8 100644 --- a/qemu/examples_test.go +++ b/qemu/examples_test.go @@ -34,7 +34,7 @@ func Example() { // kvm params = append(params, "-enable-kvm", "-cpu", "host") // qmp socket - params = append(params, "-daemonize", "-qmp", "unix:/tmp/qmp-socket,server,nowait") + params = append(params, "-daemonize", "-qmp", "unix:/tmp/qmp-socket,server=on,wait=off") // resources params = append(params, "-m", "370", "-smp", "cpus=2") diff --git a/qemu/qemu.go b/qemu/qemu.go index 9cfe39cbd..000fb142a 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -552,7 +552,7 @@ func (cdev CharDevice) QemuParams(config *Config) []string { cdevParams = append(cdevParams, string(cdev.Backend)) cdevParams = append(cdevParams, fmt.Sprintf(",id=%s", cdev.ID)) if cdev.Backend == Socket { - cdevParams = append(cdevParams, fmt.Sprintf(",path=%s,server,nowait", cdev.Path)) + cdevParams = append(cdevParams, fmt.Sprintf(",path=%s,server=on,wait=off", cdev.Path)) } else { cdevParams = append(cdevParams, fmt.Sprintf(",path=%s", cdev.Path)) } @@ -2385,9 +2385,9 @@ func (config *Config) appendQMPSockets() { qmpParams := append([]string{}, fmt.Sprintf("%s:", q.Type)) qmpParams = append(qmpParams, q.Name) if q.Server { - qmpParams = append(qmpParams, ",server") + qmpParams = append(qmpParams, ",server=on") if q.NoWait { - qmpParams = append(qmpParams, ",nowait") + qmpParams = append(qmpParams, ",wait=off") } } diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 5555ef1a7..f21a09b85 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -288,7 +288,7 @@ func TestAppendDeviceSerial(t *testing.T) { testAppend(sdev, deviceSerialString, t) } -var deviceSerialPortString = "-device virtserialport,chardev=char0,id=channel0,name=channel.0 -chardev socket,id=char0,path=/tmp/char.sock,server,nowait" +var deviceSerialPortString = "-device virtserialport,chardev=char0,id=channel0,name=channel.0 -chardev socket,id=char0,path=/tmp/char.sock,server=on,wait=off" func TestAppendDeviceSerialPort(t *testing.T) { chardev := CharDevice{ @@ -741,7 +741,7 @@ func TestFailToAppendCPUs(t *testing.T) { } } -var qmpSingleSocketServerString = "-qmp unix:cc-qmp,server,nowait" +var qmpSingleSocketServerString = "-qmp unix:cc-qmp,server=on,wait=off" var qmpSingleSocketString = "-qmp unix:cc-qmp" func TestAppendSingleQMPSocketServer(t *testing.T) { @@ -765,7 +765,7 @@ func TestAppendSingleQMPSocket(t *testing.T) { testAppend(qmp, qmpSingleSocketString, t) } -var qmpSocketServerString = "-qmp unix:cc-qmp-1,server,nowait -qmp unix:cc-qmp-2,server,nowait" +var qmpSocketServerString = "-qmp unix:cc-qmp-1,server=on,wait=off -qmp unix:cc-qmp-2,server=on,wait=off" func TestAppendQMPSocketServer(t *testing.T) { qmp := []QMPSocket{ From 4b136f3f1cc487bd75b2adebff2b06233e318fea Mon Sep 17 00:00:00 2001 From: Jakob Naucke Date: Thu, 25 Feb 2021 16:49:10 +0100 Subject: [PATCH 233/385] qemu: Append memory backend for non-DIMM setups Some architectures and setups do not support DIMM/NUMA. However, they can still use memory backends, provided a memory backend of the same ID is specified under -machine. This was introduced in QEMU 5.0. Enable this functionality in appendMemoryKnobs. Fixes: #160 Signed-off-by: Jakob Naucke --- qemu/qemu.go | 12 ++++---- qemu/qemu_test.go | 75 +++++++++++++++++++++++++++++++---------------- 2 files changed, 57 insertions(+), 30 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 9cfe39cbd..a1d05a909 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -2528,9 +2528,6 @@ func (config *Config) appendMemoryKnobs() { if config.Memory.Size == "" { return } - if !isDimmSupported(config) { - return - } var objMemParam, numaMemParam string dimmName := "dimm1" if config.Knobs.HugePages { @@ -2553,8 +2550,13 @@ func (config *Config) appendMemoryKnobs() { config.qemuParams = append(config.qemuParams, "-object") config.qemuParams = append(config.qemuParams, objMemParam) - config.qemuParams = append(config.qemuParams, "-numa") - config.qemuParams = append(config.qemuParams, numaMemParam) + if isDimmSupported(config) { + config.qemuParams = append(config.qemuParams, "-numa") + config.qemuParams = append(config.qemuParams, numaMemParam) + } else { + config.qemuParams = append(config.qemuParams, "-machine") + config.qemuParams = append(config.qemuParams, "memory-backend="+dimmName) + } } func (config *Config) appendKnobs() { diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 5555ef1a7..69caa1c20 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -542,10 +542,6 @@ func TestAppendKnobsAllFalse(t *testing.T) { } func TestAppendMemoryHugePages(t *testing.T) { - if !isDimmSupported(nil) { - t.Skip("Dimm not supported") - } - conf := &Config{ Memory: Memory{ Size: "1G", @@ -563,17 +559,22 @@ func TestAppendMemoryHugePages(t *testing.T) { FileBackedMem: true, MemShared: true, } - knobsString := "-object memory-backend-file,id=dimm1,size=1G,mem-path=/dev/hugepages,share=on,prealloc=on -numa node,memdev=dimm1" + objMemString := "-object memory-backend-file,id=dimm1,size=1G,mem-path=/dev/hugepages,share=on,prealloc=on" + numaMemString := "-numa node,memdev=dimm1" + memBackendString := "-machine memory-backend=dimm1" mlockFalseString := "-realtime mlock=off" + knobsString := objMemString + " " + if isDimmSupported(nil) { + knobsString += numaMemString + } else { + knobsString += memBackendString + } + testConfigAppend(conf, knobs, memString+" "+knobsString+" "+mlockFalseString, t) } func TestAppendMemoryMemPrealloc(t *testing.T) { - if !isDimmSupported(nil) { - t.Skip("Dimm not supported") - } - conf := &Config{ Memory: Memory{ Size: "1G", @@ -589,17 +590,22 @@ func TestAppendMemoryMemPrealloc(t *testing.T) { MemPrealloc: true, MemShared: true, } - knobsString := "-object memory-backend-ram,id=dimm1,size=1G,share=on,prealloc=on -numa node,memdev=dimm1" + objMemString := "-object memory-backend-ram,id=dimm1,size=1G,share=on,prealloc=on" + numaMemString := "-numa node,memdev=dimm1" + memBackendString := "-machine memory-backend=dimm1" mlockFalseString := "-realtime mlock=off" + knobsString := objMemString + " " + if isDimmSupported(nil) { + knobsString += numaMemString + } else { + knobsString += memBackendString + } + testConfigAppend(conf, knobs, memString+" "+knobsString+" "+mlockFalseString, t) } func TestAppendMemoryMemShared(t *testing.T) { - if !isDimmSupported(nil) { - t.Skip("Dimm not supported") - } - conf := &Config{ Memory: Memory{ Size: "1G", @@ -615,17 +621,22 @@ func TestAppendMemoryMemShared(t *testing.T) { FileBackedMem: true, MemShared: true, } - knobsString := "-object memory-backend-file,id=dimm1,size=1G,mem-path=foobar,share=on -numa node,memdev=dimm1" + objMemString := "-object memory-backend-file,id=dimm1,size=1G,mem-path=foobar,share=on" + numaMemString := "-numa node,memdev=dimm1" + memBackendString := "-machine memory-backend=dimm1" mlockFalseString := "-realtime mlock=off" + knobsString := objMemString + " " + if isDimmSupported(nil) { + knobsString += numaMemString + } else { + knobsString += memBackendString + } + testConfigAppend(conf, knobs, memString+" "+knobsString+" "+mlockFalseString, t) } func TestAppendMemoryFileBackedMem(t *testing.T) { - if !isDimmSupported(nil) { - t.Skip("Dimm not supported") - } - conf := &Config{ Memory: Memory{ Size: "1G", @@ -641,17 +652,22 @@ func TestAppendMemoryFileBackedMem(t *testing.T) { FileBackedMem: true, MemShared: false, } - knobsString := "-object memory-backend-file,id=dimm1,size=1G,mem-path=foobar -numa node,memdev=dimm1" + objMemString := "-object memory-backend-file,id=dimm1,size=1G,mem-path=foobar" + numaMemString := "-numa node,memdev=dimm1" + memBackendString := "-machine memory-backend=dimm1" mlockFalseString := "-realtime mlock=off" + knobsString := objMemString + " " + if isDimmSupported(nil) { + knobsString += numaMemString + } else { + knobsString += memBackendString + } + testConfigAppend(conf, knobs, memString+" "+knobsString+" "+mlockFalseString, t) } func TestAppendMemoryFileBackedMemPrealloc(t *testing.T) { - if !isDimmSupported(nil) { - t.Skip("Dimm not supported") - } - conf := &Config{ Memory: Memory{ Size: "1G", @@ -668,9 +684,18 @@ func TestAppendMemoryFileBackedMemPrealloc(t *testing.T) { MemShared: true, MemPrealloc: true, } - knobsString := "-object memory-backend-file,id=dimm1,size=1G,mem-path=foobar,share=on,prealloc=on -numa node,memdev=dimm1" + objMemString := "-object memory-backend-file,id=dimm1,size=1G,mem-path=foobar,share=on,prealloc=on" + numaMemString := "-numa node,memdev=dimm1" + memBackendString := "-machine memory-backend=dimm1" mlockFalseString := "-realtime mlock=off" + knobsString := objMemString + " " + if isDimmSupported(nil) { + knobsString += numaMemString + } else { + knobsString += memBackendString + } + testConfigAppend(conf, knobs, memString+" "+knobsString+" "+mlockFalseString, t) } From 3141894033970c96d70a3d64cf37f9a03223a0f9 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Tue, 30 Mar 2021 16:17:46 -0600 Subject: [PATCH 234/385] qemu: add support for tdx-guest object support tdx-guest guest objects Signed-off-by: Julio Montes --- qemu/qemu.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index 53ac89840..3e6550f13 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -227,6 +227,9 @@ type ObjectType string const ( // MemoryBackendFile represents a guest memory mapped file. MemoryBackendFile ObjectType = "memory-backend-file" + + // TDXGuest represents a TDX object + TDXGuest ObjectType = "tdx-guest" ) // Object is a qemu object representation. @@ -249,6 +252,12 @@ type Object struct { // Size is the object size in bytes Size uint64 + + // Debug this is a debug object + Debug bool + + // File is the device file + File string } // Valid returns true if the Object structure is valid and complete. @@ -259,6 +268,11 @@ func (object Object) Valid() bool { return false } + case TDXGuest: + if object.ID == "" || object.File == "" || object.DeviceID == "" { + return false + } + default: return false } @@ -283,6 +297,13 @@ func (object Object) QemuParams(config *Config) []string { objectParams = append(objectParams, fmt.Sprintf(",size=%d", object.Size)) deviceParams = append(deviceParams, fmt.Sprintf(",memdev=%s", object.ID)) + case TDXGuest: + objectParams = append(objectParams, string(object.Type)) + objectParams = append(objectParams, fmt.Sprintf(",id=%s", object.ID)) + if object.Debug { + objectParams = append(objectParams, ",debug=on") + } + deviceParams = append(deviceParams, fmt.Sprintf(",file=%s", object.File)) } qemuParams = append(qemuParams, "-device") From b3eac95b28b56f9c91787f0e232729568e8129fb Mon Sep 17 00:00:00 2001 From: Eric Ernst Date: Thu, 1 Apr 2021 08:20:14 -0700 Subject: [PATCH 235/385] qmp: remove frequent, chatty log In Kata, we are getting a *lot* of logs at runtime from QMP, in particular `read from QMP: xxxx` Ideally we'd set this to only be visible for trace, but I did not see this working when adding a V(7) check around these prints. To avoid filling journal with info that isn't useful, let's drop. Fixes: #165 Signed-off-by: Eric Ernst --- qemu/qmp.go | 5 ----- 1 file changed, 5 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 73d2ec4cf..97e924559 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -267,10 +267,6 @@ func (q *QMP) readLoop(fromVMCh chan<- []byte) { for scanner.Scan() { line := scanner.Bytes() - if q.cfg.Logger.V(1) { - q.cfg.Logger.Infof("read from QMP: %s", string(line)) - } - // Since []byte channel type transfer slice info(include slice underlying array pointer, len, cap) // between channel sender and receiver. scanner.Bytes() returned slice's underlying array // may point to data that will be overwritten by a subsequent call to Scan(reference from: @@ -442,7 +438,6 @@ func (q *QMP) writeNextQMPCommand(cmdQueue *list.List) { } cmdQueue.Remove(cmdEl) } - q.cfg.Logger.Infof("%s", string(encodedCmd)) encodedCmd = append(encodedCmd, '\n') if unixConn, ok := q.conn.(*net.UnixConn); ok && len(cmd.oob) > 0 { _, _, err = unixConn.WriteMsgUnix(encodedCmd, cmd.oob, nil) From 511cf58b0cf4f1ffe16ca7943c9903c52e7ba7ca Mon Sep 17 00:00:00 2001 From: Michael Qiu Date: Sun, 18 Apr 2021 04:59:33 -0400 Subject: [PATCH 236/385] Fix qemu commandline issue with empty romfile Currently, if romfile field is empty, the commandline will shows like below: -device driver=virtio-net-pci,...,mq=on,vectors=4,romfile= This does not make sense, just remove this field in commandline Add unittest support. Signed-off-by: Michael Qiu --- qemu/qemu.go | 26 ++++++++++++++------------ qemu/qemu_arch_base_test.go | 2 +- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 3e6550f13..f05932af8 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -429,7 +429,7 @@ func (fsdev FSDevice) QemuParams(config *Config) []string { } deviceParams = append(deviceParams, fmt.Sprintf(",fsdev=%s", fsdev.ID)) deviceParams = append(deviceParams, fmt.Sprintf(",mount_tag=%s", fsdev.MountTag)) - if fsdev.Transport.isVirtioPCI(config) { + if fsdev.Transport.isVirtioPCI(config) && fsdev.ROMFile != "" { deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", fsdev.ROMFile)) } if fsdev.Transport.isVirtioCCW(config) { @@ -562,7 +562,7 @@ func (cdev CharDevice) QemuParams(config *Config) []string { if cdev.Name != "" { deviceParams = append(deviceParams, fmt.Sprintf(",name=%s", cdev.Name)) } - if cdev.Driver == VirtioSerial && cdev.Transport.isVirtioPCI(config) { + if cdev.Driver == VirtioSerial && cdev.Transport.isVirtioPCI(config) && cdev.ROMFile != "" { deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", cdev.ROMFile)) } @@ -832,7 +832,7 @@ func (netdev NetDevice) QemuDeviceParams(config *Config) []string { deviceParams = append(deviceParams, netdev.mqParameter(config)) } - if netdev.Transport.isVirtioPCI(config) { + if netdev.Transport.isVirtioPCI(config) && netdev.ROMFile != "" { deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", netdev.ROMFile)) } @@ -965,7 +965,7 @@ func (dev SerialDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) } deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", dev.ID)) - if dev.Transport.isVirtioPCI(config) { + if dev.Transport.isVirtioPCI(config) && dev.ROMFile != "" { deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", dev.ROMFile)) if dev.Driver == VirtioSerial && dev.MaxPorts != 0 { deviceParams = append(deviceParams, fmt.Sprintf(",max_ports=%d", dev.MaxPorts)) @@ -1096,7 +1096,7 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, ",config-wce=off") } - if blkdev.Transport.isVirtioPCI(config) { + if blkdev.Transport.isVirtioPCI(config) && blkdev.ROMFile != "" { deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", blkdev.ROMFile)) } @@ -1341,7 +1341,7 @@ func (vhostuserDev VhostUserDevice) QemuParams(config *Config) []string { return nil } - if vhostuserDev.Transport.isVirtioPCI(config) { + if vhostuserDev.Transport.isVirtioPCI(config) && vhostuserDev.ROMFile != "" { devParams = append(devParams, fmt.Sprintf("romfile=%s", vhostuserDev.ROMFile)) } @@ -1531,7 +1531,9 @@ func (vfioDev VFIODevice) QemuParams(config *Config) []string { if vfioDev.DeviceID != "" { deviceParams = append(deviceParams, fmt.Sprintf(",x-pci-device-id=%s", vfioDev.DeviceID)) } - deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", vfioDev.ROMFile)) + if vfioDev.ROMFile != "" { + deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", vfioDev.ROMFile)) + } } if vfioDev.Bus != "" { @@ -1616,7 +1618,7 @@ func (scsiCon SCSIController) QemuParams(config *Config) []string { if scsiCon.IOThread != "" { devParams = append(devParams, fmt.Sprintf("iothread=%s", scsiCon.IOThread)) } - if scsiCon.Transport.isVirtioPCI(config) { + if scsiCon.Transport.isVirtioPCI(config) && scsiCon.ROMFile != "" { devParams = append(devParams, fmt.Sprintf("romfile=%s", scsiCon.ROMFile)) } @@ -1722,7 +1724,7 @@ func (bridgeDev BridgeDevice) QemuParams(config *Config) []string { } var transport VirtioTransport - if transport.isVirtioPCI(config) { + if transport.isVirtioPCI(config) && bridgeDev.ROMFile != "" { deviceParam = append(deviceParam, fmt.Sprintf(",romfile=%s", bridgeDev.ROMFile)) } @@ -1801,7 +1803,7 @@ func (vsock VSOCKDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", vsock.ID)) deviceParams = append(deviceParams, fmt.Sprintf(",%s=%d", VSOCKGuestCID, vsock.ContextID)) - if vsock.Transport.isVirtioPCI(config) { + if vsock.Transport.isVirtioPCI(config) && vsock.ROMFile != "" { deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", vsock.ROMFile)) } @@ -1874,7 +1876,7 @@ func (v RngDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, v.deviceName(config)) deviceParams = append(deviceParams, "rng="+v.ID) - if v.Transport.isVirtioPCI(config) { + if v.Transport.isVirtioPCI(config) && v.ROMFile != "" { deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", v.ROMFile)) } @@ -1951,7 +1953,7 @@ func (b BalloonDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, "id="+b.ID) } - if b.Transport.isVirtioPCI(config) { + if b.Transport.isVirtioPCI(config) && b.ROMFile != "" { deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", b.ROMFile)) } diff --git a/qemu/qemu_arch_base_test.go b/qemu/qemu_arch_base_test.go index a5f26b823..0bc34004e 100644 --- a/qemu/qemu_arch_base_test.go +++ b/qemu/qemu_arch_base_test.go @@ -30,7 +30,7 @@ var ( deviceVFIOString = "-device vfio-pci,host=02:10.0,x-pci-vendor-id=0x1234,x-pci-device-id=0x5678,romfile=efi-virtio.rom" devicePCIeRootPortSimpleString = "-device pcie-root-port,id=rp1,bus=pcie.0,chassis=0x00,slot=0x00,multifunction=off" devicePCIeRootPortFullString = "-device pcie-root-port,id=rp2,bus=pcie.0,chassis=0x0,slot=0x1,addr=0x2,multifunction=on,bus-reserve=0x3,pref64-reserve=16G,mem-reserve=1G,io-reserve=512M,romfile=efi-virtio.rom" - deviceVFIOPCIeSimpleString = "-device vfio-pci,host=02:00.0,romfile=,bus=rp0" + deviceVFIOPCIeSimpleString = "-device vfio-pci,host=02:00.0,bus=rp0" deviceVFIOPCIeFullString = "-device vfio-pci,host=02:00.0,x-pci-vendor-id=0x10de,x-pci-device-id=0x15f8,romfile=efi-virtio.rom,bus=rp1" deviceSCSIControllerStr = "-device virtio-scsi-pci,id=foo,disable-modern=false,romfile=efi-virtio.rom" deviceSCSIControllerBusAddrStr = "-device virtio-scsi-pci,id=foo,bus=pci.0,addr=00:04.0,disable-modern=true,iothread=iothread1,romfile=efi-virtio.rom" From 3eaeda7f6df73558d4dc343b712d8bba87fecf7e Mon Sep 17 00:00:00 2001 From: Jakob Naucke Date: Tue, 27 Apr 2021 17:48:17 +0200 Subject: [PATCH 237/385] qemu: Refactor vhostuserDev.QemuParams by splitting out the respective functionality to QemuNetParams, QemuSCSIParams, QemuBlkParams, and QemuFSParams. This allows adding functionality to these functions without going beyond the cyclomatic complexity of 15 mandated by the lint checks. Signed-off-by: Jakob Naucke --- qemu/qemu.go | 193 +++++++++++++++++++++++++++++++++------------------ 1 file changed, 126 insertions(+), 67 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index f05932af8..adfaa4987 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1275,90 +1275,149 @@ func (vhostuserDev VhostUserDevice) Valid() bool { return true } -// QemuParams returns the qemu parameters built out of this vhostuser device. -func (vhostuserDev VhostUserDevice) QemuParams(config *Config) []string { +// QemuNetParams builds QEMU netdev and device parameters for a VhostUserNet device +func (vhostuserDev VhostUserDevice) QemuNetParams(config *Config) []string { var qemuParams []string - var charParams []string var netParams []string var devParams []string - var driver string - charParams = append(charParams, "socket") - charParams = append(charParams, fmt.Sprintf("id=%s", vhostuserDev.CharDevID)) - charParams = append(charParams, fmt.Sprintf("path=%s", vhostuserDev.SocketPath)) - - switch vhostuserDev.VhostUserType { - // if network based vhost device: - case VhostUserNet: - driver = vhostuserDev.deviceName(config) - if driver == "" { - return nil - } - - netParams = append(netParams, "type=vhost-user") - netParams = append(netParams, fmt.Sprintf("id=%s", vhostuserDev.TypeDevID)) - netParams = append(netParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) - netParams = append(netParams, "vhostforce") - - devParams = append(devParams, driver) - devParams = append(devParams, fmt.Sprintf("netdev=%s", vhostuserDev.TypeDevID)) - devParams = append(devParams, fmt.Sprintf("mac=%s", vhostuserDev.Address)) - case VhostUserSCSI: - driver = vhostuserDev.deviceName(config) - if driver == "" { - return nil - } - - devParams = append(devParams, driver) - devParams = append(devParams, fmt.Sprintf("id=%s", vhostuserDev.TypeDevID)) - devParams = append(devParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) - case VhostUserBlk: - driver = vhostuserDev.deviceName(config) - if driver == "" { - return nil - } - - devParams = append(devParams, driver) - devParams = append(devParams, "logical_block_size=4096") - devParams = append(devParams, "size=512M") - devParams = append(devParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) - case VhostUserFS: - driver = vhostuserDev.deviceName(config) - if driver == "" { - return nil - } - - devParams = append(devParams, driver) - devParams = append(devParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) - devParams = append(devParams, fmt.Sprintf("tag=%s", vhostuserDev.Tag)) - if vhostuserDev.CacheSize != 0 { - devParams = append(devParams, fmt.Sprintf("cache-size=%dM", vhostuserDev.CacheSize)) - } - if vhostuserDev.SharedVersions { - devParams = append(devParams, "versiontable=/dev/shm/fuse_shared_versions") - } - default: + driver := vhostuserDev.deviceName(config) + if driver == "" { return nil } + netParams = append(netParams, "type=vhost-user") + netParams = append(netParams, fmt.Sprintf("id=%s", vhostuserDev.TypeDevID)) + netParams = append(netParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) + netParams = append(netParams, "vhostforce") + + devParams = append(devParams, driver) + devParams = append(devParams, fmt.Sprintf("netdev=%s", vhostuserDev.TypeDevID)) + devParams = append(devParams, fmt.Sprintf("mac=%s", vhostuserDev.Address)) + if vhostuserDev.Transport.isVirtioPCI(config) && vhostuserDev.ROMFile != "" { devParams = append(devParams, fmt.Sprintf("romfile=%s", vhostuserDev.ROMFile)) } - qemuParams = append(qemuParams, "-chardev") - qemuParams = append(qemuParams, strings.Join(charParams, ",")) - - // if network based vhost device: - if vhostuserDev.VhostUserType == VhostUserNet { - qemuParams = append(qemuParams, "-netdev") - qemuParams = append(qemuParams, strings.Join(netParams, ",")) - } + qemuParams = append(qemuParams, "-netdev") + qemuParams = append(qemuParams, strings.Join(netParams, ",")) qemuParams = append(qemuParams, "-device") qemuParams = append(qemuParams, strings.Join(devParams, ",")) return qemuParams } +// QemuSCSIParams builds QEMU device parameters for a VhostUserSCSI device +func (vhostuserDev VhostUserDevice) QemuSCSIParams(config *Config) []string { + var qemuParams []string + var devParams []string + + driver := vhostuserDev.deviceName(config) + if driver == "" { + return nil + } + + devParams = append(devParams, driver) + devParams = append(devParams, fmt.Sprintf("id=%s", vhostuserDev.TypeDevID)) + devParams = append(devParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) + + if vhostuserDev.Transport.isVirtioPCI(config) && vhostuserDev.ROMFile != "" { + devParams = append(devParams, fmt.Sprintf("romfile=%s", vhostuserDev.ROMFile)) + } + + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, strings.Join(devParams, ",")) + + return qemuParams +} + +// QemuBlkParams builds QEMU device parameters for a VhostUserBlk device +func (vhostuserDev VhostUserDevice) QemuBlkParams(config *Config) []string { + var qemuParams []string + var devParams []string + + driver := vhostuserDev.deviceName(config) + if driver == "" { + return nil + } + + devParams = append(devParams, driver) + devParams = append(devParams, "logical_block_size=4096") + devParams = append(devParams, "size=512M") + devParams = append(devParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) + + if vhostuserDev.Transport.isVirtioPCI(config) && vhostuserDev.ROMFile != "" { + devParams = append(devParams, fmt.Sprintf("romfile=%s", vhostuserDev.ROMFile)) + } + + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, strings.Join(devParams, ",")) + + return qemuParams +} + +// QemuFSParams builds QEMU device parameters for a VhostUserFS device +func (vhostuserDev VhostUserDevice) QemuFSParams(config *Config) []string { + var qemuParams []string + var devParams []string + + driver := vhostuserDev.deviceName(config) + if driver == "" { + return nil + } + + devParams = append(devParams, driver) + devParams = append(devParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) + devParams = append(devParams, fmt.Sprintf("tag=%s", vhostuserDev.Tag)) + if vhostuserDev.CacheSize != 0 { + devParams = append(devParams, fmt.Sprintf("cache-size=%dM", vhostuserDev.CacheSize)) + } + if vhostuserDev.SharedVersions { + devParams = append(devParams, "versiontable=/dev/shm/fuse_shared_versions") + } + if vhostuserDev.Transport.isVirtioPCI(config) && vhostuserDev.ROMFile != "" { + devParams = append(devParams, fmt.Sprintf("romfile=%s", vhostuserDev.ROMFile)) + } + + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, strings.Join(devParams, ",")) + + return qemuParams +} + +// QemuParams returns the qemu parameters built out of this vhostuser device. +func (vhostuserDev VhostUserDevice) QemuParams(config *Config) []string { + var qemuParams []string + var charParams []string + var devParams []string + + charParams = append(charParams, "socket") + charParams = append(charParams, fmt.Sprintf("id=%s", vhostuserDev.CharDevID)) + charParams = append(charParams, fmt.Sprintf("path=%s", vhostuserDev.SocketPath)) + + qemuParams = append(qemuParams, "-chardev") + qemuParams = append(qemuParams, strings.Join(charParams, ",")) + + switch vhostuserDev.VhostUserType { + case VhostUserNet: + devParams = vhostuserDev.QemuNetParams(config) + case VhostUserSCSI: + devParams = vhostuserDev.QemuSCSIParams(config) + case VhostUserBlk: + devParams = vhostuserDev.QemuBlkParams(config) + case VhostUserFS: + devParams = vhostuserDev.QemuFSParams(config) + default: + return nil + } + + if devParams != nil { + return append(qemuParams, devParams...) + } + + return nil +} + // deviceName returns the QEMU device name for the current combination of // driver and transport. func (vhostuserDev VhostUserDevice) deviceName(config *Config) string { From abd3c7ea036dd329817fabd5e49c1dd87d978c1d Mon Sep 17 00:00:00 2001 From: Jakob Naucke Date: Tue, 27 Apr 2021 17:53:42 +0200 Subject: [PATCH 238/385] qemu: VhostUserDevice CCW device numbers Add CCW (s390x) device numbers to VhostUserDevices, as is with other device types. Add them to VhostUserFS devices (the only type currently supported on s390x) when building QEMU parameters. Fixes: #170 Signed-off-by: Jakob Naucke --- qemu/qemu.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index adfaa4987..61ab2cc20 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1211,6 +1211,9 @@ type VhostUserDevice struct { // ROMFile specifies the ROM file being used for this device. ROMFile string + // DevNo identifies the CCW device for s390x. + DevNo string + // Transport is the virtio transport for this device. Transport VirtioTransport } @@ -1375,6 +1378,9 @@ func (vhostuserDev VhostUserDevice) QemuFSParams(config *Config) []string { if vhostuserDev.SharedVersions { devParams = append(devParams, "versiontable=/dev/shm/fuse_shared_versions") } + if vhostuserDev.Transport.isVirtioCCW(config) { + devParams = append(devParams, fmt.Sprintf("devno=%s", vhostuserDev.DevNo)) + } if vhostuserDev.Transport.isVirtioPCI(config) && vhostuserDev.ROMFile != "" { devParams = append(devParams, fmt.Sprintf("romfile=%s", vhostuserDev.ROMFile)) } From a6cec2d38cca916e98c218a037672ab0cbda16cc Mon Sep 17 00:00:00 2001 From: Sandeep Gupta Date: Tue, 4 May 2021 08:53:16 -0400 Subject: [PATCH 239/385] qemu: add support for SevGuest object Signed-off-by: Jim Cadden --- qemu/qemu.go | 48 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 61ab2cc20..bd9abd6e4 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -230,6 +230,9 @@ const ( // TDXGuest represents a TDX object TDXGuest ObjectType = "tdx-guest" + + // SEVGuest represents an SEV guest object + SEVGuest ObjectType = "sev-guest" ) // Object is a qemu object representation. @@ -258,6 +261,14 @@ type Object struct { // File is the device file File string + + // CBitPos is the location of the C-bit in a guest page table entry + // This is only relevant for sev-guest objects + CBitPos uint32 + + // ReducedPhysBits is the reduction in the guest physical address space + // This is only relevant for sev-guest objects + ReducedPhysBits uint32 } // Valid returns true if the Object structure is valid and complete. @@ -272,6 +283,10 @@ func (object Object) Valid() bool { if object.ID == "" || object.File == "" || object.DeviceID == "" { return false } + case SEVGuest: + if object.ID == "" || object.File == "" || object.CBitPos == 0 || object.ReducedPhysBits == 0 { + return false + } default: return false @@ -284,11 +299,9 @@ func (object Object) Valid() bool { func (object Object) QemuParams(config *Config) []string { var objectParams []string var deviceParams []string + var driveParams []string var qemuParams []string - deviceParams = append(deviceParams, string(object.Driver)) - deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", object.DeviceID)) - switch object.Type { case MemoryBackendFile: objectParams = append(objectParams, string(object.Type)) @@ -296,6 +309,8 @@ func (object Object) QemuParams(config *Config) []string { objectParams = append(objectParams, fmt.Sprintf(",mem-path=%s", object.MemPath)) objectParams = append(objectParams, fmt.Sprintf(",size=%d", object.Size)) + deviceParams = append(deviceParams, string(object.Driver)) + deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", object.DeviceID)) deviceParams = append(deviceParams, fmt.Sprintf(",memdev=%s", object.ID)) case TDXGuest: objectParams = append(objectParams, string(object.Type)) @@ -303,14 +318,33 @@ func (object Object) QemuParams(config *Config) []string { if object.Debug { objectParams = append(objectParams, ",debug=on") } + deviceParams = append(deviceParams, string(object.Driver)) + deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", object.DeviceID)) deviceParams = append(deviceParams, fmt.Sprintf(",file=%s", object.File)) + case SEVGuest: + objectParams = append(objectParams, string(object.Type)) + objectParams = append(objectParams, fmt.Sprintf(",id=%s", object.ID)) + objectParams = append(objectParams, fmt.Sprintf(",cbitpos=%d", object.CBitPos)) + objectParams = append(objectParams, fmt.Sprintf(",reduced-phys-bits=%d", object.ReducedPhysBits)) + + driveParams = append(driveParams, "if=pflash,format=raw,readonly=on") + driveParams = append(driveParams, fmt.Sprintf(",file=%s", object.File)) } - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, "")) + if len(deviceParams) > 0 { + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, strings.Join(deviceParams, "")) + } - qemuParams = append(qemuParams, "-object") - qemuParams = append(qemuParams, strings.Join(objectParams, "")) + if len(objectParams) > 0 { + qemuParams = append(qemuParams, "-object") + qemuParams = append(qemuParams, strings.Join(objectParams, "")) + } + + if len(driveParams) > 0 { + qemuParams = append(qemuParams, "-drive") + qemuParams = append(qemuParams, strings.Join(driveParams, "")) + } return qemuParams } From 7a367dc0a8df1d73ba3e41cbbc7bf8c108cf6081 Mon Sep 17 00:00:00 2001 From: Jakob Naucke Date: Wed, 28 Apr 2021 15:50:36 +0200 Subject: [PATCH 240/385] qemu: Simplify (Object).Valid() so that more object types can be added without going over cyclomatic complexity limits Signed-off-by: Jakob Naucke --- qemu/qemu.go | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index bd9abd6e4..b70d65f97 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -275,24 +275,14 @@ type Object struct { func (object Object) Valid() bool { switch object.Type { case MemoryBackendFile: - if object.ID == "" || object.MemPath == "" || object.Size == 0 { - return false - } - + return object.ID != "" && object.MemPath != "" && object.Size != 0 case TDXGuest: - if object.ID == "" || object.File == "" || object.DeviceID == "" { - return false - } + return object.ID != "" && object.File != "" && object.DeviceID != "" case SEVGuest: - if object.ID == "" || object.File == "" || object.CBitPos == 0 || object.ReducedPhysBits == 0 { - return false - } - + return object.ID != "" && object.File != "" && object.CBitPos != 0 && object.ReducedPhysBits != 0 default: return false } - - return true } // QemuParams returns the qemu parameters built out of this Object device. From 03b55ea51dca2344ed2171640e87f6deccb7c754 Mon Sep 17 00:00:00 2001 From: Jakob Naucke Date: Wed, 28 Apr 2021 15:53:47 +0200 Subject: [PATCH 241/385] qemu: Add support for Secure Execution Secure Execution, also known as Protected Virtualization in QEMU, is a confidential computing technology for s390x (IBM Z & LinuxONE). Allow the respective object. Fixes: #172 Signed-off-by: Jakob Naucke --- qemu/qemu.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index b70d65f97..e01bf9338 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -233,6 +233,9 @@ const ( // SEVGuest represents an SEV guest object SEVGuest ObjectType = "sev-guest" + + // SecExecGuest represents an s390x Secure Execution (Protected Virtualization in QEMU) object + SecExecGuest ObjectType = "s390-pv-guest" ) // Object is a qemu object representation. @@ -280,6 +283,8 @@ func (object Object) Valid() bool { return object.ID != "" && object.File != "" && object.DeviceID != "" case SEVGuest: return object.ID != "" && object.File != "" && object.CBitPos != 0 && object.ReducedPhysBits != 0 + case SecExecGuest: + return object.ID != "" default: return false } @@ -319,6 +324,9 @@ func (object Object) QemuParams(config *Config) []string { driveParams = append(driveParams, "if=pflash,format=raw,readonly=on") driveParams = append(driveParams, fmt.Sprintf(",file=%s", object.File)) + case SecExecGuest: + objectParams = append(objectParams, string(object.Type)) + objectParams = append(objectParams, fmt.Sprintf(",id=%s", object.ID)) } if len(deviceParams) > 0 { From c135681d9a85889ca9379058778b7da18c4b22c8 Mon Sep 17 00:00:00 2001 From: Amulyam24 Date: Wed, 19 May 2021 16:39:14 +0530 Subject: [PATCH 242/385] qemu: Add support for PEF Adding the support for Protected Execution Facility(PEF) is which is the confidential computing technology on ppc64le. Fixes: #174 Signed-off-by: Amulyam24 --- qemu/qemu.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index e01bf9338..1eddc79e2 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -134,6 +134,9 @@ const ( // Loader is the Loader device driver. Loader DeviceDriver = "loader" + + // SpaprTPMProxy is used for enabling guest to run in secure mode on ppc64le. + SpaprTPMProxy DeviceDriver = "spapr-tpm-proxy" ) func isDimmSupported(config *Config) bool { @@ -236,6 +239,8 @@ const ( // SecExecGuest represents an s390x Secure Execution (Protected Virtualization in QEMU) object SecExecGuest ObjectType = "s390-pv-guest" + // PEFGuest represent ppc64le PEF(Protected Execution Facility) object. + PEFGuest ObjectType = "pef-guest" ) // Object is a qemu object representation. @@ -285,6 +290,9 @@ func (object Object) Valid() bool { return object.ID != "" && object.File != "" && object.CBitPos != 0 && object.ReducedPhysBits != 0 case SecExecGuest: return object.ID != "" + case PEFGuest: + return object.ID != "" && object.File != "" + default: return false } @@ -327,6 +335,14 @@ func (object Object) QemuParams(config *Config) []string { case SecExecGuest: objectParams = append(objectParams, string(object.Type)) objectParams = append(objectParams, fmt.Sprintf(",id=%s", object.ID)) + case PEFGuest: + objectParams = append(objectParams, string(object.Type)) + objectParams = append(objectParams, fmt.Sprintf(",id=%s", object.ID)) + + deviceParams = append(deviceParams, string(object.Driver)) + deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", object.DeviceID)) + deviceParams = append(deviceParams, fmt.Sprintf(",host-path=%s", object.File)) + } if len(deviceParams) > 0 { From 0e19ffb67ef2279706a9025c8535d9e8d31f5313 Mon Sep 17 00:00:00 2001 From: Marcel Apfelbaum Date: Sun, 20 Jun 2021 17:02:59 +0300 Subject: [PATCH 243/385] qemu: Allow hot-plugging memory devices on PCI bridges Currently virtio-mem-pci devices can be hotplugged only on the root bus. This doesn't work for PCIe machines like q35. Extend the API to optionally support hotplugging on PCI bridges. Fixes: #176 Signed-off-by: Marcel Apfelbaum --- qemu/qmp.go | 12 ++++++++++-- qemu/qmp_test.go | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 97e924559..23c288dc7 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -1386,7 +1386,7 @@ func (q *QMP) ExecQueryCpusFast(ctx context.Context) ([]CPUInfoFast, error) { } // ExecMemdevAdd adds size of MiB memory device to the guest -func (q *QMP) ExecMemdevAdd(ctx context.Context, qomtype, id, mempath string, size int, share bool, driver, driverID string) error { +func (q *QMP) ExecMemdevAdd(ctx context.Context, qomtype, id, mempath string, size int, share bool, driver, driverID, addr, bus string) error { props := map[string]interface{}{"size": uint64(size) << 20} args := map[string]interface{}{ "qom-type": qomtype, @@ -1419,6 +1419,14 @@ func (q *QMP) ExecMemdevAdd(ctx context.Context, qomtype, id, mempath string, si "id": driverID, "memdev": id, } + + if bus != "" { + args["bus"] = bus + } + if addr != "" { + args["addr"] = addr + } + err = q.executeCommand(ctx, "device_add", args, nil) return err @@ -1426,7 +1434,7 @@ func (q *QMP) ExecMemdevAdd(ctx context.Context, qomtype, id, mempath string, si // ExecHotplugMemory adds size of MiB memory to the guest func (q *QMP) ExecHotplugMemory(ctx context.Context, qomtype, id, mempath string, size int, share bool) error { - return q.ExecMemdevAdd(ctx, qomtype, id, mempath, size, share, "pc-dimm", "dimm"+id) + return q.ExecMemdevAdd(ctx, qomtype, id, mempath, size, share, "pc-dimm", "dimm"+id, "", "") } // ExecuteNVDIMMDeviceAdd adds a block device to a QEMU instance using diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 5a7233f72..47fe11ecd 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1342,7 +1342,7 @@ func TestExecMemdevAdd(t *testing.T) { cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) - err := q.ExecMemdevAdd(context.Background(), "memory-backend-ram", "mem0", "", 128, true, "virtio-mem-pci", "virtiomem0") + err := q.ExecMemdevAdd(context.Background(), "memory-backend-ram", "mem0", "", 128, true, "virtio-mem-pci", "virtiomem0", "0x1", "pci-bridge-0") if err != nil { t.Fatalf("Unexpected error: %v", err) } From ff34d283dbfa21e568647c4f9fbb4200987b7ad3 Mon Sep 17 00:00:00 2001 From: Jakob Naucke Date: Fri, 16 Jul 2021 14:25:06 +0200 Subject: [PATCH 244/385] qemu: Consistent parameter building Always join by ",", do not put commas in the parameter slices. Always use the variable name `deviceParams`. Fixes: #180 Signed-off-by: Jakob Naucke --- qemu/qemu.go | 357 +++++++++++++++++++++++++-------------------------- 1 file changed, 178 insertions(+), 179 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 1eddc79e2..7c4563fa4 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -308,56 +308,56 @@ func (object Object) QemuParams(config *Config) []string { switch object.Type { case MemoryBackendFile: objectParams = append(objectParams, string(object.Type)) - objectParams = append(objectParams, fmt.Sprintf(",id=%s", object.ID)) - objectParams = append(objectParams, fmt.Sprintf(",mem-path=%s", object.MemPath)) - objectParams = append(objectParams, fmt.Sprintf(",size=%d", object.Size)) + objectParams = append(objectParams, fmt.Sprintf("id=%s", object.ID)) + objectParams = append(objectParams, fmt.Sprintf("mem-path=%s", object.MemPath)) + objectParams = append(objectParams, fmt.Sprintf("size=%d", object.Size)) deviceParams = append(deviceParams, string(object.Driver)) - deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", object.DeviceID)) - deviceParams = append(deviceParams, fmt.Sprintf(",memdev=%s", object.ID)) + deviceParams = append(deviceParams, fmt.Sprintf("id=%s", object.DeviceID)) + deviceParams = append(deviceParams, fmt.Sprintf("memdev=%s", object.ID)) case TDXGuest: objectParams = append(objectParams, string(object.Type)) - objectParams = append(objectParams, fmt.Sprintf(",id=%s", object.ID)) + objectParams = append(objectParams, fmt.Sprintf("id=%s", object.ID)) if object.Debug { - objectParams = append(objectParams, ",debug=on") + objectParams = append(objectParams, "debug=on") } deviceParams = append(deviceParams, string(object.Driver)) - deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", object.DeviceID)) - deviceParams = append(deviceParams, fmt.Sprintf(",file=%s", object.File)) + deviceParams = append(deviceParams, fmt.Sprintf("id=%s", object.DeviceID)) + deviceParams = append(deviceParams, fmt.Sprintf("file=%s", object.File)) case SEVGuest: objectParams = append(objectParams, string(object.Type)) - objectParams = append(objectParams, fmt.Sprintf(",id=%s", object.ID)) - objectParams = append(objectParams, fmt.Sprintf(",cbitpos=%d", object.CBitPos)) - objectParams = append(objectParams, fmt.Sprintf(",reduced-phys-bits=%d", object.ReducedPhysBits)) + objectParams = append(objectParams, fmt.Sprintf("id=%s", object.ID)) + objectParams = append(objectParams, fmt.Sprintf("cbitpos=%d", object.CBitPos)) + objectParams = append(objectParams, fmt.Sprintf("reduced-phys-bits=%d", object.ReducedPhysBits)) driveParams = append(driveParams, "if=pflash,format=raw,readonly=on") - driveParams = append(driveParams, fmt.Sprintf(",file=%s", object.File)) + driveParams = append(driveParams, fmt.Sprintf("file=%s", object.File)) case SecExecGuest: objectParams = append(objectParams, string(object.Type)) - objectParams = append(objectParams, fmt.Sprintf(",id=%s", object.ID)) + objectParams = append(objectParams, fmt.Sprintf("id=%s", object.ID)) case PEFGuest: objectParams = append(objectParams, string(object.Type)) - objectParams = append(objectParams, fmt.Sprintf(",id=%s", object.ID)) + objectParams = append(objectParams, fmt.Sprintf("id=%s", object.ID)) deviceParams = append(deviceParams, string(object.Driver)) - deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", object.DeviceID)) - deviceParams = append(deviceParams, fmt.Sprintf(",host-path=%s", object.File)) + deviceParams = append(deviceParams, fmt.Sprintf("id=%s", object.DeviceID)) + deviceParams = append(deviceParams, fmt.Sprintf("host-path=%s", object.File)) } if len(deviceParams) > 0 { qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, "")) + qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) } if len(objectParams) > 0 { qemuParams = append(qemuParams, "-object") - qemuParams = append(qemuParams, strings.Join(objectParams, "")) + qemuParams = append(qemuParams, strings.Join(objectParams, ",")) } if len(driveParams) > 0 { qemuParams = append(qemuParams, "-drive") - qemuParams = append(qemuParams, strings.Join(driveParams, "")) + qemuParams = append(qemuParams, strings.Join(driveParams, ",")) } return qemuParams @@ -473,34 +473,34 @@ func (fsdev FSDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, fsdev.deviceName(config)) if s := fsdev.Transport.disableModern(config, fsdev.DisableModern); s != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) + deviceParams = append(deviceParams, s) } - deviceParams = append(deviceParams, fmt.Sprintf(",fsdev=%s", fsdev.ID)) - deviceParams = append(deviceParams, fmt.Sprintf(",mount_tag=%s", fsdev.MountTag)) + deviceParams = append(deviceParams, fmt.Sprintf("fsdev=%s", fsdev.ID)) + deviceParams = append(deviceParams, fmt.Sprintf("mount_tag=%s", fsdev.MountTag)) if fsdev.Transport.isVirtioPCI(config) && fsdev.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", fsdev.ROMFile)) + deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", fsdev.ROMFile)) } if fsdev.Transport.isVirtioCCW(config) { if config.Knobs.IOMMUPlatform { deviceParams = append(deviceParams, ",iommu_platform=on") } - deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", fsdev.DevNo)) + deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", fsdev.DevNo)) } fsParams = append(fsParams, string(fsdev.FSDriver)) - fsParams = append(fsParams, fmt.Sprintf(",id=%s", fsdev.ID)) - fsParams = append(fsParams, fmt.Sprintf(",path=%s", fsdev.Path)) - fsParams = append(fsParams, fmt.Sprintf(",security_model=%s", fsdev.SecurityModel)) + fsParams = append(fsParams, fmt.Sprintf("id=%s", fsdev.ID)) + fsParams = append(fsParams, fmt.Sprintf("path=%s", fsdev.Path)) + fsParams = append(fsParams, fmt.Sprintf("security_model=%s", fsdev.SecurityModel)) if fsdev.Multidev != "" { - fsParams = append(fsParams, fmt.Sprintf(",multidevs=%s", fsdev.Multidev)) + fsParams = append(fsParams, fmt.Sprintf("multidevs=%s", fsdev.Multidev)) } qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, "")) + qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) qemuParams = append(qemuParams, "-fsdev") - qemuParams = append(qemuParams, strings.Join(fsParams, "")) + qemuParams = append(qemuParams, strings.Join(fsParams, ",")) return qemuParams } @@ -599,41 +599,41 @@ func (cdev CharDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, cdev.deviceName(config)) if cdev.Driver == VirtioSerial { if s := cdev.Transport.disableModern(config, cdev.DisableModern); s != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) + deviceParams = append(deviceParams, s) } } if cdev.Bus != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",bus=%s", cdev.Bus)) + deviceParams = append(deviceParams, fmt.Sprintf("bus=%s", cdev.Bus)) } - deviceParams = append(deviceParams, fmt.Sprintf(",chardev=%s", cdev.ID)) - deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", cdev.DeviceID)) + deviceParams = append(deviceParams, fmt.Sprintf("chardev=%s", cdev.ID)) + deviceParams = append(deviceParams, fmt.Sprintf("id=%s", cdev.DeviceID)) if cdev.Name != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",name=%s", cdev.Name)) + deviceParams = append(deviceParams, fmt.Sprintf("name=%s", cdev.Name)) } if cdev.Driver == VirtioSerial && cdev.Transport.isVirtioPCI(config) && cdev.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", cdev.ROMFile)) + deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", cdev.ROMFile)) } if cdev.Driver == VirtioSerial && cdev.Transport.isVirtioCCW(config) { if config.Knobs.IOMMUPlatform { - deviceParams = append(deviceParams, ",iommu_platform=on") + deviceParams = append(deviceParams, "iommu_platform=on") } - deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", cdev.DevNo)) + deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", cdev.DevNo)) } cdevParams = append(cdevParams, string(cdev.Backend)) - cdevParams = append(cdevParams, fmt.Sprintf(",id=%s", cdev.ID)) + cdevParams = append(cdevParams, fmt.Sprintf("id=%s", cdev.ID)) if cdev.Backend == Socket { - cdevParams = append(cdevParams, fmt.Sprintf(",path=%s,server=on,wait=off", cdev.Path)) + cdevParams = append(cdevParams, fmt.Sprintf("path=%s,server=on,wait=off", cdev.Path)) } else { - cdevParams = append(cdevParams, fmt.Sprintf(",path=%s", cdev.Path)) + cdevParams = append(cdevParams, fmt.Sprintf("path=%s", cdev.Path)) } qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, "")) + qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) qemuParams = append(qemuParams, "-chardev") - qemuParams = append(qemuParams, strings.Join(cdevParams, "")) + qemuParams = append(qemuParams, strings.Join(cdevParams, ",")) return qemuParams } @@ -829,7 +829,7 @@ func (netdev NetDevice) Valid() bool { // multi-queue option mq needs to be activated. See comment in libvirt code at // https://github.com/libvirt/libvirt/blob/6e7e965dcd3d885739129b1454ce19e819b54c25/src/qemu/qemu_command.c#L3633 func (netdev NetDevice) mqParameter(config *Config) string { - p := []string{",mq=on"} + p := []string{"mq=on"} if netdev.Transport.isVirtioPCI(config) { // https://www.linux-kvm.org/page/Multiqueue @@ -842,10 +842,10 @@ func (netdev NetDevice) mqParameter(config *Config) string { // The agent implementation should do this to ensure that it is // always set vectors := len(netdev.FDs)*2 + 2 - p = append(p, fmt.Sprintf(",vectors=%d", vectors)) + p = append(p, fmt.Sprintf("vectors=%d", vectors)) } - return strings.Join(p, "") + return strings.Join(p, ",") } // QemuDeviceParams returns the -device parameters for this network device @@ -858,21 +858,21 @@ func (netdev NetDevice) QemuDeviceParams(config *Config) []string { } deviceParams = append(deviceParams, fmt.Sprintf("driver=%s", driver)) - deviceParams = append(deviceParams, fmt.Sprintf(",netdev=%s", netdev.ID)) - deviceParams = append(deviceParams, fmt.Sprintf(",mac=%s", netdev.MACAddress)) + deviceParams = append(deviceParams, fmt.Sprintf("netdev=%s", netdev.ID)) + deviceParams = append(deviceParams, fmt.Sprintf("mac=%s", netdev.MACAddress)) if netdev.Bus != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",bus=%s", netdev.Bus)) + deviceParams = append(deviceParams, fmt.Sprintf("bus=%s", netdev.Bus)) } if netdev.Addr != "" { addr, err := strconv.Atoi(netdev.Addr) if err == nil && addr >= 0 { - deviceParams = append(deviceParams, fmt.Sprintf(",addr=%x", addr)) + deviceParams = append(deviceParams, fmt.Sprintf("addr=%x", addr)) } } if s := netdev.Transport.disableModern(config, netdev.DisableModern); s != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) + deviceParams = append(deviceParams, s) } if len(netdev.FDs) > 0 { @@ -881,14 +881,14 @@ func (netdev NetDevice) QemuDeviceParams(config *Config) []string { } if netdev.Transport.isVirtioPCI(config) && netdev.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", netdev.ROMFile)) + deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", netdev.ROMFile)) } if netdev.Transport.isVirtioCCW(config) { if config.Knobs.IOMMUPlatform { - deviceParams = append(deviceParams, ",iommu_platform=on") + deviceParams = append(deviceParams, "iommu_platform=on") } - deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", netdev.DevNo)) + deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", netdev.DevNo)) } return deviceParams @@ -904,17 +904,17 @@ func (netdev NetDevice) QemuNetdevParams(config *Config) []string { } netdevParams = append(netdevParams, netdevType) - netdevParams = append(netdevParams, fmt.Sprintf(",id=%s", netdev.ID)) + netdevParams = append(netdevParams, fmt.Sprintf("id=%s", netdev.ID)) if netdev.VHost { - netdevParams = append(netdevParams, ",vhost=on") + netdevParams = append(netdevParams, "vhost=on") if len(netdev.VhostFDs) > 0 { var fdParams []string qemuFDs := config.appendFDs(netdev.VhostFDs) for _, fd := range qemuFDs { fdParams = append(fdParams, fmt.Sprintf("%d", fd)) } - netdevParams = append(netdevParams, fmt.Sprintf(",vhostfds=%s", strings.Join(fdParams, ":"))) + netdevParams = append(netdevParams, fmt.Sprintf("vhostfds=%s", strings.Join(fdParams, ":"))) } } @@ -926,15 +926,15 @@ func (netdev NetDevice) QemuNetdevParams(config *Config) []string { fdParams = append(fdParams, fmt.Sprintf("%d", fd)) } - netdevParams = append(netdevParams, fmt.Sprintf(",fds=%s", strings.Join(fdParams, ":"))) + netdevParams = append(netdevParams, fmt.Sprintf("fds=%s", strings.Join(fdParams, ":"))) } else { - netdevParams = append(netdevParams, fmt.Sprintf(",ifname=%s", netdev.IFName)) + netdevParams = append(netdevParams, fmt.Sprintf("ifname=%s", netdev.IFName)) if netdev.DownScript != "" { - netdevParams = append(netdevParams, fmt.Sprintf(",downscript=%s", netdev.DownScript)) + netdevParams = append(netdevParams, fmt.Sprintf("downscript=%s", netdev.DownScript)) } if netdev.Script != "" { - netdevParams = append(netdevParams, fmt.Sprintf(",script=%s", netdev.Script)) + netdevParams = append(netdevParams, fmt.Sprintf("script=%s", netdev.Script)) } } return netdevParams @@ -955,7 +955,7 @@ func (netdev NetDevice) QemuParams(config *Config) []string { netdevParams = netdev.QemuNetdevParams(config) if netdevParams != nil { qemuParams = append(qemuParams, "-netdev") - qemuParams = append(qemuParams, strings.Join(netdevParams, "")) + qemuParams = append(qemuParams, strings.Join(netdevParams, ",")) } } @@ -963,7 +963,7 @@ func (netdev NetDevice) QemuParams(config *Config) []string { deviceParams = netdev.QemuDeviceParams(config) if deviceParams != nil { qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, "")) + qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) } } @@ -1010,25 +1010,25 @@ func (dev SerialDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, dev.deviceName(config)) if s := dev.Transport.disableModern(config, dev.DisableModern); s != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) + deviceParams = append(deviceParams, s) } - deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", dev.ID)) + deviceParams = append(deviceParams, fmt.Sprintf("id=%s", dev.ID)) if dev.Transport.isVirtioPCI(config) && dev.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", dev.ROMFile)) + deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", dev.ROMFile)) if dev.Driver == VirtioSerial && dev.MaxPorts != 0 { - deviceParams = append(deviceParams, fmt.Sprintf(",max_ports=%d", dev.MaxPorts)) + deviceParams = append(deviceParams, fmt.Sprintf("max_ports=%d", dev.MaxPorts)) } } if dev.Transport.isVirtioCCW(config) { if config.Knobs.IOMMUPlatform { - deviceParams = append(deviceParams, ",iommu_platform=on") + deviceParams = append(deviceParams, "iommu_platform=on") } - deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", dev.DevNo)) + deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", dev.DevNo)) } qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, "")) + qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) return qemuParams } @@ -1133,46 +1133,46 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, blkdev.deviceName(config)) if s := blkdev.Transport.disableModern(config, blkdev.DisableModern); s != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) + deviceParams = append(deviceParams, s) } - deviceParams = append(deviceParams, fmt.Sprintf(",drive=%s", blkdev.ID)) + deviceParams = append(deviceParams, fmt.Sprintf("drive=%s", blkdev.ID)) if !blkdev.SCSI { - deviceParams = append(deviceParams, ",scsi=off") + deviceParams = append(deviceParams, "scsi=off") } if !blkdev.WCE { - deviceParams = append(deviceParams, ",config-wce=off") + deviceParams = append(deviceParams, "config-wce=off") } if blkdev.Transport.isVirtioPCI(config) && blkdev.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", blkdev.ROMFile)) + deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", blkdev.ROMFile)) } if blkdev.Transport.isVirtioCCW(config) { - deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", blkdev.DevNo)) + deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", blkdev.DevNo)) } if blkdev.ShareRW { - deviceParams = append(deviceParams, fmt.Sprintf(",share-rw=on")) + deviceParams = append(deviceParams, fmt.Sprintf("share-rw=on")) } - deviceParams = append(deviceParams, fmt.Sprintf(",serial=%s", blkdev.ID)) + deviceParams = append(deviceParams, fmt.Sprintf("serial=%s", blkdev.ID)) blkParams = append(blkParams, fmt.Sprintf("id=%s", blkdev.ID)) - blkParams = append(blkParams, fmt.Sprintf(",file=%s", blkdev.File)) - blkParams = append(blkParams, fmt.Sprintf(",aio=%s", blkdev.AIO)) - blkParams = append(blkParams, fmt.Sprintf(",format=%s", blkdev.Format)) - blkParams = append(blkParams, fmt.Sprintf(",if=%s", blkdev.Interface)) + blkParams = append(blkParams, fmt.Sprintf("file=%s", blkdev.File)) + blkParams = append(blkParams, fmt.Sprintf("aio=%s", blkdev.AIO)) + blkParams = append(blkParams, fmt.Sprintf("format=%s", blkdev.Format)) + blkParams = append(blkParams, fmt.Sprintf("if=%s", blkdev.Interface)) if blkdev.ReadOnly { - blkParams = append(blkParams, ",readonly") + blkParams = append(blkParams, "readonly") } qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, "")) + qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) qemuParams = append(qemuParams, "-drive") - qemuParams = append(qemuParams, strings.Join(blkParams, "")) + qemuParams = append(qemuParams, strings.Join(blkParams, ",")) return qemuParams } @@ -1232,14 +1232,14 @@ func (dev LoaderDevice) Valid() bool { // QemuParams returns the qemu parameters built out of this loader device. func (dev LoaderDevice) QemuParams(config *Config) []string { var qemuParams []string - var devParams []string + var deviceParams []string - devParams = append(devParams, "loader") - devParams = append(devParams, fmt.Sprintf("file=%s", dev.File)) - devParams = append(devParams, fmt.Sprintf("id=%s", dev.ID)) + deviceParams = append(deviceParams, "loader") + deviceParams = append(deviceParams, fmt.Sprintf("file=%s", dev.File)) + deviceParams = append(deviceParams, fmt.Sprintf("id=%s", dev.ID)) qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(devParams, ",")) + qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) return qemuParams } @@ -1330,7 +1330,7 @@ func (vhostuserDev VhostUserDevice) Valid() bool { func (vhostuserDev VhostUserDevice) QemuNetParams(config *Config) []string { var qemuParams []string var netParams []string - var devParams []string + var deviceParams []string driver := vhostuserDev.deviceName(config) if driver == "" { @@ -1342,18 +1342,18 @@ func (vhostuserDev VhostUserDevice) QemuNetParams(config *Config) []string { netParams = append(netParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) netParams = append(netParams, "vhostforce") - devParams = append(devParams, driver) - devParams = append(devParams, fmt.Sprintf("netdev=%s", vhostuserDev.TypeDevID)) - devParams = append(devParams, fmt.Sprintf("mac=%s", vhostuserDev.Address)) + deviceParams = append(deviceParams, driver) + deviceParams = append(deviceParams, fmt.Sprintf("netdev=%s", vhostuserDev.TypeDevID)) + deviceParams = append(deviceParams, fmt.Sprintf("mac=%s", vhostuserDev.Address)) if vhostuserDev.Transport.isVirtioPCI(config) && vhostuserDev.ROMFile != "" { - devParams = append(devParams, fmt.Sprintf("romfile=%s", vhostuserDev.ROMFile)) + deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", vhostuserDev.ROMFile)) } qemuParams = append(qemuParams, "-netdev") qemuParams = append(qemuParams, strings.Join(netParams, ",")) qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(devParams, ",")) + qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) return qemuParams } @@ -1361,23 +1361,23 @@ func (vhostuserDev VhostUserDevice) QemuNetParams(config *Config) []string { // QemuSCSIParams builds QEMU device parameters for a VhostUserSCSI device func (vhostuserDev VhostUserDevice) QemuSCSIParams(config *Config) []string { var qemuParams []string - var devParams []string + var deviceParams []string driver := vhostuserDev.deviceName(config) if driver == "" { return nil } - devParams = append(devParams, driver) - devParams = append(devParams, fmt.Sprintf("id=%s", vhostuserDev.TypeDevID)) - devParams = append(devParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) + deviceParams = append(deviceParams, driver) + deviceParams = append(deviceParams, fmt.Sprintf("id=%s", vhostuserDev.TypeDevID)) + deviceParams = append(deviceParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) if vhostuserDev.Transport.isVirtioPCI(config) && vhostuserDev.ROMFile != "" { - devParams = append(devParams, fmt.Sprintf("romfile=%s", vhostuserDev.ROMFile)) + deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", vhostuserDev.ROMFile)) } qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(devParams, ",")) + qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) return qemuParams } @@ -1385,24 +1385,24 @@ func (vhostuserDev VhostUserDevice) QemuSCSIParams(config *Config) []string { // QemuBlkParams builds QEMU device parameters for a VhostUserBlk device func (vhostuserDev VhostUserDevice) QemuBlkParams(config *Config) []string { var qemuParams []string - var devParams []string + var deviceParams []string driver := vhostuserDev.deviceName(config) if driver == "" { return nil } - devParams = append(devParams, driver) - devParams = append(devParams, "logical_block_size=4096") - devParams = append(devParams, "size=512M") - devParams = append(devParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) + deviceParams = append(deviceParams, driver) + deviceParams = append(deviceParams, "logical_block_size=4096") + deviceParams = append(deviceParams, "size=512M") + deviceParams = append(deviceParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) if vhostuserDev.Transport.isVirtioPCI(config) && vhostuserDev.ROMFile != "" { - devParams = append(devParams, fmt.Sprintf("romfile=%s", vhostuserDev.ROMFile)) + deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", vhostuserDev.ROMFile)) } qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(devParams, ",")) + qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) return qemuParams } @@ -1410,31 +1410,31 @@ func (vhostuserDev VhostUserDevice) QemuBlkParams(config *Config) []string { // QemuFSParams builds QEMU device parameters for a VhostUserFS device func (vhostuserDev VhostUserDevice) QemuFSParams(config *Config) []string { var qemuParams []string - var devParams []string + var deviceParams []string driver := vhostuserDev.deviceName(config) if driver == "" { return nil } - devParams = append(devParams, driver) - devParams = append(devParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) - devParams = append(devParams, fmt.Sprintf("tag=%s", vhostuserDev.Tag)) + deviceParams = append(deviceParams, driver) + deviceParams = append(deviceParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) + deviceParams = append(deviceParams, fmt.Sprintf("tag=%s", vhostuserDev.Tag)) if vhostuserDev.CacheSize != 0 { - devParams = append(devParams, fmt.Sprintf("cache-size=%dM", vhostuserDev.CacheSize)) + deviceParams = append(deviceParams, fmt.Sprintf("cache-size=%dM", vhostuserDev.CacheSize)) } if vhostuserDev.SharedVersions { - devParams = append(devParams, "versiontable=/dev/shm/fuse_shared_versions") + deviceParams = append(deviceParams, "versiontable=/dev/shm/fuse_shared_versions") } if vhostuserDev.Transport.isVirtioCCW(config) { - devParams = append(devParams, fmt.Sprintf("devno=%s", vhostuserDev.DevNo)) + deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", vhostuserDev.DevNo)) } if vhostuserDev.Transport.isVirtioPCI(config) && vhostuserDev.ROMFile != "" { - devParams = append(devParams, fmt.Sprintf("romfile=%s", vhostuserDev.ROMFile)) + deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", vhostuserDev.ROMFile)) } qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(devParams, ",")) + qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) return qemuParams } @@ -1443,7 +1443,7 @@ func (vhostuserDev VhostUserDevice) QemuFSParams(config *Config) []string { func (vhostuserDev VhostUserDevice) QemuParams(config *Config) []string { var qemuParams []string var charParams []string - var devParams []string + var deviceParams []string charParams = append(charParams, "socket") charParams = append(charParams, fmt.Sprintf("id=%s", vhostuserDev.CharDevID)) @@ -1454,19 +1454,19 @@ func (vhostuserDev VhostUserDevice) QemuParams(config *Config) []string { switch vhostuserDev.VhostUserType { case VhostUserNet: - devParams = vhostuserDev.QemuNetParams(config) + deviceParams = vhostuserDev.QemuNetParams(config) case VhostUserSCSI: - devParams = vhostuserDev.QemuSCSIParams(config) + deviceParams = vhostuserDev.QemuSCSIParams(config) case VhostUserBlk: - devParams = vhostuserDev.QemuBlkParams(config) + deviceParams = vhostuserDev.QemuBlkParams(config) case VhostUserFS: - devParams = vhostuserDev.QemuFSParams(config) + deviceParams = vhostuserDev.QemuFSParams(config) default: return nil } - if devParams != nil { - return append(qemuParams, devParams...) + if deviceParams != nil { + return append(qemuParams, deviceParams...) } return nil @@ -1639,26 +1639,26 @@ func (vfioDev VFIODevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf("%s,host=%s", driver, vfioDev.BDF)) if vfioDev.Transport.isVirtioPCI(config) { if vfioDev.VendorID != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",x-pci-vendor-id=%s", vfioDev.VendorID)) + deviceParams = append(deviceParams, fmt.Sprintf("x-pci-vendor-id=%s", vfioDev.VendorID)) } if vfioDev.DeviceID != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",x-pci-device-id=%s", vfioDev.DeviceID)) + deviceParams = append(deviceParams, fmt.Sprintf("x-pci-device-id=%s", vfioDev.DeviceID)) } if vfioDev.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", vfioDev.ROMFile)) + deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", vfioDev.ROMFile)) } } if vfioDev.Bus != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",bus=%s", vfioDev.Bus)) + deviceParams = append(deviceParams, fmt.Sprintf("bus=%s", vfioDev.Bus)) } if vfioDev.Transport.isVirtioCCW(config) { - deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", vfioDev.DevNo)) + deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", vfioDev.DevNo)) } qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, "")) + qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) return qemuParams } @@ -1715,35 +1715,35 @@ func (scsiCon SCSIController) Valid() bool { // QemuParams returns the qemu parameters built out of this SCSIController device. func (scsiCon SCSIController) QemuParams(config *Config) []string { var qemuParams []string - var devParams []string + var deviceParams []string driver := scsiCon.deviceName(config) - devParams = append(devParams, fmt.Sprintf("%s,id=%s", driver, scsiCon.ID)) + deviceParams = append(deviceParams, fmt.Sprintf("%s,id=%s", driver, scsiCon.ID)) if scsiCon.Bus != "" { - devParams = append(devParams, fmt.Sprintf("bus=%s", scsiCon.Bus)) + deviceParams = append(deviceParams, fmt.Sprintf("bus=%s", scsiCon.Bus)) } if scsiCon.Addr != "" { - devParams = append(devParams, fmt.Sprintf("addr=%s", scsiCon.Addr)) + deviceParams = append(deviceParams, fmt.Sprintf("addr=%s", scsiCon.Addr)) } if s := scsiCon.Transport.disableModern(config, scsiCon.DisableModern); s != "" { - devParams = append(devParams, s) + deviceParams = append(deviceParams, s) } if scsiCon.IOThread != "" { - devParams = append(devParams, fmt.Sprintf("iothread=%s", scsiCon.IOThread)) + deviceParams = append(deviceParams, fmt.Sprintf("iothread=%s", scsiCon.IOThread)) } if scsiCon.Transport.isVirtioPCI(config) && scsiCon.ROMFile != "" { - devParams = append(devParams, fmt.Sprintf("romfile=%s", scsiCon.ROMFile)) + deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", scsiCon.ROMFile)) } if scsiCon.Transport.isVirtioCCW(config) { if config.Knobs.IOMMUPlatform { - devParams = append(devParams, ",iommu_platform=on") + deviceParams = append(deviceParams, "iommu_platform=on") } - devParams = append(devParams, fmt.Sprintf("devno=%s", scsiCon.DevNo)) + deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", scsiCon.DevNo)) } qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(devParams, ",")) + qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) return qemuParams } @@ -1813,36 +1813,36 @@ func (bridgeDev BridgeDevice) Valid() bool { // QemuParams returns the qemu parameters built out of this bridge device. func (bridgeDev BridgeDevice) QemuParams(config *Config) []string { var qemuParams []string - var deviceParam []string + var deviceParams []string var driver DeviceDriver switch bridgeDev.Type { case PCIEBridge: driver = PCIePCIBridgeDriver - deviceParam = append(deviceParam, fmt.Sprintf("%s,bus=%s,id=%s", driver, bridgeDev.Bus, bridgeDev.ID)) + deviceParams = append(deviceParams, fmt.Sprintf("%s,bus=%s,id=%s", driver, bridgeDev.Bus, bridgeDev.ID)) default: driver = PCIBridgeDriver shpc := "off" if bridgeDev.SHPC { shpc = "on" } - deviceParam = append(deviceParam, fmt.Sprintf("%s,bus=%s,id=%s,chassis_nr=%d,shpc=%s", driver, bridgeDev.Bus, bridgeDev.ID, bridgeDev.Chassis, shpc)) + deviceParams = append(deviceParams, fmt.Sprintf("%s,bus=%s,id=%s,chassis_nr=%d,shpc=%s", driver, bridgeDev.Bus, bridgeDev.ID, bridgeDev.Chassis, shpc)) } if bridgeDev.Addr != "" { addr, err := strconv.Atoi(bridgeDev.Addr) if err == nil && addr >= 0 { - deviceParam = append(deviceParam, fmt.Sprintf(",addr=%x", addr)) + deviceParams = append(deviceParams, fmt.Sprintf("addr=%x", addr)) } } var transport VirtioTransport if transport.isVirtioPCI(config) && bridgeDev.ROMFile != "" { - deviceParam = append(deviceParam, fmt.Sprintf(",romfile=%s", bridgeDev.ROMFile)) + deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", bridgeDev.ROMFile)) } qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParam, "")) + qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) return qemuParams } @@ -1907,28 +1907,28 @@ func (vsock VSOCKDevice) QemuParams(config *Config) []string { driver := vsock.deviceName(config) deviceParams = append(deviceParams, string(driver)) if s := vsock.Transport.disableModern(config, vsock.DisableModern); s != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",%s", s)) + deviceParams = append(deviceParams, s) } if vsock.VHostFD != nil { qemuFDs := config.appendFDs([]*os.File{vsock.VHostFD}) - deviceParams = append(deviceParams, fmt.Sprintf(",vhostfd=%d", qemuFDs[0])) + deviceParams = append(deviceParams, fmt.Sprintf("vhostfd=%d", qemuFDs[0])) } - deviceParams = append(deviceParams, fmt.Sprintf(",id=%s", vsock.ID)) - deviceParams = append(deviceParams, fmt.Sprintf(",%s=%d", VSOCKGuestCID, vsock.ContextID)) + deviceParams = append(deviceParams, fmt.Sprintf("id=%s", vsock.ID)) + deviceParams = append(deviceParams, fmt.Sprintf("%s=%d", VSOCKGuestCID, vsock.ContextID)) if vsock.Transport.isVirtioPCI(config) && vsock.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf(",romfile=%s", vsock.ROMFile)) + deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", vsock.ROMFile)) } if vsock.Transport.isVirtioCCW(config) { if config.Knobs.IOMMUPlatform { - deviceParams = append(deviceParams, ",iommu_platform=on") + deviceParams = append(deviceParams, "iommu_platform=on") } - deviceParams = append(deviceParams, fmt.Sprintf(",devno=%s", vsock.DevNo)) + deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", vsock.DevNo)) } qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, "")) + qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) return qemuParams } @@ -1995,7 +1995,7 @@ func (v RngDevice) QemuParams(config *Config) []string { if v.Transport.isVirtioCCW(config) { if config.Knobs.IOMMUPlatform { - deviceParams = append(deviceParams, ",iommu_platform=on") + deviceParams = append(deviceParams, "iommu_platform=on") } deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", v.DevNo)) } @@ -2331,16 +2331,16 @@ func (fwcfg FwCfg) QemuParams(config *Config) []string { fwcfgParams = append(fwcfgParams, fmt.Sprintf("name=%s", f.Name)) if f.File != "" { - fwcfgParams = append(fwcfgParams, fmt.Sprintf(",file=%s", f.File)) + fwcfgParams = append(fwcfgParams, fmt.Sprintf("file=%s", f.File)) } if f.Str != "" { - fwcfgParams = append(fwcfgParams, fmt.Sprintf(",string=%s", f.Str)) + fwcfgParams = append(fwcfgParams, fmt.Sprintf("string=%s", f.Str)) } } qemuParams = append(qemuParams, "-fw_cfg") - qemuParams = append(qemuParams, strings.Join(fwcfgParams, "")) + qemuParams = append(qemuParams, strings.Join(fwcfgParams, ",")) } return qemuParams @@ -2530,15 +2530,15 @@ func (config *Config) appendMachine() { machineParams = append(machineParams, config.Machine.Type) if config.Machine.Acceleration != "" { - machineParams = append(machineParams, fmt.Sprintf(",accel=%s", config.Machine.Acceleration)) + machineParams = append(machineParams, fmt.Sprintf("accel=%s", config.Machine.Acceleration)) } if config.Machine.Options != "" { - machineParams = append(machineParams, fmt.Sprintf(",%s", config.Machine.Options)) + machineParams = append(machineParams, config.Machine.Options) } config.qemuParams = append(config.qemuParams, "-machine") - config.qemuParams = append(config.qemuParams, strings.Join(machineParams, "")) + config.qemuParams = append(config.qemuParams, strings.Join(machineParams, ",")) } } @@ -2555,17 +2555,16 @@ func (config *Config) appendQMPSockets() { continue } - qmpParams := append([]string{}, fmt.Sprintf("%s:", q.Type)) - qmpParams = append(qmpParams, q.Name) + qmpParams := append([]string{}, fmt.Sprintf("%s:%s", q.Type, q.Name)) if q.Server { - qmpParams = append(qmpParams, ",server=on") + qmpParams = append(qmpParams, "server=on") if q.NoWait { - qmpParams = append(qmpParams, ",wait=off") + qmpParams = append(qmpParams, "wait=off") } } config.qemuParams = append(config.qemuParams, "-qmp") - config.qemuParams = append(config.qemuParams, strings.Join(qmpParams, "")) + config.qemuParams = append(config.qemuParams, strings.Join(qmpParams, ",")) } } @@ -2593,15 +2592,15 @@ func (config *Config) appendMemory() { memoryParams = append(memoryParams, config.Memory.Size) if config.Memory.Slots > 0 { - memoryParams = append(memoryParams, fmt.Sprintf(",slots=%d", config.Memory.Slots)) + memoryParams = append(memoryParams, fmt.Sprintf("slots=%d", config.Memory.Slots)) } if config.Memory.MaxMem != "" { - memoryParams = append(memoryParams, fmt.Sprintf(",maxmem=%s", config.Memory.MaxMem)) + memoryParams = append(memoryParams, fmt.Sprintf("maxmem=%s", config.Memory.MaxMem)) } config.qemuParams = append(config.qemuParams, "-m") - config.qemuParams = append(config.qemuParams, strings.Join(memoryParams, "")) + config.qemuParams = append(config.qemuParams, strings.Join(memoryParams, ",")) } } @@ -2612,15 +2611,15 @@ func (config *Config) appendCPUs() error { SMPParams = append(SMPParams, fmt.Sprintf("%d", config.SMP.CPUs)) if config.SMP.Cores > 0 { - SMPParams = append(SMPParams, fmt.Sprintf(",cores=%d", config.SMP.Cores)) + SMPParams = append(SMPParams, fmt.Sprintf("cores=%d", config.SMP.Cores)) } if config.SMP.Threads > 0 { - SMPParams = append(SMPParams, fmt.Sprintf(",threads=%d", config.SMP.Threads)) + SMPParams = append(SMPParams, fmt.Sprintf("threads=%d", config.SMP.Threads)) } if config.SMP.Sockets > 0 { - SMPParams = append(SMPParams, fmt.Sprintf(",sockets=%d", config.SMP.Sockets)) + SMPParams = append(SMPParams, fmt.Sprintf("sockets=%d", config.SMP.Sockets)) } if config.SMP.MaxCPUs > 0 { @@ -2628,11 +2627,11 @@ func (config *Config) appendCPUs() error { return fmt.Errorf("MaxCPUs %d must be equal to or greater than CPUs %d", config.SMP.MaxCPUs, config.SMP.CPUs) } - SMPParams = append(SMPParams, fmt.Sprintf(",maxcpus=%d", config.SMP.MaxCPUs)) + SMPParams = append(SMPParams, fmt.Sprintf("maxcpus=%d", config.SMP.MaxCPUs)) } config.qemuParams = append(config.qemuParams, "-smp") - config.qemuParams = append(config.qemuParams, strings.Join(SMPParams, "")) + config.qemuParams = append(config.qemuParams, strings.Join(SMPParams, ",")) } return nil @@ -2648,15 +2647,15 @@ func (config *Config) appendRTC() { RTCParams = append(RTCParams, fmt.Sprintf("base=%s", string(config.RTC.Base))) if config.RTC.DriftFix != "" { - RTCParams = append(RTCParams, fmt.Sprintf(",driftfix=%s", config.RTC.DriftFix)) + RTCParams = append(RTCParams, fmt.Sprintf("driftfix=%s", config.RTC.DriftFix)) } if config.RTC.Clock != "" { - RTCParams = append(RTCParams, fmt.Sprintf(",clock=%s", config.RTC.Clock)) + RTCParams = append(RTCParams, fmt.Sprintf("clock=%s", config.RTC.Clock)) } config.qemuParams = append(config.qemuParams, "-rtc") - config.qemuParams = append(config.qemuParams, strings.Join(RTCParams, "")) + config.qemuParams = append(config.qemuParams, strings.Join(RTCParams, ",")) } func (config *Config) appendGlobalParam() { From 0d21263a9b55b062360aa82219a4e8611b548587 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Wed, 21 Jul 2021 11:26:19 -0500 Subject: [PATCH 245/385] qemu: support read-only nvdimm Append `readonly=on` to a `memory-backend-file` object and `unarmed=on` to a `nvdimm` device when `ReadOnly` is set to `true` Signed-off-by: Julio Montes --- qemu/qemu.go | 8 ++++++++ qemu/qemu_test.go | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 7c4563fa4..ee3028463 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -277,6 +277,9 @@ type Object struct { // ReducedPhysBits is the reduction in the guest physical address space // This is only relevant for sev-guest objects ReducedPhysBits uint32 + + // ReadOnly specifies whether `MemPath` is opened read-only or read/write (default) + ReadOnly bool } // Valid returns true if the Object structure is valid and complete. @@ -315,6 +318,11 @@ func (object Object) QemuParams(config *Config) []string { deviceParams = append(deviceParams, string(object.Driver)) deviceParams = append(deviceParams, fmt.Sprintf("id=%s", object.DeviceID)) deviceParams = append(deviceParams, fmt.Sprintf("memdev=%s", object.ID)) + + if object.ReadOnly { + objectParams = append(objectParams, "readonly=on") + deviceParams = append(deviceParams, "unarmed=on") + } case TDXGuest: objectParams = append(objectParams, string(object.Type)) objectParams = append(objectParams, fmt.Sprintf("id=%s", object.ID)) diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 34a9abb8f..d4fcf613b 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -128,7 +128,7 @@ func TestAppendEmptyMachine(t *testing.T) { testAppend(machine, "", t) } -var deviceNVDIMMString = "-device nvdimm,id=nv0,memdev=mem0 -object memory-backend-file,id=mem0,mem-path=/root,size=65536" +var deviceNVDIMMString = "-device nvdimm,id=nv0,memdev=mem0,unarmed=on -object memory-backend-file,id=mem0,mem-path=/root,size=65536,readonly=on" func TestAppendDeviceNVDIMM(t *testing.T) { object := Object{ @@ -138,6 +138,7 @@ func TestAppendDeviceNVDIMM(t *testing.T) { ID: "mem0", MemPath: "/root", Size: 1 << 16, + ReadOnly: true, } testAppend(object, deviceNVDIMMString, t) From 9d6e7970b66bff05e0342f06ce0db5beb60f7949 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Wed, 21 Jul 2021 11:38:07 -0500 Subject: [PATCH 246/385] go: support go modules Add go.mod file to support Golang 1.16.x Signed-off-by: Julio Montes --- go.mod | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 go.mod diff --git a/go.mod b/go.mod new file mode 100644 index 000000000..377ac043f --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module github.com/kata-containers/govmm + +go 1.16 From 61b6378749e333238d77bc85926ddca5c13ab90f Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Wed, 21 Jul 2021 11:40:11 -0500 Subject: [PATCH 247/385] .github/workflows: reimplement github actions CI * Remove golang 1.13 and 1.14, add golang 1.16 * gometalinter has been deprecated, use golangci-lint instead Signed-off-by: Julio Montes --- .github/workflows/main.yml | 45 ++++++++++++-------------------------- .golangci.yml | 35 +++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 31 deletions(-) create mode 100644 .golangci.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0ced8ae57..912d3d225 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -4,37 +4,20 @@ jobs: test: strategy: matrix: - go-version: [1.13.x, 1.14.x, 1.15.x] + go-version: [1.15.x, 1.16.x] os: [ubuntu-latest] runs-on: ${{ matrix.os }} - env: - GO111MODULE: off steps: - - name: Install Go - uses: actions/setup-go@v2 - with: - go-version: ${{ matrix.go-version }} - - name: Setup GOPATH - run: | - gopath_org=$(go env GOPATH)/src/github.com/kata-containers/ - mkdir -p ${gopath_org} - ln -s ${PWD} ${gopath_org} - - name: Checkout code - uses: actions/checkout@v2 - - name: Install gometalinter - run: | - go get github.com/alecthomas/gometalinter - $(go env GOPATH)/bin/gometalinter --install - - name: Running gometalinter - run: | - gopath_repo=$(go env GOPATH)/src/github.com/kata-containers/govmm - pushd ${gopath_repo} - $(go env GOPATH)/bin/gometalinter --tests --vendor --disable-all --enable=misspell --enable=vet --enable=ineffassign --enable=gofmt --enable=gocyclo --cyclo-over=15 --enable=golint --enable=errcheck --enable=deadcode --enable=staticcheck -enable=gas ./... - - name: Send coverage - env: - COVERALLS_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - gopath_repo=$(go env GOPATH)/src/github.com/kata-containers/govmm - pushd ${gopath_repo} - go get github.com/mattn/goveralls - $(go env GOPATH)/bin/goveralls -v -service=github + - name: Install Go + uses: actions/setup-go@v2 + with: + go-version: ${{ matrix.go-version }} + - name: Checkout code + uses: actions/checkout@v2 + - name: golangci-lint + uses: golangci/golangci-lint-action@v2 + with: + version: latest + args: -c .golangci.yml -v + - name: go test + run: go test ./... diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 000000000..6b7fcdebe --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,35 @@ +# Copyright (c) 2021 Intel Corporation +# +# SPDX-License-Identifier: Apache-2.0 + +run: + concurrency: 4 + deadline: 600s + skip-dirs: + - vendor +# Ignore auto-generated protobuf code. + skip-files: + - ".*\\.pb\\.go$" + +linters: + disable-all: true + enable: + - deadcode + - gocyclo + - gofmt + - gosimple + - govet + - ineffassign + - misspell + - staticcheck + - structcheck + - typecheck + - unconvert + - unused + - varcheck + +linters-settings: + gocyclo: + min_complexity: 15 + unused: + check-exported: true From 335fa81667344214041348224ecabf1cf9b217d6 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Wed, 21 Jul 2021 15:08:12 -0500 Subject: [PATCH 248/385] qemu: fix golangci-lint errors fix golangci-lint errors Signed-off-by: Julio Montes --- qemu/qemu.go | 6 +++--- qemu/qemu_test.go | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 7c4563fa4..585eb712b 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1153,7 +1153,7 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string { } if blkdev.ShareRW { - deviceParams = append(deviceParams, fmt.Sprintf("share-rw=on")) + deviceParams = append(deviceParams, "share-rw=on") } deviceParams = append(deviceParams, fmt.Sprintf("serial=%s", blkdev.ID)) @@ -1905,7 +1905,7 @@ func (vsock VSOCKDevice) QemuParams(config *Config) []string { var qemuParams []string driver := vsock.deviceName(config) - deviceParams = append(deviceParams, string(driver)) + deviceParams = append(deviceParams, driver) if s := vsock.Transport.disableModern(config, vsock.DisableModern); s != "" { deviceParams = append(deviceParams, s) } @@ -2080,7 +2080,7 @@ func (b BalloonDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, "deflate-on-oom=off") } if s := b.Transport.disableModern(config, b.DisableModern); s != "" { - deviceParams = append(deviceParams, string(s)) + deviceParams = append(deviceParams, s) } qemuParams = append(qemuParams, "-device") qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 34a9abb8f..96a111b09 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -391,7 +391,7 @@ func TestAppendVirtioRng(t *testing.T) { ROMFile: romfile, } - deviceString += "-" + string(rngDevice.Transport.getName(nil)) + ",rng=rng0" + deviceString += "-" + rngDevice.Transport.getName(nil) + ",rng=rng0" if romfile != "" { deviceString = deviceString + ",romfile=efi-virtio.rom" } From 9518675e11330a1f675306347a0bd9984ca9c612 Mon Sep 17 00:00:00 2001 From: Liang Zhou Date: Tue, 20 Jul 2021 05:23:10 -0700 Subject: [PATCH 249/385] add support for "sandbox" feature to qemu Update the govmm code in order to support "sandbox" feature on qemu, which can introduce another protect layer on the host, to make the secure container more secure. Fixes: #185 Signed-off-by: Liang Zhou --- qemu/qemu.go | 11 +++++++++++ qemu/qemu_test.go | 19 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index 2ebd6e482..c4aada81e 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -2448,6 +2448,9 @@ type Config struct { // CPUModel is the CPU model to be used by qemu. CPUModel string + // SeccompSandbox is the qemu function which enables the seccomp feature + SeccompSandbox string + // Machine Machine Machine @@ -2524,6 +2527,13 @@ func (config *Config) appendFDs(fds []*os.File) []int { return fdInts } +func (config *Config) appendSeccompSandbox() { + if config.SeccompSandbox != "" { + config.qemuParams = append(config.qemuParams, "-sandbox") + config.qemuParams = append(config.qemuParams, config.SeccompSandbox) + } +} + func (config *Config) appendName() { if config.Name != "" { config.qemuParams = append(config.qemuParams, "-name") @@ -2877,6 +2887,7 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { config.appendPidFile() config.appendLogFile() config.appendFwCfg(logger) + config.appendSeccompSandbox() if err := config.appendCPUs(); err != nil { return "", err diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index c88bc0300..bc514a942 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -1072,6 +1072,25 @@ func TestValidPFlash(t *testing.T) { } } +func TestBadSeccompSandbox(t *testing.T) { + c := &Config{} + c.appendSeccompSandbox() + if len(c.qemuParams) != 0 { + t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) + } +} + +func TestValidSeccompSandbox(t *testing.T) { + c := &Config{} + c.SeccompSandbox = string("on,obsolete=deny") + c.appendSeccompSandbox() + expected := []string{"-sandbox", "on,obsolete=deny"} + ok := reflect.DeepEqual(expected, c.qemuParams) + if !ok { + t.Errorf("Expected %v, found %v", expected, c.qemuParams) + } +} + func TestBadVGA(t *testing.T) { c := &Config{} c.appendVGA() From 1b021929864fa45b643d9603d6615cc4b86235d7 Mon Sep 17 00:00:00 2001 From: David Gibson Date: Thu, 29 Jul 2021 13:29:28 +1000 Subject: [PATCH 250/385] Use 'host_device' driver for blockdev backends ExecuteBlockdevAdd() and ExecuteBlockdevAddWithCache() both appear to be intended to create block devices in the guest which backend onto a block device in the host. That seems to be the way that Kata always uses it. However blockdevAddBaseArgs(), used by both those functions always uses the "file" driver, which is only intended for use with regular file backends. Use of the "file" driver for host block devices was deprecated in qemu-3.0, and has been removed entirely in qemu-6.0 (commit 8d17adf34f5). We should be using the "host_device" driver instead. fixes #191 Signed-off-by: David Gibson --- qemu/qmp.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 23c288dc7..8527ff015 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -775,7 +775,7 @@ func (q *QMP) blockdevAddBaseArgs(device, blockdevID string, ro bool) (map[strin "driver": "raw", "read-only": ro, "file": map[string]interface{}{ - "driver": "file", + "driver": "host_device", "filename": device, }, } From 18352c36ec2a2eba8ffd161a7ca30c2cd7f8ba12 Mon Sep 17 00:00:00 2001 From: Jakob Naucke Date: Wed, 23 Jun 2021 17:14:20 +0200 Subject: [PATCH 251/385] qemu: Fix iommu_platform for vhost user CCW Enable iommu_platform for vhost user devices Fixes: #178 Signed-off-by: Jakob Naucke --- qemu/qemu.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index c4aada81e..7d60bb7e1 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1435,6 +1435,9 @@ func (vhostuserDev VhostUserDevice) QemuFSParams(config *Config) []string { deviceParams = append(deviceParams, "versiontable=/dev/shm/fuse_shared_versions") } if vhostuserDev.Transport.isVirtioCCW(config) { + if config.Knobs.IOMMUPlatform { + deviceParams = append(deviceParams, "iommu_platform=on") + } deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", vhostuserDev.DevNo)) } if vhostuserDev.Transport.isVirtioPCI(config) && vhostuserDev.ROMFile != "" { From d8cdf9aa2a1002c471230a5df6f056b268e4a9cd Mon Sep 17 00:00:00 2001 From: David Gibson Date: Tue, 3 Aug 2021 13:03:32 +1000 Subject: [PATCH 252/385] qemu: Drop support for versions older than 5.0 Kata requires version 5.2 (or 5.1 on ARM) anyway. Simplify code by dropping support for older versions. In any case explicit checks against version number aren't necessarily reliable for patched qemu versions. Signed-off-by: David Gibson --- README.md | 5 ++-- qemu/qmp.go | 61 +++++++++++++++--------------------------------- qemu/qmp_test.go | 9 ------- 3 files changed, 22 insertions(+), 53 deletions(-) diff --git a/README.md b/README.md index e23bab54b..d96c4d9de 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,9 @@ Virtual Machine Manager for Go (govmm) is a suite of packages that provide Go APIs for creating and managing virtual machines. There's -currently support for only one hypervisor, qemu/kvm, support for which -is provided by the github.com/kata-containers/govmm/qemu package. +currently support for only one hypervisor, qemu/kvm (version 5.0 and +later), support for which is provided by the +github.com/kata-containers/govmm/qemu package. The qemu package provides APIs for launching qemu instances and for managing those instances via QMP, once launched. VM instances can diff --git a/qemu/qmp.go b/qemu/qmp.go index 8527ff015..9ebe905b0 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -719,6 +719,10 @@ func QMPStart(ctx context.Context, socket string, cfg QMPConfig, disconnectedCh } } + if q.version.Major < 5 { + return nil, nil, fmt.Errorf("govmm requires qemu version 5.0 or later, this is qemu (%d.%d)", q.version.Major, q.version.Minor) + } + return q, q.version, nil } @@ -780,15 +784,8 @@ func (q *QMP) blockdevAddBaseArgs(device, blockdevID string, ro bool) (map[strin }, } - if q.version.Major > 2 || (q.version.Major == 2 && q.version.Minor >= 8) { - blockdevArgs["node-name"] = blockdevID - args = blockdevArgs - } else { - blockdevArgs["id"] = blockdevID - args = map[string]interface{}{ - "options": blockdevArgs, - } - } + blockdevArgs["node-name"] = blockdevID + args = blockdevArgs return args, blockdevArgs } @@ -813,11 +810,6 @@ func (q *QMP) ExecuteBlockdevAdd(ctx context.Context, device, blockdevID string, func (q *QMP) ExecuteBlockdevAddWithCache(ctx context.Context, device, blockdevID string, direct, noFlush, ro bool) error { args, blockdevArgs := q.blockdevAddBaseArgs(device, blockdevID, ro) - if q.version.Major < 2 || (q.version.Major == 2 && q.version.Minor < 9) { - return fmt.Errorf("versions of qemu (%d.%d) older than 2.9 do not support set cache-related options for block devices", - q.version.Major, q.version.Minor) - } - blockdevArgs["cache"] = map[string]interface{}{ "direct": direct, "no-flush": noFlush, @@ -850,7 +842,7 @@ func (q *QMP) ExecuteDeviceAdd(ctx context.Context, blockdevID, devID, driver, b args["bus"] = bus } - if shared && (q.version.Major > 2 || (q.version.Major == 2 && q.version.Minor >= 10)) { + if shared { args["share-rw"] = "on" } if transport.isVirtioPCI(nil) { @@ -904,32 +896,22 @@ func (q *QMP) ExecuteSCSIDeviceAdd(ctx context.Context, blockdevID, devID, drive if lun >= 0 { args["lun"] = lun } - if shared && (q.version.Major > 2 || (q.version.Major == 2 && q.version.Minor >= 10)) { + if shared { args["share-rw"] = "on" } return q.executeCommand(ctx, "device_add", args, nil) } -// ExecuteBlockdevDel deletes a block device by sending a x-blockdev-del command -// for qemu versions < 2.9. It sends the updated blockdev-del command for qemu>=2.9. -// blockdevID is the id of the block device to be deleted. Typically, this will -// match the id passed to ExecuteBlockdevAdd. It must be a valid QMP id. +// ExecuteBlockdevDel deletes a block device by sending blockdev-del +// command. blockdevID is the id of the block device to be deleted. +// Typically, this will match the id passed to ExecuteBlockdevAdd. It +// must be a valid QMP id. func (q *QMP) ExecuteBlockdevDel(ctx context.Context, blockdevID string) error { args := map[string]interface{}{} - if q.version.Major > 2 || (q.version.Major == 2 && q.version.Minor >= 9) { - args["node-name"] = blockdevID - return q.executeCommand(ctx, "blockdev-del", args, nil) - } - - if q.version.Major == 2 && q.version.Minor == 8 { - args["node-name"] = blockdevID - } else { - args["id"] = blockdevID - } - - return q.executeCommand(ctx, "x-blockdev-del", args, nil) + args["node-name"] = blockdevID + return q.executeCommand(ctx, "blockdev-del", args, nil) } // ExecuteChardevDel deletes a char device by sending a chardev-remove command. @@ -1104,7 +1086,7 @@ func (q *QMP) ExecutePCIDeviceAdd(ctx context.Context, blockdevID, devID, driver if bus != "" { args["bus"] = bus } - if shared && (q.version.Major > 2 || (q.version.Major == 2 && q.version.Minor >= 10)) { + if shared { args["share-rw"] = "on" } if queues > 0 { @@ -1240,10 +1222,7 @@ func isThreadIDSupported(driver string) bool { // isDieIDSupported returns if the cpu driver and the qemu version support the die id option func (q *QMP) isDieIDSupported(driver string) bool { - if (q.version.Major > 4 || (q.version.Major == 4 && q.version.Minor >= 1)) && driver == "host-x86_64-cpu" { - return true - } - return false + return driver == "host-x86_64-cpu" } // ExecuteCPUDeviceAdd adds a CPU to a QEMU instance using the device_add command. @@ -1454,11 +1433,9 @@ func (q *QMP) ExecuteNVDIMMDeviceAdd(ctx context.Context, id, mempath string, si }, } - if q.version.Major > 4 || (q.version.Major == 4 && q.version.Minor >= 1) { - if pmem != nil { - props := args["props"].(map[string]interface{}) - props["pmem"] = *pmem - } + if pmem != nil { + props := args["props"].(map[string]interface{}) + props["pmem"] = *pmem } err := q.executeCommand(ctx, "object-add", args, nil) diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 47fe11ecd..38153f914 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -1125,10 +1125,6 @@ func TestQMPCPUDeviceAdd(t *testing.T) { dieID := "0" coreID := "1" threadID := "0" - version := &QMPVersion{ - Major: 4, - Minor: 1, - } for _, d := range drivers { connectedCh := make(chan *QMPVersion) disconnectedCh := make(chan struct{}) @@ -1137,7 +1133,6 @@ func TestQMPCPUDeviceAdd(t *testing.T) { cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) - q.version = version err := q.ExecuteCPUDeviceAdd(context.Background(), d, cpuID, socketID, dieID, coreID, threadID, "") if err != nil { t.Fatalf("Unexpected error %v", err) @@ -1634,10 +1629,6 @@ func TestExecuteNVDIMMDeviceAdd(t *testing.T) { cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) - q.version = &QMPVersion{ - Major: 4, - Minor: 1, - } pmem := true err := q.ExecuteNVDIMMDeviceAdd(context.Background(), "nvdimm0", "/dev/rbd0", 1024, &pmem) if err != nil { From d27256f8635d3fa382d6cbd9f3a60f601773c4dc Mon Sep 17 00:00:00 2001 From: David Gibson Date: Tue, 3 Aug 2021 12:52:26 +1000 Subject: [PATCH 253/385] qmp: Don't use deprecated 'props' field for object-add Use of the 'props' argument to 'object-add' has been deprecated since QEMU 5.0 (commit 5f07c4d60d09) in favor of flattening the properties directly into the 'object-add' arguments. Support for 'props' is removed entirely in qemu 6.0 (commit 50243407457a). fixes #193 Signed-off-by: David Gibson --- qemu/qmp.go | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 9ebe905b0..229a2e206 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -1366,17 +1366,16 @@ func (q *QMP) ExecQueryCpusFast(ctx context.Context) ([]CPUInfoFast, error) { // ExecMemdevAdd adds size of MiB memory device to the guest func (q *QMP) ExecMemdevAdd(ctx context.Context, qomtype, id, mempath string, size int, share bool, driver, driverID, addr, bus string) error { - props := map[string]interface{}{"size": uint64(size) << 20} args := map[string]interface{}{ "qom-type": qomtype, "id": id, - "props": props, + "size": uint64(size) << 20, } if mempath != "" { - props["mem-path"] = mempath + args["mem-path"] = mempath } if share { - props["share"] = true + args["share"] = true } err := q.executeCommand(ctx, "object-add", args, nil) if err != nil { @@ -1426,16 +1425,13 @@ func (q *QMP) ExecuteNVDIMMDeviceAdd(ctx context.Context, id, mempath string, si args := map[string]interface{}{ "qom-type": "memory-backend-file", "id": "nvdimmbackmem" + id, - "props": map[string]interface{}{ - "mem-path": mempath, - "size": size, - "share": true, - }, + "mem-path": mempath, + "size": size, + "share": true, } if pmem != nil { - props := args["props"].(map[string]interface{}) - props["pmem"] = *pmem + args["pmem"] = *pmem } err := q.executeCommand(ctx, "object-add", args, nil) From 3a9a67499f410bfc7f6af78a783232f7a0045d7e Mon Sep 17 00:00:00 2001 From: Feng Wang Date: Mon, 9 Aug 2021 13:44:33 -0700 Subject: [PATCH 254/385] qemu: Add credentials to qemu Cmd add credentials to the command attribute Fixes #2444 Signed-off-by: Feng Wang --- qemu/qemu.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index c4aada81e..1152ffd72 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -2439,6 +2439,13 @@ type Config struct { // Ctx is the context used when launching qemu. Ctx context.Context + // User ID. + Uid uint32 + // Group ID. + Gid uint32 + // Supplementary group IDs. + Groups []uint32 + // Name is the qemu guest name Name string @@ -2898,8 +2905,15 @@ func LaunchQemu(config Config, logger QMPLog) (string, error) { ctx = context.Background() } + attr := syscall.SysProcAttr{} + attr.Credential = &syscall.Credential{ + Uid: config.Uid, + Gid: config.Gid, + Groups: config.Groups, + } + return LaunchCustomQemu(ctx, config.Path, config.qemuParams, - config.fds, nil, logger) + config.fds, &attr, logger) } // LaunchCustomQemu can be used to launch a new qemu instance. From 5c7998db048ab8a16ad6bfcd587623a84d0d3a41 Mon Sep 17 00:00:00 2001 From: Hui Zhu Date: Tue, 31 Aug 2021 16:32:09 +0800 Subject: [PATCH 255/385] QMP: Add ExecuteBlockdevAddWithDriverCache ExecuteBlockdevAddWithDriverCache has three one parameter driver than ExecuteBlockdevAddWithCache. Parameter driver can set the driver of block device. Fixes: #198 Signed-off-by: Hui Zhu --- qemu/qmp.go | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index 229a2e206..f8a33334c 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -772,14 +772,14 @@ func (q *QMP) ExecuteQuit(ctx context.Context) error { return q.executeCommand(ctx, "quit", nil, nil) } -func (q *QMP) blockdevAddBaseArgs(device, blockdevID string, ro bool) (map[string]interface{}, map[string]interface{}) { +func (q *QMP) blockdevAddBaseArgs(driver, device, blockdevID string, ro bool) (map[string]interface{}, map[string]interface{}) { var args map[string]interface{} blockdevArgs := map[string]interface{}{ "driver": "raw", "read-only": ro, "file": map[string]interface{}{ - "driver": "host_device", + "driver": driver, "filename": device, }, } @@ -795,7 +795,7 @@ func (q *QMP) blockdevAddBaseArgs(device, blockdevID string, ro bool) (map[strin // used to name the device. As this identifier will be passed directly to QMP, // it must obey QMP's naming rules, e,g., it must start with a letter. func (q *QMP) ExecuteBlockdevAdd(ctx context.Context, device, blockdevID string, ro bool) error { - args, _ := q.blockdevAddBaseArgs(device, blockdevID, ro) + args, _ := q.blockdevAddBaseArgs("host_device", device, blockdevID, ro) return q.executeCommand(ctx, "blockdev-add", args, nil) } @@ -808,7 +808,21 @@ func (q *QMP) ExecuteBlockdevAdd(ctx context.Context, device, blockdevID string, // is enabled. noFlush denotes whether flush requests for the device are // ignored. func (q *QMP) ExecuteBlockdevAddWithCache(ctx context.Context, device, blockdevID string, direct, noFlush, ro bool) error { - args, blockdevArgs := q.blockdevAddBaseArgs(device, blockdevID, ro) + args, blockdevArgs := q.blockdevAddBaseArgs("host_device", device, blockdevID, ro) + + blockdevArgs["cache"] = map[string]interface{}{ + "direct": direct, + "no-flush": noFlush, + } + + return q.executeCommand(ctx, "blockdev-add", args, nil) +} + +// ExecuteBlockdevAddWithDriverCache has three one parameter driver +// than ExecuteBlockdevAddWithCache. +// Parameter driver can set the driver of block device. +func (q *QMP) ExecuteBlockdevAddWithDriverCache(ctx context.Context, driver, device, blockdevID string, direct, noFlush, ro bool) error { + args, blockdevArgs := q.blockdevAddBaseArgs(driver, device, blockdevID, ro) blockdevArgs["cache"] = map[string]interface{}{ "direct": direct, From de039da2a9fc8399438d46fd2f0dcd271edadeb5 Mon Sep 17 00:00:00 2001 From: David Gibson Date: Wed, 8 Sep 2021 11:48:52 +1000 Subject: [PATCH 256/385] govmm/qemu: Let IO/memory reservations be specified for bridge devices This adds fields to BridgeDevice struct to allow qemu's io-reserve, mem-reserve and pref64-reserve properties to be set for PCI bridges. This is needed for Kata's upcoming change to ACPI hotplug. fixes #200 Signed-off-by: David Gibson --- qemu/qemu.go | 19 +++++++++++++++++++ qemu/qemu_arch_base_test.go | 2 ++ qemu/qemu_test.go | 18 ++++++++++++++++++ 3 files changed, 39 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index ee814a9c6..e57a4b26a 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1802,6 +1802,15 @@ type BridgeDevice struct { // ROMFile specifies the ROM file being used for this device. ROMFile string + + // Address range reservations for devices behind the bridge + // NB: strings seem an odd choice, but if they were integers, + // they'd default to 0 by Go's rules in all the existing users + // who don't set them. 0 is a valid value for certain cases, + // but not you want by default. + IOReserve string + MemReserve string + Pref64Reserve string } // Valid returns true if the BridgeDevice structure is valid and complete. @@ -1852,6 +1861,16 @@ func (bridgeDev BridgeDevice) QemuParams(config *Config) []string { deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", bridgeDev.ROMFile)) } + if bridgeDev.IOReserve != "" { + deviceParams = append(deviceParams, fmt.Sprintf("io-reserve=%s", bridgeDev.IOReserve)) + } + if bridgeDev.MemReserve != "" { + deviceParams = append(deviceParams, fmt.Sprintf("mem-reserve=%s", bridgeDev.MemReserve)) + } + if bridgeDev.Pref64Reserve != "" { + deviceParams = append(deviceParams, fmt.Sprintf("pref64-reserve=%s", bridgeDev.Pref64Reserve)) + } + qemuParams = append(qemuParams, "-device") qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) diff --git a/qemu/qemu_arch_base_test.go b/qemu/qemu_arch_base_test.go index 0bc34004e..27219f498 100644 --- a/qemu/qemu_arch_base_test.go +++ b/qemu/qemu_arch_base_test.go @@ -1,3 +1,4 @@ +//go:build !s390x // +build !s390x /* @@ -38,6 +39,7 @@ var ( deviceVhostUserBlkString = "-chardev socket,id=char2,path=/tmp/nonexistentsocket.socket -device vhost-user-blk-pci,logical_block_size=4096,size=512M,chardev=char2,romfile=efi-virtio.rom" deviceBlockString = "-device virtio-blk-pci,disable-modern=true,drive=hd0,scsi=off,config-wce=off,romfile=efi-virtio.rom,share-rw=on,serial=hd0 -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none,readonly" devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff,romfile=efi-virtio.rom" + devicePCIBridgeStringReserved = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=off,addr=ff,romfile=efi-virtio.rom,io-reserve=4k,mem-reserve=1m,pref64-reserve=1m" devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff,romfile=efi-virtio.rom" romfile = "efi-virtio.rom" ) diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index bc514a942..844ed085f 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -486,6 +486,24 @@ func TestAppendPCIBridgeDevice(t *testing.T) { testAppend(bridge, devicePCIBridgeString, t) } +func TestAppendPCIBridgeDeviceWithReservations(t *testing.T) { + + bridge := BridgeDevice{ + Type: PCIBridge, + ID: "mybridge", + Bus: "/pci-bus/pcie.0", + Addr: "255", + Chassis: 5, + SHPC: false, + ROMFile: romfile, + IOReserve: "4k", + MemReserve: "1m", + Pref64Reserve: "1m", + } + + testAppend(bridge, devicePCIBridgeStringReserved, t) +} + func TestAppendPCIEBridgeDevice(t *testing.T) { bridge := BridgeDevice{ From 1ed52714c02205fec2e432470e0880f5519ee5cb Mon Sep 17 00:00:00 2001 From: Manohar Castelino Date: Thu, 2 Sep 2021 15:42:22 -0700 Subject: [PATCH 257/385] qmp: wait for POWERDOWN event in ExecuteSystemPowerdown() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ExecuteSystemPowerdown issues `system_powerdown` and waits for `SHUTDOWN`. The event emitted is `POWERDOWN` per spec. Without this we get an error even though the VM has shutdown gracefully. Per QEMU spec: ``` POWERDOWN (Event) Emitted when the virtual machine is powered down through the power control system, such as via ACPI. Since 0.12 Example <- { "event": "POWERDOWN", "timestamp": { "seconds": 1267040730, "microseconds": 682951 } } SHUTDOWN (Event) Emitted when the virtual machine has shut down, indicating that qemu is about to exit. Arguments guest: boolean If true, the shutdown was triggered by a guest request (such as a guest-initiated ACPI shutdown request or other hardware-specific action) rather than a host request (such as sending qemu a SIGINT). (since 2.10) reason: ShutdownCause The ShutdownCause which resulted in the SHUTDOWN. (since 4.0) Note If the command-line option “-no-shutdown” has been specified, qemu will not exit, and a STOP event will eventually follow the SHUTDOWN event Since 0.12 Example <- { "event": "SHUTDOWN", "data": { "guest": true }, "timestamp": { "seconds": 1267040730, "microseconds": 682951 } } ``` Signed-off-by: Manohar Castelino --- qemu/qmp.go | 2 +- qemu/qmp_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index f8a33334c..a7afc6dcd 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -761,7 +761,7 @@ func (q *QMP) ExecuteCont(ctx context.Context) error { // This function will block until the SHUTDOWN event is received. func (q *QMP) ExecuteSystemPowerdown(ctx context.Context) error { filter := &qmpEventFilter{ - eventName: "SHUTDOWN", + eventName: "POWERDOWN", } return q.executeCommand(ctx, "system_powerdown", nil, filter) } diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 38153f914..d541b284a 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -802,7 +802,7 @@ func TestQMPSystemPowerdown(t *testing.T) { disconnectedCh := make(chan struct{}) buf := newQMPTestCommandBuffer(t) buf.AddCommand("system_powerdown", nil, "return", nil) - buf.AddEvent("SHUTDOWN", time.Millisecond*100, + buf.AddEvent("POWERDOWN", time.Millisecond*100, nil, map[string]interface{}{ "seconds": seconds, From fe83c208dceef6f9206db43abb5d6c7340df9a1f Mon Sep 17 00:00:00 2001 From: Manohar Castelino Date: Thu, 2 Sep 2021 16:05:06 -0700 Subject: [PATCH 258/385] qemu: Add support for --no-shutdown Knob Add support for --no-shutdown Knob. This allows us to shutdown the VM without quitting QEMU. Note: Also fix the comment around --no-reboot to be more accurate. Signed-off-by: Manohar Castelino --- qemu/qemu.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index ee814a9c6..13d8ab33a 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -2402,8 +2402,12 @@ type Knobs struct { Realtime bool // Exit instead of rebooting + // Prevents QEMU from rebooting in the event of a Triple Fault. NoReboot bool + // Don’t exit QEMU on guest shutdown, but instead only stop the emulation. + NoShutdown bool + // IOMMUPlatform will enable IOMMU for supported devices IOMMUPlatform bool } @@ -2776,6 +2780,10 @@ func (config *Config) appendKnobs() { config.qemuParams = append(config.qemuParams, "--no-reboot") } + if config.Knobs.NoShutdown { + config.qemuParams = append(config.qemuParams, "--no-shutdown") + } + if config.Knobs.Daemonize { config.qemuParams = append(config.qemuParams, "-daemonize") } From 9a2bbedac7a9c30f5dc5ef3bdd6b68fe196496c0 Mon Sep 17 00:00:00 2001 From: Jakob Naucke Date: Fri, 23 Jul 2021 17:41:22 +0200 Subject: [PATCH 259/385] qemu: Remove -realtime in favor of -overcommit as `-realtime` has been removed in QEMU 6. `-overcommit` has been supported since at least QEMU 3.1. Fixes: #189 Signed-off-by: Jakob Naucke --- qemu/qemu.go | 25 +++---------------------- qemu/qemu_test.go | 36 ++++++++---------------------------- 2 files changed, 11 insertions(+), 50 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index f1c67e4fe..aebc97c03 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -2411,15 +2411,11 @@ type Knobs struct { MemShared bool // Mlock will control locking of memory - // Only active when Realtime is set to true Mlock bool // Stopped will not start guest CPU at startup Stopped bool - // Realtime will enable realtime QEMU - Realtime bool - // Exit instead of rebooting // Prevents QEMU from rebooting in the event of a Triple Fault. NoReboot bool @@ -2809,24 +2805,9 @@ func (config *Config) appendKnobs() { config.appendMemoryKnobs() - if config.Knobs.Realtime { - config.qemuParams = append(config.qemuParams, "-realtime") - // This path is redundant as the default behaviour is locked memory - // Realtime today does not control any other feature even though - // other features may be added in the future - // https://lists.gnu.org/archive/html/qemu-devel/2012-12/msg03330.html - if config.Knobs.Mlock { - config.qemuParams = append(config.qemuParams, "mlock=on") - } else { - config.qemuParams = append(config.qemuParams, "mlock=off") - } - } else { - // In order to turn mlock off we need the -realtime option as well - if !config.Knobs.Mlock { - //Enable realtime anyway just to get the right swapping behaviour - config.qemuParams = append(config.qemuParams, "-realtime") - config.qemuParams = append(config.qemuParams, "mlock=off") - } + if config.Knobs.Mlock { + config.qemuParams = append(config.qemuParams, "-overcommit") + config.qemuParams = append(config.qemuParams, "mem-lock=on") } if config.Knobs.Stopped { diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 844ed085f..07e55108c 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -524,7 +524,7 @@ func TestAppendEmptyDevice(t *testing.T) { } func TestAppendKnobsAllTrue(t *testing.T) { - var knobsString = "-no-user-config -nodefaults -nographic --no-reboot -daemonize -realtime mlock=on -S" + var knobsString = "-no-user-config -nodefaults -nographic --no-reboot -daemonize -overcommit mem-lock=on -S" knobs := Knobs{ NoUserConfig: true, NoDefaults: true, @@ -534,7 +534,6 @@ func TestAppendKnobsAllTrue(t *testing.T) { MemPrealloc: true, FileBackedMem: true, MemShared: true, - Realtime: true, Mlock: true, Stopped: true, } @@ -543,7 +542,7 @@ func TestAppendKnobsAllTrue(t *testing.T) { } func TestAppendKnobsAllFalse(t *testing.T) { - var knobsString = "-realtime mlock=off" + var knobsString = "" knobs := Knobs{ NoUserConfig: false, NoDefaults: false, @@ -552,7 +551,6 @@ func TestAppendKnobsAllFalse(t *testing.T) { MemPrealloc: false, FileBackedMem: false, MemShared: false, - Realtime: false, Mlock: false, Stopped: false, } @@ -581,7 +579,6 @@ func TestAppendMemoryHugePages(t *testing.T) { objMemString := "-object memory-backend-file,id=dimm1,size=1G,mem-path=/dev/hugepages,share=on,prealloc=on" numaMemString := "-numa node,memdev=dimm1" memBackendString := "-machine memory-backend=dimm1" - mlockFalseString := "-realtime mlock=off" knobsString := objMemString + " " if isDimmSupported(nil) { @@ -590,7 +587,7 @@ func TestAppendMemoryHugePages(t *testing.T) { knobsString += memBackendString } - testConfigAppend(conf, knobs, memString+" "+knobsString+" "+mlockFalseString, t) + testConfigAppend(conf, knobs, memString+" "+knobsString, t) } func TestAppendMemoryMemPrealloc(t *testing.T) { @@ -612,7 +609,6 @@ func TestAppendMemoryMemPrealloc(t *testing.T) { objMemString := "-object memory-backend-ram,id=dimm1,size=1G,share=on,prealloc=on" numaMemString := "-numa node,memdev=dimm1" memBackendString := "-machine memory-backend=dimm1" - mlockFalseString := "-realtime mlock=off" knobsString := objMemString + " " if isDimmSupported(nil) { @@ -621,7 +617,7 @@ func TestAppendMemoryMemPrealloc(t *testing.T) { knobsString += memBackendString } - testConfigAppend(conf, knobs, memString+" "+knobsString+" "+mlockFalseString, t) + testConfigAppend(conf, knobs, memString+" "+knobsString, t) } func TestAppendMemoryMemShared(t *testing.T) { @@ -643,7 +639,6 @@ func TestAppendMemoryMemShared(t *testing.T) { objMemString := "-object memory-backend-file,id=dimm1,size=1G,mem-path=foobar,share=on" numaMemString := "-numa node,memdev=dimm1" memBackendString := "-machine memory-backend=dimm1" - mlockFalseString := "-realtime mlock=off" knobsString := objMemString + " " if isDimmSupported(nil) { @@ -652,7 +647,7 @@ func TestAppendMemoryMemShared(t *testing.T) { knobsString += memBackendString } - testConfigAppend(conf, knobs, memString+" "+knobsString+" "+mlockFalseString, t) + testConfigAppend(conf, knobs, memString+" "+knobsString, t) } func TestAppendMemoryFileBackedMem(t *testing.T) { @@ -674,7 +669,6 @@ func TestAppendMemoryFileBackedMem(t *testing.T) { objMemString := "-object memory-backend-file,id=dimm1,size=1G,mem-path=foobar" numaMemString := "-numa node,memdev=dimm1" memBackendString := "-machine memory-backend=dimm1" - mlockFalseString := "-realtime mlock=off" knobsString := objMemString + " " if isDimmSupported(nil) { @@ -683,7 +677,7 @@ func TestAppendMemoryFileBackedMem(t *testing.T) { knobsString += memBackendString } - testConfigAppend(conf, knobs, memString+" "+knobsString+" "+mlockFalseString, t) + testConfigAppend(conf, knobs, memString+" "+knobsString, t) } func TestAppendMemoryFileBackedMemPrealloc(t *testing.T) { @@ -706,7 +700,6 @@ func TestAppendMemoryFileBackedMemPrealloc(t *testing.T) { objMemString := "-object memory-backend-file,id=dimm1,size=1G,mem-path=foobar,share=on,prealloc=on" numaMemString := "-numa node,memdev=dimm1" memBackendString := "-machine memory-backend=dimm1" - mlockFalseString := "-realtime mlock=off" knobsString := objMemString + " " if isDimmSupported(nil) { @@ -715,7 +708,7 @@ func TestAppendMemoryFileBackedMemPrealloc(t *testing.T) { knobsString += memBackendString } - testConfigAppend(conf, knobs, memString+" "+knobsString+" "+mlockFalseString, t) + testConfigAppend(conf, knobs, memString+" "+knobsString, t) } func TestNoRebootKnob(t *testing.T) { @@ -725,9 +718,8 @@ func TestNoRebootKnob(t *testing.T) { NoReboot: true, } knobsString := "--no-reboot" - mlockFalseString := "-realtime mlock=off" - testConfigAppend(conf, knobs, knobsString+" "+mlockFalseString, t) + testConfigAppend(conf, knobs, knobsString, t) } var kernelString = "-kernel /opt/vmlinux.container -initrd /opt/initrd.container -append root=/dev/pmem0p1 rootflags=dax,data=ordered,errors=remount-ro rw rootfstype=ext4 tsc=reliable" @@ -1163,18 +1155,6 @@ func TestBadMemoryKnobs(t *testing.T) { } } -func TestBadKnobs(t *testing.T) { - c := &Config{ - Knobs: Knobs{ - Mlock: true, - }, - } - c.appendKnobs() - if len(c.qemuParams) != 0 { - t.Errorf("Expected empty qemuParams, found %s", c.qemuParams) - } -} - func TestBadBios(t *testing.T) { c := &Config{} c.appendBios() From 1d1a23134a28df661204f05714574e7f1fdf074c Mon Sep 17 00:00:00 2001 From: Manohar Castelino Date: Fri, 8 Oct 2021 12:48:30 -0700 Subject: [PATCH 260/385] qemu: Add support for legacy serial device - Add support for legacy serial device - Additionally add support for the file backend for chardev Legacy serial plus char backend file will allow us to support capture early boot messages. Signed-off-by: Manohar Castelino --- qemu/qemu.go | 50 +++++++++++++++++++++++++++++++++++++++++++++-- qemu/qemu_test.go | 22 +++++++++++++++++++++ 2 files changed, 70 insertions(+), 2 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index f1c67e4fe..b8f442b5f 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -66,6 +66,9 @@ type Device interface { type DeviceDriver string const ( + // LegacySerial is the legacy serial device driver + LegacySerial DeviceDriver = "serial" + // NVDIMM is the Non Volatile DIMM device driver. NVDIMM DeviceDriver = "nvdimm" @@ -549,6 +552,9 @@ const ( // PTY creates a new pseudo-terminal on the host and connect to it. PTY CharDeviceBackend = "pty" + + // File sends traffic from the guest to a file on the host. + File CharDeviceBackend = "file" ) // CharDevice represents a qemu character device. @@ -637,8 +643,11 @@ func (cdev CharDevice) QemuParams(config *Config) []string { cdevParams = append(cdevParams, fmt.Sprintf("path=%s", cdev.Path)) } - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) + // Legacy serial is special. It does not follow the device + driver model + if cdev.Driver != LegacySerial { + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) + } qemuParams = append(qemuParams, "-chardev") qemuParams = append(qemuParams, strings.Join(cdevParams, ",")) @@ -978,6 +987,43 @@ func (netdev NetDevice) QemuParams(config *Config) []string { return qemuParams } +// LegacySerialDevice represents a qemu legacy serial device. +type LegacySerialDevice struct { + // ID is the serial device identifier. + // This maps to the char dev associated with the device + // as serial does not have a notion of id + // e.g: + // -chardev stdio,id=char0,mux=on,logfile=serial.log,signal=off -serial chardev:char0 + // -chardev file,id=char0,path=serial.log -serial chardev:char0 + Chardev string +} + +// Valid returns true if the LegacySerialDevice structure is valid and complete. +func (dev LegacySerialDevice) Valid() bool { + return dev.Chardev != "" +} + +// QemuParams returns the qemu parameters built out of this serial device. +func (dev LegacySerialDevice) QemuParams(config *Config) []string { + var deviceParam string + var qemuParams []string + + deviceParam = fmt.Sprintf("chardev:%s", dev.Chardev) + + qemuParams = append(qemuParams, "-serial") + qemuParams = append(qemuParams, deviceParam) + + return qemuParams +} + +/* Not used currently +// deviceName returns the QEMU device name for the current combination of +// driver and transport. +func (dev LegacySerialDevice) deviceName(config *Config) string { + return dev.Chardev +} +*/ + // SerialDevice represents a qemu serial device. type SerialDevice struct { // Driver is the qemu device driver diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index 844ed085f..ab16b5aae 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -274,6 +274,28 @@ func TestAppendDeviceNetworkPCIMq(t *testing.T) { testAppend(netdev, deviceNetworkPCIStringMq, t) } +var deviceLegacySerialString = "-serial chardev:tlserial0" + +func TestAppendLegacySerial(t *testing.T) { + sdev := LegacySerialDevice{ + Chardev: "tlserial0", + } + + testAppend(sdev, deviceLegacySerialString, t) +} + +var deviceLegacySerialPortString = "-chardev file,id=char0,path=/tmp/serial.log" + +func TestAppendDeviceLegacySerialPort(t *testing.T) { + chardev := CharDevice{ + Driver: LegacySerial, + Backend: File, + ID: "char0", + Path: "/tmp/serial.log", + } + testAppend(chardev, deviceLegacySerialPortString, t) +} + func TestAppendDeviceSerial(t *testing.T) { sdev := SerialDevice{ Driver: VirtioSerial, From 82cc01d24de4f56ff7fdbd22669594aa9aa9930d Mon Sep 17 00:00:00 2001 From: Shengjing Zhu Date: Sun, 7 Nov 2021 02:59:18 +0800 Subject: [PATCH 261/385] qemu: Fix 32 bit int overflow in test file Signed-off-by: Shengjing Zhu --- qemu/qmp_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index d541b284a..83259290b 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -670,7 +670,7 @@ func TestQMPChardevDel(t *testing.T) { // exit gracefully. We should also receive two events on the eventCh. func TestQMPDeviceDel(t *testing.T) { const ( - seconds = 1352167040730 + seconds = int64(1352167040730) microsecondsEv1 = 123456 microsecondsEv2 = 123556 device = "device_" + volumeUUID @@ -793,7 +793,7 @@ func TestQMPCancel(t *testing.T) { // as we've provisioned a SHUTDOWN event. The QMP loop should exit gracefully. func TestQMPSystemPowerdown(t *testing.T) { const ( - seconds = 1352167040730 + seconds = int64(1352167040730) microsecondsEv1 = 123456 ) @@ -926,7 +926,7 @@ func TestQMPEventedCommandCancelConcurrent(t *testing.T) { // shut down gracefully. func TestQMPEvents(t *testing.T) { const ( - seconds = 1352167040730 + seconds = int64(1352167040730) microsecondsEv1 = 123456 microsecondsEv2 = 123556 device = "device_" + volumeUUID @@ -1640,7 +1640,7 @@ func TestExecuteNVDIMMDeviceAdd(t *testing.T) { func TestMainLoopEventBeforeGreeting(t *testing.T) { const ( - seconds = 1352167040730 + seconds = int64(1352167040730) microseconds = 123456 ) From f971801b107ea70c814ee3eb1dbf95f3864c6aa9 Mon Sep 17 00:00:00 2001 From: bin liu Date: Thu, 18 Nov 2021 15:52:22 +0800 Subject: [PATCH 262/385] qemu: only set wait parameter for server mode socket based char device Now the `wait` is passed to qmp command, even at non-server mode. This will cause qemu return this error: 'wait' option is incompatible with socket in client connect mode Fixes: #205 Signed-off-by: bin liu --- qemu/qmp.go | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/qemu/qmp.go b/qemu/qmp.go index a7afc6dcd..2e30c2ba9 100644 --- a/qemu/qmp.go +++ b/qemu/qmp.go @@ -1518,20 +1518,26 @@ func (q *QMP) ExecuteGetFD(ctx context.Context, fdname string, fd *os.File) erro // id is an identifier for the device, path specifies the local path of the unix socket, // wait is to block waiting for a client to connect, server specifies that the socket is a listening socket. func (q *QMP) ExecuteCharDevUnixSocketAdd(ctx context.Context, id, path string, wait, server bool) error { + data := map[string]interface{}{ + "server": server, + "addr": map[string]interface{}{ + "type": "unix", + "data": map[string]interface{}{ + "path": path, + }, + }, + } + + // wait is only valid for server mode + if server { + data["wait"] = wait + } + args := map[string]interface{}{ "id": id, "backend": map[string]interface{}{ "type": "socket", - "data": map[string]interface{}{ - "wait": wait, - "server": server, - "addr": map[string]interface{}{ - "type": "unix", - "data": map[string]interface{}{ - "path": path, - }, - }, - }, + "data": data, }, } return q.executeCommand(ctx, "chardev-add", args, nil) From b5b9de1de9315731ff3c7ee44bc26462e1793413 Mon Sep 17 00:00:00 2001 From: yuanke wei Date: Fri, 3 Dec 2021 18:54:28 +0800 Subject: [PATCH 263/385] kata-deploy: Update API Version of RuntimeClass to v1 API Version of node.k8s.io/v1beta1 is deprecated in v1.22+, unavailable in v1.25+ Fixes: #3185 Signed-off-by: yuanke wei --- docs/how-to/how-to-use-k8s-with-cri-containerd-and-kata.md | 2 +- .../kata-deploy/runtimeclasses/kata-runtimeClasses.yaml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/how-to/how-to-use-k8s-with-cri-containerd-and-kata.md b/docs/how-to/how-to-use-k8s-with-cri-containerd-and-kata.md index 389cdcebe..bacfdccc8 100644 --- a/docs/how-to/how-to-use-k8s-with-cri-containerd-and-kata.md +++ b/docs/how-to/how-to-use-k8s-with-cri-containerd-and-kata.md @@ -154,7 +154,7 @@ From Kubernetes v1.12, users can use [`RuntimeClass`](https://kubernetes.io/docs ```bash $ cat > runtime.yaml < Date: Tue, 14 Dec 2021 11:55:19 -0600 Subject: [PATCH 264/385] qemu: update readonly flag for block devices since qemu 6.0, readonly flag for block devices must be enable or disable with `on` or `off` respectively. Signed-off-by: Julio Montes --- qemu/qemu.go | 2 +- qemu/qemu_arch_base_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/qemu/qemu.go b/qemu/qemu.go index 831998c4b..f6db8481d 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -1219,7 +1219,7 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string { blkParams = append(blkParams, fmt.Sprintf("if=%s", blkdev.Interface)) if blkdev.ReadOnly { - blkParams = append(blkParams, "readonly") + blkParams = append(blkParams, "readonly=on") } qemuParams = append(qemuParams, "-device") diff --git a/qemu/qemu_arch_base_test.go b/qemu/qemu_arch_base_test.go index 27219f498..667609707 100644 --- a/qemu/qemu_arch_base_test.go +++ b/qemu/qemu_arch_base_test.go @@ -37,7 +37,7 @@ var ( deviceSCSIControllerBusAddrStr = "-device virtio-scsi-pci,id=foo,bus=pci.0,addr=00:04.0,disable-modern=true,iothread=iothread1,romfile=efi-virtio.rom" deviceVhostUserSCSIString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -device vhost-user-scsi-pci,id=scsi1,chardev=char1,romfile=efi-virtio.rom" deviceVhostUserBlkString = "-chardev socket,id=char2,path=/tmp/nonexistentsocket.socket -device vhost-user-blk-pci,logical_block_size=4096,size=512M,chardev=char2,romfile=efi-virtio.rom" - deviceBlockString = "-device virtio-blk-pci,disable-modern=true,drive=hd0,scsi=off,config-wce=off,romfile=efi-virtio.rom,share-rw=on,serial=hd0 -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none,readonly" + deviceBlockString = "-device virtio-blk-pci,disable-modern=true,drive=hd0,scsi=off,config-wce=off,romfile=efi-virtio.rom,share-rw=on,serial=hd0 -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none,readonly=on" devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff,romfile=efi-virtio.rom" devicePCIBridgeStringReserved = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=off,addr=ff,romfile=efi-virtio.rom,io-reserve=4k,mem-reserve=1m,pref64-reserve=1m" devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff,romfile=efi-virtio.rom" From cf91307c66b397babfd5c27fa4a99fd44215fd21 Mon Sep 17 00:00:00 2001 From: bin Date: Fri, 24 Dec 2021 17:12:50 +0800 Subject: [PATCH 265/385] agent: return detail error message for rpc calls from shim For calls from shim to agent, the return error will be processed like this: match self.do_start_container(req).await { Err(e) => Err(ttrpc_error(ttrpc::Code::INTERNAL, e.to_string())), Ok(_) => Ok(Empty::new()), } The e.to_string() return only a part of the error(for example set by context()), this may lead lack of information. The `format!("{:?}", err)` will return more info. Fixes: #3353 Signed-off-by: bin --- src/agent/src/rpc.rs | 104 +++++++++++++++++++++++-------------------- 1 file changed, 55 insertions(+), 49 deletions(-) diff --git a/src/agent/src/rpc.rs b/src/agent/src/rpc.rs index f45ce9236..444be723c 100644 --- a/src/agent/src/rpc.rs +++ b/src/agent/src/rpc.rs @@ -14,7 +14,7 @@ use std::path::Path; use std::sync::Arc; use ttrpc::{ self, - error::get_rpc_status as ttrpc_error, + error::get_rpc_status, r#async::{Server as TtrpcServer, TtrpcContext}, }; @@ -86,6 +86,13 @@ macro_rules! sl { }; } +// Convenience macro to wrap an error and response to ttrpc client +macro_rules! ttrpc_error { + ($code:path, $err:expr $(,)?) => { + get_rpc_status($code, format!("{:?}", $err)) + }; +} + macro_rules! is_allowed { ($req:ident) => { if !AGENT_CONFIG @@ -93,7 +100,7 @@ macro_rules! is_allowed { .await .is_allowed_endpoint($req.descriptor().name()) { - return Err(ttrpc_error( + return Err(ttrpc_error!( ttrpc::Code::UNIMPLEMENTED, format!("{} is blocked", $req.descriptor().name()), )); @@ -565,7 +572,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { trace_rpc_call!(ctx, "create_container", req); is_allowed!(req); match self.do_create_container(req).await { - Err(e) => Err(ttrpc_error(ttrpc::Code::INTERNAL, e.to_string())), + Err(e) => Err(ttrpc_error!(ttrpc::Code::INTERNAL, e)), Ok(_) => Ok(Empty::new()), } } @@ -578,7 +585,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { trace_rpc_call!(ctx, "start_container", req); is_allowed!(req); match self.do_start_container(req).await { - Err(e) => Err(ttrpc_error(ttrpc::Code::INTERNAL, e.to_string())), + Err(e) => Err(ttrpc_error!(ttrpc::Code::INTERNAL, e)), Ok(_) => Ok(Empty::new()), } } @@ -592,7 +599,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { is_allowed!(req); match self.do_remove_container(req).await { - Err(e) => Err(ttrpc_error(ttrpc::Code::INTERNAL, e.to_string())), + Err(e) => Err(ttrpc_error!(ttrpc::Code::INTERNAL, e)), Ok(_) => Ok(Empty::new()), } } @@ -605,7 +612,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { trace_rpc_call!(ctx, "exec_process", req); is_allowed!(req); match self.do_exec_process(req).await { - Err(e) => Err(ttrpc_error(ttrpc::Code::INTERNAL, e.to_string())), + Err(e) => Err(ttrpc_error!(ttrpc::Code::INTERNAL, e)), Ok(_) => Ok(Empty::new()), } } @@ -618,7 +625,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { trace_rpc_call!(ctx, "signal_process", req); is_allowed!(req); match self.do_signal_process(req).await { - Err(e) => Err(ttrpc_error(ttrpc::Code::INTERNAL, e.to_string())), + Err(e) => Err(ttrpc_error!(ttrpc::Code::INTERNAL, e)), Ok(_) => Ok(Empty::new()), } } @@ -632,7 +639,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { is_allowed!(req); self.do_wait_process(req) .await - .map_err(|e| ttrpc_error(ttrpc::Code::INTERNAL, e.to_string())) + .map_err(|e| ttrpc_error!(ttrpc::Code::INTERNAL, e)) } async fn update_container( @@ -649,7 +656,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { let mut sandbox = s.lock().await; let ctr = sandbox.get_container(&cid).ok_or_else(|| { - ttrpc_error( + ttrpc_error!( ttrpc::Code::INVALID_ARGUMENT, "invalid container id".to_string(), ) @@ -661,7 +668,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { let oci_res = rustjail::resources_grpc_to_oci(res); match ctr.set(oci_res) { Err(e) => { - return Err(ttrpc_error(ttrpc::Code::INTERNAL, e.to_string())); + return Err(ttrpc_error!(ttrpc::Code::INTERNAL, e)); } Ok(_) => return Ok(resp), @@ -683,14 +690,14 @@ impl protocols::agent_ttrpc::AgentService for AgentService { let mut sandbox = s.lock().await; let ctr = sandbox.get_container(&cid).ok_or_else(|| { - ttrpc_error( + ttrpc_error!( ttrpc::Code::INVALID_ARGUMENT, "invalid container id".to_string(), ) })?; ctr.stats() - .map_err(|e| ttrpc_error(ttrpc::Code::INTERNAL, e.to_string())) + .map_err(|e| ttrpc_error!(ttrpc::Code::INTERNAL, e)) } async fn pause_container( @@ -705,14 +712,14 @@ impl protocols::agent_ttrpc::AgentService for AgentService { let mut sandbox = s.lock().await; let ctr = sandbox.get_container(cid).ok_or_else(|| { - ttrpc_error( + ttrpc_error!( ttrpc::Code::INVALID_ARGUMENT, "invalid container id".to_string(), ) })?; ctr.pause() - .map_err(|e| ttrpc_error(ttrpc::Code::INTERNAL, e.to_string()))?; + .map_err(|e| ttrpc_error!(ttrpc::Code::INTERNAL, e))?; Ok(Empty::new()) } @@ -729,14 +736,14 @@ impl protocols::agent_ttrpc::AgentService for AgentService { let mut sandbox = s.lock().await; let ctr = sandbox.get_container(cid).ok_or_else(|| { - ttrpc_error( + ttrpc_error!( ttrpc::Code::INVALID_ARGUMENT, "invalid container id".to_string(), ) })?; ctr.resume() - .map_err(|e| ttrpc_error(ttrpc::Code::INTERNAL, e.to_string()))?; + .map_err(|e| ttrpc_error!(ttrpc::Code::INTERNAL, e))?; Ok(Empty::new()) } @@ -749,7 +756,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { is_allowed!(req); self.do_write_stream(req) .await - .map_err(|e| ttrpc_error(ttrpc::Code::INTERNAL, e.to_string())) + .map_err(|e| ttrpc_error!(ttrpc::Code::INTERNAL, e)) } async fn read_stdout( @@ -760,7 +767,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { is_allowed!(req); self.do_read_stream(req, true) .await - .map_err(|e| ttrpc_error(ttrpc::Code::INTERNAL, e.to_string())) + .map_err(|e| ttrpc_error!(ttrpc::Code::INTERNAL, e)) } async fn read_stderr( @@ -771,7 +778,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { is_allowed!(req); self.do_read_stream(req, false) .await - .map_err(|e| ttrpc_error(ttrpc::Code::INTERNAL, e.to_string())) + .map_err(|e| ttrpc_error!(ttrpc::Code::INTERNAL, e)) } async fn close_stdin( @@ -790,7 +797,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { let p = sandbox .find_container_process(cid.as_str(), eid.as_str()) .map_err(|e| { - ttrpc_error( + ttrpc_error!( ttrpc::Code::INVALID_ARGUMENT, format!("invalid argument: {:?}", e), ) @@ -816,7 +823,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { let p = sandbox .find_container_process(cid.as_str(), eid.as_str()) .map_err(|e| { - ttrpc_error( + ttrpc_error!( ttrpc::Code::UNAVAILABLE, format!("invalid argument: {:?}", e), ) @@ -833,11 +840,11 @@ impl protocols::agent_ttrpc::AgentService for AgentService { let err = libc::ioctl(fd, TIOCSWINSZ, &win); Errno::result(err).map(drop).map_err(|e| { - ttrpc_error(ttrpc::Code::INTERNAL, format!("ioctl error: {:?}", e)) + ttrpc_error!(ttrpc::Code::INTERNAL, format!("ioctl error: {:?}", e)) })?; } } else { - return Err(ttrpc_error(ttrpc::Code::UNAVAILABLE, "no tty".to_string())); + return Err(ttrpc_error!(ttrpc::Code::UNAVAILABLE, "no tty".to_string())); } Ok(Empty::new()) @@ -852,7 +859,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { is_allowed!(req); let interface = req.interface.into_option().ok_or_else(|| { - ttrpc_error( + ttrpc_error!( ttrpc::Code::INVALID_ARGUMENT, "empty update interface request".to_string(), ) @@ -865,7 +872,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { .update_interface(&interface) .await .map_err(|e| { - ttrpc_error(ttrpc::Code::INTERNAL, format!("update interface: {:?}", e)) + ttrpc_error!(ttrpc::Code::INTERNAL, format!("update interface: {:?}", e)) })?; Ok(interface) @@ -884,7 +891,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { .into_option() .map(|r| r.Routes.into_vec()) .ok_or_else(|| { - ttrpc_error( + ttrpc_error!( ttrpc::Code::INVALID_ARGUMENT, "empty update routes request".to_string(), ) @@ -893,14 +900,14 @@ impl protocols::agent_ttrpc::AgentService for AgentService { let mut sandbox = self.sandbox.lock().await; sandbox.rtnl.update_routes(new_routes).await.map_err(|e| { - ttrpc_error( + ttrpc_error!( ttrpc::Code::INTERNAL, format!("Failed to update routes: {:?}", e), ) })?; let list = sandbox.rtnl.list_routes().await.map_err(|e| { - ttrpc_error( + ttrpc_error!( ttrpc::Code::INTERNAL, format!("Failed to list routes after update: {:?}", e), ) @@ -928,7 +935,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { .list_interfaces() .await .map_err(|e| { - ttrpc_error( + ttrpc_error!( ttrpc::Code::INTERNAL, format!("Failed to list interfaces: {:?}", e), ) @@ -955,7 +962,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { .rtnl .list_routes() .await - .map_err(|e| ttrpc_error(ttrpc::Code::INTERNAL, format!("list routes: {:?}", e)))?; + .map_err(|e| ttrpc_error!(ttrpc::Code::INTERNAL, format!("list routes: {:?}", e)))?; Ok(protocols::agent::Routes { Routes: RepeatedField::from_vec(list), @@ -995,13 +1002,12 @@ impl protocols::agent_ttrpc::AgentService for AgentService { } for m in req.kernel_modules.iter() { - load_kernel_module(m) - .map_err(|e| ttrpc_error(ttrpc::Code::INTERNAL, e.to_string()))?; + load_kernel_module(m).map_err(|e| ttrpc_error!(ttrpc::Code::INTERNAL, e))?; } s.setup_shared_namespaces() .await - .map_err(|e| ttrpc_error(ttrpc::Code::INTERNAL, e.to_string()))?; + .map_err(|e| ttrpc_error!(ttrpc::Code::INTERNAL, e))?; } match add_storages(sl!(), req.storages.to_vec(), self.sandbox.clone(), None).await { @@ -1010,7 +1016,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { let mut s = sandbox.lock().await; s.mounts = m } - Err(e) => return Err(ttrpc_error(ttrpc::Code::INTERNAL, e.to_string())), + Err(e) => return Err(ttrpc_error!(ttrpc::Code::INTERNAL, e)), }; match setup_guest_dns(sl!(), req.dns.to_vec()) { @@ -1023,7 +1029,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { .iter() .map(|dns| s.network.set_dns(dns.to_string())); } - Err(e) => return Err(ttrpc_error(ttrpc::Code::INTERNAL, e.to_string())), + Err(e) => return Err(ttrpc_error!(ttrpc::Code::INTERNAL, e)), }; Ok(Empty::new()) @@ -1044,7 +1050,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { sandbox .destroy() .await - .map_err(|e| ttrpc_error(ttrpc::Code::INTERNAL, e.to_string()))?; + .map_err(|e| ttrpc_error!(ttrpc::Code::INTERNAL, e))?; // Close get_oom_event connection, // otherwise it will block the shutdown of ttrpc. sandbox.event_tx.take(); @@ -1053,13 +1059,13 @@ impl protocols::agent_ttrpc::AgentService for AgentService { .sender .take() .ok_or_else(|| { - ttrpc_error( + ttrpc_error!( ttrpc::Code::INTERNAL, "failed to get sandbox sender channel".to_string(), ) })? .send(1) - .map_err(|e| ttrpc_error(ttrpc::Code::INTERNAL, e.to_string()))?; + .map_err(|e| ttrpc_error!(ttrpc::Code::INTERNAL, e))?; Ok(Empty::new()) } @@ -1077,7 +1083,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { .into_option() .map(|n| n.ARPNeighbors.into_vec()) .ok_or_else(|| { - ttrpc_error( + ttrpc_error!( ttrpc::Code::INVALID_ARGUMENT, "empty add arp neighbours request".to_string(), ) @@ -1090,7 +1096,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { .add_arp_neighbors(neighs) .await .map_err(|e| { - ttrpc_error( + ttrpc_error!( ttrpc::Code::INTERNAL, format!("Failed to add ARP neighbours: {:?}", e), ) @@ -1111,7 +1117,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { sandbox .online_cpu_memory(&req) - .map_err(|e| ttrpc_error(ttrpc::Code::INTERNAL, e.to_string()))?; + .map_err(|e| ttrpc_error!(ttrpc::Code::INTERNAL, e))?; Ok(Empty::new()) } @@ -1125,7 +1131,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { is_allowed!(req); random::reseed_rng(req.data.as_slice()) - .map_err(|e| ttrpc_error(ttrpc::Code::INTERNAL, e.to_string()))?; + .map_err(|e| ttrpc_error!(ttrpc::Code::INTERNAL, e))?; Ok(Empty::new()) } @@ -1148,7 +1154,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { } Err(e) => { info!(sl!(), "fail to get memory info!"); - return Err(ttrpc_error(ttrpc::Code::INTERNAL, e.to_string())); + return Err(ttrpc_error!(ttrpc::Code::INTERNAL, e)); } } @@ -1168,7 +1174,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { is_allowed!(req); do_mem_hotplug_by_probe(&req.memHotplugProbeAddr) - .map_err(|e| ttrpc_error(ttrpc::Code::INTERNAL, e.to_string()))?; + .map_err(|e| ttrpc_error!(ttrpc::Code::INTERNAL, e))?; Ok(Empty::new()) } @@ -1182,7 +1188,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { is_allowed!(req); do_set_guest_date_time(req.Sec, req.Usec) - .map_err(|e| ttrpc_error(ttrpc::Code::INTERNAL, e.to_string()))?; + .map_err(|e| ttrpc_error!(ttrpc::Code::INTERNAL, e))?; Ok(Empty::new()) } @@ -1195,7 +1201,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { trace_rpc_call!(ctx, "copy_file", req); is_allowed!(req); - do_copy_file(&req).map_err(|e| ttrpc_error(ttrpc::Code::INTERNAL, e.to_string()))?; + do_copy_file(&req).map_err(|e| ttrpc_error!(ttrpc::Code::INTERNAL, e))?; Ok(Empty::new()) } @@ -1209,7 +1215,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { is_allowed!(req); match get_metrics(&req) { - Err(e) => Err(ttrpc_error(ttrpc::Code::INTERNAL, e.to_string())), + Err(e) => Err(ttrpc_error!(ttrpc::Code::INTERNAL, e)), Ok(s) => { let mut metrics = Metrics::new(); metrics.set_metrics(s); @@ -1240,7 +1246,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { return Ok(resp); } - Err(ttrpc_error(ttrpc::Code::INTERNAL, "")) + Err(ttrpc_error!(ttrpc::Code::INTERNAL, "")) } async fn add_swap( @@ -1253,7 +1259,7 @@ impl protocols::agent_ttrpc::AgentService for AgentService { do_add_swap(&self.sandbox, &req) .await - .map_err(|e| ttrpc_error(ttrpc::Code::INTERNAL, e.to_string()))?; + .map_err(|e| ttrpc_error!(ttrpc::Code::INTERNAL, e))?; Ok(Empty::new()) } From 2d0f9d2d06cd4585ce34780a98fd21d948f139f5 Mon Sep 17 00:00:00 2001 From: Shengjing Zhu Date: Sat, 25 Dec 2021 22:38:22 +0800 Subject: [PATCH 266/385] vc: remove swagger binary Fixes: #3362 Signed-off-by: Shengjing Zhu --- .../pkg/firecracker/swagger_linux_amd64 | Bin 16429216 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 src/runtime/virtcontainers/pkg/firecracker/swagger_linux_amd64 diff --git a/src/runtime/virtcontainers/pkg/firecracker/swagger_linux_amd64 b/src/runtime/virtcontainers/pkg/firecracker/swagger_linux_amd64 deleted file mode 100755 index e67f1fcafb715d71c4a956df0179beeea627ee1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16429216 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

GVi!%fOS`#_X4g*2aeUh32%7 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�ew!*7XQ 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%0A>w*;^T7K2rqXE_Uh=DY@SB-EnZAPkU@7!0 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�wtdFhU25+PP3%K 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

{QMj&e>GvMDdmlpPdUZC3;R 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�L~m~LM)?%P8MpPG^6 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

3gY9dHGRSXW~m{ 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

c5ZE>vKJ~hzgXG1?TD&j&+DjHjMo;5 z%3$S)U0m~Z#XooG`Rt`DxG;jgvg@8yxQ%BFn>4y2h1Jt`eTrrgbw%3~M%@7X2gcM1 zhh{nuDiwy!*f13?(Jc|b@_Xu2DGnw$x#yPbEN% z5-zj^!U_BK`Ij1ThVEp`Ti!@pcTn~cv9Z`38e05|WkmsT_KN(fwnJCA zUW;jJgC-l2F4b(SB4sg9z?qtCXhTR1nyx~JMLCWdiBoNOd7HGnrMSszO-&4?&xF=C zC>NBTeJ;rAgouR4wvFp7O55o*Y^I65ip_Z*PggyBjfkfBs(Ls(+&`=>XW09yde|z> zQ7h8(-1SP-NOm=KecttQkVw}8p+O_p+12L>pqtcRe$p6%PITD&2fP+~m#(JLeAGI< zS&LM)%nF-EM^nk@#3>pK?2VD7N@SVoCe_yQSoPF~zh#U}C2qNI*1bO)rmUhLA?>1_isKtrfu4C4Trqzg|Rv|?!C&+H+DWYamGP-lQW8Q ztK)B0uKp-_l3D@PR!~S8rgpnJXi6(Au=~h}Kj7ymI8$(#@wz%#R>s;~jwxAIeT<1b)BRJtJ5#3dHj*226eef5S6sq3&(``n34K_vh|(@qwWj z_dzi9?GU`Sysv-dWfvYCtIx1RtMr_c`>yyd4_t?L*I@O!Kn8_~^HGfrm9MyXXLSi? z{!2}RHh$#HjL{47;fcIIe4ykC{kqy5cT6rhT>QyUfziH9bN14&#K75ncVC5oM*CEL zU_n5Xm-S(2;(#WM#`9Zj9O!JmNNxMRB$oI{-c(y$-eIsu{+0~oh9dT~Yy77lYVe6z z4I+JqkF8Jc2wwnb8lLWL6C)2i;1H-HDG84@hv*Z`r4j&)S2W^sY<>_wkwbeM{`@9& zwmyfiv}}0ZOT#G-G1sZ?*ln!HnNVcHEXkmfV6HIM5y#^Y5lf z@)YGAZ24IgJGMhsNqAS4Kil{%06zkiDAzo?`bNmari1a3k0g(hxq^_liy&;xA73BN zKaT*P?TrsHOQxAu&}Mm2>6FNHVm790p2*BmJX)h|51$H_b9_C-jE!5PxgkMf z@Yk8Y#@vu8orX5*>2(MQGmIva&B zvoyy3CZAP%5_w;bU`RfK#L-6hT1WWt{}qs`_+quLHrW7#aAQ3d_dvmF8@FK{#NQCY zu?=gtvn0?G2V)^3iWdInf2@f5&^E`!N9C@mQF_)k4;jbiA&F5hH;+E}2C2!gAU>F# zM8>_mMbgZq(XZ1R-xKQ?|LKM z{ISy`gvA?PFEm|uWLDnw2MSHN{l};**3(FBBJ)OniMFv(Lp+?M^firc&~09iAn2dZ zf^Okw&s0o!@NX@E_@cW6*V^6eNf7+d9sxu;ez5tR+WUnm6FBc_n6ZTZn4Zef#Pkl7 zDw@i38e+?E=G^Lw=A~s!?4N|horEnrmxJ41Y*-hxeb*)@@1}{Cu}lAsVU6AQ7Sn02 zm5IgfI2}=AgGED+NtVvsI_xzICc?n)4_Cw-%wW-+=O%n%&TVJy7Hobs$bBSO{Q|-D z7Z=@jQqCs)050?qj%o}Rojv>B*yOLy+FP;g=GTJU7orb8c>TC8`*8S@_=@{(x%uXs zxm!gY!xDp!D}SW1XG88&B=0{tFfsVb@<$qQd5f8bUKE_Y@u12piNo1>^krs(9hew( zeq!XT@+TVZf9Qs`uiZzfjXeHRV$?$S_>T|$er^1B>BoHi5ML)A+OU58djA+YY-an1 z#K`aJTl`ihv|8XK%Twwt|x~b9^`fgt2t>idC)nXhvNZTrs^GnR}t8>7B;1Bt0mGL z90`qjj!0r)yGo-Z2xC!hxByjP%0Nj@W5I|HrmNIsil?iLVydhHgQChb0m8iA@l3hV zgqgywRPa9fQXG1{0SK zD%1LwAjnlSZGWhTmF=AUjyzvLNO`-igp_veIX@k{-eKQa_K|^ZyRpG~#s}=i0+OLk zlU_qZ4?ou~qfggGsT_svDEKMN$=l=Gj?T3TxpPz$s^V_uxt<@!I#92_)+)^+*vPmm z2_aitN@6=SquC*5#QZc-)V)aN&tQQ9rd1u<@mILoK&!>~_{ClD2+h2yCjlPobh90t zYdwB)6ZkeWh%^y64|q7pL{(ef9W}2JuME82E<=8y3+Ry9!i^}ps0h2uB61iRtoa~o z1SZhEtWdiqgJFm8067aJz)PLgcKKW5OB*ufdXpSfeCRDQ?Igo@y47bvRly7+CC2(@?Gc_$Xl?Y8u^y;dyRd-ZY+09Y)uK!0?yE0CE&WikxD&zmD z)b`9i^A0uS2O|usIL#8)*Bde}1Xg`(xvwhU7E6?YZ8SkgdumP9hXhrH`Tz#rL|xjE zX@Onc;#O^&vzGhH?k6kRHN5p(^sbmp#)K~l9mP4vEeG)g%8af#Mw;aoAkoz+=eE6y z9q#6@w49{N#R&Cws$=Urh8Wn0{E1j=vEK8%$k0jW?bVJdSg^v-$?SDVcTqXaog}tI zQc+`tH9P`4)(HYqT_zksdB~!T&0Q9^ze>yYIn12TOT0^SOkEamJZF5 zh~{?r`J*7^p!=~MSi4FMqZ#5{autEGl~()3J2icQUEQF(gh9Mh36+#Ysid2aUBItO zn~%NYr31={a{0RAOPkm8Lu68A>Q)&zguuY@T;PIuG_y_J6;T0t$O3X(60ZKCqc)85 zfoz4imMX|^Yc<7Ce@_Z-s3@Is@m){HUEiZxVW4HmJ$D7PHhlHG4DJT{2DnqjT}NCS zdh%m(>exs@92@Q~ZW1wl=TStRYxhz1T&+}I$g<~7Cx1%6-m}|?2W?s z8@?4uL&JFz0D~l>N09|qyPPvcjK4IXAZQ!<`=d?BuCvSN1-dw*nvh}U!>UxZvDO0I z>oU?1z@)9-o6cS;$+3l~PI5k5=0vOHDfACMt+E}#e}_C(82@HO8O}UUzDW2WTX40} zSx-N0v?~DL6V3k`Ete?JX`MOAU#fSM z$h-J$j}Jsi?Fm~Xpwhtbip~G8aT2W!9!eq_B|oCW<+?jyB&DEF>UR3bv!)h9Dh5#Ib2RobBX zh-KCLukDKi$+JM-3q7k>dTNl9wh=3n`?Fv-ymOw#y!#(X%)2*Jd|b?%74KSDZ}IM) z%*Y|$EwsMit#1Er;@tw>L%|YVm7zX(h@Xwy!ff4KZuIoB$MpkYF0#)D#qN8Je&uC@ z^)TZA_5{?|OFE*ivgCjsbUwxOFZG(BDMwW$A~Qrc-+!y;sv;_9zY}@?`S#gB zAs2h-^-)*{K8AKYz*6DBRAIcPuzB=NS6VJ}@m@SY;|%FI$LN6M461vGZZ*^H-4?9O zi%Qf(>L^5flH6q_S>mYjsN$%e*`E}AnfA?Dx2K>n3Py#p7VD`~0gsHY?6z5t*lnAF z#0eiMk~V9V@O$VIo=Qma!`nF4QBqMrKAHGt0hNi~EmQQv8xdZWG_d-e(A=K-=?)+y zSjo}qpYo}_gh2W&WDJ0A97ck{jiZI{$2jWwevBiZ9L3FkhpCE`n?#y3`yvu+{HhAl zijwfcQ=Hb6iNXdOKSvo1yJ(l(2NQ9}cO@J~@-1ky!$>|RECqlCG7Sf* z6-HbL;;QdKkVBmlDwE7fg-pa}FO}q*6EYY|oQ_CU#jL87beHGi1m-dxCUNRfd_+gr zo7;DXc8IF@(vy!gUpmn)qo?TNERROEF`pG-6LSmANQjX6MmygtyU7!>RKO`)}u_U7$=3G$1mBP2RKuP?}d_)N#EA+nw!&*ZXvt@2{78k~%Dx-BGQ6^`;gp zOy@kK5i3VLWw4A8(F(^(JLxDoA?DLpI69~4Hks2QVP0`HBSE^N7$5{?cT|r%ibwZV z@zq`5(KLk$ZYsN^jenP%y$} zq?uRT!E+IEmBEQ78Tc6yKBTsloZnZc6PgN#b~0@{2h6Oy^vgUQvB}1sufUd8#kC9a z8FIE!tn9*183zfMbB5~iRD|C@G7@oYgn3w)ohiz)D~RMci6qu2(`c2Ztg@VS+UBd? zqZmAPsv`phEAQ&1QT;3Kdz%noJ8>8=ilbL$^*cah??!S;Ztpi(-!YbB-y__h*_AF)8^ty@t=FjZYpC5zYt(CJ^c~7!rjLFfj_i zw$sLYiavk6>x|yLYvXfXyLXVmJEo2Q?-(5VL_^)@(8eY;KN5gGI{p#}G5WK$QI;l^ z5HQ)1Ql$h)mNi^_oMY1ewKm@Og^2n8huWwHrL<8EN@=4s;(w!!-#Oi(o1u;Bqp_?p zJ>ovsYo$wI_}(PUTEO$(9J*=a5!zL$Z6s%7`+oeI_k!ks(bsSeIC($sl>?P`QI2%I zU2pZn3)ov&<~y)$1AkPm;Bm+ab{RTB7t9g1(qcDdx0W0PIG^pS%u8kaVy*QS$)>|X z(+*6@D&Wavt+VUh4lbt0@QBPi$eJwiy{N9nir|{ecZJEAyH`%v-V-G{MIMP+k2>IL zNi@HeFf$Bl9LaZF^74)^Q~L*=V3#2$>VmIuk%bxG@UE22*&(spF&p99@);gG3y&Rj z0!vR74cs75RiX~Duw~rJ_~HxdQ)@4pJk^~DMqEVnq!2y1m6*z=IqzJ2Hj@Jzs+3M# zM`?@n?CQFZlC>O4S2DRF*7|L_OO?&#tj{X_l#UZUcXfy?Cz08q^3TC!`;OKMVJL5c z3`wS(n@5l&@Xp;MO&N;qr%6}>o0d7nrvE3iCq~GimFlL%-}q6aU6toXWz9RZ3u@&4 z*9wyJYHq83aVO1rpXIhxDgf6RUL^MfL*5}}K|6S}eLSN{Z>4;e6Yk=tNDv1^V^Rc> ziWVyj9Um>0*$wfzt`>kqX>28P!61wsrhNYhSyA za<>N^RT}LK5$R|2TpfE$C0p!n9eee^T`X$d_;FG9bkfj>&gp1D_9NArbjqC8Kxk`? z>g7iCbS8_N4*#Y|Z&vu5k{%kJ8TtpA!A4DH=wBQDOzDT_2a21hhgn~PT;8}>aaEO$ zBiLXg7xRid*$i83x|5j)Y@jW<6rE5ZC#6o7W#>||?1a>k<%IN^Z7lRR*2W@#QxYB^ zGv&-Q$>vj(MTPP8yl3}~RU5cPgcfnjJgK}dKGSE{b>wU6x>}z*%2nH$C@SivSsq1Y zs^o>I`>f>sS5?VOM2$9HZSC5{mV+hlWGNB7=hlwKLHFWJlzKjA_Vk>jTO|{~-x>zH62OPMS}?R%9UGGkt`BAO1tTjGm$k9ueS?euV`Yz&phP_3o0F zz70w~%fhhnq(7f;RkC{ljXKWJs~E z)4BmcXUPA_k(wqn`_*pc4>m8>CDwYX)zaCI@s*&t^RZy_^Iba!tHXekB{6hUwfE2T zJnh)>HkC$$L>ZHuvZpY~K!(@tMO}zjiJFhlsPBwmEHHeIEC}M03xmW(`OTw$Inz?Y zPa1nBB2aEbjXX8$HQk`(nX#{R#(v#7ml5=dMPM-G#{=OQvyqM$LuUkS6A|L`O4_U1 z#^NB3&Tp^O?q*9+w`l6xi$KmQp z_FnOGM@Cgo2|&2f3+3vd3yo-y&_r>b8OiWhzQ0eIDwjs7NH;u!yWk=k-FQe4KawgB zC=N#yg8*QuH`?sNGjsM*@s=|nE-DEh4VaJjBm|gP2toxQ#P^Ek`a+096y%u0ejX=m zwVWT!0K1486KThhPEV?Rmf7V(qgH6lNTCt+uRKsqj;u>grc!zO8r4x> zsnqZZn7bRE?9*&6dMP!kWwVpAKtzkLsLSlI%l{=`(A?5QUbU}P0GVA|(ObeC!V z#`bV+3FUX9mm5IWK#fHmfFdgWVr>2) zvQ_c5tjgGA8E3V{PgjxXb?CmFRiG@vK6Y(Y`LbB+A7xq+W8RXlLL*S@`QPPHY~DYm z_C1p3=?;-xLWypf7A1wzIDj-hP%^bfN>>|RGa3G&w{=j-Pa|*MYO~y@Vph*p{oF4C zr<~Yzi{nc=!+jCrSZlx=4sXthUD>g^OSuJo!a3Euu8P0V*;Qx@cpF5f*`H{K2qv6b zRi9iMo1dp&iDNFtNK<#wzAsu-u;yRGUT$G{>P6~NoRPEU?O`vlmc5zM@g>aA(7@n% zhqSP-(O-C*7@HekygHoyA;0^@*Tjxo1%YyBZ_{lMJ8}hc23v}M&E4v^Wr$hrzS!2$ z;~he2d4728y?#M`!N%Ch9qk{)PG&uP!H^XVb8;}(kDPzFVZoG^14ndx5MxwPaTb*p z3w@+~9hD>H65J)Rg$`KPv#R1vSHs%-AWI#*y<}238p&#M1^Vn(K$ziGw*;EFZnQ~_v%2%F>Y1vV6r{S1RGsduFQ6*n-k~ZR z&0a)jj-@t3{>x+;%LpA;HYy|gd=q7r4ar1LiGT&FGhcP;q}?;IZa;mbPn+5DT*_v) zI89GMj378=?+MA~$h(a=&Xplc?3`&KYex`63Ox|7P*^|iYcc-ubWVqJehIb6Z zO}<3dE=4jFDHCnf4Q+&fBEcI!!{!$2ZhToKe##%4orFWS@51*;A)y}TNW$R+CH#xWY1X>rHH&!*y{zM&{ znC*ldB(C^a1Tp8SZB{b2SdstSi2|m(!J4-N^Pmd8(jN31@}N(eppRuTFY5xrz_#ek z$*F(|tOR}*|7qTo0og29s^u7~-)1G=%=5E-YGMrgcuAPI-4XfJb{yfrnLjaK+L`4` zalAu;%t>>~(_Ue2QQOGjX(dtgRp_W^%A5K( z2U4~CtMjxGew*)JZcimzSrFTzz`;-4Aq)boym^>E?&3ky-!4oq{75P7R zo>t_AdNv^WKar3*3IEazKr|A)izu8-nDG+YOngdAaJ!& zdy*FcB5EYA_9$+pOp#XNYNeGs;A$UbJ|QJDT}@!HKV0n}83Ug`7 zw`%)?*s=WD*m$;E_EcXGv?<#tVQfgHUq~3Lw_ap9@$e-QqaSFGuTm{v8mS0lhSui| z;Nie8{z%63{Z0#tnt()Kq(uPRglO~9de$_L(>R5C0a%;5AU@c`N^KIfKe-OyCVij| zgT^C+WUWkQ^VZzPB1JkiRI7$qj={p?AfXL2zof5V0bR)k5(|mE7axjrShFk=V+aWi z1!WxGe^h#4Nn|6UN|;@XZx!Gm`3zPUIwfD?8s1R|Q>O8&_xQ*7)9m;&L;R^1f9jPW zXcDeHSyba$H1+^v(Kom_7IosgwOvfeDr?~)w zOYMfC&~08i!?;A}8w!X^Q+wf3<9Kl?YMCFk!!y7bm%>Uhs+O9!XH;!+sAp7#7*z+O zzW!h@i~Tzh!$mg$wrGfv0pN-a4stg#*p@`%x8m;Sj#d+H|%!QdNx1W+m$nmweF#Z zNM=AGAKoP7Ez3K!*N9ftm!p_BDZE2I(clJ+=8erKnOfLhWvRyR<+oQ;?ffSY4GsgT zEN2JOHDp!!#l~RM?CHt$gO4VYxcJOBL9TVYJ!JW0+sS3rRzd=YIcoEN0}krEl(Wmp z2Go3gRe5LQcuJNA@sr8Pwy1RDm#gAqOT^t!GYF-1`Lc}*R2Y?=K_8}x-y}wVMv|r@ zyzLvxjY@~>6(^X8FbLTn9hP!+{)@!{4Y2FPagq*4KPeKJsR*{BCON~@_>fKt*a+wCLzoknXSCg1ORDX{7b682=Z^gv`qc`!5_#|4>*!#iT%}(_ zkBSh}h5dGR7~nUIfWWh z7VWE05Kdbr%_gxEF*njcQL#wq)WMYGLISe(08OcCJC60f?MM_KZ=A$C=#Ci0&|X*Tz%iZ4qx@ss0tlHqx$ct8AM6elI} z4!dCvS_6LJo9Ed0&_jD73-=OLrA&Sgdy+jKN{PJE>mzbJ`(q==ZG#}khlq2E96jR`myLagR!;*d=n<&q+Lm0HCwE@Hx?uwC zgWKokWAsu(N$f&$CFJNil+<`cReVxG5I+fnxB4_StSE?|o3A0H++g{bQi?!nM$crf z0@_tWyDp@u>%*PYE>2x!!i|hlg;W9(Z8ubM%MnhFYaN0R6SC@i@GaF|<`P3dl-bD0 zL?{$r*r(C@{SryD2CO8#)^w{@a$J_V*~s3`ZhhBRB`B%k5b%}VI_}fz64OgG2J$%E z2=^&~FVl@LS@L=QIAjxwO#>l#VOW)0>xS8#Q>V(lws5~KH7MQ6JbgAfS7Q1n%sD4VQM&8}0P*rwj2o=H^(N{th zjIl(DbB6mmp-SErIe`qJ^3L$%j!&seqm4o}xe8H|J5-bJ{|d5og&xpWNS1E;cCD@( z)w9*uv8dI_5!8{=rkYg4zvHo0=+vVpUz3TfX_KR;8eWsBO-r2jTYqO(!`;?BCgcTS z|4*w+tuB=|{fvsjl>=z;V17yBv*i8!(Y@$XWa$l1eyH`6(*BZV64Y!(`YAPc{WWbo zx2wPUv+KVosy}F+QIIohpV-3u<_)=X;Z+tad|X%9y*u!J*9W}BxZ?G0d~<jQmZe0v>e0-;GSSw7%J_+hZ?t`n}Vp0x{l;K$HRAr+s59T{O?3{ydn8dIVH*_-rf zn0W-OFz4)7rfFfGor*au!joHbH-8ahb*4*5OW$ zHw%$BE2;;Uq~dOHmjAl4?}~!>Co*GGlig?;D-M&px$1tp$fK3WTYAkLnk(r#`E-jt zzOgG>`CYG-X^}>>_{hYwF<*xy1A0kQSx&>Q{>-H=+vFst>rGcCTc0oNC3f=?438>G zH34idv#`ZYaAfy9(cZ8hFqWvuaVi*6vi(pa*HOub=@BRFrW4? zZ!#m65{A|sxoEY6`z(B8mwjLA(Y#%JwQNig;3t9eNg#M(X-;DWQ?J(TZY$1Svfr<8=};{F7Qq`927A38|7IVNsVAS|Qb|!kZ34ZeNjBQOtWm zUief_dKOB}H=RE~!}JwGRU*?}+I59gn2sYclKFx0L{;DTYo8(++$WLrX__KQ4mDCi zrtcf>eBZmbX1M@2zXaSQkhy(S5eh!5W;)cN z7Ou>p7gaVlKe`|Wks#NG-x%TicD-39i5rq1Es%<)Z&e?Ue#BZovFav+#gS!96f0$-7^;`T2yDh< zKF^0j(g}5&C4jwPWL*-v26|s1WWb2tvv8{o|Da{RSU2#nQ3U@KVN!n$|Q@S|8QQw4bO2R7`d2&Wc$EIWpPLeKbiuRUEv-xqiFbdpt zm8KQS6#PzO!vB%p{9-45X^h6{P4qWyzY^n$x43v?cV)_Y-!E23nCOvaYaNQQBcH`1 zX^PzR0$nxlaJF#(r|EMJS*NOY*jN5kRU1TS&eA$75pD2vYjKnA{YI}M##G7243WP+ zEl8<}53M7dDVr)QHbd5@o}Ki_`!#+S+jYTBecG;he^0qnx6su5r@55mc(Yjp%dNBz zrqG@K9vvlZs(Ti9(uvF5RfQpmkwz*1A)Z=0N~N1bfavVm9ix&Fh}f(zDxF&DsD#A! zLZwN6?vqMq-km`u@qc?N?PaBVPzg*#r7!m^E-LXZqLSY|Q`$)UW?`!72{#Kw1#Yk^ z>6s#!66?PEeMGoHy;<2{-zpmkR1`lw3!@@z*~KYqtw0AdA2kX99bKb+l32g2DhLRh zboJ85{<^5n8mBs0`m!!7K3||R#OH=T@wvO^y|85}kNX#ggX*HKAwYOWkWhg9fY0pv zVLr*pRgx1)juU_tO32t`_I#e6i!~j?kMd_@^EHQ!>~U2&i?275z~PDkTRagI-f zo70aGH;3a$fbPNp7B|c#qwklfAhjlO5m!A6!r$zVLwGFw#mDdV7N4i(*~Z7NH}3S@ z@3Vq{*Qrfr_EX+Wy_`Cs(jZ}5lb?sCPaHJ ze|jtSO<_YTFqM8zYi8yb+RhcF(tX<$4PLa)HX`e21}PL#DOz!jmOWhl1J^E;CxA@W z8;3e>&Unx^tCRqR`|}CM9m>`89jZw?SBr{9o-_d)6l%`&awf4WRactmU2-*)F>0x4 zAZ8#^Qxuw;n@~P_GF^)Osw7vi#LvRNg@db90=}k)9o^ut#TOIzMVy`q$8CcHm!K9= zAmOh)UADT!jY)_&3<#HD^&E?4p>ZX4f1rF5#=Dlm2&ju*#QJ7dRy zqT~-_2a6)33)GSO26>gV5(Ls9 z>O~?I2ViqD1U~%j;67oMItecmtVVVMmV`(CX&MUYGRLebxnOT-__|`|a2h|8Ke5;i z*F|PLr-dnQYOJY*w6~IRYw@r?t83`7W+-($&339QlA^k0UUdPV*#okc7}Z2S%Qr`= z3&FzEy&|HpUUgAomfog^l1>f0sQ96z_00VcVh}3Y>N~TU>JKD_(9);E%Qhn|uPRy7 zLtl?|_7fu`TZ{dqEi%0>y||Z`i~yQMImEVlK9<3bJfAfyeA)}TDJ{IUpewSwl{}yu zo~e-_6BJ(6)MY`*}*HpV`{ zVV=miK~7n2?3cU9UWbpopQ4f_7bB+vBF{$rg%jzIpM&m|Wj!zD|?d;aroch{fH0%z49yKJrFXPsaW zaOn^AA-UwvAn**ajt!3UbD1$V=;#Z8jD)*$WFbD$i(CdOsi6f}R_G3gP^F+0=<5pc zyGEE_^z-RF_LwupILCWlLw?GGDdgv^X6Ci(f5su zfIfA91ax`BX8`>(pN6k8n%l)WZcz*#oiPwW4m&{#ueZ0`X{aV(0lef zt3>wrt*%E(|73;k;Zdlorp*l1cSIcP>_Z=fvBdKWUlLQ`p{Zyw9`^gn(nXcR0KI}I+Vvv^;j__b9~uUPBDa#Sf? zVlYvug*)4^;9@K{TYRoGJ8#PguLLv>rj z@pyAi(1du9T);cwxV*{Z_=DqwW7IA5J@?@&oLqsfW(05ySum_qU#(NsxhtASFB@xZ zSYvvE)$xaL^woyU3}d#3NDO>nZ`U#m8$vDylmI0Moh{7?pS;AGvI?mxS~^8>-YLa+ zwrvnETD*@xil2Z%EOl7fgz5M(CHg4Vsx{2*LjHCkzr4azH$Vw7s*DiNdr&Xh^14pu zAcMAnFX>V~@EI-**eJK<5?^TZ#4Wl8ZC>E$`1NZ04Zxk9zNG1 zTjEiwOOY5j-fE+3CS5j&ymiv2b@P(G+;Gyxjsdt7>*#q$fe6yor;88f5BLPju{iBh z$vYp5g8$_RYud?5GRk@LVXU>p?xG&C&qZUW_wucR1`ZAQ4fKMXaEVI5{z5gdgep2w za3tAhQkIYLlFam!wv&+L7h?0~nh6*@EzUvDc3l$(?8Y>yAXY`X#ZScJ%+Ad(xQCCh%#&15J0-Ql zU*s&)+5Ei6HoQt@Lm#xu;mdR(0)vyX$#`VMwhEsO+sgE(LY5-{FgwB%&xMWTHbuR9 z@ouUtM_np+)B57Y7wKlL@J!8H+Bh1vF)=Qhx77SErfwr*myF73_c+Cec zJ~z3n@m4X_93)W-y}xA5p_a)c$E+2>@*_({pyXH0zdTUfVeMZPo&;L4g;m9uG;Pi4 zdY(ha(t|OnG310x*I6biSuNA>nMP@is!yDZQ97wWOiun3+pt3xWk(Db8{qrp>8rx4 z8Jd-vSup!bYQ44Cqknx`?#Oc0YG}7fd5s-_9Nst5qTajQ<)y>z?iqL4ql<{;q|F&w zgRFSP@8__u%ysYkIY?|4fHPe$vrRYYH~QGUT3kdUWwXfZ&b4o>yQn-S`wd-yu77a~ zx?ZMM$e8G#es^${Rg)sFuxqpfdiFYW!Er%GTi!n>M|ywDl1T4&W;ymsMjcQl)XL$| zb>*m|Vy(-uRf`-5O&Q?b0)vCq#U8jeV12_=A9j*kWbKG81plTFiOnzt6RCpVjBR1W z?P}fF5K;@Hw(3LVl36_elCN0 zpkH7!L$+dlMwL!Ke^mJe(}fWI2VAJd7v(QpFfhtj*^FU4%LLro9>4Y7peUDxlIDwM zXq{Onyhyn3?-bL^L}7qRRbg4c;o(AoR5x&v2b%_}->I_?hp zYL(>30_FE_yxPfG${~uWqNUjE7TMnQn~a{Lakp$)&R01gD7jSm-7HdROrGXKZ>=Cpn_5LjeBd!{_T{3I=d}GEpw6wSn4=3Q9Z>W3uva{fk05ACDkLF zYl!rYK={a;*wBZ`YHr`(KYs%GgtF}1O@&k-JX|$;9SYal3iMQ`8c{=@#3MSjKEeJY zfOOpege?2)$Gh&Ot=Q)UhGjI)<*w~A&}PugKrHa)Y*B)C~LC#b*N?ib~WseQ2 z9`rFb0!-;3F_>^+itFW3djoP?zVU*w3bdWfFq>1IgeGB|yEVWHc??CaI*LoD}s9!n-6X9IV*3q(dTK-jryyn+xry?*gfv!HBtW))>EIG}z zb?BC>R2ivHK7%Lb5@fV#NugL&6z*&_WmC*piaaF0>5Ycrml$}n)kedRpM0RC4Jx=7 zh4=r;5g&YH&_N1`n&M~CDp=AU#L?~(&7$=$7B#{T*SJDOPLcSYLJ}Ud+ZA$JloH&wytCeXHHW@^ ztzCvx>XPD(0G5P#PZ62;*>Rmlk>pM=Hyr&c#9Rb}jF{Q>qNO-r{I~NRMh%eqyfZ`O zjo<2aY9|F%&poumr<=;!U>J<^G`^3e5uV1emM>upMCJk#6NS#IIH96#(2SrZduzAm zpJkC5vu^T3EH$SMV9u^YlMSx*`)eybAF&`D!L)jlf8mBby5gILq_4 zC<1fwl9VI)3o*1uyd-<)t09C`HC^)~1MgKVswE6pXG;X#SOZU&R9CE<_<(g2dzAB> z5TWDS<15S#7D5&^S!uSX#T{~#$a|vQ(_wqv7A0P} zQVlUPVaWzxE>iD9WhgTI4&wnR*$jqc$aeSKvH=JdF{nRWBx;vRh{~iY6>4vwUS^H# za&36eZcdhFNTuo(B80|mA2+PC8|B@wqJg#jZr=lOrkG;|K6>?4WJymMc+AXRY6;JyI2`E-m$w07-MvWK`(9my1c&gCCaO; z^`0(k?Z$67)?_ykDQ1d354im;j6bqk0R*VhY&?*5_x^ith=KaQp^ic%^6v497(sQ!m@@8 zDy%RuqSK%@aki`ZbwHKr9z$YngkJ@A|A3(&>-!C?uhtZb9`=r9i9e}IjL)qs-*Wys zX>qVrI0bngn#R~Sh*$TM~fJI?rBGqadEL>b;do+?6u zbQ;N3?hw&L-gi8xPw8p~0Mc>}tSc?jl(e!j^fjwUYN$b0F+S>c0f39Og8H&wlT#rP zlriQ5v!oWz@ReCo+Chu5Oc_b%n_hgCiU$70E<R6w$X{ zC^~B`uYd+Q81gPDPXJY%wklnNQmr?tG+;-uE?evdiiZDL9@*22zpFNe*0$|!sRNg` zrGi+=_PFtF+As4)&CTiQn5iu=qNv&2tTUi;N)a3y3#s$|@Pd)ydbaxC^Ww(Q>lB>W-xmuL zc~ML^Zkebe)f_nQ&~YxvHnT|a4cp~_c|X(xO-=PG48QfDYbUtbqzO6D9v?DR@bl+I zufwmj%jjR|qSDfsB02Yx9^_M05I}rCWH9z?tPiCAI*IyJo7t%*m;fUvh9xp0jweTu z;&nF7EUKiqEpO{uEMh}f`;ExCn2TF*Hus#7)-Q9*%?MJW<}bYfI7^_Afc>0M~2i@!p4gEd~YCu%+l z$`{AxlpA0KFkp4j9CdEnwWq@HRm^e;hI2Cdi$Ui$hOb{>s{Br|%e3)VY^52F_yFM3 zWbH~)eJ^nhm7cIIDE~0l{46(ft9ITN3}-FO)?o81L1#C0d>G_Xtp$Y^43fY!n+X?H zn%*bVh?dqaQT8aO>kg8edH?7>6Bf{c-SqV+xw(9TZK2mZ`qD4GNp5o#U#)3S26Y#2 zfTv0KBN+Xrgp^F;+;^t&`*V9pUlr0M4YgWD8 zq$3k9Gp75lZS#kDu}hBytM;~Yb2lx)A-U8~?3X*mo@idihSr;6^GXcsPx$f+`o-k( zIYan?bXPGm4=a2Tlm4PnxS8s16Qu-+v5Ye;kETF0ughcZgWfRCJDxWtvho$rAMZpK zd6xCL|w1~p=>_o~s1$)P%c_FZi$%`9uwWa@C8m>@n9LKrTle!jWG znacjGhEY2|L?l^%;$hxh)`!20p6As$X)L}Pw*~wi-JxN zDrlCTg0l2f(QCm}Le=@SgPt;+k=W6I(bqx4R>@u*1DkU=&-}pWShY2p$kw+5c2F0(}52A?`_85@xgZa=A%$y$BQ-rC)GYWLAa3Z_bCf4hm= zE;z#J0%Qp-Ocz>4P)LDFi5~na2w(JIj9zt_HbknV;@99RyZ*r_eZzIO|J^m+V~e`3 zT2_$~Dw`S+q!pdFd2F%_P3sXj@>B3#umM>Vo1Z%)FPX5@I8OdCJ8CjAc1ofI$ zD!n>VagZz>j4Jygjo{%aUsOI5N0usaSkUR}NtUL7Avc@KUq z+)loMQ9JD?1|vLnxYK_#A0;UN%NL)`n*oe3X1)R0frGV+Z=C5~_w5TunF1kn;S^NW zNQp@lp}5MfeCT7hA6`B?zE0|BXY2HiSgSU1k6r!@f7u7mN$RR|JRZwSQh4+)wypGv z?4$hf;#-_h)V2Wx6Fqxt6E$3LUh~$93l44Tw|ZT?pYfe{IE;R7rgN;FhC@tW< ze+#?2?sY5o$U`9`;i!Lc!b##nOfSq0zoxr*XOi;(l@~eU0y%v#C-3gsIs6oR4jCpk zc)pVQ$g7h4jWG#`m=+JZc35(~aYi=o)U?8abix?8rL9X26-YV5cf;yESus52sqqQ#x?cfI@ zp*6`1vfG1Q9dcmQo_*6$tz{*&UKJktx-?)#lF*v4hkf_I z0|Pey*y{lTo)3L3lvPSLCmb+CL5gB86ljJ;fX)oE2MiTyP$iLfPgI_J7~21vfj^nV zG=ueY7i3l<>p~z%(d0r^Vhe3eUF*XHgTIlwP7N<{cffYd4F5+D(BFMiGVJB3z=8S8cnOLhI*IwcDe0V`h!@hLNN4DVF?HN-B{zDJtI+tqO=aNu}R^*WV<68f+J1Ej)+Ta5R_kP^V?md-`Bc{PC z`&S+t$DO{1$p+Y6dTe>@oD)KC>$n74&r zbMqF{v&AOmeKjVVGzgpf=+zDs7WTG5eB3xFi0A!kKN+Zf%-gK+)J#O5KV z*xwVr2_9X|AdwCKJm5p4L-7}f76bG+z%^~jJ%87rjc3hE^OrR467FiUw=8cYFLT5F zb3W(}HyyXRJIt-w*d0#0`n~S(xkvuf9rjzovx{rr?+&kS{kS_k@?u`>LCcrrZ5!|= zC%{BCh9`+83`iMGl)5DuLO^19ex*T)t2+@3j2ip4NIc%}KeIB(U0L0B!20U8GuG!< zw@q7LP~FzBzOZ_)12$Ceb;gGL>b<6ID5&16VMAec{D6(s@iR8&SI4JqEU1n*Y%C1+ zT^Tel>#vF~z9(p2-hb8sQFSU$0ry2NU*ul$hW7DCIBJ%NXa7t5_NV^+h2Q?dZ~xDY zpUUqbev)N|=8b-7!X4EM)hcrzt!#dp13{nR|7Ua5_|4DvMz@G)_Z!g)D|Z^efe-_X zS~}}snIl*zYE>AuGU@d>@EHz1FM-QH`JX(_4&t-FnpQdd(TG49D7~3NNj3wm=*pcr z-e_Z@W~f!R^xyhYqtbEu8a>RncJ0n$=ku2b(Qgc zODw2VA=hASd0SAa`m4699|`u=|J7H&e2GeS4fYW7gVqj0`f@4w4`5E z`Rg<9>l)evE#HON`RB#pU2L8Xx^l&;Z`%~)+r#DdaBO~Md~Cixol%hS?ev1m`1At% zx-j$WLcT7vuZuFjF5>GV`?@6aYj#Z?TVh|AW`51~kJC%-Yloi4q>Qi2&J?CA4Yie( z%^ek$&5O~DCHYn5U9ovO&Ld3`3GL3V(Sk8*ZIJs!(EMCZW$s8g^c?iq8cD({?z6Ng z+b^q1bjAJ?q)4bO3M%N@-7#r{NiGU@@%vKI3{kT3X@8dC$ylLOMC9K{n688`Q>FJ; zw}(Cj2q~eCOcG6a7Z(;j!}MrQ1Huyp<=<)KjG8ZXJ?!yJ*Uxy^`IGRMMe^5$^4G+< z4$c_CVFGMN!*J~(f|nlhE`g*0r$K0#g&BU4F)OUJ%k1?}3u-v=UOe+P0$w8Ee;4rE z(?t3&;pa6+0ZE_m4|MP!UGzEND_*Ej`=eORwf{^tm7tG!suH49&|n2&mI1Ob($eE% z1<&e?1>LLl8z!h%4Eu?~ln{eZ^vf@)B!M83IM>2kwFpcsnk#{2rAxy1pE8zR zeGeqNOxTnOo9l&5wCiX#zrNo)KGhB%(F;`CDiJ9bjTl7=jbC5^Ds*U}2lPhlg=~%M z@DS&Dd}2Z*kwWAzLgbHW+0n0Te7*%f1)>kVKK=3Z`LYqf@eiUo{s|v_)4a4`N%*IQ zK)Oqi3f1H%1?iFP>W^I}#{&$|od)8-K$#s68U+JlMs0>oY^SGWFY`=!=mn!7Log5} z1>ex2RAc>Rl8&h&M7R zWz&bmb#M9|2tCtp5U~cd+x|PWz@b|pInM7@&F^1jGIItPbzLcROwIo$0{&$?{!Hv0 z{&yVw6z!ly1Q~23wh#q^5&(*4-oR|Q8<5wfK;AEq3$xpMbno!K-2)yXn1bijMDS3P zOmLS9+=3Li2L$e(9`e@!JSyvHKh6?7h+F~33A{}?`BAGDSp)0z%ZLpB>Bzf0Bh2vK z*%CdCq@u-11%&XOu<$OV!L4-h24udFyL>zOJ^y>)2OWFbkBP#MwpN(Eq5)crq-TZ_ z56QP6rTKJ61FxtyVy3KYT3b&84JH*wX5$v&aAP(LFN;`K^ z&3{+Trk$)?`%;&e@vQn|mo-aYdezVK1)~NSMpZ~Z0PUm!aM@U3g!fxn7#YCDlD;-K zrvb=}0mA|t>6+(Qz+50VcH|dBKnt&+$KMG{>M|9y38Zc5TZVFOryrHzUL^ix``>cm z4n7s|$UJQpfAS?9sEm!jq_ktr9nkC#DRF&JG+WfuUIx9x1B`=LkpWM(%;dqr!>aK% z1?~)iyFLZ(A%VM>_Nk_PxBqQ^@|Ba`OC<_C8M5BbKc)BgYMbqzn~8s7T(p1d0sUb5 z>|Xb8{mdOvqkLumVkPy~NqhiC6M-1cFZ8}sx5!R39gdU)-@EUW<2-TLC*445qBMOX zw*p4L{ji~pD<-_!sw9xs>eDo&gEAo@oKf|FbYEf~!W=$g`fr`3L$ju)w5O`fSXUB_ z{AxJFc!mhugd;NW>gBnyyZzsBZ8TN~l6geQhJMWtF)JskTl>vQ;}bR*qxiynf(Ui+ zp01J%%-vT)`!9p_GMf0U+_)K!!Bn8mJhc>rZw|`*CP!jNU0Ey503zjhDX!=2TD9{blJ|9<~fZOM-OJ5zLPag*AVa90zIo2-%A z@V)gplIRWr9a;0!8+}7>9GEeLLhL*6czeUR#k|xTD1c-{^IfBLuO6J=`m%TFOij#b z8x$mzp^qPssXfVY8B{BwiV73(0IZ|ASEQS(FgGR;Dec@~a%J5e8}A#q;7@7}NIy3q z)f}g7ZZJe8k((lMry#sDvp5#dPaXotl=dN?1>w(zI`k-((#k3{$mI4Xsw9zjutBC@ z^!=WY7l`(z=V{1gnUG7r&9{hL;l|rdd=_D$>-E6o~;#yaC4%YbYD6iE?3r{=LKp>jSz0KW}%slzN73^V;8zkZPIgoQJn?;>UHp|FmwJ%QD#+8mzIX73JP%Hj@VBP7^qWJb4q{| zHmR!cbq||*j62cZ8!TF~TGX^=wrC3PyBS(&i(~UZX?i5E+Zr#i^=F$4fjs-2Ez+#` zt;OqgMWx&|?^`!`z4@QrQiA54M`GZ9_7W+al=(6g5{ZEyU++b9Wb_gZomX7A6K`c6 zVy&kGnH@Y}@_H4~kqh6;v!!hFii`9a6kn$|9KFN&D<>7`=p9bpVS)b9`R(oO=^C5= zJsYEZB`Duk$@2c#v9DBebW-c9l;)Tew!;|9FyV0@zM*k;EkWTJG1lDfI(Ik2#kN*q zTAN{9{=9&=U1Y1;CIV!#0pYxdYmGMUyoV2T-a|F>Q(E`qX;u7t0MRC-?`}09?_qVS zn58EmyBm;FwWPdLd(}pj2UK1YRsOVE7|*V}@q{WyhpTLm^D0%`ID*YI%}II`F5m!{h4f1JF)b#pFwH`S32=Ei_|*zMe%w~ z6?&wBW25sK5a8OXKIweNNxd|_H?SHrsnJR<)tpJ>^|C>Uys`)e7(nD>`pa!v5NKw- z^1p&33cET!NzOGmn*Ytwjw`~DQB!tgPL}al!t5yQmTQOr9U@U&!Ibdne4RajN$Q8Q znIfMl%$e3jt+Qf4b(D40CGXcd6pGhMl1q%T4BDSUtH)04ld>n)in3KQ_-P5w1Q#uY z6=iE}qY<`X|p{aQ@oo0oi^6(ty?tDGh`|4bJ6 z;XQ3e88a(dTb<>-syN?l$+gAn1hf1F8O7;X-6OGC6S*E&(9TJZi(~W8!SYtcpQ|kY z(4F+iFD!48(#|MqE1|XjHlz5UJ)DUB+H>w+hJ&3$!O{q4c{es38y%=t)pi1aet>bT zW{L6%+TinI6xD^bQGv~uu z+(l3_Z4M&Kn=%8hA*71FURs?kq~uCm@#icVNEhsZ#<*-JXfnNrF z3hT|s_hJTm11n*jDoIk!&J4J@8(QBEj1dtG8iE-Zi_m7QU<}9pS8$@X2JsJ*H3nxE zqbnU%Y{>rVKi<{;qZaX1#sBDinOih0O5bi2*Us$3bm>!FezvMN3SU+1q_HQZeKl~v znFR+XNje_bM2@mQTH;gL%vlOQfeK%l&?luUrijv7uaaRF9Hn~)FN)WT0)pTygg-CS zTi%DpJ77Y^A4(Z@Sk%jWa`OKMU}b!Z9F53m$4uieLfW@Q z7TH_i^m(J*%<1l}?U~j_0=7V$OIczcPTXRa_--c>P6;oKepvHf|{Ksr=8 zK=j^#z!eMrBxvfa6ojW|0?RSF^#$z94p@5x>}vf;16$yM>3syu7-PWH1l4Y_#JhPJ zEv)}kpm*+JEv%1#&d3JZabKsoKP*46xW{ia%@j?dLKf5^P>%XxU zWn)pnt!l*%xebVVWX^0won_9{vrJ{qUR~=jqEG63r*zcmhFDv$QFg^C>Wa7sEq7#- z@CXw09_))$l1mn9Xn$i;0dGv!3-yD4Ue=4OB!Q=u>`(XG)hh|a#Y9!ArZqcdNJbN| zA;5YrR_zx3;GeHH$EuxY?}NB{_4AzhH&u$FBlE{IGppS~6~;Elu1vw4V&Adjh-n+W z|7dTDthC=323T`fMR={v#%mq7fmB=9xNB~S#TsfZZ8x)J;_*f#9&)lXqVFTT^6i1h z@_>Dpg_rv}3$M%AB^i3%PBEj`BK_c>r&ounlQpnv9bT>$kC!8itir7vi5Ikyq-uA2 zqPM=z-oeTswz$>#EH#L={E=tb0;q2PdHQmbtnVs7Yx}8Pwfe5*9j3~+yA+553)ulh z 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%0Dlf-YCoZiX-&ar{Mb!6V!C>01 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

m%fzi%PsnH&gqimYW*};U+m2=Ps(7U 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

9Kz8H-ASDSh7W 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

wZ?^LJNXn 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 AwZh>!|# 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 z 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

DMv_W5G9~WaL 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 z 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 z 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

HxC$zxdc!R%67k}~q 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�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 z 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�*!P`L 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

{UBlgZZ79jm}wC##ifUM4V09zS4NMyGmsmgTv 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≺=nEGL`&WW1JgN)+8=ih@L48~83XS! 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
dS3 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 y72s1VRjpoS^4I1g^!rfb$R}7~K-cA8e2g7q@4F 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ð%lvi~R!6mDhDbvG3yv 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𝔰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

1H*n{P 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 z%0D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

ds=amx@r~I~K|I2`QMUhd{edsz>#mGj@Ubtu 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ℜe2TqcV|Vn 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�@AHClrN%JO)Z=tfFBdy7s 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

G0&`QTS>mpnI9uDVt-9+oXT* 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 CV*IT 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

Imdp|?_;?gC6kA;mmT#SNV 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
Y6M3zBAO^m3r@|l_5l6$L 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�q2CPoL6@g3 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
w}86E7jP-)NCBs3W=Nqxx&Pr9qjP6Grx%};t# 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ǺX<8nGXp3m(a zfj^dgA5860w?E1b#EwqcG2(-t+_h}eiIw19!@etJ-_-rMg1AGuu2Ha%YXCaq?X<6zXLjV2JFuo6mW9R|7uF3k1 z5_^MjcF$|J*4}PlYLB`XU~jz9=`(~UpdzYkfiAdcbg(IQMp{4B9fb|J>iBJU_WkjO zZ7A#!!)^iN^7t_-r)AF<-8+~iu&fP!-!_c*Be1=1hj{h?)w1i%Z^5+ejnJ*ye{}Fp zOMD%7EA-0(=(%pa3#K}Le~I?WZSl7_ti5hvs^dKmD<)KeUkpmwytzl*_c!7r*CF<#SV*<10WWqJQR z*>aDqclF5NA7EHTqHo%tjo&|0adjR_7NF3g2o!K8OI|~bg>kM^T_8l-D*V(d5)=A4=1ufhA2^J9V!MAnh0^&MN zrhQrhQ@>Y(PrGVluqRk3IvlJ7w}9E_omVD8$>Lt&q32KpZ#S0w#Nb= zAZ2yz?f^DWnAUH&YW+fD)-?3F#)lsyk+IsRTY>_V~Egn_oTXRjOB zHlDriVA@xFE|SY=CfIhO(`ED`*id1*e6NywZ(1-$x}z-b6XDH^3?Ja{HT>~Dkq5x& zgE~IXbx8AW(X+eCIIhT+%6^c#UyHq)Fou8~dt9Nl?4P0gI?Dc9#tX|X#vk8@^FsGj zcZaZzq`lPr9c9l(*|AvJ)Lt3= z+?Vz57eBLR_dO%Q)E;#_J~+g%v%u*0f|gWwIvD$Tlm78~Zu|KdFttY=%l_(k^ z1sL>dk7e23{kMtNbKBk}U{=TWzG>LOQuZwjW^|!5hDKm8Ygy`8_G^Ys6xM+i8PRC$ z{uJZxiIdg~zB)0>UISBmo66XI7Ap^$=lI=n|5UdZbhLMkVcdVPy~ni2_h8xfc7Umm zDWd!N%y>Pwx_-yR`%sQat@EWh?4Mw2@9$Vg>38L^@p^9U?S5RW<8$EsVUzcleHMBK z9<%HHWh207kGet7@g6%KFCyvOW5@e7mFfL&KLz7@PJ8q4$9pp0G;BT?@5y`%Onq>@ z+<3bo!SVQ2HcsmIZkLqp4|XDSx5{>d_2XD$JM`TjWHZ2CKej0tiT#Y)`?}~>V;_Lc ztkYh74;jmT13Esx-cz))^ z?;2yDUXBA0?$7PmxB^Ul{0X|rZ9{@B&H!PM{d@WFQ$@Z3Pzm0;|v1F!+Z=FaJ>8^Bb@*Xy$#-$rAV zO#);8oq~fBWqX5hY?Nf%&OY6TW%2&UJq-H-82ez0FfCgFV_hBs{h#O_Y$wNm%IM<)u=TvMml@r4;^TEV;JRQC=08vSEu(u>bbsm{ zulv^CpTX4cGSPhvjpe#;btizS?s?>KSspLzKI=lpw#@~@Fn7x8`%kEQQOaJAj#7JM zEc;`yExodj8r{vJ+XLH(!JclMY&YoRHqnj1yuenTZluf=PZRhEF%eIO3?h)OGV8cA!DzFJ)N8`^8Scy$wDkX?jom5Af!U|$iSk+8m3Kf!o zROqCJI;jzPsqxdI^`55~2$E`YQsN=XL$!>RQot9pNx+rhu1<=#^QU=ToK%BJH3l{X z2PRKa)zfJR?PK=`lB#;Cs9c;k$jKX2tvcm8oK(f80w+~=Q|(q+4s1$l7B`pmoE}G` zS~q7>gJkhG1;`sT*h%SLCUB)}91DsSJCxv@KjLjfm z$4fx_n35;3#yhE|pknew>6T*(iwSuekm5c?f}5u_`K=}~Mydh#f@#R4a7=4Ll5%xM zkrOpdM{a|uc~jWaEEN_tt%{Dn_$)}>fMdzpq3)HkK0|672%72%qNi7C8L8W25KP_U zT5PUrggSzb-8w74mpZsB%!J6of%pJaT|uU(0H+S|6_EBCNeEXW#J8pQm&LHUqKkewN z0pFq=g-DMyj$+d^w#8mLxlcy@;po`v%YNFiA5_X-I=NL#?P)%YuEwWwlKePba?^pI z?&9T_y|maH_GWIn$xplG(FxFt zu{hzTLpL7-+{q6Xdg-c{4v^N)fc;7)U3Kztbl{{*nY3$L0k|!?O^PdbVs6dJ zQF?WmV{Jw=IqBQ0qvj>=vW`ZVrsAe+Dj4fnak|BAQNU}gX>e1EoV-P;3^An4{i$tE z3jRzUQc0*fy;N=P>h%(ZG6s9by%eXai3LWg_%989YGIm%ST?mVX;sMlB!xtha@LKY z!AUv=a0FjCSnaT)aW^C*a_ZpsHVCSA>{gPzxJcD0S*i&v0k^NGx4X{sn&m-B*avgxIB=)wHYlUQd$2Hrg?<6MUJ95dU%bY*i zKVgsTEeuZe%X?br<1m@ar;hhAvAvCQZIA3PQg$1|R!Z4F8pdnb953g}Tt3SV1f!3| zhVi;I*+nwHPhFd^y<|R~>`P!=9xr3V7$VJapx3Wo0n>II1|8e>cf-~bcC}msq`mdQ z_|5WTWGfRFe zkYVqDtz6V2_|UNTgpI&-i?-u2Fuud)DX?wPeqP@w3XtXn^h8dm=Hrfhyu1Kkvn0oK zu>7igyf7EH=i@LR2L%}0qr8w}=Z@}j@C^(;Kj341b@9ssv@7^&za$jkBtQBPV46x| zi4pg41mY_1HFj}O6HnVQS3PaV#9JJR>s^37?V2XBIn4|CxG5j6`)T0y^NoBexNE-c zhI|~|7n9Q||BCv!AD+A9py%Yl@EqIG_JjB4FT=vVXU|Hox$K9@o(0=!WF>e)_OE33 zgYEODO7M>CH_7e<8-LiS;Ip#dR7TxY!`>I&=g=Z)4Cilx`TVWjJg?y&6cvu3_Atv z80ek- z+a6=tw+#CL$6>s8aE9!M>Gy3g_UW^-e^ti&>fbPo-_>cy^9J9OeJ*um^l`RfBVn)k z@KM1xThjWGMfd3&#&_hiuk^kf+9TU+uS#%kYg)Do*r^z&3kIa@9w~e1pp^03Rzr^% z6>K%wW%RqVVK++ICp<>KJ%^-apAg-CTf2<9%M4o&eZc21F5M>8ksG{UIWK0D}XcQD%p(up$m(dsxF}V`4XriW^s>|uw zmI{I@vr!nqL?ag%BvB|MM*_5Qz|9MKwbn#g44bhyl;uniDHN+FR3f3BmrLy8Dngvk zpEw#-no+5}2ml%+8j4m9*Hq993;1I&QKZUKBFKMq7K(xdh7v8IXX0q|Zyaq_T8;Ih z4Uj|>nSqTW1&SdO1w`Y}Ov=C+lsH;(qFS8_MUfzcKxy@-4zV%BWw@}fO;n1FkHo4)cWV^OMxwmHpF|S@2SuW-Fj|RBnP?=4(y^AUWiWHc zv4yCM6Jzlbj2N_GRD`9tVR-(OkV`$$1kGynE!lkMG!b+6h0r5noK*YVY;_^8d7^pnv*wqV1j0Y|;rk zTXaHm#p(5z#g(1VY}^T7T|1%445wUBzs^A?e1)CR#98YaMIO`a8#Q8n7n`_79UpJ4!n~h*&2~yY+iOPOpxrA=c2t&? zb69Xxa>N3M@WHZS4jYEC`Km?g3K2h|P^!n8&moc$NVn z)(NZRF!2%T<~AjDX1b7RUsb~%iB1{pMU3AhOjv7{HRmu>7B-CQ1+ILtcd#vfmGSvuJ})y1zpNkUw)J_LGYr$`W$p&U z>1w2#hhIK(#W`PP^TGJc)e126aTDS%zT7+Li(?^W*MqGBI~->}m~x5g_Zw7z&we(_ z91QFH-_U*LmEOS+EK@DJEu66(Ps$Pd><9smo>7ke#Koy-nJ=`$u(`&#mz2fxg zlZI)ZJ_V-j_#u1@-K$4%s?6`Rev8EKFIwYkxOQ3o(lGVgtAG5wC3U(icQs7?jsjD^ zM~IKNum?ePoVLAfnEKcWbM&a9)3!qmQy*UhQy=?^j~#}@&sE!Yj517pd=0G4^Kr3Z z>SF#@EpTYj)H8C!?jWKsI$ZK0@nEIUt29r+PPBBdVej7~v?j}AOG4BEF z^k3O9^)VKV&tlkRG{Z3UaWt6v7%4tZ-2vaN_I#XWnELoJ*l^Fs+lHx+cfjal8rDhb zJ6;+RU>YT1JWlEI+>q#-h^oUBP4EKPk?3D#BZNI{7^Y}~TVEa$@F5MJNKL};7xBw) zGaQb17sOw~UppfFHp5IXwZ}TJ>?UY8wz_DwYN7I{eBG#Lw)Qkx-u4qvZh=R;{Vo6-h`6oaPri0n8ak;%>*g?Xk%YKl{@?bEw_t%CUB5X$t7PWUM z7~3%qY$)QkE*)UQz-(P~A4(rz5_`ii(9~W#80~!@Y&hc9-jBg}z0KNt7>wiO8~F1A zwhA^lHxXwJtV$s|I1QyiX&kWV2}e#6vt(&mlgpZvQgNJ2OflK$<~D|jDaj3o#g@gC zn{2kpZXs%sio1nnH;Gi5TME78P@CJu&FvDl73PLL9aBsiQ%JTMM@$-1nmeo~S{LG< z*px}qRFa$()ygDk$|UKCz?w>vktt1%j!mV>$W)pXQ#78`il*bFn380xD{d82nmaJ6 zl$LGX(oJgFC|{Z%DI&k>D9UZoI>!}h37oPmf%=WbRWCU}{KgfjdPzqdx~4+ckxjx_ zU~-wPq_v8211}6i`gV_*q_^GCoKldRQ3_Sy{Ep7Y853>Tj$#GnKXH^Xjc0J2S;BtY zQO9^zKK6}>n-~v_+_QWEj!g%pDkZ5}@vMBz>{P7{E73_^ET-{9wxd>Tji_PdmCC8w z;BNUi*GO9f@W2MCU}B^I!(}B$jU$hIoM#(86w{r$EWm7~RFHL4bp|IHj(T9S@CX6OF6JC{gyZ7Y2ytUR&KimOMQ~I*)<}9ii)k7) zQDO9(tSnJxr~l!xQ5oyoS5SV=NqBDu;>x}X#`%gd_~k0e^E)1_@ZQqh!BqDx(H&>l zj}hm4UXGP>7W&{lakO_B&QI{aV{f{gvrxATI^I|Lb;F(pdtqLW;968@<*JX z;IzPbhsYQ?KcPM9*fxGUUF*C`$~K`O4$qyk2g^AI%TmX(7a7)oHnAP|7`BMIgo%8Ll8K&pLw}asp7Uz8X6~pEukMmov zf@yns&nWLV-Bivy=$G#W<$GC{8nzi2+k2&)V^G&m>bEZr7%_$9)NiU`TEF>VI`1+M zdd|PyZO_C10Wa_g{ ztmNib8yw5kcs)=}H7JD|$1jp5h3Fb2>4?)M5~^sCmozP^24&k`JZR=5d%MZ9pB!OK z!JjS5q*OtELMPdrO;*OHincV$7>_U0fSr^HIBB#Yw24g5Ra|k!71vBw%j??qYO*yR zh)71wm*hgXuaF#O`U=UBPI8V-R?B|U^*hJ*bG6Co_G-}Jf1 zf@)0l-X>vLk49tKlWnAv%7-_CZilm;7}XSm0LC8yL}i&MCHZ68Fr6Nk$y; z22qoj-xRuQpvfN}Sx)tmPW(mbvX@^@?K$~KNcp&0X*#y2=}_#Y>9~Gr8s*~z{zahP zNrRen#mld-es2EwvPr|9mqxD1FM0W;uvC~oi4`>ZIGx&y(nC{!aXPgZr^ioH|8aRg zJ;}{)_3~RMWb#oW>H@XrrY9ko{I>C4dV-f`e(WN(XVc71)6Jo)Zw_g%C?6f~=$WQm z_2bJ8UVejP&*Y;>R7&+pTI@->>g89}UM62^k?1w8_9Q(>+Dps@IY`>8>BWB9(=U$F zRLA8P`sp|;$-m0WpXH|`e{mt!r{t$SeaWOz1FSs8A<`8ujUjIXkE51j)Ak4;&x20G zud+uG=kePu_{Cc39G~B7m>$3V0}O|=&hc9d3M$j%w^lIqLBsU173zS~Eyu^!hN+L4 zVB9C$W5gdArapcMraoSVo<0sl@8I;v@xf;Xl&O!a!Eoy0_;}JV_3;##`rxrRuh;z* zj5}DS+i@Jv>vgM*?iFwzPtQc2mVFD1_3Moez-fh3zl{vj`b`7#&(lsfOzT$#Qy+cM z&pdxvgmYCMm3@Fe){*BA`dlT)!AdaJP{EdA=fs^ej@C= z-f3NyqwVzZ0yYp@zXhT@_A@CvOW1sD3{>}PDZ33;d}Xsm_hp$+px=XpwaVN9*`dN- zFzk!Mw%a1L_onz58K#WeKh|024ruQkVJEbty8Fc575!88O<`>VQg))S(+s;^*xv@G zx;upJjg?&6d#5mc_d4rxv#?LFlB@1nsb3pbXl3V!?q#gd%FY$G<2ETR*WhG$^m6Sarbr~}{WiJWi z4I=87`*_+r(6FzGz2A*Zb=(h9chb0&9WCsd&!_AovDa@x%03iUnV2%}k7)0(FQjax zum>ik?9amXot(1Y3v1jfp1V2~X+L1I>x3~*%73E@zA@wFuLweitY|JyFa8C}$N5vP zL7(_(8hXPk|Hc&8-qjSD@Suq^`k+^z2b)4i@nAPMy`nH(IS+?7L6l$J1bbjV9h-gI zEC2Qc&wj~GKj=-nJ?Om==E0ChPic5CTiT3x2u2CpLx=G{wb(hzU znCaeE*P;$!ux$34@WYS)JDqcEu9mSSs)5lrV9we`8k8s6H13LOhRO27? zZ-dQ7+FRZ@=rdsjrk(6~;qtNR2P@4+&Go5|WB-v-=;S}*jgJ)-Cp)@V*^(7FzOVsl z$3D_d{jafN#Ccr!BahWf;vTM2j%IoSTL1a|epM5%Nkn$<8*n z6FM9=2H$s#r-|IvFwHKA`O7NwFERvSGz(^nhtYlAmJH31uxfU(ku>bckcv;*vKmeq zIiV$o40IHD|K38sRR2t={&Q<;Fwu!?>{b(#*iIDZlz5`CgqmoMAK9tKC6OkY9(6Ph zNi|Y7st=}5;a7>Pfj3V>Qtb+LQYzN?B+*2Z-i{_AqLGPhqcH>;nOWxKwP-xzXjm`Q z*_4XN#ToM5T7({8$CMIcEDJH-J;Edc?935gF(5f3Gg{8r*c){vE(<5%BNR@Wv({}H z!ck;H|Ji=2mJGQjQ=gXVnO?EOvSe09!_PT7p(R6{?A*kvb^NUlkDxG&lQpc@m^Cd>SwjcW*O=`!{#@#ylf3aID)1Ex^cDz>M=CM24b<|sM)g_nQe*|9taOl}H#;<7sf3@jM7k(<5 zig|N+rwmS6(*k4Hw7~c^EzrKE1v=JrBhb;Qu5m@2|GNvT_E|VfU5pP=V`?r6^T75* z?5y5>g9Guay6-~w?p}R^^9{Q|%038&sm{QbecI^wtyub40mgH3t9#$*E)pH*5P8gH zb-ae6b>VeO+S?EemmM74rbfr_%u=^CSPxIPi_u*I9ou%4VOL4n%fN6c!trsv(OoTN zUp4FoDccLbJ-xF1z_cAVO4+G~@lH3^nf;B+6OLc@kCwd$an|{9!}v{4mR*fsT(WS= z@;#nf_NP*|V%Q^6_5?8Qfo$JbjqXt?`y<1il(O%E;WCC(_HRb_l$6~Hn<=f!b5fS? zr3<~XGmY+fDSMS+FM+j>>l-`*)*@y5VL9;H?4K~ulttfp2b+O|2wYN$>ZiK9G0>E$ zZYZ{QxNPI-PQ^e|rn z_zmJ`Lapv1oc;kvWmUI61|Kf1Ira{QF=eWI77Ul_99;_rpEA{50>)i|_4^JQp-gq{ zIOOE9Be65-S5EA#g6U^SQyGw_b3?072nnT5Hb(lvl2Wd z`W{-)seC6j#zHWMuM@u`dw4@^HeF@B-cZgvFx6P z@!BWbb^tB~s68_3o-*v4=)a$Xy(ZT~Y41qs=N($oveQNPO#hS}07f5ox4Dcy{%P35 zqU$*@)sa!RzhO&7_oFRS9T{~W8TJAgm+wY{Q{79#4l#_^_}KSpW~oT9%AH zZa1tu*lS>?Zk6hKNZCo-x{PHnGmOuO&`0m>Q{C6VxPFx7dMNw(i=w;VW3=~o!={Vw z`QfR(uZX>$?U=Gd!TyA@({R&+E^|H~%=Kf7&!%iwF#0%SWXdXFtn+p|yNtSJhD{KA zhwPf_c9gPjc#LJwlk2N&??CZ;uUuax+f3|1n$-C<^mCWJD#4RuQucW)U%vmbGCpNk zRU)={V#+Q-*)O9VuYVzBp|Ek2QdWgu>K1{aTZ0b#6$KQ}4XA!@NVs=&+Q^MLLq1>L z&*QVZqmo#B89uQdKkV6KX55D@SR7_!yNZyp(^$Y~bMWWrW4`+JOno+?K8JTNox4RI z$95{ueq;Puplm&x!d(411^sYC5ucIYZ|4;9Ggu%~pK~S_@z(r$9+dBQb^$-Dp#F~* z@q+rFRmk(}e^x=e&YGCtuCog2Kd+#k^S+SZ5A%*L;05)cHzU9P^9t%eub}?(3hE!# zhD*{54OI_Fl05y&SgL8LHsy01$mHuC-ZAdl8(+F?!s_1?)hG4Txfph#!QVS0E!yB| z*=`ys_|@%PK{mRjX6RU}{HneRv&8c8ofr9T=)YEeCBIlgD|Py(!V~ctp~8dk8lj_3 z{_-`-Z@*@r=Z|@+?UR{_N0g85+(>{If&ZHM?VjFGw%6&O_GAa?myFZxbq4(MI{7O* zmH)!x`QNy7hh@8MnyJLfeR!u)aadj_|G46!QO?)?f1Z!S+L|Fb@TjT!_hs_fm-BB& z;BSZB`v%vGtNBO|Kzz4t`vyz!tGX|PKX!26=opYghdLZWN4lj($Mec?df#9Qezh#` z=VRGFxV=4;DE#W2BX2$-gl^j557-M8SmGmk0z}5 zJY=&zx`CMe+aUO5PTGJk)dCDVxNLj8Rzw`oA9q%hEqg3~-=w6rk1@;r)fk+?IFqgpjH|t|R znO~sp8T^$n*1BS@sGsOKU%|1q4w(Ab0RxQf_^n|hz{a8v+R>q{C_{U@;Fr3?WNw0N zBy^7*+BcXF)+Ro1`V#rL$mlBK<7%0&U|D`Mi~YPV<|}v{K&Jh?p3Gs8b%l=ovJ?wL z>)eBW(Fa2@_cTQO>iRJZOm&=-WjoHmyvEkzL))R>lAwOfcG`QH(e=2DI!J(%xBMY^Po3XBZvl zo7vuG42%)tL)+UEOzoW~?R~aWZQ{7v41;Qv)J4bD=3w-( z2euUtqb`-#M+f)fmx1hZ{8sND9oz?|I=-ud-*h-YwlCCie@xb2)_t<4;5Yc*sNgh@ zQFp3gzZBhL9;5D2!(J4fzMGFe$f)Zn+YPc;M0cde_zjC|4C5Te;&Vp@_sh0~Wyz?! z&oG{He0EGFnQx@-04e*iY)h1}>_>+2d97;?8WjwZZ3K0v3Ohj7ePx?Y#9S8GhUm7f zpzDTqbU(Th%r&~xQ1;?;Mg=2e4w7a0-h$ww(ZN-QeGiPwlJB6vs^lz7zJo%S1$_Husa zH?po$_eEhp!yL2Lg(owQorQTYnS-S6mtY(Rd>5b)SKbeR_ytx1j$x4>oals=FI(KeXc`!|nk)>FiO# z@jIqE?i<-xV`bit{mi+s*7rsSd&#^X8TZNbd(+No*>8byzFX(`sN?Yqm+xINcSm-- zlzn!$wCvx(==Yu7Q}zd8+mB7z@4>iyk2Gu_F!ud~JyPBGz&Kw1IW7pULH}_Z2o#0? zE5Fj*PXFM3g)JvsxTq|@z5lQD(|_9ee`~$?cQ5ZwuW&Y zdvPKTsWKtSY|3Qeh2T4$xD12j#fdq2HggJ(CY)eOYUXmB!N$R4YN48$D$1$Q!X-GC zm*ALP{8E4~u&iC?lxf!#mz=^cKqtZRiSJs}%1jDH5wGN@mFe0kN>y_*k_yeOm3eWk z%*)m~^W0h`=hVuqekz&O`;VCV+>)ESC!LUE)sFZ8hrYo*d7`yr<@{p6Rh<0#!NpUi z{S_zh2-#SjHAVuY%p1b1^30^3)j|PPniw zoRh(HAI`zqd5)1exm`6VzpDm~%~v0hkK1bD1H4Wd6sw6V(=JLf2en0ARjhU{{0|xs zxrExmBNE##E>Q27Yh+LX7TexcNokIMv2wBWiKkvXJnkwF56Z_)VkGILIMP(k?e7SG zC$mZo+B#Q_dRH5=<780VpuFKT=!n<|W-@JX@scI7svjk4D@FXMBXZYg zGQ~*zBlz6!}J|TZ-8NnFVfA!FW-yX4GT!w zd@#N@wL6&Bg>$v^@fmF8xo2dZ)kh!0)W-o}EuvE&ryHg|s$lA47x-YG?us={8Rv~p zy0u4el3~0~L-rnaM5^N)81H}HcEgk{2jlX%2A!umUV9*`;=oziU%@zDx}x)jpw4!@ ztRvSWIM&{hvM(C;zOeb5ruKN`&iZ|6ibSkS6Kq%L zuE$?dfXPg#WC%e%&6Nh;3l~Jxf$dW^EH9u7v(g~Za#N55r5*V+(J>Nf+p+wZNP^M? zL=m-%gn2YjDKlDS}3Iz>^C*&=)?Nx(uJx>f0yUhsy(0L8eKM2a_RD+ zStZsiL(_ZR()waKC3nEB%w6ZJd1ixIxiojNVG-vxE|>CXEE~98y)KJmlIzqghO``C z#g_@OvVuK{39-_LSiG(L-v%giAeEKrIm!$arDHX+38f2DWy+1xKvx-OcuIi*y+n=( zRG9}8B{H*03wONHnJ5#;Vl*b96_0pI z!onVTkT#=`DyO%W)KndaDveg3S|qBcUH>FLD~AQM!W^2b%+Uq;+qk89(vCcMRUXV` zr98S8uwpkjd&1~<@(c%={hbdQe9)KyICgSEBS1%kL5;qf1|Jl?2FMtx8_gKySBISt z0p5G5AqIb%sOg{)H_-%BELhJ6-Ee1`qrkbL1NgF44^$gm&^H6l@D&#pfj)=xZq8uC zKB^GVm<4miMxs!F@(hib3%O zwjpkuQN)=B#Pu{FK61$bW7S`6gU0V8*BQwGJsj|~uXxP|pJYJAGx~`ELm%nW*m$}R zcJo2MS|C7ZY=**y%yQ#8=!DF{WP?9GLPsAZxXs)vi%BX84wKl>BsL<6@$^0ppVLS* zH4r7LNp5wN=5{2p`@HRbRQS;P{P0+Go*eT?FH? z$!OB&)hL7ibR@CmNo-{jTb0B)gtCJ z){(H~No-{jTV-OWOW9SQ?3Tp(C9w^XnC@U!eWKgERi9|Lq}5xc=7LpfE?A}Jf>mnH zoFK1KbHOS#7o@#+lK7AB8IBWu5|%EsbdAqjXo=yDG?o~tB(X4wt@-FqTHBGtmM5{5 zNi6M^j}x{!i6x7mn#4Mi*zzQ{GKr-N?c;>4PGX;EteV6yF2ozgg~Tu}B!+Pzv5%A3 zY8&ep_YjyYNyKDeASO!^G3jQ+q)S(Sa(WUI7s2XJ#2jKeFjlKMFdZ1H)f|{Eq19?G zNPBO!nhRE|xnQ*p+hDbtGZzZeHS#ny9DOT2PHd4dUbBcpdiRgP}=&90ApX;`tck0>Vx<2vVPw-tP5=OI>KFseIU96u-a=`GU{$MjL*TaE=$l+ zoQtt_;k6@9*x9<=2&VSll(L(mLwR4hExQ>Qw?ek;=3rWu&u6e5ZyNSnvDXtL5|<_% zd%eIm^XzR1ruN=LS+?yc!&VBr2^&Gx@%bRO_i`-A(DQKxSc~W5N-!<^h?MT z?6bG_%JSPExa8n0ql3V-&fFEy??1t|^UAIU<1WB1-%m{0XQk}X7~r@C-C341!MHx! zvd4g_-(RCF$A*3*gu0i+-eFidc>RY=*XikCxGmkWcQ}~Z`whx+Y}{kma$z51JE*#! zi;v&om}eKy$M3;-=w$2s2QV%BAS) zW^~6u_W}N1!ynu6CfM1Ce*u4+UUd6cPZ;?3BabvO;3yoSksyt6jK<;9j;USzvM=Jm z&2JPwZEyek_OxaA{gm7L@3Wlt+P}|7ZOdtHT9?|fw8X#C&;JuvJ{=#md*gp1H?N<| zN#knA5?StA5hmIHzF6WSH*!Qm^J0}GmoaX~Td|+{E8@Hlg8MOsSMjI!D2$Cr%=8|G z?|`A0bC1F;hRsKu_p02AU+aVS3fu<9jV68Qy#luz-TK(pur7R#35PmPT^1Oob>TCS zID~QP(uB$>)4Fs6)4I?HzfZL}7d08<9l?0aYWset9NpL)#%BqAds7YjEPU{OlS2#}F6;%vhJkUvKM|{0Kh(wU z_b&lc9|NIdJI2ZJGuuYScI*w->a}B^99?@3J1U1AXV?&_^GSwnDeOVR`h&3@!!byC z%xc>)M~=~1=f2Q!9DE7mYb&XiHbqn>p-vIqU<&HkE!EjFnC6!g~nWFE4}fnAP^nc5=SJei;U|ABEVxDLbHQX#$T)+63QluK^cbT9Fot`sy>Bdg9oplRAf6Br93 z8?-ANZ<9}=5siwL$^#R}T}?Et4r%PA#3;632vIa%NTu?bYJpuMRY!Du+9l&tx^7CN z=;E{|H43qbM*gBJDU4w}AUg_Pv>HDQMmj5vE;Z4H=ut8XmNq8Qjx<^|(NZF)rrr=; zh_0Xocv})hM{9N3gEZP?qI)NTK1p7SGbIa{;?wc7lL?jMgrxa>9s)3hu!4FH7uKGvRR3WMH3*< znqp2gt{6NOt(_u>EF`VK^{l9J5fyu(RyWWk1(0-2l$kh_``&`7Nf{@~$s!4ia=*lP za4ta8xSj4H9_@aK?_IFE6So@@y~9M=Vkz5>inH#v?5zM+$Fgr2#>XJY{(@iC-GTVz zwjsff(euh~6Cc-N8_tGXAFIGrcaN0)o*ZMaZI6L*zxgT{c45x(-D^hog!te)KzNL6 zeXKA0aN47ebslRNznx5`_kmOQD=;40yoLR`9?$Br&D)0QvCTkK&OgSTWY~PviRTTI zWj{UlfhKiRdllr>juVgFdF-2+%oR;!F(_+yT0gd z!$CghWo=)TWnPT+8w?%$<#x+*qNTxZDiSpr>_WNllf_E=}K zT@B-Qjch8|S5UvN;?E0En2@BRqvkaANrM~!S0GOFLMO$2JM+SFP>tvB(-dbn(iG1x zQY#~z6z9RCyf#FlS#eD@C#lfMgFmCxR8{>&dDUiG(Yzo^wP-mvWy)#I;uhIdLv)TL zHt~rDZPCy!sU?4%mp)Z$dx*45TbYK>)+_U(Ch z0bZGgydk7spPml%9GT`jlrBW@8ia*lVV<& zD$6A=r8YlqY(QQ%H3g>OLGmO;4}8ck&O@r|rc!^*L&}s(Q&IV(eMptk*2bwyB#HhR z?c}9=D5CGB$)Z@bD1$t#ncG@3H|&6c!Vq?p3-gdsJ9l}_vMX!m8q3-D0tX#wrE2G< zy3WN~u`MhP4Rv#i-__et4T9Ra#eOlaYlJ$vc7SHAjINnGp=R#n+PO0Il5rV<$vEOK z4m_7A4wG>tS{x?hc(yo9#+g-dn9P?U7KX{)S_<=UtktcS={;)ZK3pfaR;~7^S?4Y_ zb4yLNT2$gq*@dB29=C+qkUsUb=DDf0Qc&g8Zb9f-Gq)5htWmbWq+ss6`qjEEb7u71dRX)f%mz%e<8Rryr$qj`W&lYszIW;nH?v_(4 zI4{Z=%NFKT_s#<6vx_p$nqN@jtc!{=INOuw{H&q|A|t;Ya9)%#w!lYGJLVO&<5z_l zMb({GBO|}Ma9)&A(2jX`7Ifn59~5OgUzAZ)-PuLmKD(&8v*#C7x9~uxA$RMIWyg&4 z7Hcj{2@RNq%+Cl5OE?+nuA#72>T6AYIajk17WrOR&gra@!gfxF*G*OTrs)2PGOUQz zjmI`xb?=Fe^DbP1R>yfd)$v{XoY%UrYkY68o!44mn9ggx2*!gdJFnFR^T^8PBaid6 zUBT1`-`Bym@md(?plx07ikC#!fCjNHx8N{^hgY^POAXVy@LlzKpM}n`ZDW|$Wm_<< z3*X7k`#Wv}!?bMVL+|fc3WjOfi0M4pgI?LkZtf903&wkcS-(5c=X`(9bDoZKx82ZK zorB&HeNJ6>nZM>TUk88em%o7V#Rs-u#>t#Eb!E~05l5t(db%;_0BsvDOS1oZVc*OH zP}_fPhH3wO84S~&kxu(>u3_4L7l5gcX82$q{0*#C%4#2cXmmZL&cDFqf16k5Hgvq& z+YmY~kB7kqialK(&w*iT&{-bOdu3Ud4?M>Cb$(xPh?E^8ecuaA{qlH#eg9{$t-bo~ z(L2?xFS>c<6QrJ zV4M?WJ9r&~WBh)@+Q2yf|F|j3`>5FWeKAOPL%9#|_Zt3qfA370!)IS@D!OAaNJo3R z2f?(?|B!9i`C)vYh3(UYhH0O^4z@?&j{9|6Ql@>n9+>*z{mh(8|0>vcDXaZ=tkL}w zI<~EUYY=^_*tYGPU|&Yr6Y%$G2e_4x#+20j<%ZjYCiJ-pey+)iqsCjFHf0sJC^i*- zun6UB64I)XBR5UDGg{dHr#_`fB`xaZW|FBAF=?Bg`FKf@YOYKprpah>Ax&~8996gu2O!tM!tu-Rv?5f-o&# zGS#Ro2y7Cf5@wxEC@u7pRht`{1j{BBc^o}n3Ih#Ma-pVzI2kPzGA~I~TIejYQs^bA zNf&79H{!u}+fmiyPYgfoEt97FX&xwSK@ zv7M@YJzr~*U#@mWJ+?EV=v<<{u&q;T+oDdX=5$gO-5^<~YI8dEg8p(RRd%~rgZ#IVKb%dC0KGzUfJJ+Y1!{V$8(?^uz$sLhjU&&987iRiM=L>cvR{|E z1hUtl<6PSgxTdN;o@H6+o;K_yFpihg(RtgT&UTLAe8Y6SJPo#;=;q;<&s_c0FdZ*{ z15>|zmWlm$+ZG-}UAC3^3f6h0=)NDOx`;uye@n{#2p#8G{szX)E982tLGLtNbW@7ad~IL`4H`kKQlP~6OB9WKmG8((GN?O44K?EdEkV$38ggJo&Wrs4zA>JRdmXK##v^Z#pf0K;M9QMQ0IAy_L4nM>5ZP_`3H49aGt{NtbBx> z5YH&6>xR<-Ua$XH=7OjTq2syQHkb(F*#dQXuC}dVdaiah7-!a~({r`E4byYAd%(0V z=g7I$X5G?vvFN$g=3uIu3mxz8m}(g3jM^{g5nL&AMy&HZFy6B;Lgt6a_z_C>%Mi@_ ztS|LbA6tQ`kNw5Rbi)o6A1BJZ5A7W!J|@DLmOWB@48^?9hMtdMV5<8s@o|)4$BK_r zWiE(5I1k5mOu<}`mOWW~9E>?0&Mn#Hdx*^YuDc%>Sc~X%Y+PZOj*Tn9w0``yJeS+E zXe_2AoVq+G^GK`<-%Z1@F+%2y$aVo^|2-pfMq~@b-usvf8sypgt;`Qm$2kI0v z`nVo#xuRpMps_V&Pk{Xs>^*d->YfE_pW7{X7;`*3!N=M79`*}$O|!ZM zr-F?T-Co!*Trs9wa2nW1VaxD)2iWOgyl;s1p26R@!Ok-FUXr?0urRbPZ-TM!pB@~4 zlb(I5{ql@q+An>ufOdn%_WkaLX}^pGQyb4%)DnqlhWBCxTZj|U7>A01%o z<2dorbNhI1$+lxt!_>zVunC@zZyBaOP61ONZ^OsQmv0rEvtxYU6_?RwSRQ1zf#LsX zd#~)*0DFMlhQFd7TT^J_9UA2;XYpj3(K zo%UTE>zR+^aRQ0EfVydM2R9YsFxGqOidb=Rk0OjUfx%UGtF-0g0(FYho4%X6Rb;67 zwx#(F)}yi5?b`lZsx))3`Jp8SD>ram3icWwv;<+S_tnjLIBpE2u6lH&&ETc^cvdd1 z6ycC^-*%-Gg63dsZ?iZk72=KZ)Xltq+jq%@mXFz088w@;IE%e|e^^_Dh9Zo^&TPnh zza^G%lbI8|d;C;UimuUWD*1KZ$CJ>)0n6i*nh)ruCY;!_$IReiKsHpD;OLB@z9QD; z{0ke?uwSbkiWSh(a$7M)8LWF>*4&ddXLuA!X>LKp~r=V#R}XZLFxT zm=a5Bc&V%SWnC}7s;hWu?G;OA{NciB)2_Waur|b8{F5jSHeT`-2i8^Kq$3KM@sW7Z z-CVH(C&YDZs6vG4PvRv-Ud$>guXOctnaoivnc?WHLNe+r91E@&FDo%AOD;cq4Qbwr zNE2yW>ME*r6&-aI&-{-lrquP)Tvt)J;a`Iu%i1_`+2SSB4&5lV5lqHHxT;D}0tSYOO#`D_g(9mK#*gQE&YE-9zG_X_r>L_%%WksTOB^}H^WmVl zsH+?l@8@0Eln-6kO!dk;0NFSPmI|Qk8H{C7a<(cBG3>~Nsfw{!`A8o0w_{P2d>FOJ zgVpAot|RPDH@54zh%>N5m%CMVhl ze8;X(tdYsSE$*UPnW6Ml?hl`wDC`6o3FBV5?z*iq zqpT}dmg16gYh_kzWR`1ZHW&LWchoYwyjJGI8ky+$DM5`;oLQ++D!M#f*nMU6c420` z5*FC57V!EQmtT@+H)^Xn6l;fu%xLlT4J8bpnxVcI=O`xER-{Un9bThnOsjjH@BfqlBV=JLgb_<9O7wvLTn^%c!^Z1C+} zwY@}ZVa?8Hti4cBwtsy^SaWc|#xM#AIf{CJ%pu$LTS4k1B z3LSM-h4%gT3)B#LSq+tG)Bf5v;X>ZDum+*L*5%f~iIH}RhOGgejPhMgYZKPlXKhO1 zy+>>5Z@^lXE3IWYzUOIe!Wxv@W7?C4-o9kXlAFiwII~yna*otVtU)=aIXz{ybzqWk zTqHD#tYyErM*jV&(Q8@H=sON;QN6r!)23ZC@WO%f+AdsFY%ndCs?*q-l`B@KIm?oM z>5P}O+~@|}La-L$u*BaQ7GBHkXArF2_B#JQhWd5J$@E$Uo_h`I^!}_fUaFlEb*8e_ zU}0xuoe-_B~k;)Z=Sm(QzM-c)#@iT6dxQXse%X^ zx3D0~!JQCwW)03eq0e+?=R{8R;zY*MlpIk8@ie3En~FLmqUpMp#%3yz13K523v)_l zP-jGyOsO2up2IRIG$b?Mu6dmjshGcomPT7uQM^+-s)8Hye4E{UkWJT|{!it+cl<6? z?KGgp@_KS4p=|0?8Qd6Ty!^pwRk#y3sHT%DZ0nN`g=OQ8D4d7A&=vw0at{S{ZY#91UAqs zySve?l(Huowo1z02sYR&d#};`UCRE!u&x+S9ODCUwTRb`ZU1c#ruAD#bbEkp>**#N z9p4{Cd(**&db(qcZe8fu2bUSfX8~FE8L%C^vb;Y~>#~uQ?S++68IQl)$Mp?93pQNJ z_5MCQU~QgmW30T&RQG+bR!{eG@06)-8cq#EPj@v| zXl1I~6z@>ttsl0%-@rvLWvcrF7;mPwx?KR2sqRhym~?a{tkB9-_bo6~+tED=r^-}U z!Obe@8b@~?R&r&k>l((-UfTNY+mbTX{Tz%}o2;%cR&r&kyAX`KJga*R3qzUe_8Smi z5VpD-2Bz%)WA94*L1#i(Z2+z;AKK%Yx6xBEA&{z(-UbiqZIs-pP^i z&50M~Z*E42VZ)=V$fV_%eIFF@M_EQquy^=z1n-wQEw%;eD5-V#V+`y;fa(fRLX>{ zEeO%F7xkBU@Gt70$1aYS3$z@I7f92x8<%JCGE0=XhUn%&f#zgNnZu)-7cIasErWN_ z`o_KIvUxIO`DN^%oX4*wm9!AR? z6WMh2I~p+eM{wkjR!p+tip(qT?~?ry{#dgr&0oB_+GRs*>vPi%AuBvt zHRD2+?p3aayjG1aYstlpv~#a=%LPwG_H<;W-?ysrWQ@yHo^Y}vCO}q&ijx&4q0i4! zv<{H_snEwVWuIT9BX5nmqeH>5Oh?A*#L)vZWOOi&){H(|syyjno2kj4P?B5YgDDP= zt;$jJOfvKe^kgl0dxgo#9ZXGjRpc=pda_K-Xs9~eEihwaWbj*sW?LxYy{KC=R<)=G zB^bh7tR)LKKC+?ikeXPwMOYaQM+5df%}OGJn%J@^i=4#f<-WoP3M#M|6+!D!TH}s+ z6I8xA;Jmxy#!9O&u5RKs&%7k8heF|zJ~k=hdZCcBn%3RMW{P;ovN`IY)@_7B3>U9r z<7rdHCdC)t370i1*tj?(?V%NmFTC@Vs>LgfKzrV|Ua|OvhjQmD6?du=7Z+J7Xfh#E z%_}y`Yfx*fbm>v0QjpyRJqlffeOpzih$3HCysRp;5%tRg<(rPCpip3|aYHzxI{sP}qQ)UUvg#DR~} zbi)u#QFOW%NNQ1yVv%@pIW>xZ5#M67Ls=-YhI|H)(QZTpgB3-Lo@cGGvM4kesNQMY zpj2y<{{SHt+pOLVgn>n`NKou=2J&VYgDhN^r5V# zDr?~?s9@ZWWZasT>ie3&0yWRnR9_(a0qv=1(!3jeOd-H0sUknAh5~ayhEm1z0cvVs zBK@Gre`J$lnv^e3Xkze0S7KA<4pZhCP$5_R2ezVWl2or$0xWO0&7wd!j#K@7B2@S5 zhx3d~Pz5cb;o1QV71)KvZqOJZxGk?|2N2PS|( z;J>h$*qRDqjYDQrKP9!lnhH-e%9w>3F6ytME>}_mY$yxj}G;?%q$*rwb#uhuE*?oWHBmQD z?b-9H8oNp=yQsgc1@xA13#cIpj+zh~r}AGsrEy?Q{%;D>%)Y35T(R>!cd$~l&Mo7{YAV*J%n0hqu7X_$%%Pry*DxU`a_I^Y+j0!iz!8k>PSOo3%A zK@}*9&8ug!(aGR)%5Ly?WkuJNs9m-GC^aszG0M^$9~X&n_@4Fh>Q`PkXN+1zEuqE= z>WNAlsS-HT0Vwn;P2#u;B*LpZmNr_mON0$?X(Lj}swKSn58nCbxe<-x@VE#iwBfh; zs>~9)EP;XQw*FuUer_VP5iy)NJT55#&pGjL0_Zj(F%K%6T|%c^(oao#Ws-pB&okD% z0*PT+Z4|OggG0o5U>mwu`+4Zx4Hk8R$~&>k)kE^0mlBZds4W;GS7x zqoqVxb4!WiGfViR&j@~}g<0A-j&=N#WtR}1S=unx1 zCcYW{TIRX-tn3n*=h|qGf@TlHpgoEtyB5=U#@E2))pll`1gt$l8JD26B`Bj4lu?x8 zIh5iiC{BXXnxM2KD1`(ipP=L@#bcD>CMZsV(wd;OBq-t%5{qnNDIOuP9F_7IrML-- zlb}GS0Ah553mb$2LpY&8))GpNQanZ}Zi3<@D7=qyYPj+1EKXR2BR-?VDZCTKDLG2< zfDp&H35t`T_(O(I<}AMXmwg=nP=5FmT#VxP=@^B(6SMAdLX6@jC{BXnyAzZ0-HB0r zcVZOZofsuYHG4iGig6PZCqWVJM5Tl~QHpRUN)hfvDLJay6NCuHO;DT!MYwqC3FWVp*u*)QO#aRkQg^XaT1h>J5nm*j-*7~ zk(7u#l9HpEy$C^I+yuo*P@?V#si-@G5_LyVqV5Pvj%xOz1RvujC{BVBbH|s8x#Lq} z?)a3LJ3b{xHG44v$G8a!5ThFu&xI3H@cZXBr?r=(u#Wsg|u`(Z@-2}x+P>4Gq zMce@jaR(^G9iZf>W{(h<<0dFhftyljDauVT!#qa(f- zq@FJR@{w?}!GvfyDx7cO&*5eavxp&Uwb0{PV9FMlZZoD}gIRB(=S&NXj5BGkcw5Lg zr(#|fwo)@+ zU)Ew)gu{RhCYE8)-vfU_J*&vH6k@`$C4o`oA;nx=A%?ijl6uDNPcemrtt4jV2lpCt zL)oUp7{$0dCgyB5Gl;W@p$bFeY{2-_qYZ|*>lY)oxSqNEeL{4LU^q*SIX{-qN=#z) zMh!u^wd@mV%EXX9X59X%7-peI`eUOfWeBH06YQFBFUWz8D34-rw!Am;anpo;{45x;p8cL1OQV|jEM=JG3sN$tj zzCet+x|A2*^LL2JErM-DnsV=2P=#KsI-|y17aJg^d1zc<-9*>xsH4v7i?s8o`oDPU?j`EeD5@gMu3=;Gu&DvAv-B)rio2 zDu3H%Y!lQN2@7if)YQZovs6OO39_copy4!7a~vc~zCw?(TuR_&C!IPkDidJC6TGN~ zV$_)c+pMNW^)lZF8XI2&?{rZG!e4&3DM{t8>7-Q0e-e~Z+f-CXNre|4PEqJ(8Y2fmVmZ}~bEJj@)wf2d>LEu`Rao`-qH1SwDpBtQ0YCz#=lBr$A^J7N3MyUY3aa=F zbwsJ*?|w&7AvKhOcMwJ)0V6?m16K4PK~;xcX~OSpPE?zJ>?b9m>Q-R{<`=_uoTp+l zGZi!_s<8mH@psVLZLS@xCMd^3OS=){F*BxYh1t_+tLzWe>9B4KOqoqhR|4EJn`Xp3 zX@M!Ty^MN(Y=;R`RHO07%pAkVvSOAhk{awk=0$AjFi~4eTa+lGM~xwRZcw;H^(Zk^ zj{=m?qr$K~LqDNjH>fb41ty^j&%pqqho>wl(WMa$7k`2@){!n zd0cR$J9wuhZ=txPz1h3uGQm8NY zG)=e&FD?WnhjpWznl}u6iL-s38eUuIOI*meR~`}8J*T~$BefjxQtD25*h0KD;=F5@tdJR@ z;zdV;P>#QCD5?>3!q@tQpC%r+5^k+2TCy$BW7Mg-|ZRYia!k+M_%-Vvq95 zDZG3NugSnOjLDJ9v(zJadu+662wTk)i#R1uzMWsq6Uvo5CPsG+&!2JCJaN@j&l|=x zJa8tBM*?A2q*GKxim!8`m%bw`mWTSK^VD?^I+Z;C?I60gyf!PMilm2xXIyk1ztOH;^i-;L*8 zq8D!7RdbJcaIfVb+?P`26t|^RZM3A=v0xP{s{zprTKN6iDmTzl*~=Vac0r3*eWeOp z*GNmux5^6OOU7-F@rz!4{bD!q*r?kc@8;fP|fc-XBY z^Gu{%adLGo(8N_Wfzd)M)nb%T0l1cRDn=$6AK`1GC6iet*q?0{4p;Ir606qYW;CdQ zn_9Z#wgoSp_KUWSpVi3Qk*&1UW~#1SORP7tTFggqskH{P8fdYLvH^9xfp5pwJdh~-XX@`_6EBach?v1ta#jC6eM9NxAmCHwIHdTw}_73sbSggr( zeeV#G}IbQ%6J)u0p|uUa~3PHvgyKav<8gh~o7v&{8l9W@Zm7K^<5iB#wizr}`Ld0T_Iw3Sc zYLP3x5CXXbsE9^j=}-|V|1hB*s2&9=NC`Pyh(=`dY;mOIAHwxTN>V6KBbnpO4TPws ztQJGjz*7YYc?$I=lE~)Rd?-kk(v}_X{4}@X(&`4k80Pgi9q{tX5Rcj01gC=Q%D-BNe(B+Hz!`? zCC^OCIY~^#B%vynnF&&IijG|A3<8~sig?@}IhKbCQRPFxk%ot__JPP=!Ruz*QPWBn4eVe7lC*jF8ZUbQ0Gc zPkSK9@Sq01&najM5{g7rA}T^kwq$%&D<Q#Cq6)2Tun`(1)9Q6fzP#hfB^k87q@io;KC>vO>!9uNg&HNqT-s7ZY zoqGfhWIj-*Tg?^YIR2wrdyI5eiW2)i4mKKgXKtq!umIau42Cq|Wf* zSfz0_sIACVvrwhpnl;x0(e5j)`B3B5!`E6poRsjbBSA?e*iLpQq-v>{S>5AtTC*Km zjvYg@nm(aED;pkL7r%yT=b#PBvdOT&*fzz9Hny{4Ky5vy$P;VyC?Tm3s3nw|6i*yc zC$%;4jw(4Z`6N~plIfwuh@c_CDphOQ9U_is52H&vR-ZYN-Za$ul8rG5;1g;$iaFV= zYtXf+Yg9|w{8lNAFA?$wl`Q}x8u+2Fcy{uRb8)@wbR4vTeUymu2Flfu2H?zjhLOfvYK{}m|ImN zJ-63b&*IX^h?m(9Z>^C(WZYQzVs=-235<_luPPqN!g^I3pOtOCTUGZjCyaA^e9n0H zrd_8eW4znpt$MKWdd2<8s;9s@YNZD*k=DW=e%rJLdPdYtPi^Ak-&-`-%kcbyb^c`4 zqg%JsN{=Bg6ZO*h6X;o8`u>537K<;gSbb?ggNIOR)W0Gst2+DyNLTtuTl5B?jT6BI zeH*ZkY4NO~5;(2`iL9sB*}bZu=2a;LwM63HLPTM9iHLCIFvZ5=2+Zy<^OR$iNio}%NYuSQ z>3(cE<~b?wSY5e2A*L3yOK^3WY-FDOS!EL07m67roYY8$%q~U}Q^C=ZvP*beRVEw0?JN=*TMzUrBn;0Ny1rN0J}MbaR2EW3(b)Pbl+{bD0no!C zP<5mmXF1(b2yl9bhJI!WJ$Uj?Vo*<%NI*h;?e^e$b zp*gu0rI?^6X8@;};}i6Pnx3*9N$l=C$FJ{Sp}Z^qoOyf=?_KS-{yyHdsMTE|x^n&nHjKU#)x}+!iwXdgJ)HkXps=pBG$wlcG zQ~J78JvmLiatXUnD)jjA+)C|#IgQ>G8)riQglJA8;_^PPoP8eW9@?RC-lWg=kRF$ z%mllOqyG2+m={v$)021@SNYiN3hBtFSa)?uO1Mtr^l-gO>B{vROfE_~ETWQh=IeJ8 zcH`^4&@RwH58|a5?7&Y?v;Oo{_*UII7Di#%Kqj_9oqT$X=oez^(x{*O`zNl%$LP?f zmGmfnM=1!`bYpsUd4i_8S3}x!TKaZ z=Wp58(c6IMZv@|lFFuXXx&L~4QV+*Fk{pRo+<)Z5p5p^QE$QNkiU?ThfmH8`Q-eH= z(_xLz?W#6TAA<}Mhfx}Opo`#hns^55z!=_vILnRDog{s?91vZkhkHNY6!i81Kn&=i z{`Opy&VtSFFCAD6`vtDqkrVFo;bH7ZL-%9m#E^dC1hFJ6K_|+f!Ik(=gYd~p4$-PE zdO-uJ`7x>ld!^E>t42;f^@Y{*Z;SDH0rJg$BjEIB_z^rp=uZcalTKs-_say925j7D z7tc?dzUnaESD6hgy)b;sWxU66?Uvwj7I1eKa7PyKnOVSo-E1oufamd!liq^kThR?0 zFvt3F&IIN{BmdLHce+iS#$W}lz^KXq#%?9x>EMEcN-g%PsZJ~AgFQ0lY0;dK37o1a z!gM0XH9ov7gT7p5@Dy9^T(dQp=Y~BP(AMA)6@tB4ri%KSJ%2{D07E#W&lcd-S-|5m zfyZTVqa_2F|7e$e1w-(S<~YNUWUn~|3_md%+t`RWI5s}VkWfekCsJj^27SB#pi8HncT<#9?_D|Fnm3o zCC+bU0mCq0KZ?Tp!0o}iWCCXi-R7CV5jU<%PYpIA8Vv)uCCg9%6Px|U!Q<@V8Ngl^ zt*u!qm<8)U?`S`MfzS5fOjjcKFS)^Qi`Qs#YoN!exsLQ@Lk-MnRb)yDjg}hfaI;)# z(zsI#9U9d(hMER`ZVhz6`F>ebPfoV-1HLU&wGP(Op5lg`AFb8v z@Y0;HPdEXVwz~rU3lGj>{CpQ_yplfy+HtUe;A;qu`#bD+cxVjE0$CQ0080OCC*iW>wp z#7&mC^Po$@FLuXp=K~FK{Fi6B-IqWa+;WNG{vXf~_i>5a2b66|a8rPWxIHEA4!FI+ zA6AX}w;E`O+e_kx!UdM01UC$5h}&D@I>9Kvsu9)a0S$5cNZi}7*8T{={RL=<4>ZJ0m$*exiH{N7i9kc#42k<0yyk8U!TlU)h}%!%KE5sFI>GG;G{nu6 zxZ9wzI}+SVpdoI5iQ5t?yA#2+0u6DqB<@QNV{jKQ*1lf`8sZL+xIaNqc)yM2!J9xs z+-!+E1cJi*XcV^)Xo#C5agVk!#`|6rR|Xp5=1Sa7V;SRpDvH|~Xox#d;;x6_@xBtp z-2gPi9VBs05Io)oqPPOk5O=V|oiUyl-1mTnIDS8i=krHlz~s3T#W_Gj+yaTa0vdzoL=<-=&=7Zs z#JvjxCU5H~?meI(j-R`7yT`*o$lEZAI{|2jD@xq6&}h7EqPTTHL)@Vfw+}QLk9ia~ z1!#ynOycf<0glHqidzjd#2qeiLt)_JF^b}b0S$3SNL(j0F0XqO=K&3IM@rluVc_C* zisIe?8sd(UxcM+3abKgj1wcdGrzGx2kObU^DDDxUA?|32+Yyq0>yF~a0}XMpK>b?+k)F4rquwS>m37j{G@-`vuSt$9?De_JR(2Ho@%;G{l`M zajPIn&n39qfrdCe!$1v=gr2<`%)A&$p_>-#e#^Op$jEubOp zbcriMGJl2O4h0(Gc+9xIA47-gB)GLeL)@7Xw+nQX#RNA2Xo%yn<@&x3Nq-T+-3T8j<*5V_qh(nzDjUs0S$5INZhN?0hSQlZ-It5-d0@S97yad2yQOW z5cheByB`w!DuR0eXo%x&%Jq$cg#8-9jRqRx&X>5WAYrc|xT}GNINtVL-~U3wE+@G6 zfrhv*O57qy#1#a0BG3@WbA;>rB_!hY1os@!5cg$?+ZPh->jXCyXo%yv#P!_?33d~~ zm4Jr03nXqhB+fSpZY!W6j^`ZL_eDsYn+fhqKtr4dJbte6J4hU)@jT?TxzPAXyHL{Z zhK5EO&%?_Aw>31@N;u|YY$3Jf-3+GalD^!eP=*$zejLq0u6CjO57_D@COL)H$X!i?@wIc0T9TC2yQme z5O=l2-3NhunBcw#G{o_K$Mt;_0`x9ava325-ad7D4PP&7!Hwo@! zpds#diFD>^S+3^c@nY9IH`cNzO9(YGFGi2Jt09d!?5|0cLk0S$5Bg0Jt# z_ri->2yQLV5C<;!xLv--*!u)G0ceN=7ku2;?}uCU1a~9Q5VuC+njeH0nG;+;pdk)i z_4R#@56-#xe0dho5C^XMxL3aq-;*V{-vSMB_etEGABcH38t1t{LmX7e*LVL9;l41@ z_W;lk2UYTMqaK0pniAY-pds!7iM#4ictaDxT@5tELDhYI|67Ki#wNJ;frdC94&Kif z!C=1y!JP;+#6i`4+%F%4mqQWUb3jAf!xFdenOO4RO#kK5iCFM&k+Y0H7i6rxJJX z|6^=tg1ZlBh=V5d^=?cL4To&>iK&=B_viM##x zjO|TucK{7>kP^PWA%B4H84%o1pdk)Y!pB_zli*Z>>jWC&ekpNp{gE-3;NAur;vjW= zeTV*uu^9w+7|;+0spFq(tbH@2L7MooySxS0|A_1aprP!G68H7D;rbuJ-3T z4gN=n-YK?P;KW z0*<{V_-OFvHrgJvVIwy;S7@X;=#zD_*HtQAHTQ@I_genJeTNj!zW&>#Qfa68oBxAt zvRB*o&GoCTK9e@T{Z{8qu$u9?y@hu+*j@uWeQprcuaWlZ)ZcXt&g<9EtNYoy{^*uI#)Apug=E&`u(iI@eJ*)E)A@E z1q&>+SFN$G(i;ZP+|R+mTvsP39u47ddaD?8*Hz|B1=L@M}ynX&0;Tf zv*M!)>lbOiO!4&kh&}as-W=ruYwY=7p-||TIG+x_0cQ3$D+25#&)@54udVU+8X8Zi zpWfaX3!i@YnXkWo^X6GwNsmv>mpa%Rlvckw+|L>`GbNsNus5l}^;7mgeREgMv9hOs zn*y(zCG5?c9Ne~Qw7sfpkglM~zyA=aUpl;M zuCQ0N8e0Voyi?`7)OdURDV0WU4YubsvTox0Zo?XTNvrY-W;%1I+)Oo+eZj@vehIAA z@P5N;+NVacfr}kAQdoO6=;DYz;9~7-Un`9witUECiPXwkMS9T1ii8^@6uLO6q4%CM z)UMCC$m`V0qu9$`#3zvYL=@L=nIVZA2Nm5#G;}Rp{A}$mVJ!`o5tH(L%EjtqP`!pA zlhjeHp@G0s#RuS`JcEfgbgyzz-Cg>CixoEtqZi>S*Az(3t8tI+c^8cy7y&_WtPe6q zu?`*>U7g1cmzZde){6Cni|QWTmtEBPUQWD7RENw?Z?8>{Zk&r1r&=FyF?;jbONfT% z(=_kV6-UwDV0L7@NB2?}@%iaqeD2a)T?|%Rtt`#OTHY+onuLA8#h^;VdTkWrF8Wuy zRo$g08#-_?9CQLwZ#xLPOK)RD0A#yIf4vto8(b6e@Hvm_TdhYaeh?U)Ld4-6bJk`zR(%1O)D41vjJ{ z>0+hN_6BvV|3NG3t@qV}y4Tyq8Z76kbkXR65fB7Rdr)r|wTA5(BdW{A8U)GcD|gX2 zMeDUR!o^0N80hCWef=e;Q7#6KBvz~eM|aS07ts;>`KiZTL|4t(-0J_#2*<0=qft+f z?pr;4@~-!~SnmBUcJ+Q2TYJBYBYMA!!+O7q;jN)l8~mLM+mS37x|=5TS{L)Op?k55 zqM^&Zd3F&l!b?tj@9ZL6gs<)NUKimv=wR#3F0!k^!DkzAE?qwpb@rePfPn|S_r?uCNb7!r?0I&GARJo?@lx3Ds37c&RuS~ONp}jKA<+^F^uAAodb<_M_ z9W{3tzgSmU3%4^RrREXm-gM*L+S58`uAdb$&e@_-L(R9He#rAH z!ltO7=Fo=fC{qg(pH=!ony!cZ8L)v>ZU-|IC2OpMxg@O0(Y(CF=_4eC$x~guPjmtpBD)gCZmM>xc zwOAMV!-%gr(^%(6!&YZZ9|C(U_QFU>WXtyC>on|V;7*-z>|_91(> z+3U<_^jx#mYmF`qav&Wf7BSo`YTzI3fnt9w1n$<4P z8@^&}z^PVqOj)c@Q_X?D{GeLRp)wda2ZW`XXqJsuKh05p`EmAW-z5 zEvj-Qnpu4`J21o6PxD7qwWqYq(QqJ_>!cZctDolnwC1XE_Go|>o5ff5al--47H288 zE5=Cg=9;ax%+avY%0czhZ0ABG8g>HKsEFnouL>eAOwE<+wE6uWf7$9(qcq#4eR z^YyvDaV+z4^}CM5uh-T7I#LI_tX@|F;gaZ^HiMmA?~ddKze@aA~7IB3>gXWHZ zMrxustX#7~SxBnvDlu=tdPSqVZkk`KS8f!#>!!JGcRdP!uba=PIW?s#$!GL=)){G? zr7F#-@9M2abJ*orasDav)_z5rletkV&B>lpKh2TA;9=%y90_L=huWMSqXot?pzWdj ztj2O{51_{7c?dP?-cx9Gj6lXft7`${koKI>N7N*JwZXUB3_wD!(CVR)w0#gPvkL)~ z88wGc#tai*6lys4ibGSqAkZ`~5>UP3Bvh+74o!^#ho%C;_G=#;9vhChR&$&BO3+se zI6{T-piioNi9;nqeScpCRU>&fq?-n*fa;J*s1})k>X8(hf+Wy1WE`4`j6u_pQK$hK zftrvZ)QAkAW+Xx_kP>Qx6i_Rq54A&bs3j7hwn)|hbM6BFCDppJ@wC9qYOM`FE zS&mqIHgq*g5@ZM#UFjt-lEB9SSI3Og{UO5+>qG7I3MjL27@-!}0BXjDP$M=1H7(?# zP=nqWG#wjG zy*@Oxp9E?I)G7)RYJ)|n1vY@1u_4sh6cMPYH$$RBQT_ zpw=3fPjkRidZN_o+C$Z2l2WU>3n`)Mp+N~%27sxc>HsLA>HsLAjxttCsJd24sJd1v zsHRpbsHRpbsHRpbs5%2+WJ}gTodHT{Qdq<}sa01ig#)@;DWJMqDWJMqvDU@HXN%8d zwKU112$rYSpU~>sLmhjlHUPM|f10Z;2{LaV-338*#$k`CwtkkG0RKmw`{ z0EN2x08nU304Ox2R;(3XL}9s+BuuFlallJ65ZCJ3Lmg|Vmxhe{>e@q7(h8Kss+HCN zaj2JSKc>~Sho;+)X-!FMZZA?TFWr6=>e@pcduVzC#C%Q5RcmTRydfjZVu&x8!M zy7o}V9%>3z7y-|yH1O56hdTC9v#aQUXI6?(*B)wNAGI3#if>b7mSbUGYBls#p(xB( zD5od4fTm-lcRtjUh4h^dwQ^Nd%O+GZ39Vf9wc5GrL+$MQP&@k^>ZHdg-~!Ypt2o{k z$FY`<0&`B6ZLU4kv4^(W zLtE^j1$$`T9twTXGFTpTLrbV@4|VLJFbLQ>0Jn>5p)gw8LSeMDg+ib#p%7MED1_A( z>exg1*lOu3zYAvx<&&T#lutsIP@aEwP!EunP}d&n*hBp(%g$H-=B6FgUt8Eg{kh!^ z>UV1^sK*0f7gyIF>exfYO2EojanINaDwb?kP_bmPf{M}72I~0%u!^f|4|VLJBCJ*p zh_G5gMOdw%BCJ+W5mp!JyeF(#sL{t8>kGc4OE8J1}ej90rg}6ETFDE z)Uk(RSS=jDuv$PdtQJrVs|6IpYKD3k05jCJhdTDqAgpEwg0PyQL0HYuAgpF+5LP49 z3j$z-y7o}V9vX&~Kl7Bjg<&;9!>}5mVOWjOh<^rOy+}n2P}d&n*h3>>HB~DTRueQ5 zRueQ5RueQ5Rs+exeRSW_IJVNHS3u%WZQ!>WZQ!>WZQ!>WUN$pGk}u07PThbqFVb3hSR9aIrk9aIrk9aIrk4b)QvKm&E{ zp^iON6;_P{s<3LHs<5(l#+HC%ciBH9q^d@hG^a}W%EWudDg?X-wjQzS^^Da$dmz5d z8~0yjwd1x0FP-*_wvC@v)oN*v)OG1N)nKpkua-2=siihsT{XA*^6G2Py=nKSrfp;E z!6sbIBhboN&D+)NBs{>;Q&#(Qf8AsJqF3KI=XG16|9!wufZEwEIU2cuH9BI>a1Nz@_x^0ywwhVv#QLD-eCe`MPQU1eY)f4OC z2InwX?SYv7daW_pj*b$SaQB^uqX+-knzR^df6Jy2Kccal|`Kyi8HEvY!94yB&43O_&s zb!qSlhUI!<1p`(^U876nIy7WVWg)N{BiFf5V554VU45%Pu!3>w98Igu8n#iv1hD?SqpV-R8>Qx@QnC{J!G}9tTw*CLNbLFZ{Sf+SRL0R zm4%x2KxKQtBxFwmtSX-KXn<8^&*+KX%2-cWg>_S#G6Z!cg4Gl1YCx$RzI4?yR!>yA zQ&%F?^`yEQP$~zjJ17}-CHhw9HTsGOSRKQ9!fIO&S*>dus+2>7dthvGdc-Q!zX$3H zR@-}G)?w}AR1IENS^?@>R|7ibj*d}RdQW82ZBV14{m=B)wfS9wj{ zzT_$l41HsBbA`U*E4bPd15hRH=r;8kSId3J)wO-h)z(T zT^$h=d-H*C)$5UkaK^a!u5O!AsAu55tHXN6c1Ekds~Kf_2=2Q&uZN6hGwZt=jH`|Q zI!h*BeOH6QO1Rof9bVfXrhq=;Dxa;0tC^amabQ&fSXr;)={zg_NzmGhDvW9$a1|fK z|5DmZwvr*K0VQ)((bdMkH!8EMH3(0ID%S2-VXjtauL`kV?P}NR()SNMv{-y`#p+8B z&ik(R)`>OlYR;>oNg6BKcP?2m;cDMl1^SKHhg@xJ(p6~9sZef{*ndd`{PpVLeWEhq z(z>I!53x#D-D0s9#yRO~qrYlz9TeYH|C$vhK;Lk+$kVm=x;hk=))>`3+F$1R(_tc_BeIu$p=4!Sjc-2wOW-gvh*<^dv)wtuP66sc&t3W0#4dDl_3TwUI z)o`}z-L7usF9PLVw%+cl154{Z;%e6>S2g28w$U_HvbJffwi-p%)&*N!=%hI60avLD zwq@?BSDRd|G+I62s;$XNaXhLlybjRY$5pkf3-8>q()!m&&X4Nmf$m6Dd!MVDK?3x3 zSA$6RmV>n-s;i|xkp$>19tM7_-3+b+Y|i?StLS>Kk7^%TT5mQidV#%HN42Rhx!PAI z)~EZ<8i2d%_KoEVy4nX$19h$zi@ok!xO`>B6QB=7b?s)8G%G8dzXSQnZJFZUZJFf20XIx#`ccQwo&*bX0eaY26 zlK|JQZ0jrCYH8o;R!dj*nZasl*CtnMy<}P2WQr=hq-%NGoCU${f?9iEt*_j-T-_~o zuVORoCw2hdG$y=DsV zz{7msaFxfhFS(lfy7*p`0De^C_uV-uvh^-kBaS5xdzGt6_o9?du12F_cf7Xg+Hd!n z>j1;r7FYA_;9B19Nsn$W-&APs*S}@Jz|972zQvZUgNF^gC`-6u`nW6!RUzvETl)=gd9upo8blUsyc!@FR}= z)X~R$y5rd6j$d@*DW{%&&gaj&p!3otmtS@D(rcD2U-9)Dzje#%J4<(e@3CiIc==ba zcE9$AKfbY%&0*&^6$<$QTMSs%x^i%CNNz~eu%_X;t+v{3%Ta~4TwA_v;F#Q)!q~0H z<;HC>ZqB%4cFgTGdZ$n9e8j{76Gu#(HF3^vx!qbPH%}h9=R|k(^!)Vp8TlFg_RH^| zpH-N(<(&MS0=!Xa*@1-vha8kYIDc^A;DHNr3tueeiuq!5v463pIJ~$&Jlk`8aapl+ zXzs9KN8NnPfa8W7pFe)k32!aRFFNkT!pTEU&7GS6OzyO!K9@VY<=kz~y?b&03)?Pk zy(D)@;gZppT)bq?k|mcHt{iyf*Oun5DO}UCtZ8}Mwf$G*Rt#Nn*LBVf{cq^})@HXg z-`0QSx>fmAEq4yQb5SW@8dw@!8eb~i)pS?sJ1zGQzkk8Q`A3=_ANWMuQ~9U!&on*L z_Uu0Ea?dxvn0qPra_-lKSN7OBfj13=}XIpRkMbY z$8?TlWB!(7JMPxZcAPVsxy8wB`j9p@eb}vRj+0|^mbI}3%LcK9#U}V`hQCp)IH;Kw z;l+nVC>M*v;jhSwrw(MrWy9EE6LRc`d-Lr0D|7HSku6%1XQxftmYug?D7z5+xTNJN zw&ap#w&e0AcFo13*s`_(Y{ibv?1qh=cZUsFxjD;L4mohy*Z~JV_x_wi+UA_Fu$ap)EN*Nnj=6JS zaqjy~#rdb?iwht}ip2u_HN#&U{1uDK&e;*_*Kg5oTTeO>wzEdwz3|-PxutV&x^aun z_fObj@vhVJS8er`qp!Ja*yt6nw++AT^h2I6l~^90a)WI{)BSB1&wk*vSMm?GEy?`= zw#OI#`HWYZbNLO$V$+7ZO8Jc&=fdB{9Q-xG-O^R>ujhWr_WzG`p^88dJDnrCVvkG{5>d#J&@b@_rG8dt;u-1Juw3I zpZU)HFC7W{&!2bRdHiP(uU#;A$5pVu{-C2*{TlW+fKQ#U=XF~F`&AqO`%;N#3*YnB zW9;tpPnyN$fB4V-BY1fOTv6hC|22PbpA_0@xif&V5zeTKM*(rno!_4eP0My1Gyb|I zcQT%X@SpoH1i7F5cNzUXIPC9>{(j{!kc0Bdm9X~m_qQ^3)W*FRzYYtW(;#VHd4RDq z3wdYh){HIjH}0nhAorL5YBk?OSAsonA;!K_x^9QHAb(%M8Tt))$oCgF59@Lu&^)hT zV`DF0*tYNf3)qYnXaNv}C|$b%_B`G^;{ML>FZ_u28NNZkDJ{Hn!K#7mn%QkbmdqT@ zR?J8Vg%$+{?{$;=-lW5%{+Jc#@&SI&yU|4KXd+bg2D2) zj4C*-*R=V00kmya+Ogo=bciF9Ia$8q1{T5_+KQ+Z?|^hzIhr z$VWYY6a54}p)c`G)W3A;Jbv6ghwltKp+L4@P$TKzTXPo*eBht|QeDO_nU6Mw{F3Px zUOaP|v*fY@WHxNKee^$X9x(0wUw-X^fBNN8X~4 z`G5ckCB8NSWtmX^aLU*$QCVJZUc>#1&m4U(fbO0-`Ln!FMeO?yM$6p6VsRB8NcsP< z%b^_gk2?sef^8tjAMoP*a~EzWcX9pPKvX{;k0HJ>2V?pn1Ov$ylZOQbDGw**;$5Zq zzdyi=DEbfk1MaE3OmnE2*oc3kk&p>{?60T~`z=BsSXY;Bdu#RHau>}ajzKxx%Wj9_ z2|o5?1W^BFw?KA0{v3=0mqc`dKM3h{S*BTmB2jE z8UGizh;BvqD9iV8G!P0u>FO5&%vsh2%Qwj81p{`Rb731_=Ht-kqZIzfVx;8zDUbKG;Fbc)iHsN>kJ(vR#{a68&addUvC>f zG{QiR&Tnw$pe^b&q=>|H>Eu;aR?;wGi6SLdLnK3^uSo;dkdqoTKwC2V(mOwT_qUaQ zeQ3OoqKjG?f z)6u2~Y>L2tUj*=J0(H$koa>`awcZqgO%d1>0T}`H(CAY;$y%|~hHywcvYq0N`&;tH z`&;8X?}w+S{B3gaMSdg^0JzHsjqi+WI2RDNm+pjz2?h_II3J#Rn>e`h*3qNKjlQfj z{<6zwtR6plMqB61nLjVwI_`>gf15I;wR3%kzpbA=d-l9J@Yi|V;@s7LySXrC`sgty z%o?{n>+Cx1?Xo*?_R6_)_CP@65&S0?laYq&JM_2X~!3w)lVgcMfLpf1UISaOX@G|JQjLi~s9v z&Bgz9I{Em&PPY*M*Xgyy|9ylF9kqBt=imWb#K$G2lU zAB%7Mb$&Iz_3uO{zV@*L;OgpY<2rL>>!jCNI}2p%Y$01`E7>|7vUR#->-6Fq>mff* ziMhcRFLnC|SG?k#wG$thlKH9bpLZO(>VZY2;wdXiM;6C-9&*KHViWt8PW~Keu+1Ml zxRXDd$G7q0#UA=reCw1NF1w8C0P(@Y;m_9r;-%5I-df^nQgjGqF+XO)u&}6eNnnN_ zd~55@`xbux0DRzy?>jH{x3699Zv($Ruyfjg_|`duY@Kan>xA(kwskIzZ>^p9)FJLW zqdr9Z5Z=INp)>BqfC2ULLkyHB4nN235C1#g^tOopKe;ov-8%d~dud@wYv72TZ@SGJso??)XA}V!-fqTxYfX6!{#yOPpo1R$??Z~ zb{>#p19EVf%MBbg@Ti@S-uX*Ae`V)sd+)sq{EZqrb%z~BkN)yh;DXGcfsQkE;FPIT z{E2kRR4DqJAWR)JWsqOoOp-U-%o!+-;gfTP9Dtw~!toSGD405R&>&xSiXaUF3%Rvk}&b@CSx+_{aUhKmOnYKgK=M zO?$-iee{?=3&>^pp3||6G%VvD?F;}c|KnxUhrH+>*z7d^0b6cp)6o1-zz@y&`$9`| zOFwz}gv*3m@J&kjpkLRNH~w<|-%tJRA^U!Q$`>ZTv)5buu6Sweo10A-JXOf7nR?a# z+~4)?6Kk+M?Z&V3?fcVaE|~heA%9yt?dB)WUpL^!$EN+Z>1WrSFzct&zI*=F+dcld zpHCC=>!uyCeDt+#bDo=a?y(8wL=6OSBK0mGS{`H{mR}$Yn zZMmQOe}r=Ph8Yvyn8w=Q_xI22(|O{zx}fZDf0@Rg|3C4>zfSwtB}@OYVdFcJzFzwG zH)-b|(>7eV)1m{0zbpA0*iRb!ug?tH56ZB$?<7(Ah|zS?st>>kITIbIBO$i zq)(D`ZEF&N3w2XO!^o2wZ%}Xq!eau&sr*_&&ys(~# z!}?=A5s!9Izf=?aEb~|-xF`GL*022mdQ16zsx89-7#oo8QC`wJ0ZmieA< zSf=<|mJ8Aj+T(SL+Nb4yz>oUN<*7fLab>Wf|4}@T&!(~;o?aOrnh&(hzh^mAxbOSV z%hC4azbVDfRr$u--&E#(Ck;>eX=R?PJil@>fmLOmzqoNe|HF+R^ZMe(%M?$`6i>?( zZz`+gn`8%5`OEdC)tAQuHy)M|@V8v*Qe-{t!c%>x<(3vJC33<@WMU<(j3LQ~}!q392$5A8_M*nSXvtwL9%C{rZi2wqFyQSOA8&hLtPinsfd5i$V}j z9iq4Q zhsn>2@%y8Fr2lUFXSl5l8=lYh_V|9-{iE$g%XGa<`KI}g#&^;hG5+o<^O=_S{ifjW zBKcIlr^{LEyW?*}eeit4ByZwBa*XI-aL2;mu2?Aa?;y*~`-}Aee`bSkS>r|Z(Q;OO zjmFaXvIi8m9iy^5siKzT$P6-@PdG z<9Y?@Qr+4QJ{8aZF}DhNyx;N2IAI^Jv3CET;N$g<#hZ)q4W9#e;38pfq%`m~{#YAq z*uVeM93Kz1{k+gWP~sme2>j-k}9slWkLj5<{ zqw*Ag)Z9@e$j?Q6aDE$irxoIEKHr=q>Wk-7RQ~~A z6!M!%MtPoyH?FVIZ(QfBxmp|xY zVQ(iHzokEl=kq_G7x+Pvzx%dAAFh|Dj}-DBll<}yq8zNZBwe@L^J1Y7&zBaE^V99f z{p8;j1Rl?Sc4hJMdUCzttaF9`1Em9t$oxRdw_XtUX9}6me)pKDAD+)V_HR+f=dZKQ zcaPpG@)56x(DpHvzx2oW_|S2s@MmXPUn+mmBEjEL!#|Daqw@QZ>qV4L^;3T+{~ThE zjz6X{jUO$adcUY|yR7d$WPCI6seP)SmOrvlv?u20^1K)?#g|hUqw%``g7|n;?=rP- zDpP-sx>>|?f{f>G8$=oFx5Eli-bM0T=87_252pHPnfmj+fkGbF3lm0&{)ywy_GJ9o z?Vo~=^E1_N8o#OipNtjuaXh2?Xqn1WzNt**R}P5RpYl!mvht~ZQ#q@Cil_Q1ztLrr zKa@|))L#>y;u~GA);}tL1X&NyyHw;at}iIwRHpGT;Z1z1&s3)Ra6OIZSCntk*W37G zM~U?jo{yURqxGd_D*p|#ey3$QO<3=!J$gTQ<2_>h$NN|Bd7_N#OKRwdjUqpB{=)M( z#BEa&^E00RZA;GATS@sxWow7lETggoBgr0a*%$o)oI?!QvBH=d6)d%_-G z-=XDwMhbg){y?v1UePZ2cs*$OZK90V*QmZ)mtWsp)CbRZOzm?zxn8l5l;1m2_>cMi z*{ekvpTGX@--NwAWry5U-V_g>3iZkd`h3%ozZUt3_lvTY={#~0xjuL?x!y{@zmhfI zJDwK);&^2$uQ^=g6W))e_6B@U=)?8ujpTY2<@Y1~+hm{eseKv`il^nrZx!{y@s{#U zW!fGTPyM6(tmR9N67vDxPdj6%Sf9HxalS{M2iQQak5c}2yfu_jh8>ZjVR;#<{fhXWX|iN{nhGN3{Pf zAkWWHd0Iw&xTpP}_7}wAp6a7`TBhwq`KEGKdHTFfR{eL7^EGOJ{|n>mcN)K}Wg1T^ zPx;iJd-@4~HkS=V<+GMQdXMN2_sC>Q4 z)W2%&(e|PGsJ%^P(f+#iJG~z8!cH?6@@s_G4S)R!zF&9!*5~s5w^+#^s5h>R&o8@v zL+IZ{_6J(-N7lzfPZoHb&o}mX8}!7~LP zug6k7@OrKi_>s$m8|u z%gK7;QF8rfC-S`c5APQ8INs8HrRBE?{!KFf&nESqu|Vj@``b5fBg(k`fAm+P{qg*^ ziXlE`3LVm9J)%Bas9gEWy0Q0GQPAwn98(&Z?j7H8>}x$JZS$uhxCu% zlKK_?9MAtBll&Y{@@*lh&!eQhKSjo${~_&9#}`_r{?YnVe{XzS#24q|7UJ)PiC`KP`d@9%iOSawggl8kq!kmucAD?jB!@jm2)?})NEzlXQ^ zo+sLGpj0@GJkPdi{Uh>6xBmHWj}QI+TdnK+@ueca@p{NgG9IiY-{-8h{Op(F^Y2hU%l`tp3#-->)2RuXhd+Wn51VA@h-`TzFgLizD;lj(3GV zd_I|$U(1R7!Sky*UlDkmfA1jtllB*U>~HH25%xw%dxy`D`%kYA-bn7p(DIY>id_NmKAMKZK_<>UY8mZs;-or|MApiQ0s^WJ%^QclDehkCkys1A<<#!xWt_wd< zdcqUIAwR(O35Xg#`mgg3>rx;F|}X4 z`Iw*Hi|YDe`;|5I-^3RUT(9^%gyY8}>i%uwWBa(n(%ZLQd{h50@zMYCaJBy@%lPQ> z7yDn=;KzcgFgib)`qw&x{+F?RUQqjo{<~ZCO}=gWbls9ZepbpiwGYNuH-DM<*naK@ z>h;?VvVGkx)a_R-ALCn|rnYbL-hm|` z>+*k{jIZwe0_D4xJffWckgwB^{7U_^jgQGcQ~XSPlYU+OO#Ykr7(ZQnZRJh%)9E+a zN4_aOCceqON#4Y-RKIO}P4-RvO8vw5o8(RHZ}Lx<-zNK}_&q7dpRPB5k~+Sa?3?^I z#Ye~Yq-@Mi7>#yF<*VP~MqvJ~T{9+q_UHh%JTtDdi zTPo$f4eIt;Bl+dutJim!-#U4$ziEA=^AGPw>GYfYH{~bt-EGtJPZxibuQy*8pDx)x z-9`2N1@uoR-&^<{SF8I6-t{q^AM50?ew+B}_|_^uy8OcNzg&Dgb^bH;A5;6A>FbBTIy0d@N#zq?b-XTto(?rYP>7oGp6{8)$j zHTTCc{<{3d@kh7*?3V4Li$B)C>t1#Jk>4>+&G)4K?wiznlmDo{Yld1L*I&*&_4vAp zFZ;))_$cS!P5IHc^TT%hbUvDXf3IshH6O=coxCf@=Z>$W&tF~B)A_pjVGX==h;KT+ zss7cDEWs zKDzd|mG8Jty}o!;+Gl5%u`2#PCre$DubaQoKU03`;*0VozV80m8tI?z`idz&CV7mH z`!V(P4b%Dv>!*v4$v<2DJ#~I(^50Z{|f1JbXr>f(#~KkR&6d@(*Iex>ol z{OD>{k1uGyTK%T+vr_%l`e%~I_;mME#|Qbk`kDA9`^Y!lKQZM;rF>ieP5znM*Cemw zcj5SRm3sbmaDLRx?tgYQD+7 zhxs#8{d~-2hWNEezV7@0<747GGu8JGgZka5uAi-bUHb(3SEuXO$#=`^ue$X)_P>t( z)cJ>eccZ%gruaKD{_Xx2iO#W?>7Xf6O;)g?pzsK=oQ~t>O(2O6Z{&R!upItkv=Z{VCtuDSF_W0ra zqFcXXepbuZ&A+Dn-ozLAt?U0i9iKPl_@ujjZ}Jc2yI*{=qWQz5|G%A&{ZqI8=$7r{ zHmld?CV3nmb^Raty6acSuUcMn|Eo*Zuj9+=^T&0VpQh_0n)%t}f3^9A`gP+Y`tQ9~ z+4%#uzwZ3O!T21ezJBzc!f|t^$A`59>V^oc|H*Bo7%Th zewQJBs||cpe8)+7Zx{9T2a~+1{%g=b&G%Pcmi&$->g$6i8{}>EYoA|~`gQ%sR6i4c zoz$<(zjmyjrhjxue#hnN_*C0Iru;Ga|EBb>t66>h7Wr;JH6P?*#3W0=O^md)gSpf z|1qe#_+tKd8}du1-(=s!@51_Po^M9~bmL34e3N~X|0eq;c@w`{{p)0Wb>pW=zjb^x z_h(J@t2f_NKje43t3JQ1w}184Z>nFt_ysxeW}k7`K*Ux8c<)g^6L!! z1NH01UyPq_d@{+`oBy7CepYvX+2nthjE|$azm4tVjV~+P$0U#T*$wLTMOoTsn)A~q zk*`_*nfN&W>gG3-Jhq=s9{J_JsnGs3;S9*S9@*m@?yFY{R(T$I_n*U7gqqC3x>(+1RfA>A=`NJe% zHuQfJ|2-*R9`K-Y{n#z}ruB`k{#d`B;s^1&MLoYFU-x`C@^$T3Eg$3KPEfbMY5ZA- z?XS5%`7*X|KlS-Fwm%!HUf=X~ek-m&HS4!-S%2OAKjiE3yIMZBZ>9NfvTxFl`Jo%1 zP4d<9tM$L$_VN7EJ)pAr)l|P~<8RV$^4~R_Uz*};vTx$A!SPAcKTY;c{4VU@$E1(% z9V69z93Q=JsM{a)>((D8KKkFS$uE?5wpIIw{EiMae+_;=TXX&1BtK8e>&8EmJg%?Y z&C=u7^+mP+-PnGb?}x3EeBJnk_Swnm>ysw^$k)~1#J^1XSKeKHe$X!Y-apm#?~?pV z^9$v5>z6fBf7ku$?;m6Rbn~Mr{-*k2|I*$6)7g(LMxl@+1T3$Y^>hEBzP^U~b?uAt zrun)1J8J#&quybyC0g6ZQJfw*HmIrvu+_^-1;m675%d zeueTn|IWnvpQG-doA@F?ULTFm;j(>o_or}v(D6;}-y!vPO;_h{7xFdNAJ<8~?)$Z- z@nH?tPxJm&wBK>AdVWFuy7Aq_?~wL8u2nxDVdA6yO2=P}pKg3zkMXV3`m)~kF+N>C ztnB+aD6flewS1gkx|-C_51aVdKJGu&^C$9kQ6 zUw=csF21JvnfTa#y73v8z0Mr<`fs%%{z3c9DWfWXkLzcQZ`rWE?AStWzuxgN>33wU zbob9O{<{1{zAisa_D%AQ;&;zd&(9d2^1s#n*W@4ON5>=T{%4Y}6<=3Blm14vpDDk( zzpI}AaQv&3--Z2uPxboG6rXDOw(+f3`(gatf2rfUPR6IF){kYJ-!%89mtW#h|xGCn$aPx3oj)Yq>rL%!zz*PD{>J*b|)g7|zvz5X-V zH}#)t<suzi zZheCKb$nC(O?;F7YWWzy^5@HPB`0>cK3#|Tq3Pc^e(3IBWBtnCSLc^WzFI!U$JD;n z@^$Tx@zwplc;MgU^z$EA!$*0OeRq#^{pCsNd|m&>@m=@()SLLC1NGMUjF26@`v>av z8|JUB{W1T#?pNoJiN8*cFWvj4pWo>8cS-q5`6mC6uj^ld|C;w#n&g+F|3&rqYl=Ve zyEO79`}Ov}EbGUHtIv;3{?(fwT)#R@9shds9WmW9uR{Aczv|?rdaZsFALHNguQEdY zJ+2Qh|J=RQ{U7uV-H&L6t(PoTVMeA4w_te^XU!T%%G^~d;EdVRj${$u?rtv||l zJf7Zvb@4;_O8KVvR2zSje`sH~eyf&`_I2%J(vR|{_Ni9CP9E*+__qF=@BshQZ&8nLCV3Cn zFW0M|?=Z)K}xw(kS#>s$Yyy)S{kV(R~&3a#p9 zNktj5l$1-PghtvaH(LwUwC}knvXnuT$964|Y?GuAuC*kYR#9>v9{OgTtYy6)`=&V2jI^E|)5@2l?Te$MB-Kim17GiT=BI|KdRvT*%Ta`-eQn-x~d}udBZmjCX2=*BA0@X~r*z zKjQh;mL|V}evRB`|8)C5%s*fAe1yP1&HdYplEc0(zF_<` z>sOS2kedy{{SWfLCEWigxy$Q=?S|J6j$iJ;@cM^--Ta-$`PJc3zor*{{Em`GPD^$Kw3!>I37qv+=>cF)#f4Wyp{BYsvFpH~vxnVSL?-!`C0I z56+12@de&$6TW`{-mM>=f5fNDFYr41kVomaP7L>Na>V>Xe7gDH(4fDa&3{z{&eyv|Dy0^l_URA@ms%#kAIYX zpYx+z-=gq2%&&;+^OhApKc`06NB(v55B9C$C9hxZVd3?I{Oam6N?z9dA%0!`A->4{ z$F}hCNB*ooN|t*O@~HJgH$JehlV|w+S|^{3`ij^enTx~gD{A~Q(66aq;C0s*qU2HW zN1Y#|zI5kDkn8rB@K0CY@Gok7b@C|vQF7SVeg08aIrfJ;d;Wm+PxtwV$MvK8eOpxg zIp8(l|L|F^8{fdcLE-Bk@VfOK`PGf@u9hQy-TGEm|D)EA1fM^9t4hAUrOQv$_(sW* zU-RYg^{cG$&*S>pRpTGj-|6A!w{hjV;~(;)%YRwrxc;d-{zU1I8lSl1uZypC#Q8^% zU(NGDGCcnF72(&%qvDH_N5v1kcS?ADN6k;*b@_>FUx$yt>)m^`h z(vS7o>H8W~NecgvA6N7H=_q`Zebk3j6kdP$e$~#7Pi(wqe1iE^Kiog~Z*>TtpE$mG z8hMWE&v_&K^IPb5HTFHmTi1G_;|KrU^TXFK=+~{U|7p3)@!7fX^MA;7^$GutH%rd1 z)ih#!HS(aoyM&KF)=zt7`1%>hSB1+_KTa;(e~hp7c=-4NZ#FJDKEF>m9`RY7!sCmQ zWB%!m50LBbzW}-J`RIZClkoim{L`%;m^8ZkPXzdT!spj!96!d)gDOeOF&Fsvbol)n zf!FOnqU0Xdk4M7e-_>%=FHbYSg8X$1uOIB6-D=^VFXa$lDtvyxzO_1hegyV4ums`XTo;`NR6?9}!+Z7(b&``2Gy}a}F&zKf3Y9`MGZWf&W(d@c3Zg zK0Mq$a#(+Bg|8pbZyy||Dxnk>vLJ< z@Za#m{YU+J&+pvvC5`oU-|+L}DE~3PJk9Y9{_Er`*uHN4$NbREuONQS^G|~Di;x># z!q=a`|3tVv@K1AmLwr`F@bL@sH!Hlp1O0b;2vyQ@%)vibGe4rnPbY`5N!2c*w+RbP zlB)K-uHoxfaD4t}`0*L}(TzXiGc?Di*%8N=DEr8-JIO0CK3#r+*ByVN(62SY2?tan}06wn(G75Zw`;BZ_V*9upc2emWIa<{LadQ z`k5YHAOC5&ZvJ9^mQ{}YS&xLrAFQvM>nBn2vikQoo+hAffA)8Nc5Qw#y#AS*&lei< zQAKxsAM-;e$NclxgkS%{`lI`N1?#gty5#Qars`BRjC*k9<5Us3q~b~(mZ z_xuaghkZu)@gMQ&@`L?}H9q|MQj{F}ceZ{yM$DhG>W{+bcz)}?-(g4iSHyT{Y03K^ zU4G_aeVGxS|FZfYU`|Q0}&BTHA>m9Iv-8!`&`tGuYQ%*nR+D9&Uxzl}@-P6A3 zHzOLie5PGP^W3!??`*PeFhvol-{FnwkIJin)H|=srfRBy`FH2g_Xl><$W?r8?uYBg z*arhX^s!a)Z9Q&qyOI4W%wK#t@l^p(=xC+CBHn>L{GpQdeRoNreO1B753iI>HB|xg z?gGls?i%@$2zkB5CF9F^h4P7O$lpCR_WslI{BrUa(^+-%Kkc9Dk6OPc-A4YG=Z=Ri zEzEzXhlsDh^1ELsl$X4Ilq=`HLccdR=hAh*N%wy6lu%_Je1_C$F4D;BliXcGa;H0e z?se-vOHLHPO!Gp#{SKY?UGma^FNHkyQhPxR;8nTz49nR+`$^J&cE?&X1K+5e(fu5M_2l=Z{`0I}PWR?&( zugGBt{I?Dy`Fm@QsVn5E`Gs=BB>7_tC*C9Ec4L;aeQOQX|H&IhULfSj){_JY^m~lo z=ck+$xZkvsa@3D`5b58~xLD@Lnbx%cZ#N?O;*~`Y2|@1LD+}b#5hTa>7KDz;3*E;^}Wut|_d4uHUa>DtI`MTHG-Q@u`{oK<9cu>ZyVR5Xq^^6)@yj%tT_E?H5&psrPfB^>YgvXteYnSx zylBu@ax0U3ps;?8o)pK#2VPkx6r1}?Hw>)r&KFdF*$>~$2zhR-D@dT#&H*@oih4KM3J`Ltfk~{DGyB(z*^TX&s_^KZ^sV)T0afR!n(~;zhZk$kG$g^|L z6C|*23?=^_*s}XxqCG!7GvbqAnfsvi;aXx!r~2D{I|!f{?q1w-+S9n_bzz z5x3tZ+Wp2P$MMe@M)rpeI(WU1=b9Gcts%5NKR)p^d06eK2i^5{kQ{IO=sWx&Avw{-0?XfHp~GR5{0}w`PX5$tK^%^sc9)keRxykv@jN} z`QdXR@amI&#BaYu`=b+XY%k?j3-)g%`S0~4{jYs+TkYGY512dHuHs5&oGy zYaAftc9!$Q{+o9Z{*vAm#t3Cmt=FzxD`{uN?H-Wm0};;r#Vk{~h!8lLO|}Z5QGcpDKZNBxe$Ghp?_VSC`&#JD_brqgSCAh?kKG`@K$PlS zD0f(1?bErx3w-vpLb*GN^f&w9ZCXE$C_Mg{y=i=A&DgYuwBMfP9KSn&;vaQh^^}nN zXR@5f*S>_tr}=a3juCRBSD}9Y03-a&t zn^&klGUM;xQ?zIO(*+6gZ+j#kU%TNcqTT(HXW_{^6YM11ToyT)b3nC z_FJDhy`OAv)1g4_vwZ%eZ_B`vrxwbsD+&MNC)fT%05fe1LZj2{< zw>HzH{~q*new}~N_@ow;uO$7u;#TsH>&K#H&uHJ{B$+sGJ?qE%Q2!;_zw`2*ABs2W z_QMMC2a^28kIJ7U1XhPax&Jz?pKp!qDbHWbXX*HF^7)tN)A;W`>cO!RKaox&g89k% zr!=|dWFdE}o+C&we$L5se17VKyJRB#xrKPcB>!fOdB2swIj%g62YB;g@^6OQ@?EL- z5R${b&G;I#7M>>L)|^7Q`Qu{IZ2Z1|IXOPgw?iZky!9@P&t2(-2MK}u9m&mwR6pia zqEFm!uNCs-%7KCe_3gYz{%veCO)kv#=0g2G+ux_lTv^E3!}}NDz4fI3xEa^|Aq3V@ zio7-DZ`NL8Xnk&?$T|MT^Y4)RJ6FNmGs(X$?-t4U-A09YYXjN;^?|n!5%!&Aq1@fL zSTq~ATz11fg610+%8f@z|KW2_J50#kqMm{T`Egl(>hE*p0Y1N`Q0^Q=<3IlAOFk92 zn9P++lh8&O>$=c&k0j=TZFTvt<9F^`A79 z^1-(Y666=pbwB0RK@w=5Je}k(6CTgyzN+e#U4_7Z>@Y$Z+3d&8X?G@{!oG3 zWBd13Xe&1sepi;We(xu;^VXDMa$$EWliXZD?e2?2PhGV6T&cME!;%DY?swM04V#3( zSuRf_g7}PQY5X2~ZOIxb?@%bmbGx2Br1OtLZl@m<#4!2#n)eIYzijx;a$(M#&-)ja z8+>2=e|>UzeSz~+g>wJb#iH3*+3-}k@TGec%I(hN-!tX5-6s0w&LKJK8~4qBtnt+2 zh1@%!Q10AA^-*ilq;*2>)+?0Tdz1giZ@sL6kQ*--o}YPJNxnLJqzpXSs=e%n`C*oX`M#sytUXsA zf6cQc- zfA2qDr1|m1=ELOt%U(=)#Ba8~mJ*Ta1U?dWrBCo&KOa zzS~pDKH~F!r~D+Qjg%2(PZ}-c>3dm@^DDk@MYh?|2_a8jS%~+Hg`(MbanA;F{v{qLlsl}y;!ksL z7X3W8Q0}vQ>Z*m;3wd^Wq1@X*`Zv}dE7!N|43@*cimwWo@%%k6R~0ndQHBx3Z~a8^ z_4#zb+d`gxgz?B<7n4G;K2o*lyevHzAw@+tK% zmJ4roFzd(pGy9i+wRJs#cRiM4{$J>cX5;uvo|kW|MXY}j)xFR9pWWk}6Ggv7Tb`ec zcNUTTYcBavUcbp*!uqj(EGGGanGehTX?}!ae-n+*m!0-FROq+bP7oxB-}#y39cB{H zf4Xq}@>#xH`^k?ATz=wNf&_T$7s9_kVN71Mr>`rNn{?V~+|#$3JicXKZ6~@JCi{=? zMUOviguFgrkD&Dx>%X-JjsJpy8~zZu)cqX<3GCy0WzOU;<^0LMc4L9u+eZF%zr&In z5o~q5i1P-&8lE?3Y$vUNNBZir6TpGz=P-?l*d% z+3c7m{Vy9c$Q+^a+rLOq4s<2rp5DBJa%!rHqoWqp#y$f{Q8RtS7d9u>gI9OuX+_j{K=88bbbt zETMXWA8MB$A0|2cQRSJfB-iObJxBJdsXz^XQ-<^fahEG!Vf)Zk4dPOGUHkT7mpF}? zKdm`x{snPpEJorZ6hz}oR`CA;zQhE?h+lqBN;7;B-=7M!>)>U^W4-lwBG^4WX)E}? zH1j$K{>D>grgHwgny<))+02{$m+4X`+mSzfzZ%cK!}kHf>y!YG@Aq1Jl6~OS`#Gq3 zfQSFqUOVSM@Ln15*4{g3-{O25MT8&9yz>t6YTV!vKk6U9A3^$NY#eoMt!~N|w6u-y3^+~+>Tg3N2#(J@tc|W-Vra~#~+ls%A!iR#l zHv*6R;r}u>T(0$9f!h{zzmEv)E5Dae^&tNNo}W(=;Faf<>?(YY^N)PNAFKzeUGVVV;Pt{@N8^`d zeg59@>L;+zpYy>!_Vci(QrNEq{~2GKdGB|sXB7t?_>_XT!Iw7wY(LLN4(a(wBOILeXG%8m?rM&NU74|v2A zxBkkChdtOYt^ecLfBgP-GV*uxa$V@M{m+UY{=+`}w_@6N*k9z^WnR4>qZ$nShy9(+ z-`{vj_|E1J^^f_6d}2J+aRdL~GJgLp{v&^-oj=I8I{z@9$hS(>{Hyr5^H*md`c%8% zqwL4UBVXumvH^Vl1bZrleTUZ@XLjNK+uNUb6$c)8#IKGY^r62>fmi*n%^jU>@%9h8 z`gOmF=l^=%Ke=DfehK?uyGp$4Z&}Wt{WaNxKi*gI?4v*OhkV9eKgx>F!~a`o|Im>0 zAGdzsFX~U#r;a;#jDK1E_t<~j9~b_Bhdq_Tev0wPcN+P)bg2p{;Qz1SGaN7K&qY3! z``Hu(znww+TKwg&s*nO6_?%)N%=HaUnqAfN%H<_vh=6Etq$oi5LGk?(bhu{fn5l4yMl|6|(^g`zHKn`$^`Z zF90ZSfX{ONk#CHLdcPJ09*lok=U)%SKGuJKM!f4^YQ323Xk2`4t{=qTg88`dBVU+5 zsy}Mpz$5?2AMBSFU$p&83gQpf@76OPcl<4a|6%u}`g580AB|VPJuv^c-sdrIKNt^> z_%VMGKX~LzrN|$y_aXoD*#EfrvW_3}W!IQ$ z3jcFT{t*w>0~H5;SL2=X9!!N&*oVLB{x9zN6Y>ST$=2fTKU17PXQL;PF6w7$y!!te zPYK)E{8`BNP98t;U8j;63bjZzX?CjE7V5`HN2P-|c^A;IGI4>Nls%KcD%y$G@!7 zANu0%-~Yx_0+H{(^GErJTR+Gbjvs&5Z|U;)pPqlg^&Y-{;_&q!|K51Ve>{H^=S#RA zWwtB%_>1)q^@94z^Lhqew-y7RR{A^O+m`P0PuPP$SP!D?m$m+JzV0t9yk2LY8ZUpa z@84gDxBiIt`GL#%^4?VNZOdlgJT%_^ZyeiqGUPA(QJ>eYjswOYpLhEo7y556j_1EN z|F^{RKh673p^kxy87{q#V{30VPA(gDwGZH zl@agk7SF!N`NMqo6+Sfh?Tv^(qvRj;8~6N8#jjv}*0#cW*7>os?eISjdxz5Jb@)A% zF?3#us)2{USU-!9k1_GqALJkBf5<<0ofELXp6!{VC|`&N*Hd;i-h%yuJZWmE!bjOh zyzsZQ{v&_JSc*T#_T%o~rgDGp<;Bv~K;K&>*B|l^d$5mqFrT90x7ohI_FU#I<#|A= z9@x*qe|~;UY5jNb`3Khz_A_z!Kd5)qAL5T&zk$CyIeul0zpVI-l7Eb!KRn*?Z?=NR z@i1=vlogNh!~DZ~;=A;H0JZMGqy8}7z~?z0^KJTlIQsv$QTT7OzgWMKf1`c8{nI$c z+c!}EVEm7XH~uNbKI&0@9=)1B_@Cza3;!{maq$>G;4yySRl9%le`nyoAp@xY4AvXI z{*L;`eAM|0JnCOvZ{y-~%KX*oQ~iK_tT(V9_kZ%6bD58O{cSV)&!GCl_t)Znf5Brs z;zvH?p1+nA4|}lhvp;d`e+Bn<`qK9mON;-r{KxUHwD!>-@#mHCD44Xx7(Y!6E zX{TnykMTqOly>~pd?ndxY1bdrTWRfk%6jp?hIbVIUFO|R@y_4N8b9)d@h|QAgZjbz zgFcL>t_V?o=np*XgWuKovihG<)-M<17xVh54sSmaZ~Vu>KCf4>9~Te%oaN7lrqfe3cfDc>h!RhyREl{(z4gKl+yzugh25 z@dF>n#Ehc62SBCy^_p3Kb6jZ zzlA4Eh5m+d%yX1G7_$RFa-DFNPMJjQP}^sS3`{SV{kB<4y}S;l+oO8NPv za{VLr=XZR)(3?oVpTqgLRWn}xuzoo$y#oJ@7v}3yC)<&~oRUA(Uu^#wkN%~_>+EAa z&;=3Ye_TBLMg8PaKTpK_{0{xG|HSpfxaSXLwU7My>@W2FRq?~#&gRd?eB;mG(@H%? zjel9~moNeuv>Y$)X8?tA5W?GAf81fuYV;f{|kihKd;nJ zY0uyB`xj>n9WT?Y54uxMcTuc%w1d-&FOoW&-aW$oK~F@DAgT z`E~qf0-rgBaqZ&ajU&l^)6b7+Ao0B!*DoI49!=kSJh|Jw5|Cdl%h+(b?7N4oK0w&_ z+Y>IubtKxt{xE(H;}@-|^tk9}{Y-V6-4d^Ujbq4utG%l}DDbJ)WIty`_|MN>b6T?h zTMm`aFG-E>DbyIbD~U=brLE0v~-9M)N+GKy#wvMjAn|%nEU_GKO>@Tp-_;m+;ET2DQ4}- zsH-%WdxU71ZPDiCxqeP2+W7N{6GXe;E-Q%PwkIl?kQd;M)`VYv%9wVdTjqSirFzH2 zpF;RwcN;cT;Qb`yKt*H7AM87fUvm9|&9Yk?!h1|Zpt1>gqYc^LzuJLKgdlwe;muS$ z{~gA!oOs1`0&g}aoX=FWh5ZHgPbK>sjve}l=$Aj0@Y%L8?K8ew^Q9jPyn7ho?8D>X zjkaWe(fgyv3w*XQ;hZDl;T^`0oBdQpfj15&oM*$(&6%>zsIaqchnr{{(&B@AJCn_KAmg82{zB4-XOcQ~d~+=pPSnoJRIv zKWVUh;~q^o`;_bS$Dh4ywCLu(ArB*l z!!!gcn}Bz^lAikpJ#@SfBvuhVzmlj9Z~aI(qZ`o~t;;_k`sV9gMvw!TY7}_DpF{XQ zSMPtZ=$bTckqEmMQ4QPx-ac}n>@w|P?^5w5QI&A{{o>&rwmGz2P}yq^i@oJaK8yWW<^FXvcS z%5A1PytRq(=M$aO@SzQ&ul0kx3}N^`5sktdy$L_(;#cMPr^`PqA&DA9qwv=2p6v2c z%?+!>8_OnKzF*0BkNx-CQvLcr*L_yt(|zdqy4hYtMO)Y(@OC@GPfnjC?dOINE-@$` z-e-J|2Isyc>|`!rJkv1SqAjrBp6nmof=;B;=MmoO9@9SK>$U1E&%dp~gv$(whqpVB z{q?Fgg-*ZBDfzS0Od?IfCJCgkmuB!RIz&pbTpN*S;#!r9rS~>p> z#=9}`b|T=z?(MVZLR~+ z7WRkw@flzHgYQ?1emS;pa2(7r_fA;BQ|HLXy<${soxZRlb?=ybWsKl4TzCD!ucjAs;7qWjv zlLoB?-sN$#WBTti{)Q26?j`Z;e?F%Fc2}~$vP12U1U|v*mpPE)5N%<97=NP=t=}CU z*i={av(6!0?(BGYpY5M^#^cQe-aeObS=J-k!v0|2Vf)y>k z{o_P?dIaIknDy^7{<#U)$m@3|+fBw@zf)wt{I?bF7xt4}zfRooXZ(W;YswG65`D@4 zT-^1u8`*#St-t5q_3y0o1kC7qaVvTK%;EY^#f;xR zll(t-%YrY29+%f|FQ$E;@zv_j+Ed^&qbPp{sAvrN3+m@Avj4=UN8b|NvOIshnDfVH z{F$pCkjKv~kAJoY`w?PWGzIq0Ci^G7eun%2)8X;A;;#RUKX!|23B4xof9$yRa}L>` z{$=lT1m45Ei5oxT-|v-|7kqQ}Q_RJ4Wt1^GLd{BQNh zakq(nY0iHtX8wJ~FW7Idy9GYO>qioK5RD;!f&K1e|GJMVzbd*pJbyAV>(}l<`1Vg7 zEAyXX`-zzLea1VDSIYX!aQt@6`0buN{wMxkOZabd{ioxOKjYt8y3!T+9NRZy?w{;l zWPi!jW95Uxlf3`R$He=LZ!^5IEF6#P--}!S=aK!D$6hg9_@CkZlOJ>Ze8wNOU!}eR zpGW=0^xr<8>@WLe#x!YvG}V7P=KAF`e)DZ#%KcZC{m;kr-|kKJ=T2L5y0GtX{*9RV z^BLdkyG!WvWA-~4Y`7? zn>6DSaq%~i{m!pmy*q^sliih^BbDwzQTt)bNO#8;oWdGxqTj~pZ zp7Dv8_RVXS2$-?;ty{JVnq&V{G4Xbvg#u=rnBGI~|C1BQ|4dx}`_uO~>fXOWuAd3^ zKNl14v;Fe-Tqdu7r^b{0R7||P+LQiY+h+V7;*H1nbX+{=f5u@`+6%nP@n<9O)-QD2 zG6oQx@bn~k{mr}Oe4)n3GL=lo3-Au(D_mWppXlb_O!yqr5U6Yd-WW*sSFYLAUkDO? z32%UE6aeoq{0{Kpr9`sRia z-eVetH|VmlG5w`Ss)@eVNWv$XM&TXCH%T{{DEgWc37=pZg*S#!{FSQQ(MR;nj3>Oq zREx*w=fep9?6gz=5Pfq;%fpb7ZbDRt_kJau`?e>$RI0U3?jOwqpA)|Fz3VE7uDJz- z%QMx$4P5^XOP`| zxsvSz?+vBnXTSY=Jt***-3XW6Js#fuC)LkA!>^PDll`6YmfKcx{t&;4Pc@;qb4-O# zVSj=Dr!JG?KIi6N7jF`OklifjAq*?pfOm#b{3GTzn=RT?6)5gB=RvfE{Q++cC;S`7 zEszr+Rf+I^<#_qC*VFhdTk(+m{KetAarcaeH;O#zUcD8+KOo;!A)Lu|80NcZga7sd z+CR2FWkYq*o+wZFBa_0Uykc0zeha(t+k$1|IcCL|0UieDzbgf zqZEd`SX}?kTU38-dL{aZZuTl#H=Orlt{)fCJl<_Y3tI5njF#3i7SRyXvI*;-F^2GC zx73pBSGvV0g0y6+QQ%?zr)eE{cDH*z6J4!tY(EuYpYhIEvft2e_lLlz&R~4kczF9l zvj3Rd{BddjJi?`zing%7z<)09eWs!<><`}`bS@`+%l#_%lKq-e-J~1Gs~`Wo6%y9=`Hk}Y zGdZP`Y9;p%xmtv?>c+#{SCJn_ zU73*s=TszIrcyk-!}i-e(^|%#t425{Q8M1+_>G&%|MKtk?JdHzD$CO_BTfF{G9O<51H0S;PW5Q_in9^O8)*W@J`VJ0W&_ky~{>Hb00I_kB4{fB|iow z585X18OEj8#l!n-|MuCRPm=Z-XMYk8Z{A1tTb+LPX%f%4^r!LgF5?^R^Hx)V&oeIb zSvrGz?eByJ$<(Z1Mus`c39=|)$e3{|Sp1*R4i8dss7BaJfVH_

$8YQ( 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 z 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 {u2 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�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 z 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

K=TZTL39!}iZt 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%0A=no-MGfu!9#htEN^UFwN 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�i?VZ!jq6q45~b;OMN#WF&hE<^Ay&0>vi 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⁢%i|{c&a``_wk8-Ct?=ZA)EMyCU7a0d<=ql2Ox2)hVyvStN@9}%0(X% zOz~qv1&ENF4VNa0;T1k+jR{2g5Mw`2DUto>4a6s10DUmBwt+J`mO^`gXEedeSR~ej z_b(Pjt9k-tX*0ost~Qj(l17C;g7|%rXh8r1VwOT|3P-4nMd8ZM))UYVwV;PjHfDGV zWJqwRs23xep|ComEsS6hI4Z=5g#`^CdWq}#sln9ROnKZ+4BRtRe%I+T%liKk zo;q!pk?t~E=sH4%beX|jMyT)mwkWA^A^$d}?=l97XLYeI^njPlN@I+}ZYUezAGJ@7 z&yAS+TOEM}d%Vy&_3tpk<&cF|!dB;BAdk*x5MCfO#p@I*;fFr%#!A=Ub)p|R#)l67 z#4<5&5NPaXbmM~2MMcRBn_kBpJ7pXK4*o_){p;3=;Z;3@q=X6SDfMBgcpAv5%M z3;62=GNQTuVFB+hL@*8!(VTx;!2ew!Lucr_3e2+$^|K1ic&N%7#WPfe7zUv5kthj z+RLx^?jA$r9cC4U64@fpm1TWeSLS8azB1D+d%&Bzg{RhsQfCEIKaslF-y$VP)?$=H zAz>r42Rj{r2EE8Q1YyWKjXFfyJ^^P^AX-^Hi0Qk;_>l-oegtGeIWhO996hPX|*$DwXiUSdyaf<18g?QUlf5U zC`7nLlF5PRC}@qvDy$;Veb7vAiU?oAv4A# z+0R2JFP@%)#jAl(=7<^PA$3kD_|Q@oQI{x=kqA4!=UmdbwsuM14t+RB-#m}N#t={m zaOwIelxF}A1W`yie>L=0(7{=PkAN1!6yKBZLtf z7`kL|gCK#Yu><%@?Fy@sk1__`W*%^}S>W9V91vVTk}SCfON=@;-x%u2g74K%1M|9) z&O=F8P9Z~GB>lusTudG`LZ+gBXBP)hGw=RgH30Trz64m?DTFM}4wc;Z~jfcL?o z0KruZQLSU>r`XaKud6j4EAiWg_Z}@zX`w%7v?QPs;NsVaGNq|1AFle@K>fP5&2k>i zLq8+@<}GzCs=L_Hw5d81e8YC8q7`eXB!QZ=+JJ@!kCv!$IU9$&v`Ndx(f8r0OWs;Ry&b^x(pTiBa&X);?ZO)6<= zvfUY#nUbvr{Df&oR)RlfEmNj?9E8~&J7tW?)5ZaTwB*iKLGFooKG^Ea>JgAzlxY4K zh3FsE#uUVx#9#w8hHwv+Pc}`Yx>tf@tOsGxiopk~(-Ipd7Tks=04ZwIxe{zyD5x|DNc7<(0{k5e&Ddz{Eci*nO4gmEjFQ5d0Flo1FhUU<*o3BaVTm^a z+kP>kcN{0{Z6oRpGzN;^)*Q4z4u7I*!9byzN&4#A#eS8PxUpe zefcT55&i&a&Te-QfOb8$uVPjh{cr+CbIgQ7KIabBxfC?Hl3&H(7Mw~TX`^t70#pRa zU5u|7Ra8P9O%b?l$IJS-7I-!)q`Z%3v^byw;P#_oC{F^+08rX8Q{ugPlk7)DsvkLj zmi3g%r#?>qni-rMtZrx83N2z%#@X(ik3Bl?6~++l2AJ4SfuT9u81ilirDXpZ0ez85 z45t*)!}H;~mkptAMQcY#uKxAi%q^WEvKbcc z&FERQ_frNnL@&1YQI0fFAWYh!fSUm`nn(<>u+QO6uUgj$vVOBqpl_)~}65yJ`R(Ys)(wBgdDYCu8sLM#k>nos7MLUN|59ko|xqHnGv? zvnCkW$-a2%?zHUw|Am$zQt#gBSGn9Z3Xi0(g~SR8vI3Xjqb1kE{j3p@5#z zxwr_Wy>+p~f8kR(`t?63{{`?I!0kW1DDMK;Pw$z283X87&p~;#<5TpDYT}ELue0H} zT#&EZgWlVMUxj>ioh0jJHSl%m*0U(T0nnf6s~4jY<*9&q07|{4qE`u-|NdjC*BVxO zgL&XvvqSb=AN@PWMu>;Snx>4_G~1obj||Th2B>?*6-N9=hVKfaUAqv(+Di3d3HS-X?Qe%a z2R{hUXS5*zO2a2hd;Zn0NyU_-Xw3h7&lN8+~V0_CO4Y(e>GY!;Z40((_2=e z*LuVhXNT>6b}d5)$0k1K$iZ-BJgLmSk}YA0%F^6?|zGtP{Ii|jz_F=#EHll zo@BJNz9ej?xd)0Q*i4yk)+WmJfS+B)lh^P-#PlZ*ZM{x!dXzW)nJ4b!>D2y%%!bM( zwI>Cv3TV8;`D9A3AZPkv!+p?!718Sb5Z0BR6!x>XS@JU$rYD`r=uy}5rl0Y|<#?1{ z6|yHRaZVEYhfUD`36T&3UJBMT49d?%PJ<=F;bAlO(nxMo;w9Pzp`flxA=5KlrVpbC@w!|?Av zmOIrW`RE3#(cue+l{7{Ni#q}(_(m$7Y~aI(>Iti{p}8qDNVjxA5EA#Ba7&u}-k9aVFdvQh&1-)R7 zprl*~bXiOHUV z1l3?*N6Ub2NU```dnnMV^229gC>%`03K}hZXV`d>;p0ujp0Bqoj5yn#q8bm*_y==i zP!j@eIk9Fs4#2QGiC=`O6=X+2A1a{U9*O|2dT2<*!0yK&_f3b4rd{+W?2UyfXyhvJID$rKqShIxh3=2bn{t{1AVh)TfiY+*N*h;8`VoF1x1K%{ z<)wfX0C&FbMw!x&RK7QRy-8=~ZNBbXNRx{8d14nLMIwc2vFLc0X_xClrrk#Was{knqmU{~$pU8WB9bdGAyWW1Sm0^&7xa@WY&=EQL(z*lI@*EqGQi0I zw;s+xnbKyJZ~Uj^TL#Ki8c)w}JxJ1tia5e`mL?dL-=Yf0Sz6NS=Pb<;LKSc(f_D*8 zBq;WQh0eej8-M-K*4n+s-5^DInC{8U>fj|E%a3g*1NS8zD;icVTU_6|+gV~yXdTmz8p7Ey_7tytlE;UeJZsFA6S{%vd>Fc3A=VyMdWaX&=~~R;mDugY_b6bZ zZetEl8W3_J{BP9D5OvMLUV#vE1^UTTTE8pXWh?625jC!9-oIzG1fT@q&g(TOQyQc4 z78Q@zjnAvTs`d29e%h12b;xdZld^&8hhct?wUr&s+KxDyj7v8$L{6o^O7J5?qZ7O1 zrq`;3V4s{}rKOmYPWd6|hx&od9e9*6iKCWwqrIvgZU=s&fy^n`&JF(qI!=JO0Jk2x zQN9`QAb`>xU2K91 zKF2=~@xaZ_!)$JB-s|jtjM1);4=-` z)nHy<8YyWh_Lp47j0$}fsc1aRpuhb(GiLJ!vjtP}P^Zww4?}vDg&YtbKTR_I36L}b z+y|LaVWES@LTo>jNDQBX+dCNhns9zXF#_Q$6zalQcw>j$q^MG~d!EGgFwIQiU@Q_R zBO@nNuKOv}Q^14ZK_2LwK*$T(*gm*(I9|>T28wpvak?4@FXz^ig|B3^44@9+(x=HN zQ)*LrYe3SWjWseC7xB@$uUtRmfspKZ6GYk-x%7&HL#?`-v2E-^ICS;GzUX?ceP<+n9*vNG?Q2pu(cye@rsO_4)li6S_TCQi#sTzZHfERK*2H6Cm9j$cF3^ zdWHd?Iw9_<^rvCgg>{A#vulh>GijH)q3F(#^{Bln>xt^)Cn*0C@Cd*iM<1h{cnxzP zfRa0})%{wIrzaGhZ@XI7Ybt-^Na)|Y6_A-ka`!$g7+*^FZC(P{Edue0$h9?lqp42 zzPJ5L*KgrhiMO+NQ|EpH6Pob9K{TbzF06hQ~ua{7!^sdU=cI;U$ z*xDrL@h=~*<%?qV#ex%140sWP2maonihw}9F!u{3pg{o%p@_gE(9yzc6#j4KHg-xpD)^p?tR-phKb^{?MBzH0LZ zyRGNS-B#NTpZ5n~4AAP0{jhOWh#;LQI>=#-m6mV?Q_NCYXSZzUg}u3cKIZL=HU%&p zpztLs^qyZ(pZR=c$PPIfcme6aCQ+{D!BTD|u za)J2T)~bH+PVT)JLALk6ecj&m1L)muZ&lcK2Ez~y9*sHX zSLm()2#*(mGXbZ8Eeq};eN1{qGYm3?YQ%u`LC;kh@#FVX>*V_uy_=&?r=q+TupZ#P z?*^19ZC3f-=+l>ubF_D|+()0p&i!C_&#OOyYCQnDH1>gZD+tu-nsGW&r7D*^$@oX4 z<=Yq44*SIlU+29XeOid}cL3i5xcHulGNlbF-y40p_%+#Xc^Nfodfgpgmq59a2^%{R z8(9>dLD1j;ZHO_MG-*Jel5~)O;t=K_Y?c4>^LWn^UFYdM364bEUSeA&v}?%WMI~otn|fn0nl}X{sTi9`b5aXDwg#bsfoFkK;z>;0 zMg2c146?nxh(Cc~O4%DydRr zl&}~$H(}c!2_T+(qY-2&tyk4U>Z6>z;Z&5*2V4)JdO$MXM7iW+=&1uJ^$e5!r}t=? zZ+u(I8E!vD%AdYoJ)E$7>5|T+h)mnDtUf!WRh9*tEkf4ft(E2hZxO}R@sn@7_b@z zCkY8@R1ZhVp%~V-&?pW?{e}J_6U-+5Lf!z}qR?758K{V*>_WsPz{I8ksDrj`l>PY? zw9h2bLYg+^lZ-YC&*J-M;&r zD;Q#ORPyB{C#W=HP~W5IJ#s1+1DC2KPWu@=0m%d|XuS&GCxC~mx6<@!MjH>93~=$C zi87@_Rlf6L$yc-vi2JhT!+gwVd%<_E#CIcDZ4$5F=O7sO{XqCMiEsvXL$v)Tz5ZkW zLPR8jY>>ifg&;eJHk}*uX3GV#ou2?ctpYPm8}=FIa6sX|`tUZJ{+-cY1T5aA@b8rJ z;M)(8{^E{&>Vd-m@Gj;D*eE@f-XIk^Y#yT;VJ&H1~36Sv@b zS0hVwn?Afqw^_c%tnD_-w3k>D_uN{k96VQjYVGch+_emu24{0uRrdGrY+Xb;t*-@P zED~Dmjd~lr5QWoxH_jMmtb*F*^gG0!`I~IY8!Yq=o6Ol2f%K08#;2kx6RH_sFN?fP+Zu|r(D8Ao3O7xp0juS>9_skLgNzEmsdi}9^mP{y<*{XgKZ7! zHwDAi^sB^!&gE0i;h{63(-%l@2#hlm#=#c`5*Gw~msY}jqllS5w8vgn8OCn3=MFkk z{Hf)9VwtyOg8{X#pCOmzY$|NZ&P5O|>>XvH^p?W(Tnf?SejXUluVP;8!;nz#}k6>5%VD%F)DzyE|-q@a{U{l$Zm*xQ%isD_edU@mU}P`U)dO{us>J9Uoa8vV?;h|`yFUrxUcM=avkttxnCp*M(IP(iRFybekaq`VM< zayBMSs~k@r_7b1GDI}hE1a)@WO_W)`hGVd|6+8Jh6TWV#+_l!-F9&cVO z>2dc_Pl@yIO_2Ok*IW6f$IA!O;~nOUP*-6)%-gugu4f`UUVOeO4>sxI=t_CV^D?U! z=U$TsZ{fzh6Xe($)9f~1;DU_WYs@yNBnaEUZnI^L>FG9gP;T*A*=^2p$!tcD?Fabo z$Itf>Y~eH{$+F^efg)#NBw5dA&s48=NDZ<=nC+aP~|z~nTSO`n7DU;dH_U%~yzhFP zU(~zv#+0;?-j?E@S@yjd{r8!`-S|v7pIN3Lwf;LZrak>gQmuNJXCC6A-}B3vy|8t9 zIh|UsXU@|@uc--Q2quWd!|D77Jo7#ey@&Z>3}?S(k>4*vU=$rbz%7%=oFBwA5@6t27c<4=Na8=)$+Vh;_#yvQIUG*P-_kgK9eXIE0TQd5s znZU0z`tALG_m>&p?J0LUO5dFdgWP#~=!}|k+J>})4s^`6vOmn#9rV9dcrP>idl^Gpd6SOS*0ySAZ5im3>Nhw zOfVRa{^D6_%tTe0>QL1KyavTgCL78;&xW8_o2d)cPOXm&wHpUKskx;QPa38-1%~NR zoD)wPwtOtUGcGeeG_GYr|2Yr7xF)k11D-IeV+NiuQ{OKzQ=g%pFw-{yQ($v?&r@I> zmi7)R1`8oXNGOpmOW<|c2*zLzkL`NQ2&DXjSq3XQhb4p9M3%EzARfd%b1Ydv6>H!g zvv^1tt3PZkX9@ze4&-)3%poOq@qk&X+%EH^f>rSv%#anBA+d=m=3ep3PM`w6YGXbr zg2@ZboV3W3$6xe$bRSqKg+U{79G74www-?OB9z_+z6<6{i6Mn4YO#|;6n+ulXXt6* zSDP6UsH762If>^Iel(l9Gw~jui&$7h$TKDAo_|1jD+`@EX(THq-9(66!YBGlcl6HX^~Ya0xn{4v)}b_&p68 zEl`jyC}MY2h*<_v^**(H8=yagsbKerMz=CB^Xv_O_#SR-=jjJ4XjXW(Mt`ox`P9-s zvy6voxUVq+DFyK=_$dU3spl6mUK$98eQ+|7f&JBCd4l~f9Y}}=({5N4--+V>82QTzm7s6Y=qrxGJ31d$ z94_&J{8T6E3XI~y5<@SI48qkq5Kotn+IoZR4_ndBlLRLO{V!iuI|T5QKi3~RLRoE4 zIIDdxBKyNtU{saDLC-{_hj<8JRRiWFA=T^Ip z;7%k*Bd*B>E0`j5IDFzdKG6jSe5Sk2!^J9Aa%TNGuf*#NS1-qf|M-Zkc!VjKyBWLl zS+SJ&$8J6(H+G{$vysdKlVQn~YeeCio+Zp?ZpBTD_dD@A1 zQ&XHVAztkd_-vzy#VlCV|GQi{i0JnW|8DHun@qRELH7D?(P*q{2m*dZkG5|ogWw(I zduEzkp73UlmHJCQ{ck?-ZM8<7{hE)yd!J5)SAG3ILD6sbrZ4j)H?h)DRd;#Qzw`1t zy!zcAO$ICxEcS{F(&OQ!1FP4?>P(KfvKAy? zmx~{~ShrEQ%-{dhDzmbtUDfMNzu`42J)0>so4sq0-lZs@c~OlgY3iwkBmc_gUZ;;Z z)6AS{9UA9~G8y*iv)*o*HG zIK6IU{%M3>GE$q$)4whc9|$>Zc>wYc-`V0_F00WmuL(RdNZ(oB$D^D78UzW6xhhtQ zbvGL}1q|{tdgf_8BI;c6s29|DYy0!4d@i(XQ!oV#^F_pQ$ygE}AO8QD8Nk2P^pBna;KF12GoKbeOH`5?479{-Dk$Itb zQ>1bm3zdX}@f44Nl^q!#GD6%ida2J}`XquP#05WF*j$pCC@xf|0`v56Boj?HdYVf{ z7M3O1xMF{DY$`KNT!*znv6G}}XLk{b8-UCR>}27PlC6NM5my?EmoR7!L$*>}kV0Nr zUfrL2#2uM^>viy;MuXji>&^B^Ho_jwM%iQ87<+tr+~E__`@o^VxLK3He@@O!Ng%*) z*`Ui2uz9LI9beej-jB_+_h+;01K4c4HGN=qPWm9TRX=dXJbdBc%>2;7%MbPP>i$BS zBaCB=c6|Z9-C-|e$J-~cMfPHL;_xNulY)mrCViNGIL(CSVGBCv@)6(8EDL@62DZXj zZm+^uPPV_pPO(pA-?hKTPP4mM`th(>W}2E(@K*QV<^P6UGC< zLV=A6OHSB~{F-&MDZFVd%dBIOHJDMQM5s6?5sKhCb&X=o4h5Lw^*}5m+MhK#lxDPQ2pix)k6bg0~;*fr z=IX23`lIu)ueld~x~1dTr3*S1%v*XQbXUPi!MW?T(kY;D?s}i|XI;DAg!L74x@p1X zLv4_!n*CUTm6g6oiGidW_Q6_XI*-B+TLI5XAAoSz)#vw*eA>W#6-#{`%q}UgS!OXJ z)*9s1&l|L)-@mNu^RLJ(gwH=a``sn$bw(oFr%!MV%GUvI1i1D3OOz?ytnz{T z#csXkN1tFX^*VF;w39klQ1GiTILffL%?xV>{!MH?sT5ZD6cuFq^oUlXd?sKGz{TeW zC{wyp7#2zXoMW7pZ)pziV+3 zANg<3oXrmHl->y?3c?vdia#Elw3XI{Oy+xR0l6?y^}%9YY;pp-RGRmwIf#{)^|Cn5=?`3 z{WN_dDdS5|HfUy8mG}(5En{xvj>S#%zFY56_?P7HKNRI-0mlId|2XtK7OCqiRPN&K z=JYH|?s0zc#}JQ&lhAV6Cj_O#m71|q(@G&F@EIbMRKH^5c8Sjuc+VpFN?KiMR%--| z0J!bB3S~;)QMvoxZmz!ib?|9j*|F@zMJtw0S+tZ)>tJbDzkK1+m5Uej_2dt^cE5v< z3D~4&*m8u=Pyiz6S}0iFgwKGD%l=8L&@!TiWjVu2Y&dJP3Sg*B?%w>!V|K{n*Ek+R zfcCss;Sapr7OhEUwef(-02lw?piJojm3O`%>Gw9JXDcq^xF^8>(Jqe=lR`8kTFeeGMsX`r&P36w1KgE5B4h3hY zVDn0_qq+}GAtG(NPqxFtvRpq5mS?pJz%YPn2XigTTL8ZTP}=c6m-*@9r<-T9< zy>cGy8S|Cpn0sgswe2QTk{=hWkt(!{)teaMB~*9|(^eckU|$se;0 zd))es{+MMy4$0QF&~z%`2`7RsU&Y}}+$pst8)3+|*|Y4h=NL57_$=6%43fvi zG#dbJ0f zyL7GYXlDZc#ySVv5j&2*QfkQ|ugBg6{{e76z-{M0sq2rc+^r8cm$mX0+W9}!OJ6J3Q!5{*8OOOzJ2cnIqA1^> z?IDTJq^jJy?}sQ~4%h;4+xa?_DczuQ7Y{d=PlFx7_Afb3KZnoCC5vd)+;GgI1&iui zmn}sQpcRWc5bJ7jyU@FaO*j;);c>$P&9pQq27~SjnnUlfQQ;G=&f#+s%AJ4}02iN= zQKs}AmAiPjxwwcA_xKBs!!L}_%;i&-wI6$;*kTC+r=YffP~+kszq>`@@dVz_)$boa zD635bOa-`jOh=j0OqILu>*nGjKHTGP0*?bbJC;Bbav(bM`k|w3Rrp+s_bgH`^(o4B zO;+;*Tzm>qrc|MF_r2X*eKimCWVe2{|I(!=uI!wHnV%;6&hyw()@d*GqFHWc+NmUr z9?IuQW@@d9C{9AmW=xYUG~H>P56f}XjrW!qz$IrUtE~oH0&wxG&Stebz7IjeIQmVT7?Tc4Z-5KE%vAh`%C<07W z<#7X!>AHIl-A6D8FboyG3ib}SF?_sBAM1&^p+!D`e)g%deC27Ixu{2RvQPH2ypw=z9>^_Rk=%tU4BYj#D~jQ z<%td;pyw3T6KLjX9NOS$4?8oo&me`YrYb4}2h}gsI#e0yEYhPAuiMr8(y8E(tX2Z3 z0=RfhL7CDVmAm-3c!-PmaQ&g=39rww7;P6B;1H|f1m!_zU*khvFV#}}Hq}8}q<;6m zNCKYLW5Wc?5e3VU;aBM9RKaOLSw#8=K>QWaA4s8xI*EaGK;FxEws@v4e!Oj`tnX~C zOPw@rCCXiZvj9}z#Gjt4u3w;Xm+rc`Ti@<+9_zc0b@?I;>JEj^M|e+nT+FM>YTp7J z2XOKEHp;62rvWGpq_@9+Ylk@R_NP4I10{++&Sh{P>k3nEvb1sm^j3h#8PHKTE~ z4n8J0u3FQ|joDzk5ztzc5n>%31G*xQsqv5Zck!GwG^@=7%mKJ~9)|K!fDXW(@O>zFQQY_v8ItJR9n>+GxOJfQ#o0 zlxG9x0rrIF>;D}*KgaUy0bT69?iF24dtA{!g$Lo{ZOCd7KmtJcA{kXEQ>s(BJMP?E zT*SwgZC{t~Ufyvm+^Yz-d)dmx9deb`NP|+CNI&W<(LR867u5cEv0fl)`y?oE2qIsD zbwA=}(}7H#3ct9IQW@5awE{o*cA+((IFN7DtMFT`-kZ+ekMdstj|1HP`lP!4lFD7Y++02_ zAN={A@cZHtrM0mmIn3}+vk zvD2BM-8%F?u^C$xUa6)WUMo=kF5q;4i`N>IDQ#5we-p10KabdZ)Bh7p6_Zk zbNHxejb|7i^>}_*(sdoG&g~u%!L- z61s3Fn1QO0S9{92g=vTG4;6_$?b0ZHxs-&byvo{{a+sos-t zyc^{Q01pFPd>&QTpH{hB|87p-qx7}jJ?9*yeV-jg(|Htv ze8H{|tq?_Ri^6Bp=-l`@7v&287X#dWc8R)vrOI7A++1SwHT&5BeENFY7m($KpOx+6 zjLGRe9EoxV-~@o%E@z`m=|Yv?@P_0Y2kw_@UtQm&|9(p+SjxqV>kq&j-cGT<51z9> zu!5S)b_zApt6J~-Uy`rR`Mudg zJ%~{6$F?u;n2V@UCkbArwHjRK7;v3E&T8!g48Br6Mi-qlg7~mS(CiX=mzX*cxwy@}XB^990;XxfsKiMqw;Y5dzQ4_WcNWxb1t;_^j3rI1ZrjHCLfb z>3o%MQ-0^VAC&DWF5;u}aVclrmY@A-)!&zOoV0XRM@z?X?JF0rXobg0>hxP!h42@1 zJ^714bN`cR-`8o=xPqSsA6W33OAHN6Mrf0s6&oHz&^B%CsN%E%D;K!fMZiU#p>0^$ z9KkyV#sD^FS;&t*5rG{NuHt5qdR09Y?USpgk28F&S-H+ES!-6WGrem~zRnDa zGx+Q~Q>0yk3WVwDOM2zsVBc2sqF()i?tM|`&*}l#o$8fOuKwFlUJbYiKxtt8Pjc)3 zCtq?u;C~&Li0t>d%I{(akm})+{B)}R(QD20IVV7p#%k8W<)%}0b6Gd>P=I|1~q z%-Dhu8fKL-m}+h`;&yq4 z7!QfHrnAnhTx$+pXPzz^EwI)Mt}~adHLKQ{DBGeL(U`J)9oHV$8#v4)*RhFfn5UZs z)-Vf-Xg27PhX=gHAtz;eCR7-yNQIe>UaVJNq$k$t&RX5)6s*^Wo(FZ~h3oW+wR&Kk z9z0Js%|kE-BHen`8MAnj1cqj%Gt@rasQ@_*+RL!Q2w>aAM7Iinkw8TtL>D%4 zbkZgr#7m42-xnbsOaz{_SrI5J!o0;Ij>nref`MQ#6etZg2Rt_1?m2!RiSflfk#gD3 zjB1C1Sp-Q%KkQEg5P`xkt`r%?y6B@uu^m8w8160PLxM(eHt7vue*{W2#a@J-=9T1q z!_&8&t!;f-_Sc>%x&AtSD&)U_0|0J+JrZR~C#rlP9T6Atv2AER>4=)=7A@;IcE!?V zr_5ZkfWih6e>aF|$%imyV8XflL@M4dCK`5XzJeSNY!Xch^<<;cq1V)0ef2(F)9C;d(4|10iDP z=4+Q4r8GgXfLItB2-rZ3O{rU;_uZ!O+lKdc@rz8$YDqvPz{Rf?WlAGezBl|%Rr-(l z!4FY>j_sH+Z(b{**18b9TM$Y%JwbYcvrV^8qfRlxQN1PI` zt+l->+woewzl*0eJ*&k4MF1Di8k8xGQ2E~Q{6_lm%1*?RY+unK7?KVmzMt#Kzxawh zIsBT!A9%U=e~hxRFXa6I7yo9Irvv5yC=JB_mHT#x^V-4rAIFCr0+lyj*xHVEK2o&v z6_{O&b*8=69JJ1iXuk#WMSK#5vCT^E=f)o}NAvsnpg)jZn;6yzJdj2JYoes$)D_Ta z#TMrv7NO}I=JL#oXBfV;0f%oM*jOXFz8Hun)kkrz22a z3|I}IG_am_s(Nb6YdwK)QkB%jYKg+#$^?nKN7hqF)D!gCfn%D_CvwM1?%>Anu%tDa zc?TbKr=WMdsE_rTL#W?FwG=`vQ6-960*eE`u71={5SnSG0dk0m33LQc6t&-1W3S78 z<;=|0*9|D&33v^l>dTzGANG0yR{|)lzfpacd*Ev* zh{8coBgdx7*Cb3z0bM-I)%xY>ZRW47yG^#ud|JO7%cvgbHGYvf^kVZWCbG6Std2LW z#cx>QH!W{rZPC@dFi;eG!?NGBBHE)y6I4nPIy?dJ5yldzXjkMGszRPfn+w09`{ zcN7$`_w|ks^ih%FoIR$8ABX#0_N-p}ocM$3>eS+6p>$#d^*u=oUU_8O87x8(;kEjG&X!{RP!_`s@=<)R5qUvHfFA@>eqY{<2hiDyA47~Byi zFK4)o*dI}UX{{I0zVu|gyqH2Jk`oW{`_N*D@uFY|Oq~;eIys&Jml!t8bI3lE4Jk2; zVL{9a;F*QA9>hXv(%Z8C-ajkXe=GLSY7Kzl0Jr}hfik7jRsPaZvY*zCmHfB3h>yln zNgvztx}IMk4Eb6PIdD#kl4Ml$>bs1$bk?f}-vaIHac(oUZkX~FV`UjYV^;z}8@3HP zLQ7x;iRthXn3aaTs6zZXux=d&s!D(367@x>U7``hlLn{}AnMA%7sXnN z)dKzQK5*cX1=`ybCCy7#nXs@B02gFvQHp$~S^(!O;g!rEle6)Avc5;p&eit@lz$Ak z3gFiFy(m+9S>=1H@6@+seQ)^&>ifWBSF|s7>wBC2pmDd(w&}sUMSY)bYFDZHjv6*^ zK`oomS+}fn(2s*&Y&D2_UPJXvbqmkBqMj2_NE*H8dTxe<#q^AWmo##wOO;LCngCAs zd^qR#`3i%wvQ1Prh8&g@h$DwV)vvPssO&PE)zKs%ewv$m6bWpuT5xtX8#M*uw@r&sYy4r96+BrpI}oYj?pcFUjkS zp$M{qr4Z(ADWWA-KEo%83NGdio?5>rgs=%A-$2$rgr%jS*Hd+hz8eMgF|lYwSOs{j zBFQeq@?^|sc*x(8E*=p6NY-Bu>cw&Epf#(t0uBbK`ZG>KnbNr`-^gS=H70kjzXwl| z{q<{3L%YfO4qme4*pB7P+n1d})rZx);2gKIK{qkBm7T?J5>@yB*PaknINX>3zkdN9 z0+sH7L<&7sE{KNk{joMB`S)nZctsB)k%zl93SkB@bPs9^ak!xYX#@h{5PTydSQ9t} zZv?iVevjMn+CG-`R&-FV-d3Z04qzR?t+&l6Q~H_82l7$kB0jzeep?vvl5})#2Rt9Q zV+Bde47GNgBN(e6Fhq4b<6_875HpHp$TOt|2fD>{fGv_T zF;XyEG*BzVm;#*-@?wwA8^$t|1`%DtzOak`T!|mycoNFr0h|tS@xMx4kI$3$?M=UO zTV+1+AGljr*w*8RdgUMVqlwu3F|1w7=E50azrV3(`^QkkrQDy;uvDR%C|uJXA;X85 zh1S=D7{33eE~(jo7*DVbfsSP^=F=BAc6C3&#CgE2!A{Gx|9>sxy=mHoJ0RO5Ye>^{ z@c2j@56<gM7h_;8Q&Gw!J05seWxxJOU~Cj>M! z0BYO*a9UQ$9eh!QUY){c;e6;Ks+Wo%lGUmKg8^zBnPX9&4VVX@)Ox5KFI~sWy!RnF z?`%~2P}}n6$8A~1aUIJ#Fay=kUb%e5)MXtIV9e=&+0R#~vg4Nyg}u#^_Rd8O>zFFFq}?S!##oD}1AQPZl`3*;VF35-w65v-!n$AfX=62?I! z+e*{iQ1lk+G2}YWtJlImy#YOVH>Mrxt<#YGX9wyrENT)VHxJEf^?)XTOSeX%Olh3T z_vW|ZOY0Zp_D%L$8QCGI-@*0p@-DZtgQ$t1wuuEb_}{Sb!7Qyy;jtO-=i>1p%AWxK z4RG<`heUt+~#=UaZ59%AQEj5 zmL!OEQ2|qDoS}#+HiE4qngr_Gs~fUjcc^+Dhx&5sb@Y+2s{u>|xb->}WlH<0d|Sup1zEh(bxpmhE{vo+qCSKONtKehT1xfcjnY5tMrY z#!>RFN&Cq0vaMC-AE|M)de#o{*e&0{e4;8}MJ4(A&FV%xQIp9Qb_*8@5u1hYmlvJK z*mr@Q@BhkIgb^sXM>?4 z8mu%on^o^)ThaW?u>WP4a94|{nNW-Hno@ZPhu^{`;vC+L{u1y6{83*pn6;;wUVofI zaXiK#DDfME^#kB9pTu8Big8TKe;$Ke%|sA-o10kKmOwy&)f)`c%CKz-&tmXw7D!O+ z)}R;riZq@fmzji!^@yuW3%Ci54wl1*F~h`wD>$;d>$)4Cq56>_(kV-V}sqe z(Qe*g2RGW|w9EMl4u^MZS#Uk`Se^@*_fj_NF$h)CJK3SA(mJE+Y3ALDB@IO5aEW1> zRVF*1H-4WtpU;Em^2|BRgzq>K;w1D&C_Pb#&=P~ynGvqb+S@Ccv_QSQA*$5wHG8>S z-q_}jZcTd;||d!C%DK3h&YCmw0uy zL-wLxZX3!k0frru>%SME{2U;0ti*rgroV{0?^pSPKTAKhi{F)WOl#;7*S{Wq%R4)c ztv?1~5ZhO@&*^AifJvfahkmF2h|YHCS8E_h`#L#@PfjQe6*=BA&bF9iH!wdq3eLW76s|Rb>kQ*8a=lm6Jjkih z2i2P65#Rz}{5PjB)=j7ly<Un7p4rfAT7#`x@vgQ<=Vv2h!!(ww{6hez#%MAEvG$&Xgv&I?A{hoxk z&=Z7YN%uGV9O!~P!GgFUG$9-cM5VN^0b?4y-hh)5wOjACAQwe+CvtCSdP(XH#fT8u zM!UYZMT`oFqdi8@jyob;xK1t>X?uW1nkQ^SFm8ts$uNYa7YJ<;^s)Sw&C6_^9gI7q zm+n13T{s~8+|$Wbha$WY*>6(|a&-3;lure80o-~1ER-p&Q~B*mPjH|gxUZo<(2sBJ z-(ROMLI@#vnW;aZU1)?R&@U5OXF?;&g|PCJ<^0;E6h6Ip&q?Bqq43g?)%FLp0$hCN zqD*PN${X*IdXKJrM}0L<^kt9u%!R%$2BHu6__S3%tR?6`rACFv?RdXQ>RjZwtQH3p z0bD#vQKnR`^8X8X%!W4#;Nbxt9_>_*W_aj8rAZ2pF1(*h7oS1-dBEQQE*>wVOzBOP zYfB~l8`!_{vtHd}djOAli$oWz04f#QnJ~d1=RRQZ>Tg7%2J z9-lnrlodiX2NV4HhM3c*J)#ql`7wLMa&}mc>)JI8lW|~VkYwf|FWVAhztio%g_iSP z2IjuRuA`NF13v-o8cu&E@OG4+2k?_}?KcwT698udD0QDC$K$nJuH!cL$aUOKwSPXT zwnyBThfyhrG63xg z)3~yAtlKbUMRXgRec15Af~_Cxsl(mg0M;{%?|8z&SOn~^T&DSpz~aIiq73*J0Q2ZF ztF-%!js4GmgI-gn-eT4MOW=!BoqGi3=K*g6-0|yKiZ~vCkpPjlOS;?mlFWBJBKt$< zJbA3;ul=(_mM=m`%8se+Aj(2ajp+qJUGCL)Q8e!h+CHDG(lu(GlEecMF8&HH!m;_=S#1Jf3c$sGHp-OdtK8+k++1A5M;_NPVlx+G0q%cB!{#yqo6CPV z3$)|PFtK{EVTr&O z{`ih%O^tH8&Fiyi?v{^LJQOV%+oYY zJQ>D2*Kn*X!gQt*vI%VbajyruhurZ<7hOU4pOsPo#A2eZ4^1oENAF-W-7HYs%cQjE zo=d?9(uBptXoo^)8Ua6SDa7_+h3rSp3YR))+EplT1#APj{pc?!{{!$TK=h+)Bpqf3x1WlE7%GQV8uZ7xu8K*dFT^t8)y z+cQ0H>k?5}`!78n6;-i=XCL8g2fs*v1ZcnJ{9V`PH6YGmC4YwtUV}{gV2u`mvSlUe zqfBTF!UqTRZua3d)a4t*EyN%cVIz;GGK!E_FUq6>0p(W!nX1LCGALxpsg34E=mx@x zGbTVl5ciO}drzh8ueYOKT)l!5Peu$?zV}o#bIS9OcfIc1 z$>1g8Ql?F*Ie`{*9|&SZA$X|?;l&rbJEnzTI;4dth>;IXMnYLSLL;KViV=L5e5uts2pMdO z0PP#AWc#gNo#O-li1I%H<|(=Mn~L%}z!d;W3spSw%b$|^_C0DH@cOUiIz12bR<8X} zx9J}53;cO6>+#l$&j*;uHujzKqNXQ!jM9dhWoMWZu>!c%ZvLU|ztq0X&`xOL{^3Td zVQw5jt*UI@sV`u+@`+&iS2Qp8AD4y4@qlvyg9nc>ASi?V4XE>xJR3>q#ndcKFoS5f zEhi0V<=5ilhZex_Fc%D0CxafdbsM;tTyemthN?Fsb{N{%Z%SC zBB{Qy&XFQVG7Ej-GXouA`&B zxJREDI69B3J5NU*(yqt;$T0@{1uKA~{TV-D@XGEVG$TAQT=IR!uVeg>Q`2Gki<{c% zrXS*_V*`)jwga8sQZ^L9&J&oCPR4xXK!vI>HZnfh7+vTTiL1s$UR-umD$G-! zio%9qsDSR91rIrs`RKvU5cz}(t7hm?jp0DbsTkZ4Oje)F>-eM**^&G3(W9Kv@}4TI zW?bupaA~TbVpJww8Ve0y0$Li!Z`MQlRgdTmF=4CFfe|+DFz0abEj{9-_*h=tUOmN} zT)iMXIW@XsmT8Z*!iR^arVtqu=%~gt7VEtXUg^n2!S%Ye*nE~jt(8`L*Xhn;`!CR= z7rqWYF}#aC=aGp^02{8dF)`Fh$q?-V5>pD>iWHQf1GeK2=?=)d152|Msgq-9Vn<1s zL)ac#LOHNVCj%L55My_VcABs=r58nU7Y4o&Getyn(;OMJErV!|j^$XSkXJiS&`1PK zhh%x;JA?2X>_LH1aGwnQ0P`pcYQc&SRLqN|T7&fkejQ>BJVESq!Eok_{c^uwg#cp@ zzY328CBEW9;?u;Gwma7J)~3f#S4Eu^#?8Vk!v2wnl6Ktof-m>=;aXU3SGMkkYX)Ym zd&0ITj`m2zpxWePe#ePBr7@U-k~jtRh&m78_aMl@q#I^2)IRQHDFC%g8IB!3$o>i%yA{6j%K6br-amq)Y?%#RSZ0Ccu%q@>S{UAg(X3+0V~ z9{^nXd?U(~?o)a1X33YfUZU2S;wsh_YJIRRfBfn(;IyVMT_%;NNZ0bGupEE^LG?|7 z9eRyxm+O_-Zmq(qs~ujBM}e6SdlPaw)`F8m5gs!D<_EjJzIqeGp|ze^Ytm zWLZyJr|e!|ohQlTJn%Pa9uv$YagQ6>18f6h8?m#FcYodah-uqVQIni8#thvrYk{;z zhT0K03W%YC3NiPK$|0%{0`fGiBj&XUU3y={Pe)_{WMX65t4Bdcyjt&QSs$He=K9Y= zD8CAL6X5or#96XF#;UyScM|W;Tco^Kbsz1S)sk=TY02Aqr+>Y;oO^5giiN}lZi!y6 z|2WFFM5l_+3h_Dd$5G<5KQ**xbm$d$lLg_xRH#{%8^2~&4d$O}J>^SzipUPoQ%Wnt zCTJZPfM!%8!Yi^yt0hz&Esa!1Ct-{R{H0`eCF~L*8-U{ky$}jGAd>J@6XZeA8xROj z0qg@~cxFnF@3JTi7dTH;8>Ko(uMQ#-tBHGk0lSoXV&^zn?>(r`L*c7|QsddswFb-q zxc%@vlqub&@;h22A2s?$sc#}K;-l>p*$#Q=haG~Snz^FmBwCB7x0PIG-d)1Bm88Yz z@43iE++9L_^6!qe-Z&YHN`LTN61gDoHAv#+@Oxq{L4+6w5o+taRi(GW%FjB8NV8t& z$t2;ehPI%ZV6x_zSqBc$hr=Y)ZUrAL)Sh^`{cC2=pu<2W8kCg}rq&49pz)xLerChP z1}Gs<`ix)^NQY(Xypj~zKrb+>LhGpj4HScP-pM3}IF*&v5YRz1Ym8{M;%wY-r@3H= zGngoKcBC`H$vT;`A>m-4!Kt<_d&G>lr1 zXCR2v8SEBQ75?lN9=6q)7c5nH(k=9znW?UPsH?&zLls_h&z!^5ncF?8a4A=XYurnJ zbZ@@b{e`>f67`>lnP;5$ZO%_(Kht@Z?PM@5b)dtOf*vAK@*DYH&w`EK{obDw1AUpx zGT*V=(KB>}ekK|3-LHMZa1Co{dF_$ij($u>zj3b}ukN`|htCfN7j6uDJmBi-H!pQ> z+GYO0oV>~W2m66pvB@m@foX0saSER|GS3L_LhWYbe8wlgh0f1{r2+4o2%!~8r#xlW z@csV**8NFVMO^%&f{PFHtaYXwSaCV9*gwH~TXdsion(i_5Np)K&oirsA%%nzz4j+tT&nS2AlAXe8BrG)JqTekeO#ANK^j@ ztU=^#s~fU3$MWzK5%AveV}^0xxhV!pSAM; zoO|y#FA1T4X`k`JdH1~U8+qs4@xAw)b3aGE@!4)~{38!ML2rD9n}6Zh)a)<5@m=}G zchno#GPCXt9@xgQ`u&2NJJa8IfiC{^YQ1akQg^lO+g4g>wEWzwS$X z9UW?{r<;X^1L%6)r#$cp$DEHhKg8*+56ibcwC7vz=Yw)qwXq=z-8qc!FS>QqJ#!j%u-p&HIF>|2vDl=QL89NTa14m)) zI@-vxs$ujf$3)HbU*RilbHqX?vV~9hEjOI~^lO+N-olGsWzO;8P2AkbO*}r2*|-$Z z1|>KS;4uCf_IUwsR>)kXI|-8wd63y2*i&GH0$onGzA0+j_w!2`HeR#^ti@e-EsJ0i zV^k!ZEV&B|=al9?NwEnAMY5- z!jVAKjNHPKwb|kw6LV(dCSZmU-;>+*JvjlK;jc`cf$LRRRTk=qy1|xkqBBYS6gz@U za@Z0cHt+y*|A9x)$HP^r0Yzn{sWT9u+x;UaIWyHqeBD0MAU-l7bwJUC(6lo+4sRDC zMKo??V-`A##QU-2C_AlwnRwr^scA(=PX6V_>fwz*j&vs;Zw=Z9Xi2*<8 zN2!LQ*~H~7C|tUlosPWYmon!v@rklC2INf14V)?7ct)zJ$Xj?ee!zJ+>^){Zb6Vw_ zRxg} zi2Cnf)wnM&L3ZDfybihfX7KW-m;>-Cl7K~FOFot*o@0@hkUFFmF4$aN^agX@lz#)u ztngNrdIagMi_l#P*%%}I3>ydOQV+7|8!Yewo0gCFJi}7Av7*5R=tm_Y&w3tuViMms zkY}yr)hTGBxONrp{C-}20iWrOox?|+&0A>tv@3qsd$peqHCC;Cl2 zx*+m7Lq2ipxew{_1+i;*JP->YP2N{5YeC{+mW8N%WLdQY;c8DkR{3G*NelA~7u#KaGyoD82(bcRlP!K3I3wE0WCKP|b1{4)12bjes z=uU=q$ij4u)%6q#B3DZ;zcBFUa>p8u^8x|L81~TCSC}6#iIMp~2LK%oJZ27@T3A+L zQ|!R-fToE$*~wt8*8x6GFaYyI05}eK2h0zCCsJx(5ONE>PybqtY z44mGf1zIg&LUFzry^|1G)xvE3FFJpELvJ{amgG?D6 z#Y}=yiRw!(sxjhmfAMI)jaY+^95_`LuuC|gbF0*56Is8+#`F!=$3-M4 zZeVb9;N5aFS)qMRCtJL8ZY6;y|dhZs}wjYyJ|qbEH$cxUqcAEo#Fp56f~ zi1~nSJ*Ybm=;I&K0}OTOK|S!OZa%H!3`w_tK{R`8q+XlLOWvl>0}WVy{$(8z!_Le4 z_}A$3FYBRK^uXJ?xm{0|6=3)|*?Qdcz=y={(}g?fE_~2{p~N(Y-Khue(79*W4SJwe zH%B@6*o}JL0DF+I+05Z1;q{lRID8X#d_(*%z~2M&Vv705#mP$b;m*Ht!Z7YNQ%G7T zF0tWeGB7fCD6flTBV@6t$VrLSWFn9oNTi||#@Q*m$jQqUe?}=DK&MrRhjEPYdcp_^ zKg%1;8VIk1h2JpVOyG+scS&0DFxOEWgAA=CI39xR%I3ueasb<|!=k<<-+AAs!KEQP?W&}gZN-?!to{jc5ZeK zAi?nYl;6oBCs1~5V6Ktl^g({0refunUx3y@ywJD%w&J8d(kf!`EF(v};~USjjo3h= zIN) zUMVt{TY`_S{QCCD9|SJ1G9X=VX?%(coaQzLSO_Oy)=>6G!a89(G-7&6wEVo+ko z2Y*crGpvr$_nB_((4Eip@jLZE&^g-(?I5qxg@*Z+jzuthsY&D53k{4nKIJ^bk2%(v zffJR(&Tp+`e027xYO;S=7)TUEi*l+k ziUK(W-Xc$4GFX5?yEiStf4PmrZTXn%wp^y1nIp*BJyQ5nu)@cH@N>ki21YnCl+E$c zeL0&Wbjkr*6Mk`&7s9!?LfqHwU^c;q!QP$6bFsh4#{E8tU+y|5>9fUg^1@;zpN;*1 zPA)RBABY;34|i7gopS9P!FSm)vD1iS1xLr~e8AZ-NBIFS>?3!l{56H@*En(PFvQ=- z&{lspE?kUcQB2})EF7CgDLtbV2zFNjqMOD^`%mO}S#eEiSNzh8;QtQ#1mxP~`L%MK z6sWrMUg-~M-QLqbwBlIl56Qs&O!`3(1=EBmxkmDYxGuGJm^PndtewpekD=#;ZS~(= zTkRAZQ=NkhLNUv=P6&h~v{?ySv&2q#lYA_;d)d5H&kX?2f!u1eR1lGLP>zU{vw}E3 zNt*-H%=2Q=WIK8^XcE*l78{h{5uxgO$Q$)Uf#~Pe>VGEnw*`8U8qzf1b-?@u4FI{=h|J+TLO9msGHOq_Qpaz z5h#c>hm+c7wo}S-eIaXrj4h0z+om<=$1@70T zGo`+^Ll17e+@$MEwG%-ngIs+r1yAJ?Rrgzes|SMF!p3EdOTJZyYw!0CC$s|J*)OCX ztJkOd-Fe`z2CWCVdb|%jm3CG4Tfghlw2o5f#wu;GbEkE0&b3a$xqt@AxtL+@^Do-)2+W=*Z56CGui^6~xbddKkTJBB$ z)1>1*H+n|h;EAmAgyc}K#Nr&$uDDGl5HIZK3A+GSf|vln!^mCa8SJl&070K_jy}I3 z67|5akCQ(7C?lfh&~%!Ep^rNk08^UY@%QzDOT+jV5fm)bI#R(CyBgFgt z!B8Zez$YCaob-MqP@x${mX@<+d!=qn&lkS{zY+8j$ZfBcHXhd>Cd;o41Xv9S6HFkrKbo!DgU5l;;uP(6U0vz+B$m||7-iAk%n zq3|>XIQ+llSI*9h4zaw!9rPY1TNmSZ1f0XQrrk)$p6Jfa}^u`K@f6zbrs3M@eKz+{=@=kre7D!72)D z#e4u?`sv|w_yIIARaa&mat$mjqgl{hInCim2W>=exCRZg}1 z#6cy2!QrA*Zqx}Er$R;HG30eu3I(E53&pOrn^uFlk`{nzh2r%ze{&GDDwoavCH!7Mm*5Pt^K20Zcjd<@I7 z1ir&D1|!@R-w?(gOax0H0y=;rRuuJw$0YVTUVSn`RSccXB4i%H6D-vt09YHyMgpUC zWGdi68VVpToCJVttXTYE9tgmEfxkrn&*P0;C)VqCV(%x8uwqQpfw*8GB>ozfqq+1~ zQG1~f#DFpPP%HfY7s&Cp`q%0B*AKvd2KoZz-dD8W$Z-}@^^;G^a~8eNXKi{sW9KhQ z%clSmghI~g);y_k>Fg!*#SsdOvsjo?)5nmnq0^bK&CNsDW01w@$Pz_{`^^NfVz6N8 zdP?VD#Nnm-UrKpbK#poTN%ZKu7+D=tv;%KC-NTilcq+( zLdg!FpwcgPI@dF8NfDethzx_E;%rWl5H*Uvmhc8WCA7d*mn>)iB8yA%mv$<-n{G+3 zAD#mL3g``xEB9yMsqhW5{`!-?<<8(av~)X9T)bcbGLm4EJRLZQ5PvSjABFIkPUrVb zYX&qJ8Ha=haJnvniHSru!e&b8V3g1ST~Hbj7f7B>7s_^Tf?O%OfbwVXFN0nOx$?gc zp2|*Dk9|?f-;e!VBp=(OkGCNF^4oTD{QlHMQr?DJ)92M60{=(QQy^E~SHV;HK-GK0 z(RJ}JGq6udw>ORJ!)L9S*0|_LBHS%jJrxHLeK?5N=`7Z+Wd|UZImCQ4tP61az%l~P zNFR;k0`lF_c~u-k2mx^#mt<*Ca?iLeE%#>dTS1S4T)CeEPvtMF?ti)GFWQUT8~z)) zwToqY*WaG*-?xFk5A*=YmHTnZ!#RUZYRZ855sX-`9F__;WeXUTC*V*9Zi4cQ1~c1Jb|?)N$--X+I& z!zHqRSKpPE`(RG zOfrj{4g(s()+{CHL@R!-jp8qmxI3^bR)>s$6es5Jgn;eANR9XxFN

qC&gIsxz22W*%s{2)*2@86vI>%EVpG)U=m1dJ>p$9**Ue#Um@+t1#QOd3^u z7M}@k!W8%uQaDOc$Z@XKgNQC5qojz)^-!hGyx~Ybiv!&l@%1=yPS$Z)8yw`j;BhC2 zq)k1qczF>rLzlt6kOLZkFboq%dQ5$UAJ>U6Lv~!Q?tk~C_pKL!zZrBZ$n8fDgQxPG zs^@$t=lebOtyfFEXLwvJ?4fjI;X9vGy0w$&AtoP4-*@WT6WGTcZcVq2;BjN7CvL{2 zm*GP~=#CjkuB?w0SCAu!PVUq3Co&u*>9{vM4~8e?N4C+f=Qf^)ki8REpk3fEBD=Cz zt^w)_N8GcoJfI@7q?EL>*}x*D**;>keqq+WXm1L|Vt zl>Um)vVQqalU~Zv!Kl@n864E>aJmsE$p_i1 zU?TJk^bYdW%i%5jwCIlFASTReh^R9R#D(~LxdQgY!S_?R3*3x2iism>fRyzxIpFtv zB>)>uuh;OLV9}#EcaQ`eI&xqkNCSvj2>0-cC?+!Im55gg)hmQKME>X8AkN;0N}x@* zyK9~6WPhLcKzjZ7JMd3{o&ve^#%tiIyszplf0FY?Z@WhZ@28VjENfh}lps+mC(I#p zSFB-p^LS9wpt9?-KdGdeApT6fg{w{ej3e(vRn$BFzng%TPX*--hFl|aP zpNtKX7qL@G#C>EF#yPpIa}j2qhX}rGf;~a9$!_vX&n!|ZBUszEVbg|S4cACLH2f~T zU-~WhM?ilBxq8?JUg$y9&3oA=HmUxQf%`?bc84AgTD*7x+CIB!3AB(aw6KwBCz2LI zh(^-U(YYm%-lZ013GdaO^0N^_?(ns${U1vEkM0NmBIq@cD|f-eQtoN0PEC^c!%lS$ zRwxAzsrk~clySLb`yY+OwFFWNn76C>Zi0EcpNVR!csyV?ju7vllb#C(@?)^_uz_ZaH7_T>AcByJSVht@ecnLca3nXZaBsvd*UNU&exII~8o{3i zIvwP;(*q|n9y{Ei<+D5sllcXi>9#S3Jz|7^Vz$xt-n!P6Cbe$LHktWl~ z4pIP~Zeb#eiMt98HRDV|1y0@?2;`!nEK19Isjtyn)AQOo@Hc@rgOt9^7s2lUeFLIW zr}E}av1C6EKQGrS?Yq>vJ9FpYduy%t3cN*sL|+5M*B#C~>>AU!)|`KhS$eIx9Hzf2 zsNq6}X^%1M&!+K5+|3%FFiW?Zr^F(9PKAZ4MzXmD^yJc!78^lQ9kV#!VS&vKFO9Y$tx zQ^`RHkjYYkE=O7O4O0JG+S2+j`~&hEf$Bi6{uhJ44746Z<*}gDcZb4-S)lrB$7ZSj z*36wFFD>ug0%euQF6y}=FKW@RFxKd-MK6*~@i4!}bgo5`1<@9hVV)x}py`&|8h4n^ zt!Ry)H5-sQIvkO@&VOT;USsAZgr}EQUWEV;a`-~fv21XlJnRX@5rh^Eml|UzZR*1u ziy<80E2R!kJ0ygq;|gV)rn`5ZSVTeXSTvcq!HK4Va|c1_9CI7YMiwSK9A;z)hU;o9 z3NIjJv#4mc(fB^uR2?_Tc4~N}R9h`t0O5h)p8~xEa@*E;O|3mN z&dY7F<}HTi4`&Xdo3nWW3*Kt6;LVkb*&Vc)6`4>(e1-_zBE$$WGSrHdPDxofwg#j4AI%HoJ0ECQYa;s*mcxQAjFk0Wj)jG`_OX-#Xm zMe1=E^i!>ran$38g#*n2DLooZ;HjLg>b>pb>qkkwW?+3%T230=bI!mn{>QX+KlUs+ zcWaN()*ajSvf+m1mx$4260Gb05^7WEyl6#-%$l$uBr(D8Z+fBHG zA>6^*oS?-Lu`FK*G1)pm?FT@}Fy&1MVI@ve1mp#)`_RltK(0j8+LhexkjL%UB~Rl1 z2pR!$<(>$h%5kdhm$(Wcscc9YRxuNf$H7=y>~wBs+C7LX7%Za-5LtmyE`ullJ|^NS z2Gb%;T~bj6;*ylS`BvGFpM*S8GEE!sr&4Vgs0QT9Jq0|K6I9(VaTQALJ;EyHL;U@P z_>VDoA&X!hal9uVXaLBSw-P*+ajNbYe@r)d z`wpwviLi<{_sRcMeYp=o!>_FWA*-1dDB{HLJL zL2mo*22UmUtgQRJeS3yc90AXI5D^7Coins%obo_?DGR3K39$XJ0if1BnjnlgA#q8F zp*1VHn;}n1UeaC%{~l;N$d&s`@Ko&QWZf_E1l`&h<9Ls7f}O}ocoBrABS!leP5=k7 zZ0{A2CnY4)wCBOU3F-j3a(@Dz%5GKnyWD+*QIOnM|Ce$%E4iE6)A#8oz`p`|1LVrR z9XyqPtGZv}D7v+GI*eko45OGtVH7)^t2uTo#e5xwQB0ymiW^3e^dzuTi|s9pBI!#Y zjDiw=%P@-8yHxu>pC0cofPV}0SCFfRkHJ&c`u~p zeFXe7pyxrZyl;W0@{y|hUEaRJCrIA5eUrCY$vfl4biBbm;O_%H0CMHs3ZBYis_vI~ z1J%#>2%p%A@QG((+}ksJLTgd-l)jXfXC?U6po>7RJePr|@+(#Mr#yXyPmoC4`VgsA z$+HW;)7>W>{W5Icpr3(Uc{YNl@{FoGRDO)+hkDvkT93};{+}=r`!E2svBwQ@_~<5S zp2`tVx*mO)pI%2cH_T7De5%!*s<5>f219Lv1tvi!>QDunBqry>Ayh4t`TJXh95%zVBxk*-3w!^rdfOB{k`glySG zG?j{Subd~=zJmJ$lb1dLA9)qI*+8mY%yHnU{8-iP%`z@vd%m=<%TH>WlO^q2T1AJr zlmYvU7(Km>>h1cyGF$59GC}Gnky)+lk(%ZzTf0i{9o#~JF4FLI1*Z@fH^^ls!d&LU zVId7*2cY@rUk&0@x&mD&*oDwpyBot~unPgQlKuQY1-nrA3mid6%S*v9UIPZRurH7; zf?fuop(PQ*e~66;;#HSqOSRrF+iCP`7(c3=E(U)$=xLBUe!Q#oXmu|fw!mW36*Au$6-_3^ARyNba9+Jb_2=L(1hs(N@puDxDi5lkVY z!bVyMhsF?jJiP*5Qv-;A#jqg9;g5SxLu>HEkn;GYHs-c0M~9PlsF^S7j)rfrq>_-jYX@t_4H&Ti|;YQ75oRj4cj z^HrCANI3{9Y(iBzbt$w3O~DbhlL<%EPsHP;^2t5YIdv7Dd7;3WuNwZ>jKS;8>8<8A zw%&}lnk)5nX8G0T>v%S_)il?eW~<45WimV5YTE8K{}l5zBcdHwg#%OGhq(V?G(iG> zYqrXmel7xOEGwlS>Z#5uBxS5yV!~u|+ zYPN=+Z<(tt^Hz(EW81Cpt(JY8HT2h(d69wDx$&`XZsag`V_rniN-pksCnEajP~^Kv znI!-iuXxCl+m1iNHm0+o+U}1m_G0E-IzRt&rac#H=L3r{HCSpDm1GpTdvx z_yXWC39vj14r`=3KuA)I(yriDI>Cr89zc!Y06cdne~#$FKyktI6#fzo_aq+*$E$57 zfy0L>K=d|rj;*pkC;yV}&x^s|2=cw1?$2+5pVNVU4x;k(k@CKqUoY{7OCNt#T#x6- z{+!C(c%ReQ)uSnwEzWGC9}j3TUSMks)?)n25Y+>++8{3;Dz3F~Q9Xf*di9qqHWX-w z-uPj!8|F46A|5Y8hjv=cIqS`Ft>)kHWKgS_zuuhIYF=!tH}hJ}`RmQm@|6R`E0I={ zi%((&)Ny*ym<=Cvda|-r`%$5QtQc#>>9P%=*&wenEpS zf0aJ%Tzv(%ydi6=`v$HbYo@L;^L`5y|CDe4N9bE(^ey?1cKeoR&D57>0^jl~dT{m& zX5@L3iyvdYV3xm(Y=dz1ei_ie2$=Z_X*FeE;S0V&b7u{&Mq-O`0AWg+O*o628Z`tajPl!92buAU+_?#Sy+JSIFAn*DqeMd0Kl-k z5W$-#2U0qjN`5pSGE%%&>lnjK`~a(Jq<2*L{#iyoX6SCx2li1 zP~Pts@S2ih_>KlCv>6gBH#u-%+B>#Gb=Rqn<*>r3Y)OFM^G8AV7Gfx(3Z z0^^ANGmfV$H|jYZWv>$8u+@NdAL1JxPKGLt%3vwa=arFSJ{-V4192WUiLNeQqXk?Q zIt&3TQ1j4v^KtrcG;k#vLUtp}(71~30sL7Cv~_1_T4WGZBtZsJs!#IM+JM!gZ!yux z;#=qsXzfqQc4&JyJx}}J!=4Fr49IPVUxL3A)DEIDIwt4i?ZvXLR=9YZiqyI+b8$$s z(#x?nHdAa>H^_bK4DqCff-AmshO9UJt)_>T4#;e^);vS3D~7K(OWkD!-cdsnX)89i z);os(uK-{`&LZ6W{eQFgMV#{?aF14;UcP+zOGc@ji{CbebQm@7VxEVEt^zHW(7jd? zU*JOk6Q&biHe$f&Y7O1`;CI8)n&FY_XW+g*+$t5f^&z|zdPj7O{1zH(CT`3TplX?R z7?eWOQ9^Q({?#)m^Qk=DCBim`r@Y-@OdNwnJ&Yll6uIIS*8;yoKULJj@&{`(*~!yeI*me53j90^% zPLuhBY#^l2`IRbuGVWxDVWpg6moU@gorujla_u7JQfXpvJjN>`cC?x%`%O9$0pV}b z@|_m|HU#;9uq2`5FCHM=i+Dy6zZLOEXtl4$fUy%`l{6%9aAQ|&b zw2w+PN6p(Of_yBmw=~oyQ*83NqfcK;t1<9XJ_rwO0TKAsLx=+T@+0CHRcI< zY*5-%7x58+?>3q+^_tXU-N)&9crEywK(~P0eswQ+DvzkTU*Z(HG$^5arcR=peHUWS zE`;4|z$R=T&`hxYQ1VuPl9u;U@YjM`L9V=afT!|1RevAy_J%5QVJ>zdK4UWk-v^ir zty9Te`e|D3mEc=ISAbl(TftM=sOs-S?xUA4M6@~jB^rCQg7(sGt z&>nc&1?|!By6o4<&h&iwQ}7pnE&;jnZUIl_ZB^HYdlaU(>AHkd7q{Ir;mbv0`zB)tIu}uR9;qfzxYqP%@dOvo0c@rp0%tI zii|>eQEdlSsBj3&hpzMV?Mj}}JJRx834Sf;T97Nxjo_)=qU!#Z=h#Ja_K@hCJ|yZ? z@;IMk4=sMNrp*O^I_PI0SDw}2sjOFZs!8_ix?!?bAJtlRWH4U1Tl-LdpNONH%NGjB z11!FtmwW2jw42`LyaF&@y%?w05T7Czm&G^~G8x7>7v^J{SHM6Q8`;>^rQiZeavf-~ zrd{kpeR#1Ghqbv7NxRc_;rcga|1I5_*3T;NSAnhpx%$}vp2}8Le;@k6es9il>^5jF z=tDnOd>8uJ^p@1mlrPfyxe@$5px=UA{X7Pq${VWwKJ;_UtRL-7H?5i0P55o8mxeFX zaX$}&e+~2&$kogK|CD-Jt?FZbCHJQrUVcsJ%Y87EpFh+05gaTONTTR713I%l(Lc>% zommeUqWV}q3x1kKBkXymY&k} zKyk>i2jpSWpfqa6@B^!DoIE%RQw8Nx3XROk&nrsclkrhr3t6Q7#(p`Y^Ub1>Cs#{8 z>MIHw`%|c-!w1*8ToFv4gXw8}EbvH;DgVx}Vg5r!q^`XEsQ?MfIGX zc}hEeAos#c_210b`&p}hm8^b)iaN=7DGVTvW)J1K%@a#v`9kx1Bqy593u9#J zr$!kH^QGhl!q^XliS4pIl3%6IZ!ZVG3UndJ9k=ViQ+ZI;ZIk7FuzF zfZscU`+Z@55J&LD8{lFkYYyC~CRT#EzC@7nw;K^c!t%$3@^~of&kiS%ztH1^#K(jh zw1y9*-s=CAp6_B`<6Hu$1mx;%fAG^l$AhSBd7|fes(H#T_tCrG-8y1Yqd1F^w#j9> zapX78S?ab<^+YVnr;A1TW~S{zyI4W5la~l(h0O|Dgp;$a7*R5WIYgLIgNj1PeVUgM}WH)nU6u_u6J?s|@4-MCQ&y1lPqZj-BvOc!PWg zUWGx@6Eq`TFsxeh$5LO~H);FN4DjF4(=d*d;$ z%lmc1cVTZlWbrAJ7tLNghc+bxnlYw#+pO8Kcf(7u3yDlu+7+v8XQi#Lva46x_9|R{ z%&6f-PJj;Q%(x7@i^e!}c0pOdK9Pg!DxL z+#GXsT`#eV=xem_QcBk)iPl0~}^byGIr(vy38w%PFM5T4A?5FNNqfX5a^*@)_ zGd*;n@=1+K<=IWU7*H0*fH!t6j;(7Ulpd^vS3_h0~yQ5vX?Qe#rPKI(oKZDLBl{@Nnlxo zBsMU6hx!xm(Q_o%JSbHGjuNb)Bpxt;Ygk zmvbRHd9~Zs&qlxRdh#yXqU*`YEA0fe%Q=98!mSP&0eOMn<1_OoIpyBN_?+NjIm3`j zxzsr#d_u%b-h}b-wo%<-IBy$zhfzHesU1ZU;f+T1CIg9)^i7Cvuwy#zd^$4&IQziX z8`Z6bv)<5Kjq1n%j0;4^BrYLut4y}OpEH&(BZCW8ls||JijRzC1xuY;jJ08&;!r4# zUf?ML*nJA`$%h59fJRDe4Vk!IR=nNb6IWy{uWaIk`BuO>1oCNw|z6}Jb9RENc{xo_l^;Q%4 zjwMVLLJARP=D{@|aG@7dFEV{dsnE)zKe30aPCg2W0-j=a95JFH z*jVED!s(G@IDsI$(KstIm?v_E#;3=k`Q!4kyhG#rQQuDt^o0hFu|s*`{H(lSA@VzL z?~wBHys}Y)y@TR|ok3wIT$negs(egYv{WRhtLKy1qkb%2BXq-({&$a<8w)(h4A*0B zq-2wT^tA?gJbv3pi6af39|Pc9I2uA!i4pNeFfihXHuNCwk9shT24uwaQSXfdKL{x= zWxq#egg8&c>E@S=80cG$UT7seLvw}aKarC)I0r#VRy2&A1~-bc91nBC5v-OIMO~wV zQf!IuM;b4DA4UhXi|?mxWfoMBWyN(La>-&FY5Bd8awAV474!xOO@!cP5dnkWABt5O zB2xlFEa*nu_Kob%o2)Wzg__?zc9~WOS_pFQpRa-+>Xd2IK~%y&RO=O$hh)Zi^7)yg zGqx}3%0$xBKU&nz-#4D)teyXwiK<*YUeo=_{qo6h@yeLzaKHS@d7qD{t!)6UVt81` zZZeIV&BB|^K{sPs7f%L?CwDV#2g4fY3T6#(DiFOcG5)H?)Q%;N5dJC!UWvl@+hG`= zVLHLy1{gddRDFjr=$|gWU$bfKHgtRnh&@361HNCgIp}=z0Fw~@hLazi!sYgJ68uEw zvvZwCU7WxD(>Q;?@*$)@e|Mxm(~J_-QRK(&+>e2$ z^0KP?1$U&I+ozrcS3;^DMj9q?2Fs_qy6YIo5I zvV7^}g-y$T(uKnwh2)?aO#~eRa^*Q3Je8wV{r{5(&UaGcWxfAkoBDg3@ICI|^GD0H z5GV$6|6T!jDuY%1|NDCxu^)Bs7YOw{ZTWnd=E-IUSq5m=!%PFS4k-`})=9(&{6`CR zMJ3m2{9YIThEKH)ECCjSBN2d0y+G?Z46npN4E34M7o`y1pgxFRgf$1yWpwpQ1$oH&V6J2dYn zwO6+HjO?`B_knK%JqB{+egQm{cUAqp$lV9V56S(}e|{DYvaAXo0E z!BhFGs`~}sr&oLTjq&ppVf=gr-{k*{@k8>p`(!_8$Vrd;--G`X=oyf!kJrId*{~L*%H^u=Z+ZH{{vna>=p|CSlBW~Dvs(OOO`Bd&rY!)S26E-O06djzRK2%zAa&v2XloyI|Wg=ZEdmcCYg#12!2q8XFC^308Yi zjq2->)c!9=dkujGbmAl`(p9;Sqf`Pb0<>;dxIPlur-mQT7x6j#NCY0p6jqfmi_^aY zc?~eDd!YNkM4lof3v&EWcorqHg1Zm)12RjeuXqidIrAV3tGE_Iegis481w;M363Cv z@PlVv>8{l4!2Ag%xj*a+Wk;RJfG#p4l=?~`|Ag@#A_C9u4xrr>lkGb?Ria#%PK zI4s~kkPZt^Z?^-YB!K-cTnHvBh{A;sE6~N?X-i1`Z-HLjc`R!{nN|j>1iAVj2cF7w zRqt&cYdAfl^O$UbK995ACxCfQaFdXI?L5x4GbsnzVSq9}5x!ZPq4-)i|5$-u+H1}N zVithJ5Em=vETlmRAyzDnZBB?S;UV-=O;GgpxAthoIRYcOE(qJe6Bj z9d4BUw0EAov4wIT(uQ@2_h+)d_QK5X~rz3i|O0U6LXZ#uE{gkK?K+-b}Oc}!ONdQ%zm|kH}8WqBcFuT8s zn}8F7calI!a3ere72f4SS%t%P$YUUU(D5NU&_TqAKWsZrtVEAs$|4}J5?%Zj(JtWv z*`C#d)AP-R;5UGt0lDp&Kcoz~fy%TWgQ(1zt>Q>#$@Xkg?fFrKY|n;F#*v5?-E-0@ zYSTY5w(6`+f0v8uC*rYaE0W-RgX3Yhn9c^%bBh_-U~a>c(ha70i)n5!H_0cHwNqp+ zmR~WRdzIx}X*qFrjukl@iBV#Rtvc9R#q^Y2f&fy+!mDQewd951ieWp+O94Hto^)4v-c z>humKs!_Xb>O3!?i}*K~7qeT;k`1O;bep%h)(Xfcu?F-8`J)Jzd&%^_2>hj=>E2h& zlIKnD3#R#$IRg6H&-f`HktdEQ*C3}7=3WHMO~q=^;U`7vqb6E7gd9u5Fk_^!1R0f1 zgOYkz8wtE82iK8M1)GHt-Xc#|UZ(0nvR$W? zWBjXjZ3TZT=q`|ISK~hLR31^art;DB&i6O)nT*A~10ZY`l85zL<;OO$(>F4o*6g{0 zX$KeZg*0Cmpam$ORW70@@nkslXn?mx=`~r}m7LW>)AQiP;I9O&1G#dxf~Ru3s;B)` z%F|oUjM_7mqdm>5S4i^NjckpFV~Y>lwVgXm(N=>Ip0IxvPwFUv#jyhqo%^q zggmN^B6I58t;h${>{-bQe1&thIaTn&j;Ztw$-!xv(E>9S7ht?+egmPBTujO<8SpXz zB}dpz1nNadO*pDW(e`#B^dp{kb%gpMQa^RW(ss^2gWnA*u1xD^1^6pLn?O{;Co4V7 zlXZp4UmKn;pEqY*KU0^&F*|>bP*4-LMpbhGnnz5fK!EId37Acqwy1Gg)x2fPnktbN z5=zC+X#*F#r2*nGA|B6XqN);)wcTF8%cS}?#HgiiHu+5gpEP{4x%?)x{ATlr^(@@V z&SBb5i+Mg!<8XQ=>h*h#0&74gOW~MQC-aVHSL(s5^ziMN-imtMz(onPpKNq5D7 zNh`-z*KZf$=8*^t_WOCR08)i@q8u}23?cutK7et_E;0&$Zxin}a}JgIXsS-@<9Fbn z2E7b&=aUb?+r#0{22tr$@%J-7m-qQyDj$=Z|F$l3`+*}G&wyfR7HQ}2$$-rBP*G<- zrJ$y8H({?JOZKI#<}xJB1D33@l8IzwxHXp{ian0a(=hNOaCo!82GlQ2G}95ki%()F zfZM$=&t&sc*mdG08p+pMA@#Bv^1AoUH^KiO$gWB2r3U21H$rTW#OT#(=%k(;6&ouxL&wjFo0MACR5o7!%rrnIz!6pTEm;GgW;{+P3 zO87bpaN2{~M1l zD*oqWKVGZw2xqEwef{sGo-$xxq5j+bkPS}sy(YoHM~H)cHXY?__N?I-+ZC7C&c(KV zi9PFL+r9(}xF1KcbFnZd`^qwoTV6#wbDm>*I~!)!{)yR-(2P$2--Wp8RHA1MG0OqK zU5OKb**J+I4s@?^kCM$oH>9@wdL9V`!0N)5Y4Me4P|GQbO&stPI-wfzm-Cw#N z;y~YfNW$zLC%Ry0jZpd6i|w(O*!QxF?GP#ZY0(|o7Gvyv2F{V8TONOx5&E6PaCA?P z!7K}X#DQK9P0-1)d%yL`F@T~%-C?Ai?K(-;b#^Q~Lh3WTU)o-C&0Vs1;o-BI=swlKFJ*6Y*1>P#qAGh^+^wEu z1p^9i;#vpBa>Nc4AL|!Fg(a$l$pR_xy8D zQy^Bo>-OR=ILEV<<8%eA{KqX&{(`33#eMh-hX4Ql1zUUg3!u2+uD^h^N(%3BzyapG zZU-Fp@E6EjvG^3t&;{bif$|qL?I-oWoph`8fA9fi+6kZ^f?WMC1W)BGRqxGT&~jDA z=4YBOmNo&?2Kl}FaC`Rh7o6jPzhDvhIuH4l{sNKxG-$)rMMf*~RQAY)im9D)p_2C# zeYI`0)KhXynbs^cp=qaqzXWtS$ejo70Z-*sRkwX9$A52sfpb*5cwh6d4pC=des#6g zYf)D8AN&R9c;GKMughQ19U^Z#^6jR*1+%cEk|{^Ng||Rv-ZkMtrdybFPr4q1Ua3WR z8Rg;yDQ^MgMF09-+ zo(Apr`WAPj z09^{Ave}g5r?X!A4|b~i>#k4a{L_)y`>Q(-0S;(N3rep67d?71lT}kGOV!e>gR}(yj$+9LVQgqv{5fDKEKALCwhT(K{ zGExk$ej*--#o{aw;AKcNfvdEw`Ul4rw46-C5!~M$z*S>Q!($#pga*hH^|m<-Ci^5| zNWkQua0s~$=(#X>z}ZJ)3@1Vm#ZhIaJp2{3m zcbq8Ot#gE|)kn4ZZPIS2O_KP-Jl1f+$qv-9OzVUn0s)x1uvB`1EdXCHkXyu4@@T00 zr0|K*PKC^u+9vh;Uc=vY?{_06z}E-h!}60^!^D$ua^JI!0nD@*d*5k@-3jY?INA>UVH{dSixy)EoR47!EqKCc z_9*&?*q9a@ez|54x`^YrWK_T-ghjJP;WX^pzqTAG+fO?vZI3wt{OONw2jYF+K)rU%J zfRR@ZD9Bu+3OXeBY_%~k5DCLQ8}Y~ep<%|rU^&31X{%Qf%ZDphoL`N^Q=t%e8fP!_ zE|)F-D83O1SeO@sM*@V%TO=JR&8F5s8Yst?>o|akK_URagkVde6X-<%_K3mg#TLRF zJpN#aegoEXKDcKMKd>mX)y+0!B;jjwA}K!{!I3h*0{}~cC82x{UI1g10Ik7El<0BC z1~7u7!%#vE(=<`G`!2MnJ1&l>OD2B_Oxm*MO&Tm#Q}v$o73NC2R2_9#Sg)Ev3e7 z2HHJ6KKjam*Up}n#^~|F=A1*;=JPy%)G3B!rgfyX7)cePdLFWua0WxIC)doCW99%% zmSd3oqtJk9j%S4u(P$(UH(9N)J&BOGLg>%5JjfnI%f&)!6SM>l)nh%4_QMhp@a!Iw zCQd9P$!Ziq@{_2ZLW^Rugm10OQ&cxu>bYTZI{x87@Xv!@0l9kq1Uwbr!Ln|6Sk8-k z!&lZSJH-1lpy%}X>J@m>C%*D|9^fml?OHEH^CCh4vxJ9k{9y~wMV`U*4)k6u+RfvX zeG?0F^yL(mG|VY@OOaj2D$C=E_f=* zsj_ZgE8C+^wTE~S51UU?cI@wD{!n-#y?2!ZTI@CW$6D-$HE`pf=ef>7I`$fhl(Kdp z$b;7yZxV7&$od&#Z3-d3Sbll)5?;Iub~;^{MhNPr5XM0hUiewO+;5rWIWEnUP@z)x?Z&BP2J zis=VhJnT)N{Vbj49zYFe)iFTnmjmtcR#uE$MamFFK^teJuqd?_%_hvAXhJMgQxPP zs@Hzn_xiiDC1d@mw7i>M($>`Mrn3NWHW!pyOugw=u3Zm}1T8Y4MuG8YI>XIEIEbX1 z**FEGE6PS19!~=CU?CorPEs;1yGBw06NixqAGMJJ=oA(Y9E${Gbb%2HL91P>1?*Rj zl=^Bp9P0>d8~i-g^Y@b0BwKoeTbE&;uYU7o8~Mp&l9}=htS1TULFK8jqRF=One( zb1{xw4DI?F&RY0-CaSw+HCa4~ufc6-f@?0utBumLdF?qEu)vMQm8{LWajy=5S-9;n@ov@!{Z7ZKUBJ;`_!1nA zT(>8TdY#tq=Q1qLQ^2?$ApvP@e~`dvA`x$RkOy&=zPMLB(hXDq&zuF|nV+gGtN2l{ zbIS?YREud!@q%z|!(cuGOZG1FtXyjE`6?#hbQm|LacoJAa-Gm)&@sBdhUbX4^&&eA zOIm(CDUf4K?9#m^P1m`|2;>B?fG0C9)%1(ChGS(v*)%;puFQIz%>l(h?zl>Ur&6Wr zezB9u9?~P(glimI;3X{{rm>xpMlBlyc^(y5HqIX8tm< zc~2v!tn$pq(aCR(oFav*K2EmlYRKWr`vLgRKwp4ddD&4?-mt3sUEaMV)u0C6_3azD zMajDYa=3QSm%(>{-UGSvc7mt!Z&mk;-Lrc?rX^(Kl4bJ+oO~=iTw!~x@|>)l2d`H? zET6!GlE%(1R1dOzCemOY`2C$q-ln6mPEhmvpTWNZdIO~7H9rSWC47vm{TIspOZDwN z*H;b7j@FRLb+aq?(T&TL*Z^DO*-cjx{O5^_X)eE%Yb`iw7PC&_*}^nQb}5)9*DtutVqu`I0A}_UIm3i;{OW-SV#bnpKC9qb#*D!ah4s?TR=%w zMiM3x7z^a?VRFRNLJFwUz_|{1{T_ns7B7%IO()8BUjeyX`JV;<7tp&PSN<=+Q;D7+ z>%HNH)o;%D{-CT9)_GC^&4DfKY#G4v3kqFX<+*`tFF^|kb>KOWE37Y)ddTIu&;W7? z!pEF%i~!7czyd6w)Q1NPQNt5O{!r3IzDW6);}7Xb=K%Pr3Gi(ZEl@ zG#G^=Lx+v4u=`2MAuyGoUw{gbRcT&Vhe;oq1S&499-aWLxDC@TfT2~qO~@Pmfz;0y z$ej{b&__-x(+WVvAh-Vv15ahFTfZpv(0lxRXZMFL&@tR0#&q2w=4(4~hxnG*di497 zmAo4uhkHNNXO?L}P!#0KTL_-YFje>a{jeMCQ_ovsv$;>V#2>2u4>??UcYx@rlymnUN%8q_kQXBVVRZ<$^*H283LZlC{_3W{c_fd zX^o41B+_!kdaM!Fn)|p$AUQgf+#4W|E4Ohn;>1BQkSli)cq)~u?ti&^fMj)F8{Pch z$lcT++q)I=q=aOe_7!-up-l6DT)7kAsSH$gzwZli_L8#jiIs5od2SPi{XWcd9ZKF7 z$lGvrALsWojI`1e5{f?TWW9%*TSh>#AYbcj)&C)< zJMP~F{|RUZ$koR;;Hd-}W!?YdzB@=(_vyWJpQiWJ9M%4i!?QLT&R;ZZ*P^JYy5s)iK z0eC7Es_u=mu0HzR*~8P}tUc`=?fcdPo0Pn3A%|-p{3m#8VVULwx$=$#Pi3a6`z8Ol zd%vLd@PAA`zRL3_uDydv>HAGS4*j&vll^Bq^pqlnp&YabxJ#g;K(0RLf~WEmRqt&c z8~e_8U{54{&NzG;<=#N=&aR$<{l#Iz=zJdoa(poYvOvh&E|Nt`mlF>3!NMFul3A53 zvKZ*%Vc?mBbbq(}kj?Xz{E#apB-FG+7DIN>@gP_JQ^8aDg{t=^e@63icJEJ0{-sT` zW=kbZg%T)d<|@yFOuI}dVE|d)dn=(w#!RV%-bpecSKW`L9y%dkiUdWO)&w1ZW`bNj zG=ZmbuByKeJ=8C0oI8Jo=m|ZPaP$AF1QP62sfS&V&%G}kds>;+0BQuediWW5Dwn8w zZ})|k_U~XkOjwHEFk#uUCG$^NzKnW9thxrh;ULi)E@RsLb^(S2cGzY)&IfSU4~vVy zISCN zjf)77q?Z<+{NJ^Jaj`)52WM$o53|890xbo(dbj{Qm1|Yq&w4n1$*iWP#yRK~d+K3Z zCiKvu^blT_*26;ZD?mR7xq7%9JeA+5x}WuM?4mRNgC;)u-!;*^Q1*w^a>T-lYfg58#)bftW^+C}+GTs+&)KRn*C0^0}kV%{09BS8+W9aR~CR(JLr+K(ps* zzT08Vo)=~HS6RI+tG~%=y)NFeSw6cB72RJpvTMxxU-6pF_V|14&}MsOujiNddVXoI z=j(bsUuE?CzF%|g8(YBT^1+W9^|$IZpV;F+wnLxTKp%8~m&OM_B`$wykN?6BeJL&j zdw~yrQC$AU9{+DU^o_V2S!ew};=Tkhs_N?h-TU5s+q{{1vrqQP0$CsnTR>2Vf-C|O z#jQ#$5l~PBJ`lGq#)U7pETd7)2t!=4V`Ty?n zGD$Rkes$n~;mken&60QSa_%|jo_mf%>#oAf=oiGB7ueI!x1$%}L`{~5;-yuuh}#$2 z)4y&G-vy$r1lM{!Ed_vY}p3|>p9J~A#baNl2%!rgdFY(lcOXy9&oSqbiDTQc>< z<0=O3maawSYoolStUfnxl)77&p`(zFnEzWkX1oc3vDo)!Ou)BWTAJ&}kDEO3?It@^ z60*yAzS3$sZ$@f*sIsL*aQQn4ZKvb)>5zTSCniv9IwYe@i3>C|-HV3CMaG4jeO$$+ z$D^?;NfKykI?lpeU}S+7O)riXO^e(~!sU?!_l_PKcsNQUj*0DR8yQr297!87ESc`8 zgGx!CJEQZ1N>R_Y{U`#;D;&0Br_8+t~1D0IEbo|zFTaB^bDMo>IOqJn-7*82i1z^Xf{!1 zmg5j+NkGL2zgli*Y`+B5hT(_K4{D{+HX<)457$>}p=WtaPaR7(7I3`p`tStB!3=Z{ zO6Td4Pd#!*UQenyvtFADSO`%3nq2|>H-P5=ysSP;p1XL!kbKHkag}!cNS()M=o6nS z0H4bHOMT=VMt|rp&f6i}T@U*a(Ryv1&9E2QRS0OY zFT!drvdd{X0&kC}9kdpqx341b945s42eEhIs8+~aiJepN`c+zY32nkbhnh*bM2<(R z;)ga4qg51V1j^}m`I$YNZU9$UMn@MlWLw4SG{Y^aDK9CjDQ_#mS9Y5i>X-3on|PMN z2RQg~F@8MEM1V!=8|WRYO^I0itgJlXfgmrgjw=I4ZrBhE{fTq67C%Ua`}r$ixZ+26 zqFw^$JCg>|b;^SwI*V3PI~__5J@~;7|JZ5dyF?fxn>rOdSXqkyBJ!^ChzI;AXahfX zIKo}-v|eVrp&H&&{3I~`wmRwi6*<2AFRAqnqv9Cg#{*8x-!mThu9Sa+S_~e%1lI)^ zN7#TlrD+0}d;D7HKPhBbd&@pjYeVRf2z=_f$C;)rRnPk@p6w|05Hr49uXO;<1_blr zx4?5>!C7E{C`+W@O!u*}ZtIhNmrF{wiMM;h1zWf48a6Cjx#HxG1#3HSz`VZcl=U5J zHmo{j)u}6RB5&>LQ~9BDTG6S0Wj7_A`m2Vhs>JI;@p|}fO#Zj*DWS>UTjX+PUx5gp zwpWgxeo?=iWiMj;d9Jn@NA;Ykh`hz4ZcQ`j7~6jE*&{!y%pkIpjNIUT4|+n2OUi4YQybC!N645f!G+uEmM}3^w?X;~frAv7%II zBf=>%T3P8=C1@+DF%bKuay-KD?uQ^=HfaRx2jKqmVAdqTk7VI{HAc)z*;s?9XV{E~<--b1;e3me z7KqnqJ5e9u{CvzY5R5U-*Q`Sd%9te6bRM?0ny*ZQ!-Vm@Oq8~B zy~$%vf_Y_ z4J)uWzY=2#PHe3r{L&k6W#c30XB1};VNr>chZ<u`IqDLHr980~i+?=artz4!oRBy4tG!wiSDmjOk%T+VePc==4_N zoXCe}m{z}U#r@f8BuWu{mD*)&hLH=!AVIc*dmIKBMM9yub}lp) z{GuT}mevzHHKCXk9f9k(S3>rSH&i6C4#1&YFET_}G^AFBupYw!8niv^A#g1Rk2As{ zoRchyW4R}xSUer(b?RFz7dUE`k+sRO7S!;_{$=Pd^%Q?EJt{N6l8YZj%IiugG+9+ zoUgg_>a}~tjDt-W__qMx1_b=>QQ*9g^JU$(T&|xzOJ%LTs*Sx-&ez^T%9TU;-D<3- zeC6!Z@6un=NuPcT71hz=HT4qs&|CIDP3X0$jSWjv8b47-+9|F-%F=uh+ zrym~DA!h5wLQ9+wZHAmUp70|Ihd?)*9**ING)`o}q>poC2p#Ly&`}}RsDcQZ)9d(a zCdGyGW+NnX?BK_^1Rn;sgbrY0rNinK!4;1v9OYUN#59IA%MKfekW}L0Gl>}b&9E`- zoD!$Wu%U0VP|QI%%w!}J;c_Rw>l)Rzji=$q4U;7}=jKBDC~88Y7Cjk~m@Xa#ozVSt z*`GVnPi?AG=3D@~FJK8k^`~(ra9*~ky6?+so$4OCel6WBuL~g84VQ;jZJ4=g{j!a# zJGdN#L%x5KhkQTB5Ba`jzYM<jZMNZ~{IN!3rMzl?O8C@>CrV#HjiGM{hv~C%K zneqUnJi7^ht|B9>%R{5x>bZLH_u9o@*0kbH_1bK}F@Rux{up@Uh4tDz055M|Ea&C6 zugdzdzsWkeQmv<5J@-W zf_Sxs#_H0Wje~3&hrl_yq&AGeg*oFy`^54po6@oB8tC5tME}cqKMd8vSEMTKEIjbnk+&MJtguSY$i{mX7@o+^B@$pOG)=!Nr zz#W|cpQw*CHOA~(>{d;~y)pPRLd|+xr>n`i1`P|D=_F$zZDzGNCID*jG-JWD9SZpt zf%zkdeqDlbY(x6x)_{x|W?UMEe2pd5=3K;yL+fi+@5j}>N+aW9tqO%LI~fhx;`^iU znF_GHVms}|sF4X5+n6%oIT=XNENRABRxk3HC4!&e_lvSQhINNIcru=}2$~|x;&_jX zQCSHUmxsEsIcp>~N#H$4a6Oxqg4ZD+7;&%&isL)r1S-w2Qkg4Aw6HZi4z*MSXRcjy%8JwZo(K5g2a*qd6GyH2%=m$! zy{lJxk@9FJV%E@@f2vdFjz{XR`j~5w>)>Cx|82S+X4mK$)VK18>cvc0^(t{LD*_!Y zrjODqT*pE1AOu4=7IvlLSj=~#e9Y9D#W=i%$?zXa7ok5g2&fYwllf5}L}Nx=qXZAm zY(>zGF`m%Ma_n%Z0ttfZ5&8RA!-oY+L<4sj7EC8Be$vCI5L{o(G5-qLucu#>_cwYG z_-lYS0YSeSUzhz^q-y_BX=fOIe&g9c6>|S=#j=fX$T&lE?FxSE3z3N6?7w&!&VusJ zSb7oybEd%itutoCspWPV1nQD+ z_o;Td0`&HXk&M^~z{3~UYiU5h*T(>#3up)Ma^ur-ytkh$$M-WT-c9c><#n!raR7$2 z&d_)OaLT$zI%R!JR!M#oVw3X@*?-~zOSC_trC@j)YmUlH%pzc_ljK8;Cs$jD;9F@M zK{=2Vtwo&NFLuOyakmTYwpF$7kz26O2iO1z+IKT>UT#+PBWbCBjue-vt*K9Zz5w#j;-T$3 zG@cLwF1#i~EOg7NbqiwtZsNh2{y8i-)Afk#$u}~ZVI^e(tnHK;r0t*?uC~+eBiccg@F0LKn(~l#WD2l-z_3Vc z-_U-M>3*Xh6H~PaGK-`8Mv>l#I%4EF$yG4J#~|j6!465p@Nq0ueAa|=3@Z{gjZlYu zBq;-{!*wIFs<2SRG>GRJA&-B!Q&vT&cS!7 zxccg=+S0?+KH_Oej(r+0A9AKefnS>-8pO>Z7bk9D%^MzPHRl9zgg>y4sIFD@>DSV@FLEstL_R6~H-zeMh^vm<>=62w3 z0Qv#JJZ4wOb}Ux)Qctb}T1wTT)iBQsx^BuA{Fnu^3tEWSLYOFC6WoHa*?Em>r}IoA z2bpusR&cgTJ;{=i?WK^~a3ZywW(Z-GUY)eh2sSrlDHY+_!Tz|B0}H8Tv1S~9MHrER z!0d|7&YKkfLwmHTd)}4xS{0xP5VYGY;Ku-t2k_E;ylk()9&?+T*W3P4Fug&ty+!K} zSi5%huu0uRu11C>(nF?-SNBdVd7GWtGh1ezF_X=TYC9ko*OR z-a;fXxw3ZMEZfEYc78sd2)q+;J|Jk9+kx})gsQc%lK#GvWG&vrOYd<7YnQ-(LblAu zPRfm9HeM^IroTmuu3u8^0?Pe>;olN9d>@&V;v}p`LJ&+~k3kYOJ?k;uN(fP{2#SG) zFdcCxWcnm!FF+D67fI0Iy&@+v@~yz#2+eJUF*8GM2Id{!fI?KksEabpUA|+;qNc+{ zq8r{8eOqO_F1>-gi`lag@*&gez$=kD@0sd#e8-Soa-UrT0`dV4%ekI4#@cGyB&4P`yfPW2c zkB>~l)A_uUOIlh+)rOkvr0lDRi zS<0OgO~X2z^olJp9r;?pkoSz6X)B?J!G1@>aF9sp={VXRn;$%@muplapgjMK%Xs&1=j91iKk^&7j?8*O*5XaP zEd8)>>#&&5i`L5-%}uBstJZAb>d3meh-0=8(LFai$f~_nuLMWKW-LPWz|0|J4;RTK zqmtpZpt&aK9{lJ9gGA_zwXO1A_MW z1Mq(V=yznh4Cix8mA-$}9}3qVYF+(!4tIwfhTV$M%>|=7e&#eVy9dxbqiymx()JE^ z%o?n^H^{U%IVPKDe8Bn;iI{uh`Lvib!MR|9$76GYGeW~Ahyfrha)YdKTsnbePHehi zoN+^FV5wt927xlg23PJ**`D2Kr(nM8H(;&<<^oiEvQ5Ar2fPU2W#VyiULVyV>t2;_ zy!~f#{&yDA-$u@NHPSvh<9VVvB!48Gv|7Awr=seV_hyKTQt=w)Dd;vk+w|*1@`8J< znjcx-z1AB<+osnTad)gbFJnMYFUh}r@{Tb7AG2XA{ z3p*=|VS(r7g&J5Muz`*K@k3rD8@3{4h(1$JTdfpq4LQe5)>;9d$NUkejwXtC+Myd zEud-Bzgw^E4>%AIw9i7|yd0|Pu_|t2zmmh$SG6GjY5~^IK<<$I2|n3CQ*;gz-IK1^!_(+E7A}p<#rDaArJnXV`6lbou5FQB)=(=@xD?SK1z*9x} z5V*G$=Y9bJy=B088L#S*&i#Q^+jS_A0x)~W~w~_nZu=L7)#_3&PtgO zk?}-Gc6n3k6Jkt*n){U>TVR0;QjK#8;}J5fVN6ObF&$9odHR( zqR1!~l3>ihVjyHe%SA2%DGe68R#Y(jO85&T2FZhtk_U@~JeU#kpfI`19knDp8sI`C zr9s%}Aq|@RXa@6)FoLSWNd)S-j zH&AW>em~%60M#Gtcfj8Td;s9Z|C(&~z~1`7FnjCL!r5C7>o{SUe)qAPl^4O*df>#_ zOSGlIUge1sS3&IA`+Jq5f$o#-y7kt)Kl=y36Su+s4+z?|2{nVHL*4lr+Y`;FVOTZ`gxgCB|fcb!cPaFxHmzApCEBljZ zxsOVXuyqY=N?yb_B`=22>N9Uj_WfA4!%onb6O?M&0e9ex5a19%&<;z0^Kz1^M>_Xy zKU^^Vq^<$SSr;95;)-Rb$dJnF{C~oqh+`fej(J?{9HZ@90w?qcJbHPoZOAwdPW?wL zM4leFL_lS6DW1RW0ZH$(pd%;lVE^aNdhGzfY(PNoA;5WAs_K#GEogkukD)g>@1O94 zi1`;gOSQQr*s~8(D+;3X$ra_LO0TGOD|#OR9XUY}#Pptetr;)@5YRgvI4=uT{r`jB zfph&si9PI76UzzsiR|BdL5I(;QBvOrPXv?#0(vWf^DkSpm}%KYexW%0R;4{1kTGDs_s>OcEjz^ zm%U!F^+2BUYdU`8nq}j-)vl8)=NfVjn#5c7%|tt(5(m~89c5IC-9&g)G{QC~Qt${h z0*Yb+{uC}vvzEX-p!F+y`$0!Q@4@##rUHB(py*{M0O#d&Rd1`4`qI*OC4J&eyz~V5 z80N@)r3H|qKE|Ik-w54gJKR5c3;c^{*FrxyiFQcCWEpKF<78qhxx32AA9e`K=* zMrjhBCj&YZr=|a=l8Z4KrKV(?q*MZ>DpNh0I$Lq2DIZD8Eg};ktL9 z-ttr3)uAq7-zq`t^$ACMEM_u2#)m~E22Lx>n60eZa15LRa5C_PO}nkg=ahnzEAE8( z!P0c3HC&CmWk!qsDB&kND*4hYHY)hJjs&8%XZYD{G_gqAhU;o^)|Ov6I8`eWenM%& zXJAqfzQfOR^V0}O$0oiv@+Yf@{dyU$>(#S#JuLgL_ec5ubMCFzQh*`=@4uv`8D+qE zsaJL2Ul!EjO}qrx1sKn~|M>j%OCZMGL!u!q@^_*c0IhG}-U9^mdpod$ACmKPxSeXN;#a32j(=0r%8m^yn+ibMajVwgY-Pvn zRjXIbTXXzcPG$R9i$LJ@AP|5dasZtu<|nvOR(SZ9!d(uBaK%&OJn7FRou}jZ13I?@ z?*qIF2mvnfnT|SljlfQ2s^a@3rX+F`}6DPFMvM*_$?ry_Zi^4Jg4fB`n7=Lw60-T zch)z}+c0YtKYbJyC(YAZWWHw1*R*n@5ib-k+EPW&lpp8i?aP6G2XHGOpyw{&4+4G( z;N|Wea-8n^y{tP`+=bv=Pyq(#$I!EI?efD`iJ)rXPI3ZYO+nMb9d>lP-K-f4zY_g& zGekC6TN~kDU8JX>A0Wh-xL1vwJxP6(czC?@E4o`A$oJz#z%K`M0|L5l2Hpes5rCIj zYTtgrFD2cVDY^?PcYmZGK{xl;2hoS*i8i*|H6Z$Q0hNWgU%&+I-Tuy1L$1soYWxc zti#q!Qg*JxGs5Q#-noVjRO?st+CRvG_00jC23dd~vB39tpg%kX}EV6XJ+V#oxt zUl-@;W!vphpm#m{ABuLhWU2Wa3WWV;~`2)T?|G|3gFu;+3fX<_V z^Ri6UBgI|bvwUdr8C>uQ`wdt@F=G$bjDtBBLbwl1U~r-qtyj_0i{}jV#&j>%en2T8 zpr-;jFEy%Osq8ny*UN&=M;x86Z<>Q-Vry6791~}##ag6TGw|Oc3Hc(P3jPF&j!k&J zfR5*Z{~pi>2{0O`#G82ek~-&9ko7?J!`kBxT(e9vMC?p|U+zL%*m>@xMOx&aSkD34IGmqvBy~oX zmN84O<~ORy80b@s3)%Q{x0(=dC|nt}fo+$P0~BqOKj(0-Pu<51v-1C9a&bQ}Ymm!+!Sn{*tyb}bjA zKbC|x_58hft`

mic+T)&OV%1kXPnI4?6*z4yl5(5->bI`Z0nEyrCC=m_{X{RQ%& z0Bk@&ZwNRqzN+^gpO8)==r2sFBF(^mi^Sy%o@c3g{&je+U?2XMz@Gv99uPeLpMn1i zKz}Le$W4^;efQzA9{a>LL0>`TMjp!;p@`NZ=p{ey2pTf$&Lh~g&a8FUVfgL;s(sQc zcCBXYKQ&7iPpd_m9V3jb#$s9;8XK`fIZfN29s-TlC-Oabb}*!Wl*+M-AXH<~82A+Q zpWn!SJRS6j8@Trr@RtCu0D^XS4LC3Ts@^O6_=DR4%NKX(Mq4D>kAm`JEwb99TI52o zOMo_-CwgR9j7J+`VFH-US7!JrDEf~2ReoOH4g4X%F8~33j{@gqhpM+K`Ej^?ZIAUc z=o=WZiFM1+*%mq*6kZMr0fNGE?stSpGy_x?;TU=a!Hso~$$o5mByU%{9{BeG_W%Mq z?*q=uFI7Dfoh`~wqaf?vuzr+uE?&KA85bTCo#bRLJX&YDomdkFRCnH^)wFCVz2%^{ zhSQsST+-X}Xue-B1AaZ=CO|;%Ex>vCp{nnGL$33~`&CoxenIFxV#S)}Yu78P5ly~+ z*uHFH-ST|@UV;7vpi7%Eg_AnszsUYgKy-#Tk(K83_9}XFzs}S9W#Hcc+zbfleF*p; z0B-?!@n4mEs;yVnElMxw+)rK?gkI@61gUH|p*VPUzC51y94fb$tGlyy*^U3QTX!K^ z;J@thUAF%(&dFxI2miym_epCfKbTy6HZAX@{%*;>X2Q*_7`_w?=jCU{;(o|!L_#A= z&q3{hjMPf6BJk5uyehpWqzEifJ;H4e;r@W;Z}QCq@iRG0_xa~9G0`3%7?5JZa< zAtS2di%XxB|`0YQ7~kI8oSRJ~XD;xK>5z`u!4rga_pk@ZcCEC5DU zBdwQQBZZJgj5P5PrOGzN|MC2R-0~doHvn$~0y_T=T$IOUJ<>cX;Qj;rcLsaxePnEP zkyE!2(nYK-#O=b;9{E1#1!xV%{%R(b@{5$%hT!qj(gZhT=~Z;E13gpJy=}l>0lWqX z=zaq@FYl?ktxV3F;5>x-s+Rj&!ROO}KPx}@x?t_vlQyp7l0XkZ)E4f(&OO$9_>9^P zx&aUZTEQ{H@b|Y^j$gvVA09>c=WvhnA`j<}sP7aJyxIL*+3)L~$jjT00)Gnd0wAFO zRp5UC^aFSqE^n9a2|L3OPsI8r>53Tkr%LU6#s{|Zz6}*(#%+dkD|88H;%%BX1E+lj z9wpeW(w>s^wLh63*WU;JbHF2jfWF6o^YWakM;h1LcI>(S9V(e4!pH?O!iaSpal3g3 z{{kHhK#v}Tft|q;k>eMf)yeKfs3I2w9I*lLhA7(t`nTof^V@*`0PsUVK>vNfd3jjX z!~0jfiI+g`DXjfI=;#5-ZrLJRi+n{hzQPmNjfUyo;%=CX@D%1_xXVfV)3RUdew(N3 z9N^~zHUR>(9byXSCw{W_)J7t&rojH*#u1oklew`m!F3F|)M1uHuG@q7XQ zS@aa*qXJd{0yXGJW*P=Z} z|Iq0Padq`zakU%d1F**czuyr+k+KHnU+`t19GO=eD-m3-fZS#;mKa4>Juamnvf z7)YCpdIWzPSdaF_fxJm1NyIxc4F(?^920^rj-%xHSMPQ?KK$+Z@o^gP&47ymK|5Un zoR{lVJ<|BtBm8?vI}IHspOuSu?NIdZ$n&{X!2buZ5fIRS25?@^QT0gtd(Z5@4menG z!KD2XggezDcVj{TupxQ)@U2$_NW*Cf9!h&)1GfEllFnUt{=km3=y!;P2v`aT=v)q* zmyN0(Y5%ov#WwM|Lh|#WRG!0gtDjH!-s>$?GXNmUkqoxrpjT1#?diy{}KyTX%@cjlX0tECf z2F}ZIs=n_VMEVMNq71^Iins11tpu?Xes6TS3Z}A)& zG6H3p>BDmAvkHQ@L|ONuq91ex^4~$fhYuj20}#-^0yr87EV`iI;-TUq%10>Dy=jhP-5xKHGZ9cKdh({NJaq zroAlb-U@nx`Ah$ZeNTW52ehUcbcm_BxK^?B6OnM0FS(MwMGtg%+vM4EzuCja>eMbyU$Y<&``g z7X$wW;4(l!$K}9zxmwkGlaBv|1o2!;6&>2Ec{-K=Uk+Fa2P8w z`vl;;oT=)O^nu%!Nxo7@{crJbs_)?{;5MNG-mGf|0HmKssMG{PWV3Ln4qR}w@8cH0d662P|r zLAzZAoR=F^y?4h;d&l~Ylkd zAt0dl>%e)rR@Ecv4|Dax>kq@Iy@-#J3&kk;5#&SwNIn#ql(>`jAVUGpguqCK(P2gi z9}^K0#Yiy`_%|0Z!opZ!$T|iC!Z1A|_h&f{rtHkiA(sKa8E`8gXqP*I^YXB&139E? z(NH1o4NiBf1&2$63i zMiBOKZBj;kJ8StQuTE&|UX$(6_Lsaoat-hvz}v_54THx0MZUhAM z-wd3W+f=<*ZVze*^f9fUSUlj@y9q@}Q~%{=YRjlEU z?RIfJ>@zU`?$_1&_jaD|UjqClz%77){@a1`@>5j@eBb{2P(8Gud_SOnIMcVm^exh9 zTe~f{lQ+PB$@D=_-y4el{`@%J0{jxdHvs|tR{-bb8ddMraXg5re9RCQ&!xR7>Cpa` zAIHZ4UjtYV28fIvB@0uaxqf{4v;>3b}qG4a_QZU^uLoI$4h{(1#AEW z^q&Ttmrbe;#__AoL+LN*IL^~QbR<{w>hSB+Nw01_sJp$q0d7D808|6)ledTtB|png zKo1gMv~_PO`v0C^S3VDXDPS2Op#ON_yqu)!y|S+4=^wVTq_hYEqTzptn^yQsm!jhl zJYQfJYj_uVpaIhX0UZYb=Vg(qN7}b8s9!@s#|D*3XJ~JZ?1;;Q$PPHB3a2sz7ar=_ z(Dt_Mzh2NYMNp<`rT;+O6Tk#OK=)+eyv$bhaK8riRjqGA0qyw%bPt=r*reY)%+=~q zD5n7UE;I^nmO;LB$gG7;EtvogVGYm#;k-wS->>KgT|vK>{S)*9CIANL2hPhZRgcu~ z+Sm6C{X@GPnP@+q52cG8E=fIiG;;}eX%W7Z+Z5gRf}TJgO#ch#-TB*V;)Qv`DXIJ!rYT)_*Bgw7et7@g~p}(EmE{{{YCp^Yk;|yrfnA|Aqdc zgSkL0Ajs0z{av<07w8Mx;SJy)0_c1Bb})hSl2LWg4&JLn$3a2&HwMN5PIV3*0(};C zI4sgM%Od@j^|s~qbHe}It?Ax>DEdKH(C>c&z6{3(6@xgjzBqC)g$fu9p%aKTF8CBq10vCPr!c8$=nevIHO-lTLedhLQ6nS_}|dIm5Sb-k0sL3-kr;u!uHjM*uzt7-$FJysS|5 zNd3HL{5==os3z#a&EFYXb%xi#cdk>lZ6 z&>hHC<4nu}z+^zsK2w47GDFpSWj*2z^QpZ3;FqrG=*II+5l@O(Xuw^oL5lzaI^w{2 z8Kvq#o@)R0P0SM^73pg(isd^;) zd*_S-+Ml`JGu$5;rsp$<9wfaF0tf&nM{9;3B*igyagdZJt3v|ByxCoAGbG(p!ufvx z2Jq_vHvs~=ZvoEB4^=&q-MxFaoaY7de-d;L?e726HVaP8BBNuH3>+ZsSM=6J^8D)@ z;O7H20Rnoz2Ar2JRqqvktor#=uwl(-vfujge1Y6JH`<^r0xSjubQ}qsm!+!SyK*uT zLj+=SqWx5Uy74j$Qh-oyMPS*X%I$!|VvnM48=gC$Z?xZ_jRQ;q1oZ6#oR@=CJ(679 z{R2543#s1@qAt^ZG^FCii=f;-2?_xaipL{zqx4lAP;R-eB7&HUpHqaHUvvsisZ496Z5YRskI4`ZL-Yer&59O*A-SmEP9VOk=x{kWtobdBNI6x3CBPpuGS^Ex(q!_r6ZnGu5ouDHauP*|B z3GhciK<}S`^YXf?_sV!x2NOSys@AXQn48Rx*Y5zo2XG%CpyMaNdD*7wV7%JH_HPQR zrw!0CWXx7=gG1PpHrZxdPulLb&*l);=E{DYo63*d8-V{1a6cfR|EIutc~aHExLxp< zq5F0P)zb#(A3Aocdf^cEpiO#h>p|P?{Y(yFogqbkI=}AR1pGF@oq&M;yMXiZV^xo| zuI?Fo;(@2H>sYgV(K>!?oJZD8VEMth@r|0XQJxzg2>im&jf=o9o}??6$Wk z0|L4(2F}YhsvgOn*m+~&*VExtW!m?_qIwWtRBytf3c#XTO!pOws-?TQ6mbH$`@iY< zhJm!U#e-tCb2@qy-Px?9i{D!V{0zXC00G@+srNUlI*5lH)ckwA1lONUzU{!-|1&nM z+R!ZG3FD$kB^gNgr3lhg6Gdk((TpWLCzOW_1JyEH)BuWeabek?{pxx7vn7fevbMR zoZk_;ip_KC7Oe-+Tx7fB1EAzW;RKyhKzT&==I=O}qrxBhkqxljwu}cpu0K zCHr9Cd>;r@{$egFpYL@1-9S$L6Y#eI?*f8;_z!Si>=IdzluxJUzW-itT)p_RLRM#+&y^(v99=Lw}TAV5o6+ej9OTL2ugCXrQ=jTLw6N%cc zlt-{I-A+Q_H3ZWIJN#Y1PgM^Mq3=+|yP$DV~KEg}CYL88zGiZ-pz@w!N zS`rYn$7tZZOj7ko?eSUk$xm*Nd23EZPL|~Z%`&`6y2*Xgx9x0MmGiVUmpLC$?J6XS zPuWHE9Acb9LKT7$(I&bExqH@7BrTVG$)E`&g-;-u0YW4)*uc?b3Eos6d(R?S(S++_ zay)HAyKp(G9Zc`)GOWD-T0YQz?0VqO0!CHHcI;O9;ag6T<7eH^eka;@%2m=X)9Jh{ zuKydp^~vqHd<752y%;e};NQD(&B-0>H>~8Lstf;@HZ1E{vxXmrTEAk$3Xzhfm;91G zNJuYvMn=h0RSvN-(N#xpXNRM~;de*O9n9Fy>>VuiG>bpO&U~8DXBgSeN_Maq-Ji^- zRlj5Y4#u{#`8$}qoz?ANmD^bkxYmO_q>XX%Y%b!H56v*my>EuLR6>pW&~g9n*mpD; zw>05UKgIS&np_kicSfxn(b=J0aYo6#Mc((vp7~y!z8@z~Ah2$PdQXQP+b+w(9k7T8 zxhT!j36)_z^-kENx?#N>W`7LpjP8!GOQQR~5q5Xx*av3peN+FyWbd2oJ(Im$>**}! zpA*TQ8xdn|2`jQgw2g+4%DgHXkJKX9kEu60S=V=BZqAqxu5ycwYGnV3Iz?`Y(GtSf zj)ozqk%aI>Xdxs|fHvw8YK2q2Nxj&aK91@qOA@j4{;B!tD&i+tk}+oPpWvaUVg&Iz zc%FH^GMP*8XAlg5CqQr2`Li@2XBET9&mav4QeGoqay(*LHp%K~Br!6~QHCAO`hGO# z+YI4F!9tK-#fXNpdX;C|y5-q$ki~p);^9=aX(DmB6++5bVsp&$;|@=z8{^qudy;a# z?7}?Ai4m@8N9G!|qXEYP0)BHGa9&PO^_wHav->RZ+dpZZ9K7-5xG_;ik{i4 z*LIxJii8x1oO;+=8$_+uUPs)b`Fyb~gQ=qltA~m~SZnxtl;7v2EhYP{2hShS8L4W} z(tu(>KxY+jUK&+B5}ltV-twpDw|Q$6m7V06vpAWjYVU%~Ljy7=<;iR|qIoj4UPb2> zc>Z8L{1@<8HE0C{bgl%>%Q{t$q))7T;=i}AeiEIlHXOlML)oq9PQ!l=9Ka6)&Qf&> zbp)heYiJ)*&yBbdnxbwpNmI!pU`WbFQjuyQ926r=u;Jp`i^U?~1bT#dtRz$k_UX${ zR)r(sNLo1JKa;Kry1%>(eV?KHVAwr!C0y^qRuaqC1`7kYlwH4Ir7*Q_`l3)UX~ zBP+O2hrWX?=NnYma=rpv4tnf9UF$`3?0VXc7_U(~;fApTpN>qn%4tmqSJHA7*w9Sh|5#gJM+} z?;55jaNCDM2F$=6{;uWf*!z_UFCmr(k|mjfSrWU_2n`&jrAF`Mjz} znjhMedrE#D(w|%uIdUb^rlGkrZ7XMxwlOn!OW#AZe;P!A#kcf8{3h_hhk%$+Tfku`V%l3H|bmv41Xxj8z_%{JM z073iQ1N=3>2LN8WPL}P^cap4o-j?Uod+*sR?E}$zqiCBxauIonkUsLbE~>k5#T%+& zJJWZtvrX+PCz8`5tInfs1Tnh6LbbVew8ABjIkCZ(ut#!Wh@gt?O(w$HKDF@4v> z;LReqeJRh`;3F*|Eycg`R4PHvs{4{`S2_z@U~$W}D@iqu-gvmm0L##`3B)3s&JVfX zBII69St+}Pp=%nbja^FY0;_+jTi_RRV+j30{eamdECr>t1c zXHff>U{5$6@HxOl7pKPQN8&p!h(i}z+RL`xpM-d8;tF?ntemmwcF ziI^GS5eAWzRG^)?kcrY#A=`OrLxZ-I-#~d3_-lZ3$K>1j!m$n7bAW>zWjojT(w~3R zX==SOo)h0S&Xac1J-j3!zvHU)NJ!2b8B@^|b8x$irDw#Qv(H`4`d!L^P{Z9~7^F%hK( znP8Z~wmLdv@j2HyGcIu0O%5AlKPBoM8%0OCS;Qcr*`F}ur_90QTN9on9-faTs7(?1=n~vW@OF{9o z_+rkQY(l|@ypm8|1neyuikHL^Ns^eHCe+B36sL=<((;lG<>Sg)a^os~MM_g8SCZ02 zB{ND{NfujkvWx`W?0Skgq+TI8XR;yXO2g@H4)QNkGh3YK6HE)>psj0O4K{p?zFcLP2h zhv_xsu|%Mh)_az2#`TyNXR$EM&U}4-o#g4O+ORK|36v_%%CmT!Z!}z^w5Nf?q7ZPwlJxP}WN}JuB`fSIFz$>HmHH=16fNf_ZQornpKQL5$>o`@KK)JNMP5&FtpW_tzZd+8Hx~Tf)(e!&{ zH3uiu!6okpLxU9w79w{CYop@{uE92cK}GdPS>0hFn&+nuWj@>fXsR}!lQW1Wqu z9W^;VjZVavXR(v*uM?{bV*6A&l^*J_ZQvFjVc($aaMtLSy3W_hExLP~&gB*VcD-q< z-V!bG%R>9SSR#yIRqvazEtQyGA3BaOg6YZ#_FXoWrvFevKQOa|{k`fYa<1-PAb;ko zdeb?2OCoG|un#fQ*U9;M_HMKM2d2LZY6`TE_23O>S*7-02rR5U1kdy`(NiJcJKFTD z33RIdF7@Vzj*5ioN)is&Smnsbk&IW-Q6-sDrzGXhcG~Ugw5^B3hli56SfUnRn@;Ue z%=4_GbcQzPKUWo|E1523~H$VoDMi!!VtDkyz46iBEGPLzvhAS8vqaLsgn2l#z{VX)WkfWeh~P-0l%J< z=hL@OfnUHr4chmoN)E)+dEI7kvn(v;g0*eD&YIe7C9ktsw{;F!8<-%Z zLCAi!+gWS}dk}o^$Q|rjdJ9{8Io;=Bt44h5>-Z$tQ+;R$djMkPenPmc*}>*+XA5?)?f9Xh;D-*vtsxB7 z*}?GJc&0y~nhgQ=X;%FVn=D?7wO#gj1Lln}X2kNcW}Mt+K@!ZIXD5AfwMDM9++w%X zUkV*dx3SnKJ=^i9e~UYHtDC&pW#4m6yEp_D&|PfVHqt6vXyj znu>c+ZY#hI;#hH-GhV6L;T`MTNU~=Wa+OK0G|glOWfzm^Jyz94))KSGAXm8cm%Gjt zF1y?v4bF5np$q6#y8~g-SajSwnIU{0n;nwR2b&#T&Uc6&dM|^`2{8J9j4D5mdFQg2 zcxBfZ{0;JGMqTC=UFtcPdF)cJDO37x zk;8X~99lBc!uTPU+Vlm*SQxEyEA{g#ZLy^jI=7ONv2ok5Q!IKbdBt%54C@Bg+}Dhz zKN>C3fu-_KM)Y~ZzuTJqb&e zHc|xAj2p|aoQ0uE-%Oz^bP*^KW%lTbdgv&&XXBO~wc|crS8p~%i` z&Gt$n^+z;3PMu13W8yV}zjJ2%q*SFpJ6hQiZk{sU!`~UTICGe{IF*}S(H=i%bi&^t7+z!W=9Y7Bh@w48NaB!wA%9xe~i`S zyVVi@Kt2YB2pdp_Y=}C1`6bLc59#Y*^9bQzCQ*@QnFwb4Si_D)?TlrI?FeG*BZg`u zVu!1kh5NQ0PSmGu$V!G@7h!sBa$KU7`>Gl&;##4!o+=Yp4%SoXRk+LWi-vDU<6+D| z+oq|sUEy%eDjP1TkLbmE%(gH~ZH&9JS=bVEXldMvId%Fd!!nh0f)%{3sFuHHkucV3 zZdFSQ86n29CaFu0O6rp$7`wKe@j%)Hqf&=UNlq_0icDZUUVI?qxU@8BrO@ehMU8pc z$I}x?AYUT3Cgop&QB4m)XM@2}eV6;%IQUiUQz(imKoOVOq>SOl83c8s*e;6481{RW zeGp-lZEkX`i!?$`iH{5043k?o@EfIuhgRYe5towSF=4VuG=Y7SxRr@Dd7#f~Ji@ji zhq*bs!oa4el-}x$Qv7DfgiQ*+#AV1jBiv-y!mt=F!6u2IuAV>DShV*frxbb3EZx=v zN_gMoKGHWC^lq+7r)JnBZnYub5961YK-vD;~g%= zr3U1}VZUi$mza4NZC2R9_AS@B$w(uk5`1hv`UOijkgjk0zW3O#?)#%LzVPGVv+})EI3XzIFEI|lf<;11&JS9 z9)#H$8gir2=tE9IPd(s7P0JEHQI%M_^sJEvjD`Zdj+Q%hZW&kA2LC>cz7GDaL}rYv zndSi9GL3v;5f26){DZyCu|1>}pd|%pe+i#Qd{i_qC+~0ZAUh%V8({VE2Ua9H}ecgB|MEXJ( z$f}!(tAA!ib(=4$@0y}|$`aMBL{t^xb&hy_Sbr(R`|e&T@$a*p&HNa_8s^zRD@UXOT$!z>!pg|1#cAXV2=;}%6lLEiqa}}lc8G0RszEd ztj$nPw*22TiwE$ic&wYHnzG>MRyjF!J9qrKNj}``&^)BdQ5&cnb%QjHQ^a#Dc-Xob zpR3-%vfJ6J9c+zIFu2Xf2eyNilS-}28&B)JEnMA*Np)kh!PSlLLhCQVE*5z{{mJ6u zR(GnAem>2`#h1(UKbA>xk^R2x8zho6GGK8bdkl3UERstDE73VLyPFuBu|<0T^^Jb= zO^9hQ>U==#Tq`|-MkD0sI(bNs7rT&X|6{wIju17^cA7r0TavAmT*Tk@T1}GmI%q1d z1>GK=dRsVoYna^;9;OA+iAwt^iKk**^PxiXfn9-YrBd^uwLO^pT=T(FcRn#v(0gcJ z?}0&^`Q%ygy=VFNt`OgIFQ--B92zTSQxo|Ic_=cqHUgg;VW7(d-b#3OAXwO0`FNZ1{!$yRO>${6&SKpDG2KG*3Km)tl^}g-K#A{vyyEwXj zvA3BB1#FQ(pnrXyBV(ACo52;W{jp_2?7tDyJj_Tf$*#~3a~2ClD>Zw!3%VEl+7;vI z4&67BP%4D!?r%=?gAk(H8Tzf@va(yhm+#h_s1A>@Y%PA@nMY?$IuP4+x02Uv_jOy0 zxi{>lKie%X=|^V|Xkh0;P$9jk+6Pn6z}oD3)?h!2pM(nbZN2URyXeQZ^MK8MY&WH5 zKjiQSyUQCp*WS-|xaxGi?QW94eWBfSp3PM!^{8L9qaRp)cnXD5TK#u)oSV7WTlIaN zykKXx*|8_>+O47T3(V>*mh~5%TO*-R{o5_yOs${T{_A|r8Bb4yBW#!+M`zI1aMBm5 z2yIIEkduoehhov0U~MLDCRLjDA%J->GVNow&{ooF)R)ckT9eb@dEq(GYRWR@URf$R zJJDWssIh`h8Kj}Hum|aqt_3X8Ymw3%LLUrOm7^2&<3na6JquRTLHb;Z{($16QlD$a zhh{-o$1@6zjxIUeJVI%6pUWOG#+(6dE$%tZf3>lELK~Y@Q*kwGBx}? zIQqcisua4!*!aSelj{d5bSKBwc$vuIM;!4uP5hR$hU?GVr~3HGD_U1Jd~x1avb6G~ zvV@=XYr4rn_8iE+)p(kzcE&!=o)^y8%f0z$lgxg{AF#}G#u=mXEwG6kvf`NI!yC#I z^_$3-H&mZGd1LG84PPT;y#2Ygc5q{L67@F{{>5bU8L#SmFX>*X;O%2#5)am!oOTmR z4kTc%H!-W5!eX06_?S1SUmm>?rrX%BNYYJ|C7Ti_K-+tPWT$45S(bT)7DEUv36-bI zYRh9~*TaO%wZk$mhuf8*nxg8*$>^!0lB3zE_aNR-t3EU~J*IYSY|Mj@y!l7R>?Tc6 zB%8_j^tkXuGGQxe9Y1Nq6sV#5oVIU#+682K{eI4Lw%=2F+c0%<=Ix{n>SVNhoHsrO zQ0ip!1NuSsyqoEQ#dJZYe9{T+(J_AYO{7Nrwdz;(L)}Bl4sAMQ++q7IwvMPheC}Zj z7S|nBbfj|>JMxsH@ttGdB*(g+FFUsB^JguMe&MLG)nmwUnfRCRbKlmjUbdrcgtZ2L8 z<2jPXXh`RhLT(Sw7|{rvwn-*jk%VSkYL`GW_M>jbfrZ3}KR`4By;kVOzU_uHj_*P7 zx7}o!K^jXLOb0d{muXEJCGdz(y5Uf~#u(`B zzFUm7kCch4VE@2{k3aq%XpTo2i;jifPVMG_CmW9poE3K3_Rt4T%NXAC8Q+TfgEe-y z2>mpI#_p!Aq&@@mhLd)QKh_?DeGiO~QpAI)bWAtJuuIFt$P)b``@)K0j=4qA|4nZ< z4CoF6{m6A}KHkD`dB%8avK!$fg7GFtC`N@Ghq%wj;Yaj#Hxh;3o*W1FHleqpMU>vI z#wPT3{6-X>J2Yt(#eA;&Sy838qyPRFy?qKkLD(3sPnV8Guhs^7x*R20zLzubgi$;p zqU0t=*I`=ey629=uk%raofYhz`&PmxX*EMc%Y#ZjLmaL*^BH1fp>e0s4%qE*-Kg*T zx(l0)^9iFe$$KenmksoN)=r=${BT%2DgHvR>oo8rd`!jUJgQMzzTh1A>_>F#A+xZ> zw9|TtNOH*g2hRyxK$?}H-=)3Cz#QRvKE_&J&*%Nk_54qwe2lU>1UmjFas$&NL)u7= zIQ#|f@l~7k>a1F>?-NxA*TZY|ew$tE$WL;OACwHX3~)aqvC{+{YQQp}?j;6W2>cCF zKizh4UO#PJ)Sw*$SP2O11MdPK*WREl0Pxa(xb!nx{<`!FI7RvWUEM3M_pp87q!nif zkFJV7eG7X@Cw=-?iKxz@qUw=XlU@?L>4(8ou*cTDP%zJ_mAYolb7` z;+wqaSH1Yf-uDQ9)0jLC{-`hvF+HZU--f|EeiQ`9=_qApSBZL*2;i$ zkZ5tVXiTwJlt{x)n+~PmK$>Q71h6Y|S<5w?|Hs^S09aLA{ok2;=eF0&zOwbb-G!~N zOHo!qrAP-w0ZW2mK~_Z(Hh?WQtRafBq9Pg<>{vl#uSAU{8YNahP0(0~8pVXzV&eaI zX71g$tYE$`f7W~#&bxE#-kCXb=FF)!CQi%FR#fEdvcfa@>902nt zJlJZfB{qBQFzLX8|MNpA{{c`nxw9R_YbftErCz%LK-=P&lD}=ZT*-l6*{1Zrr(CSY z9g=v;`+9i%$@YLHzcjwB*vhvWpK>g+R+@6xE`Lvzze7Kjrs3_ciqW2|2ZE6*DIS5| z6@F3YK_r4x>fme`<0}z5(vUrY1eUzf)zmvURei)O^9cLkk6Zv>41_aNQQBNIIQaYGYIzw zRwod1Z4n5ELo}(=H(;{IyP^2(JT8)dqw_c;{k$;sdV37e^`|R3wPk7{KEuHW)oUjM zmH~V^^$N;=2Z)2!_+0q0qEoFmseOw#FJ3a@2l4+neBNAmQZJk^8_C?rIg;e(7ci2V zr|9P_S)5%crcNg!_7dcyjjOCfY7;NwLlvjh5N-|z)pm)4~KL>A8We01s`qfVcD*Zh7oyu ziSb5uh|#F;Z8nO->47k4r(|Ym3PSR@1|ESGXCjb;0RqJOz*WoCtt9Zh$W4UkELgN~ zm?vV}-{A-N$(^bCaV`2MCn=+*We&mI1K0!L_v37oPXR0e(AIsvx!%)%G&lYrehqU9 z9k_~pq#T1stOQL}%ooK=W4>EUKs@ zBzH+OncCXVQtg~Ov@l*SMEQEaeE_eW#YU9fAHnwyK--d0YFw-xtoG|}QS;lXD^)vh z{$cD*y>Zj&mX==6*7Fw`gt|w_-|;U>r|dJ?%OdrP_yRjv7+u7)#c}v}{A4 z;D;N1uk;Ichc0f`2L~poK`;hx94Vs${=KE#fenunibD<-;Q2(A;XrGY#v<4eY1)&# z=}d;#MfESp@)&;ty&)iz5UigbDK(kD;Y}6i6&q2BK`_2*!&P3U3_kTFfR)*uN!_gbM+`KM+E4vP4d*HR<=4_~P5H|<7yK^)0>u~(h z@U!f?2#MV{#G928;JI*Qc{sCgIBfQI2IyfEH#_Nw zII0AqM0TGJ1~RfG?hXt`!~3v@boMahXMLa$oBVQ=zI=Jy-HLJgYxb5rT#|f(C7>6; z!q8^Dhd1E+KWEoO!@Pb~R9_hlt%^3bz{hbg8%Un#`d+48yT907-F6Y())Cd0MnfIZ z#=a3A>&NPuo#FZb+_sOH5+3C8Cg`BqSCJI&vn>*G2ifeMuop$3YG-z09q~Pz0yjob z&Fnu+`)f1sX%UCz@frAY0~bY`FG|>tCXSIGdMACs+Ni!J8d@7|WF*lG{xQnmiLxl1 z%#1Q{f(_HHgLuMtJ8FChhyKwwaCbe3SmcdJd_&|;_K0kRcN2jT=x3IRvcFN^MV^Yg zC2q##KdunQb?mYT{_yfhv+*O_zSyOXjeL@-iXMFcJ^Bbe`f#NA3Fcl%-+6f?zC7|Q`-jB3 zkK>q1-;P=D#*iV7-3U(w{`wUn1!Z5#V2X zd4ydWNk1B9kA!O;j#v*xhMpS+Meh%lN*XTewOHBr!Xl$S24heo4rN9-v6}%iw{+CI z7#I+)DeH1EmyJ}%d*#!W!F*A&PvW3z!AG)SBp(Gg=D)C{u6$6xhJj8+BWXuMcC*b7 z=vO-+Yt;>{zIW2B;Kw*mcaGO06zgRA5H3x6|NT7770D!8(I z-S9+u=%9UeA6`GTp(UCNHkJ1G{>u2>_p6`LFd;a&6i+7bwd3|XG1U*xRHN#>c-{D5 zKI+xskXd_Xjos=d(baxfCwIR(g0AkFaRv@xMp>eF`@X#Tr=<&HePER*zc4$h2w&K* zYb|D-w3ELyJ{#PvdQy0QsD5gLiF`7%pZC2-?tXOrsSPb-g3%#;2AisuGG`x(A|=mPqVx^tl?2=e0N@^gv?bo=v*SX0m*dBn)%g)BDO|I8gUWCshLoZmOt z)bHrLLWQ%~?&q@l%UMH<6Fz{dR~?R2Cd$!`w{YSFmT*{C?gqb(xQLp4rR5*jKj1d_ zHHQV`a9Hq8!Wt$#Jaj3G#(~ChC}a|&QjwyO87%y=ud-6Sq>Sa_Fj@5OFT0pk4$mK1 z-Oan8W@I(I3wqtk`VQ}N2Ww_L(ys>UrAOHAc;%qqvpumJ{Eo4A%U=54p}iW1mcbu6 zwa+F#yk(d^JT$Cv-`ohcZ|R6dY}AO6BgaHw<=Mq`Vf@H39E_0717mMz2M#}=xxd}- z13sl?vOXm=xz9mS-v8h|58=$7$`2Ynwd6 z?5I&k&Nw34ww4_|eDs;RNFS^6vnXWaBTj4ftq2m{Vz>0dB75~t5+>_V0v5Ixj7F*+kEqVuC?5X;mb zOX5!XzLe!cNQfx77Q7;C2ckozm%zTx6)^axkR&m9gJG;gi39n)vm4~aI%z;4gBC$M zkcSK&l6Wk895{GMEfJoUQe@n*v$yx|e0%siZ=>%ME;q8{DoQJE%4OLZ-ANYqNgtk38*)>yXuB z9stcB>b8TPquN5Cs@mw^)vmL@=_${$P(4HK7Rn|dNgYS$(f1MX=iIG8-gxpT9Pa%E z)#vo}(8*G~E8K~8Nd>E-c($lo_F&Z^_MUKZve|*&Q`Ma<_x(?ekWb~^4AmcB;8sTR ztg@`8H%tiBSB=(7ci6sJGeq)i=nPa#6#gRl(R9HrSjMO~B_Xy6;On>3iAZex-fuL< zdv$6+t5BQOl?SsRU`96j@3CvU_Rj@M`WQb3N9I=Ac>@sd)XVJ@)4aY>-yU=z-eQCB z9SI)7mm63O+jU{(z_qBk&2={*^=+fv6dQnGSDsB5y_GA4eM< z3L(%KnDnP;bVC$V2!#(oQeBu2P_zgt?Z!(O)TNpRRy5A;?iND8q3AeX_y8)a&;hOt z8xS^Kaz6%|lKNIP^yWKMJFiCj`EgE?$JA@(fGU75hZ%_SXu$pe+P0>YyrtPv`{%uO zUjLjr&iz1og_GtkoN;1jxWKLKN&YEj-bo?}@t;UCfT*HO=Uw?Fvm16gmQ zk5d+GBJcG_I5b%?5}JU~;23d``NHrEZRDDk4$leMTJ%dI6`GVHAhr%1tIFbP5-Fw}!E9|E~Wo#=u&uhsQWYzi{+11XH0>oR;ta;8$%gGxUW(MppZl@UWeYe%DQ2xKa zip3v{^(#91&&o*eHMgWbQYG~AT2aFbpVXFv+Z4td3n$r@;b$dB|NhB#h>1v9K@=FqIPBEg4M4RYDi^ZTng!{4dFU^}J zP&JgoTQlxvAWXAk@C9YH5D8~37kym`Wdp^EgvWxOjb`*n1m2%!3?>OKOi(RWj1UCA zrrh(tjQ&dX^Lq53KVB}Mi<}&QdjNhvkC<1l9S67^K-=|yRsH)-sp{9@A|(%7`;j`| z!*ogcU3Tf{UH$itoBLCWngW?x@gn{k<6FiS@uzjU8~v>ukzd)`mZECtvrIb-Bq4PU z`3I6tt3tQoA1FAq0;O17Rm1Wg&W6W#qEbBmV7#srk8(JncS;#W%znczLUs4quE&+0(J+uVdC%vFPKpT&ji~alm%ra$pT7EZg}-AOeh@n4$!)tJ zFh`Pacmy-Hie0Mo9e-52z2&*13(Ak@4bX_bl6GxLbt*ru3U*ShOM=OO9jt@>n`t^B zSatBe$rAHGk|TWEJiaX+2(f$dG9ccsAPMTLNB$fSY={dptjAZv zUIJ$A516^v;+Ae*6)e9n2zqE zZ}whLuN?-s5a9C({TJ42KL`858mz-uZOPrahTPr7mcn2466YO;{(`=m-A)tVXEX(F)o&IPFXJP~Ib(z@?)A6@ zPl_R6AMQ%`mxL`QJs@nmQF%c8-N&(agYmb6#>c@ro-^KMe^-d|O>h8tKiCN#ND1Fc z|GH2oT3#7Sn3po22!5J~f1X&$icPCp$-NUOm6uIa1}-2r}#q@m$5J9qQ`nE{W-fkRRgyRgX;l=_hLY#4Xt{43Wa{mK_d-Ox6w8^3K*#u%;uD2x|~R&GeJS*=zt_m;jr!huQW1 zxM*)Ghj_Yyw**3Q{cL6j#7}i$FJ|I=jB_Zg1EDJzjOU`_0>&?4!>_|DGS@Qt^UIm- zy4S#`yrrpW6N9I3#EQWn$g+w6g)M+9A*+{F1l)tp2u{S9&yQfkbknY}OgpMKm`$Pq zX+ehrvJyVxdbKfCuY=XpPgpSwF_$n9i6$ZJpJ1BqlacGQgku?TAYs;Cd~hAeF!3P+IpJ7?Nn5o0}#Mk7!4s4k+RM3V5iBwlW`bL z>c@xSn~ti6g`?|zO*nr$aC%3%7s_#Gp4%U`WC(5pn^PUGU39JqN`884h1rZ)XE}Iw z!=x}$YF6PBF~h*tDG$9bjXbrjeO`^f)junYKXx+KsepQbKmNv{JOj`Upl#9swSH-y zq4uS}RpYMX%bt<9co|j{<+(``oob>#*6FUc!kKr2)p(;NZm{$ltzkD<){R&#F2}r5 zjJ1L=+3l?H4km7A`W>uP?{zb?uB8S*(0oL}>%-}%)N4lq<^cS5T!=Dl zr+WLHQkb?l`06OcBvaG+i-&y^8F79WS`b)!9DMTuyo02|5v7csOS09Ue1jy z)K2@d;YP7E3nPIU{5KqohcqT0gc8*RJ#oQr)r1wc|}*+J$cEH&(!%v6`N%f?fQ0Uo7*LCL}%6rVst){h}7DMz<{!KYd3{olgRDpIb6ka>X)9e zW8aYBt24&sS$<{Kx;evd%NW1R@~gAL97r!0Z_qr-KsarlkS=m!vn%;f!bBL(*K{s6lw zXkJTk{~ig1p9+|8)HI(9@aF^QySD!{AkK~?ElI4kToHco!sDndJfJ#_#Wg)|-vq^vhK=yZDi#t-h9woXr zi~A~Jdqr77po$Sy#st0yN_b7HL}Xe7$JYD6Haw2>t=v2afII@w85G&YRt}2txC?_e zC^Hd%9zbP+(M|+1rhG6E;K9*>iQz0FsV74mVPXu}o%8UFP-8g9@K4Xt^qS`rF@8%x zP04bWOxsZf9KquZl2W19<0?$u>AEmU|fqRz3miO>odcnn9~~L~%rZCDX9L zrA05j)AjxWstKE5EJQ_cXM3U@9j_|7vHt9WKh9p~ARa7WEWoE5lToJaC*HoheYCtt zKMg%YH)`v*qvP}2j+leMgFYEaw4OMfCb;EHdmjdAZQP~)ErXLq8E;Sw4q6JWLy>@0 zo6){nbV|gUUsLU{0rksymD&B=dTkhBJiu>TmCPvy^$ z3dxajN}CU+InjC;h-8theAPywZxY97=ZP|IJ{Zs+2yk<(o>DE5gsl~lqQFH74O0a+ z_!w#*#CVnn6fwdQ;b^jt$SGyL*B)C@PoM9Z`15*g7T^?sKhHmcvbGp`MgX*}I@7EF zX=*>oTfe`uP2t6=9?~OHzTHBzq}Q@L#Tv%eva6Wf)vZCTRyZ~HSw;6-AL{p5>3gjQ z_W7Gx?e!?B^NDmK7s ziox6K9;5g!0}Yzz7`_O3orZhL6j4P8#|U1M9?+Nq-utVXzQ`S~zfWM@j*Cjlx1f zBSB?XhAEn!BL#MWgdQb|@RET#+ON?ne9DGY`j1W2TS_zer zx=J|;-HfBcQpMgVumrF+ijqyj*(jPeiBGT&NXt``H;K$fk)vh6Hc$ojro-NF?3ac0 zim@K*-nF#Z~4HXz|;SkQN^2aJ#~7n|L}uf| z95)L2R*SH*rJ0DF+jSi#he+us8Cy3Lf~P9(Hmo3QG_ZHnSZjSpjkBYc7Vz%{l-~!G zbrkULJe2POYyj*C|JJ{$^py7xSNzDX#*P`YX3Z~1UVI$nz>YsD?6_TF$L$_=9J&#S zAmIeDNwAHga+A0pSP|JI25m%Oa)0&NxmxtG$uhHQ#cF(C|s$d&UMz^Syz$q4}7 zYh>+=*qsPeg?J+HR0DegCWPXJc10YrfR)BrQ0T=y#0m3=VIn+oSoeri5K&{W*aq_w z4#le69Fqz;9iDH5JfTiPJ@h?=KdUb);7@oN>>>bD06zWt70Ryww2Kw~v@%7f+Iy?L zcBZ0VL$~w{{aT2GZ9BrBb!^^a3<*asPzguh<&W)zxD4DV8aIh+fkqHKfZj|h5SM#_ zHk5Pba>u^Zw3eIJn=sG?ad{i@%YYRI+hR3-U=e{4;CEf{lxMMD==ynjzc+zCSg?O; zTU#v%EIP@{Uu@h!?7myOI@c{Rav!)}g=sd9D7EdTlsh0l>$L%~ZY=_yVA+OU)($qyTLpq<}3d$+RE``wmrE5A+xaUbGukAx09U<7FR7p0_HW z>xLvZ==zO%zo+2BAbhIwhAlSR+f$XzI=ew4%bygooB(8L?S?GHyc`0V9GB>FkR&Mm z*gz1JPl%xOlV(@nAtn$|1A7N!5exoBqD&cFEDQ&RGT_%J02Yy!ZU{qGo<3m-B81q# zAtI|jRCuxl{qN(+$mR9gB*2dWKAxP4@`Zrq0NT!edHZ!uv!_4nsr;xj=gphb$@=g# z6hN$f`aI%8nl_4xP2xJF*|usa`P3I^HT!dDpnEwMMe!HCLKfUkifN#dPx$WeM@h53 zOfEi~cm>0w@&XN1G&4qAv5x4`GM*3}mEx?I9S-aMk5qeQE-SRxLX^(|JO%LEt9eDe zb|~N^0Bu7)QSEj1J8Hk!Uk5(jGxT=$+=X45Ydw2J&C+LKmZnCl+X!o6AQK?4Nj!l$ zngqZQ;$i@e>@3kaT*kRVNwRZ`VRC41Hrdmm*z+MsZA~f1HCF`!ADBbnw9U;j#|;K~ zQ6OR@u#V=NO(ok6eqIhCH}E%8d~O;y1o-Me;0wAd_fJ!HSzmq% zSi2&;wi3g@gl|&0RRvlYLz%>#QN+B%jdd7RF;>BzAoFs;Cj+3Cmf%g$ilUy6Xgh&r|uhCnNvW~r#c>JP$K76q4ok(pj*Iv1J7GPC3@G5!yt^(_(kgILNh zGLtO@;xekhw%uNmkf$9VGvWn@$ppXIcspn*7s3?gSaZDtziNuaHZM(5h z4)H5y8f5NA+D~Vvi$nDP+P^Bi>A0#uXFf&Qy1HH~0(f)=ITh=*g@9iGXp3I!;mvBb zU+3|0)21o=)z%)8PcK+FfA-uX3sVnrCqK(%?&O z!f@u6^6;F%@nF&?>+Cm1{6?_YyP3M#52;#f5b$l!JHnC_L0`S4Yb1TI$vNbxa9oaAO=FjKp4P#K)$GVS%X@Y;kxf zp$s5?3qdYfiAwB+Gn9$}2FJu=lY0haYH$F6OC!kz=+0c&f<+`8U9onc^}qifa;I}3 z2Y{Xva|@}p;bMokP?$93lOt_1DOE=@oGv2|X5`EaW)K*WK296@x$5^tD+~Sp4$7a? z@v6>#H%>))Ibbb-w(fk{T940I=h2T{Ef>J_qI|{*T@H(bmD1v16d5?7NZnoOE4HJc z7g)iy$#qK3R_IYOi{ z`A9!+Jq9ydSj1tKk0l+>Av_c5AZaCsm@}rpCsF)UZ#+YIAlU^^%%g4n!lVD!6#Dai zlz$C)3gGh#8&LiL@HYT$+g?)q;=W#<`m;T~+tzH)(EsDQSyvS#J&T}Yl3n>I)2>DD zw0&UcTa4rfM*4lF8cJY+-DuUCh`Fk1=Q1o?;PxS#kVGSB9IU?~4p9r*TFM+mN?W=C z+uAQx`?OzMm>)Ny{2}0TfZsm5UkAP#FcU!A+54z<>DuE|oIu-Kht#H&o@H0#du=@^ z+;NBdQ)FFXj;vfOuGH5EwpQHE*MRD*aNfqc6q?Fqx^}k%Z%Cs*j9^00X|;01v0H5E zKeviuKAI{=;MJmpI|!LJZ2l864s}w{&5J+=YPCqpsz3|%=lhc(4IC*?0S;CAiqVQlu*w9H#|)J2dw88i{q+ykU%BfGdebveUIw@f z;P=XB6$mOi2WiOAPrnt~ zAJ9QV%(IwrDo0F&xH%mwYcf}YP#K~YBo{Yz2k{PJos3!Bl*#A&gOaoW;fr83k%Gq4 zMGTEN-&afxg~D;Wq9~rpq}z(EwCp`)j-Ao&%@JJ(%_`#xw$fm$jBgFO zyHKnIHCf>d@cB!cFQ8Re3grUHcpyXGk&NeG=s$Le$u2hSx9qOd1%y1%AKZjsu(fb@ z%OG%n4G#zV1nejn2FIj9cRdTFq8Njrk_64)EiiG*=&4{75#^S$H-!GC7^G)}eFem` zz8EO7#uRs(+s`q}P25Z}!+U7i+8+^3TG$w)FaE$_s|wDf6yo+u2HSC~ceuo=MXbpH zug|86@wc2PLXO+8%S1TLs-j9KealmW)is3p!X+OozM*cj)|K6cGOu(i$5%iYxWiM|+Xf;lec)DnHfxi3^p!V`5_!(;S%zO#@GO-h}$-2A!69&=LAiyLko?4-6_q%z%uQ`Jsge63Z zO`;wnOQ~9zcMDkGR|MincUfs#cEs^62GMYo+^ZKzh6zh8$SI&i#^ASIME!(X!HhU@ zEGjBdCQo?^hfliYf<3cls`gulcJbwU`CAYR60i*5w_ok8_1ZMRMF84XB^4b`x@zC< zts9!}?V0vdOH6W0nLKCq;pB&lwdTE8WMZxPmRfS&z`89ti6lU=G=HfW-XR`hONG%P z5FR@uf3qDTzEn)=5F?g~q&!nH7V5|`iqi!7z@+Snh!v;#3}SDw-wO7uuy1m@kPi20 zLF1?##=|kge$}*ot(#BkyS-vkI-q(Y81I?JGp7Eu8Ir%*^(NA@|HYiN6>$<1pP9+6 zrv9l}atq=jfC9aRK|vG<5r7M2>RTM|e?odMXH!9o~r`pq0-{01L+(BJe$om^YD8_IEuNMvGD+8r92gB>qPEph_}YG3VIJFn^2dPk z+Y9)*0Obn-s{ypV`$xqe`*CPnz4cDV4LyUe;Qt6uzdMs*)uVjLzHikt{@<*6{sl_G zE)ncvA>QhWi{?dQ7g>}#P9j$x7Ln_vt_`nJ>s`}rpdcdCqRKJe7qd>=RM)^U&V*sBHy^b<% zfA{wP1v)MXP?u$F``bPxzkjhMlT{D^t(0yWzec=GWHc-yCntM>m4W-N?UNZeZ_d0P9-qAkitM- zBlKRhmy`&p*ukCVkKzw~$jn<#a;1Pnh;3nn>~vJ|cDF8z4=?2q*k9J?mDf zPBvW!nPI)<0yqV_4cn@SYL^YDZ?in3X?x#QuN??D8{oIgMwGV!!oO1ObKBPK>1>Nf zXBWNSQ~1-q(6@E!vR(j{RnBwczDKrntfaC-b}CzX4K2zZHrPXkxX0}>lb@y&wJN<9+&W#6$wr0{s3Rh%#;Cz5Ray?SpBiuKT=#8tbjM}2*~AAC=}HVSY6z;BnsQ9co{2tZqR{^ArbUeuBvi_3)&-Lrd4uuSM14LcbLWgE>pyW|iLx&YfS+ z1Lq3s98r0$;I~@Uw^{pX%h6m>b9aON#;tmaL<@g&ol6;C!IFPcFY&BZ>uAciswSSsF%6J~?jVh-K-g1>(a{h=w2EhxGw8upa)`(TG zgdh{xW>a}`Ap#>sYc;GI7c>HW(ZpmtP56l6uR*4dHS9+#hYU@20w1a0aJPML@D0l1n&Tm^VZ_e>DOk@W;b}2(5;3t{f z1(u?EE1U+2-bX3xJf>|U@%Wn*Ox}70E|Pmf8;gu9xA4lFAxi0kKt%zPUgY@@LrtQ=*U}`0q#ZgYEW?6qf;$n2#*yn0$FPorW|kt^ zz{J*pyn$jLxUA~MOvRJkMX0&ULjjpxBLRN|?+I-S z7NFh<=?HF3r%`e#)0QJz3^^z!_>YNLQ^AFj4>)aknSDxCJs0Eq{r>$F9_t)Iw#pldj-ZS;==C=wZDJTW?^E&nxY-eEM-J&eJYi_VYH(FOX zayL!8G6eSZtYGNeU>KQWOw2)HBm(5&O3YW7*epaDgc3~W{SC`DgOCi^W_cANf%P|> zVVIcUKBA8jH3>x4;VJwAS&RUZ&cf^y&mmV=B4&p&M~SK?9?ON3>@*<3(KTW>iPy zn|DX*zJ5G>g7>ylM4!U>@Ko>Yk3_xTeT@WXmxe;iL&X%HM_3gI(Zj3;1mtnhd3in* z;doYo^uxP)D4$N~Tf;-JOh>fCX>^?|6B7tSVcPRRn36CqZN#2zOv~M*jOJN{0AeKM zC@~O-QHngs_nAZ=B-o&R&f6!9X2i`K3rEUcIFp27ijJtu>TSi|TXL9rkX1(qkwj)A z|7vf10nBNvB*Z3kj;ebQ!^hG#G_UaO%U>79)vU*1TLd@<;E${QpFnI7z&rqL-SI8z z$p=<__ygjbAKeOGDG$0YlFw3$GIv!-_l1vi_lJRWD?_1cLtz71E_aG_!*+ml=-&S^ z((U6RoqT3Hq#NZSo%gm*q@(lUsoq(MbbArf-5Czu72XNbjR4YZwJ{qyd{hDHzSs`w zQk_UwYUtKL4^7IU4kEn!e>T1XJN#Z z_Uh66n*yD_0OhLy*8=={+=Mc1_j&s_UsZHkdsdATc@aNbdno_f%#&n2yjd7w;67(- zC=A@;Yrti#aL&@TbEEhHW1EGy%bwQD%#~54ns5|D{4=2^Ow7Zfm%Vv-QLXB~+NTQi z;vAH30^A1h>-`kUw7uc&ch-MTKBw#wc0C{E^`D%D(;aX)k__t%`8z`XhUIUGVqw4K z+IdKLI+E|hYRz)2o5IGvh}RoY!9~@DDX^0XBT)?^0MqQ9hxE^dz8`!jgPPvPw7{wn z8pH@yL~9~PU==J`7ugP4y=u4Crwe%h2+HdKPXhdQdj@6Np7ZuQYqy@md%2X|4)Jg4 zg7{Id9<|RD@cvwsmjiwY@awS(W!lzy`yU?fRXx53@$dNGApWWb)qlBX3wVDT%1Z&4 z0Q`EdMp@R|+wZLZS~_}09x+piBG7*l@r`IZ;_M?6X|xPbgb{x))9ykv^uaQi@}@H9u{X{Ns*t2Iq-&Ypw_LCmBLSJqiTod-xm7+1C+l2=+AYwgE;Pa z(8AxrP8C4gs=Jh5*}|qb<#FaSB^PU+;rSuH`nEj3tLXr(^GA`42F&=be)kcx=gg7s z2H#t`sP3u8Z)@42x~gw$iL&0~zApM~5O-H<>!bb6{mg29sM!`uLX#Ma3Ol%jnRVt2 zokBC}GxV9r#g*Y|rl;;U!IM42$Yw82-e+bmP3=U~k&AI&0 zO3R6zBz^`n1quibtAYcNmgRExXSN^DZ9%Gr=pOF1ENj+h0z%(2njZEG#P287*QG-2E-!BEJ zp$PBkW}E}eYZ>A)-N2a$_A!RWz?utdfVIDMfJ-KkdqeVD!Yf#XQG)m-6-FuObTzpS z0m!U!GI<8z42<%NGMO08+h`$JT2zFB`=&C8S(?cnQaZdOS{z0CpRwLPhx_Z`C^iLE zAAtSwc#5K)v|vTC8-9D^&F3-vz{G;*W(=9NA0~$bj%*ncW<`5UIckC)tqBdT`AL8e zOXw_=YeC1f@UpSdRGx?W*TAX^$@B`Zh@RZi5*Re)XSjX0)yPkWiZtp@Rg`6dp+ly^ zaPf5WOtv>`Fq(Mu95&>%ecTvAt1gCz;RL<%^n=f4c#tpP2XbJ|B}f8=Lp|z*qJ8*K zUPZH>c8`k$$bT@6x%&N%IafR$CEGGsd9fN;iIG*;AOPivfxVgBr;Q|PM%Jbg^cq1k zFQI_NT+hM@K4WJSSlt+nc0=+!LK5FHp9&>L4^hn5l9mK>5SG}$Sqh$M~~Bzum^GbPC5Uep+B z$kUldtD(gR^^f(->dD4*Lp9FXctfnk8nj<7Q-N$&dJIn^+fv3t26(%u51<(US228h zHA)c#H7Bh!{Z%{L+*r+xenX&G?fRWnxuU4;+S%GtW1p7laI|Q^lxn-&Dl;mwxg4^Q zg{o?rtp=mT9+Yj&HRw6;19-Dd8D|>p27&WbTl)Lm&!uv(0=7a;5qxzZ6{`=_rHf!h zq&EZ97tuFnb7d7>zY)Utel5*?|HHa#|`2O(%r>P#;Z zwU9UD6(bHWg#ku2h*lU5=>6^Sa8P^&LI{E3i(ttZtF^Gp%pqzG`bw0N1G*UQ!hDO{ ziH2w~=#QP)lS9br{Wh2ZHxPk$rD~~;k*eLbmkRUwOq5RooComQUEGiI+kn3SXv@8! z)-Q{^_$T{%cKBP@s`Ep8$lvJj8HXRG0>S#TI*FWC=u+f#hVmOP_9Ra-DAwn?7Y*x< z1cU&;ix;hr9||HHhKrFCjaU>DYbK8SqVb!Y@=)FH9(eXMiiXA9smuMWP!SaS948*!9DiHB2fL%fYc@hoOigAq*4) zIF?aG;3kH!SBT7m=s&@9Bo>6*7|L}NNY6F`z3CWBk2>7rJ0@=(t@>^4%a9AIuGA8* zz;+H$1@Om94a&6j_x5wT`Eh%XY8{?@cvtgCwe|b9QJm8Gh**2#!nV1yz$+z&j)R)E zavxW_!a0v=0|5xugAjs4<>>3+%>lG6 z{->e~OYT*99KQKP@td_5sr|Y$dxqbvt(VnYFniwILXCHQqjvcts(nWtH}~*e&*5%Y z8})~vbziXX2l-3m+fHgDbg5hv*cSZO4FFrN328(7^EVi;tBsq_us#*cZ7ehTAmg&5zLc4> zpj;g#K8893sU|R|2Ec8B=Rm+ZTRJOdz{`dKqe{70o~t+{GE0rY(OLLWFm-?i1%1TltQ8&ieUub7e(Pv z)GkZx^yz>VEslWmv%v7-$(&WyPoG7E8UaPq70!C5odTmEa{_7-g>C`H0_29OY7zuy zmRgOd0Z>CkRSl3^r}N80qEUWz=Vkg^Ll02jy#e2yqZ8P2o9eX&Kr_Jq?lCCSc9^%1 zc8iB7FXCszd#XM#1e=BL9wNW{ai(=J`tXtX@Syx~L?iC{;VG*|emLBvzVqRx<EH@?T8KgPa+`2#Qs;D7f)DAV?1Z@)9S&5Fm>cmDt+eX2@THVbqR!V4Zo z$A-0QF*un<3PbvVBwl_s`ogQ{I()xh&jD{DR~BGTfM3s{DAP95+y5V^=al&~X3v54 zaKyZ0kDXDd>1{i#X|q?)wfO#=tcj*&->TQ@0DAzudLkM@y>6&QWw=y~m%n zd-_oy4~JH4miP5&zbX?yir0z$giLy=l1Y!GwfGgzC}|xueWT!;#9rFH7zk0b=*%SC zEbh++AL>J6B6@a`|2)}kKw~6GzpQeWa$+D(Nalo`8*z{)IYvf7N)ptk!}x12qE#?i zN05v(4J&WNgAH|JpjB{Ofh`Nst1ctId9oTmnLiZTdp^p?15O6`cy$HJwB7FQkLsq6 zmKX8UQ}Kh3m^WvZ;(_=Qrd{daXIweL17RvfTx-(^AbK?fR7qHpBlT^_3DNL50J=bO zE<(&s0y;Gg)P{VPO&`1uU+1+$?vDk#rbQ^<1-K93w}ZP`wL{L^Z~e8R7k(Uiza1VP zv0fH;HNLg|^tc&wMxikdoPFd`;M2$^@M6yz5Z?JW%3?7YQ-|rNoPH9Whm@Vd!*m^X!n!QkSA$> zU=f6%gO#mGzLTb&z}gYRx(v7mRXlG~yWN0p2>>Fe`}mPNNY%Ro_3`Wd14tRolIK zo`~=F>-l?>{|qSkQ=y)lP>#O~do2KM>u&Yv`BJri#ml>~`h=c|1914fW7}sOE(g?l zcDDT@85^u&a`!%Vu6DIkbE_4)%}QBAuynWWM@?x~i<84{vz}vE;OlV4(~(rsy4C7+ zn>AR=K^}2p=(r+|6t>`odD&7fmH}6c3-~k>5oMb6{q((bk#Y231#o2`Oa)*EgAq9c zN5gOg^SMeM*)F&9QMqdje_N9DXm?Mwwehb^<|NA$IMRUW}J^QifF8s zh#CRWX()wswtYmRe7HVBoX3r&T<_p;$HcF+`_yBPF>5~_|BTZ4st&7&rg zfMl&2GfLjA;yD<{=vejua){j8OAIEm0mp5`^oDN>(q5*KytK%5;1VayUX+&_g!*>%zE zplW()2KGoLwKxyMaWb7ZjbJblPwth-sOw0DsOvK!^|kdr2tKKtHueG{sI7UL8o!g? ztJhk+bGM@WG~juFKYpv;uh-fDrvhmE_!=d*Sm)Un9^%Q>R_A(VzL?u~VrRC2^rVM4 zLVr&OOamMQ7z!A;zpE{G-WS@0{JYG0o3VEgHwWknR5d?m#XqAK;L!(^uEo%tH-G0tqon_$+LBAIC_qpk+KXV@x?03&a`4@l-0Dga7gfeZ* zz5UMeMfFsC?ArRtg;e8(EKzCnU|L(k(i%DO;|C6TavSQ^>q~sEziv2W3*vqQehTpG zbw0|pUG436wr*J0SJC5L&DX#W_wX5W=aL+;ZQc>Y*9<)jLd3-kKXC~GRPhe3Jq}4N zLi{1*U&OS`gnqn8SP7BPC6)|Bn!7Ssv}BMtP;npNhjpYJt-*QjQLQmV}_1F`}gwtA-4|^izk?Ni4GfZ2O>5wkiCuGP9l)AWgleu zbYzf0u>q}oB*v+CR$##+*c6X~4xQogKWN8{Y)MT^eO#|i2h0Na?fqwzkNyj6t^l;P zMil;acyW%e^y0L?dtA@Z&u;DA6AevKYq{M0g~{D5YPUchELI0~p8{2uJ68m>TYzfe3gDNCRYX8w zW=c`|L$%K$L4zv6GD}{;nlBtNRQYk!eaK`Fn`! z^X-)anD;_Z?p5-Mi0>OjsQM6|uQTT3d6}H!QM7BpOVI!r-V9UKQov!HWHR@7%{D5*Y8Bk5F{t{!a>YBL6939|86N_;g|_ z$}<6T0kn0e%Zog^Ji+rr+SP-hKqr)cM<-#%M0Ru+`q@X)Pb4(_7tzlJfrUgrLoi;+ z8@)q`<9eTF1!R|%@l#oEB^hl%zk_k=Eg2qQD5UJLxglcO=}m`rI#RXMX4K!Or^B~` z_XHdb@Z0Hjl-~uIpQ(20PEX(T{g0mSnR&i@J1JT*Qx5#?D8p6TQGv&Ww!#1vxPS#N zM3!1_pqi{-xW6~j7n$x?f_*J$r2j*tz7cYyPw3D4#d@cfvbrT|DD*Cjv(6HY(li)_ z?xS=%=uGFx+rRt3n;-{W${%C$#XA^9af}`rTm_?tydgVtQ=*(eG^_5T=xQY!S$nkV z&$Z|$zduj6j4o)?D$6U>v@%B?>?eO8Qm1ZKyTiYGMLoIQ%~RFfb6rAv5LgG74H)ekyb(TW z;YV2DQLGmeGzY;O8y$!hDtTqoF?&Yh-?Jk1TT#MduL>hd!ZrUgM7{sOvm|lD`#xu> zFYrv&=ZxJYAN!R^-A#|3BiOk(v7Y^0q!!Z&gdfCP)StjRmXZ)bz2iKdIv*AeRp)Vb zwS31)ky=Hl|I6(kxvucY)jYM59=RHF3HiwRBDIA6%2ig~9cqvifrW0yG)Js7O?L=K z;Z104heM?inmzvx2n2C&vFL||+Kz@*qdc!B#i3m$MZClNYumqJN7Lty@BHo%ZZzcZ zC8uTtyEL{jWK3?)JJR_yL=r}^-tRwoi+l#z&mEek9qhaQ<=l7wDso4vFYfv`clJDe zdBVlCpXmDKbvt~=|F-sZWbGuk)`g1ht^T|~_rw>7jSMIT_;ha&%2NQd0JL@Z`A;g; zytUq&?=??9+#~Zn=-!lh?P?19t)efDigF-I+*)J+Yy8r1|7NglNUir4`^-rF)xbFW z%0Ok2gM@|$>`gK2K%El|mIOkSaLsy)9%JNfg-!Cyij4LA|tx93eLZvuP-pso8n^6n4Oo@3`K=1H~aSV^kY z0^(NHy2Cz&Tw}Sj($F49>xMjj-{%IL*9`Y%gS{eK`&A?L8nyO|Mv81d=x(3GF7VpP z9g`?ix_`jSzDqacI^Q8DdHD`ma{iO9G5kdBxf50YtoW+XKVPGq{u=(i0Kb2xquc?w z7O+cv zkHPMheRQ9Zy5GQL^@Kq#p#cxdFs;gUnBs&X|Mn)I=ni|U&e+etgT@X56?gVp9lIQ+ zXL&AP;dR@;8%I0h$>blP=jjiqZPCwEzfJl_q2GRm^0R;!0Diyy9p&a`{SZQaLJ z(2M`vqjaiEzfDygr?{PGRLAY9dhBny_6>S0t{R{9zRhs2G1#@Tr>-+n*JCs#ZiQqK zZ9sSVz0z-oz0zoe=|;o~>FkZZEY?2O+3(a4eS)fSzi+J8OT)u(F%|5>k%1MCm* z+y8i!R|3`ocGUj4AG-bfeQyVJAg^9$2dpsM3k-Il?0}_4s)IVq`@43)R^5G1XYb1n z_&`r>p$_;||35;4WP2_;Q}x3ktf8|X?n3zmz{>!?AO3}M6K~Ll0(R67(|(A4*so27 zaM;QeYo+9|o+Q>|T+cDI=g|W`YvqYlU((&@boRXLhu`U`7tjx}x0K4Iz*ZFmpgR_* zNPhIeE)#;s+sZe{387OGDdms<3Ad|toUQs}3)Uo-Fu{EEg>b)8D@$21UG-#s%699g_k3gBWv%LL(rQXd%0fr7mz4rmM$hyD5 zw6B49u2*-V_V9-69YYQ2g4YTVl^05~MZAmDBI=?lLGb3c4(vqFRqdmRLi_v(<#xbv z0Ka`!p!^u%MF4Hx`L)$Q#5!o-dD0MND^qOR_9OH$U0aR}h#r^Fp}W7(*?Dqgp0B5t z(8#=4jm!dz_C4cqVSzvMhNFCphU0%e2+?lqf3DiQ-7K{Cb0}{D{1M={_uo;b&9>D3 zzk-iwZ-tWNx6%TLOO(8yX}6%IBM>*s0ZGUh@HEY204@h5FwV1clczdSZ=f2O9g9^v zoQV4Q<8nR9ZvZv}{C4;&%Crglzt|2VB|V~Xsm3Je(UVr0KPIXAiXwF#iylpqr#dTN z70TL zI~#XBYR52=MqOg)-g3m*m;mQ!p8($?nCKERwL9j%J^X@T0};od^?X&oXYk#A{i*^D zT7SSGfM37yDAP96+wZJ?b`RP6OFh?qZ6_3_I2cZ1}9{E#UF@iaUX<&7k zfp% z+qK6sWSiV2?XlTwk1eRD-yS1E4cdW#g8_bf9Emb*3%&h+t37Bnnvm_0>%@->n0BLG zhB?PY{Pesf1s-sk1V-$wFhU);Y+wNs+AmOeuo?C7>peK!pdA7@4B*%Me3WklJOZGt zd%bJ@{H5!9Q2(neUdTh@9JZ9AOiRqg}%!a=FH^zh~4gQ1?dtAxX8zGBIAtLPn3Oq@673Lm@y^b-2BtfhhX(AKG zbbTD3fMgjlI!!@pEtn#Nu;4L7i49{0k#(WWiiF}w&SI5@g>$h~$mW)+_8l52wC{B& z-wSvM;J5FqC~pRQ1lUpgwtMTm9;K_$lg>D{s|CUiEx2ByG555vo)MikT+fQ!Q>2Q? z!$|XgV#S5HR$jXt5-qgL-6-D&cnILP%VQ|h_PDoy_%Y=-;m0|W7xCjC_sDu{q%wp8 zQC$vtyUKMn6p6%Q>rnlhixui|GRl_$ZU*@Ecpl|90UrTqTj%*(U;mt{kLHb^j`MqF z{QUH|c?;V{95rJ;=mv6eUZj$6*2`3!>er%toXeg0?}=O3`@(oni1)?cn0Bw*1ZA}C zHoR>krSi>ewQJnuiq-BC<}`?gs5I1VLfD`~*$d1#9*LRJEc0QSeX~rltm6%kUyy}u z7C_e8eW1}y!<0H_%0Pqy(PzvW1TAz~0`^HcOjXqYFY2Y1Tc+A~QM}N;Z=n1>;6s4l zzF(qDn@H?<{K$*=8S-1z-aUdR2e!?cM|3&bA3>E6sR7M7Mf=z-fg(SO&^H#bBqeaJ z4I=Uwh?NDv{i7S8W++G{D-Do>+tF`G}+MU*Sfi=LHh;}PZjDj8|8}u z_W)@7@?+Icemz=U+`hnNalM+2q+@_+<@BHpfYej{_>AP-JBFeG?# zARk=Iv_tZ|^#76fC4f~GSO0J3-nsj|Z_mqnd3kx+mzRx%K-hOdkVQZRMGZn&DkKze ztybJoQE*4xaHH>anqq@NR5_X)$K)uWhXe4KrTW2;;~e@yZ#5Sc{!*u(TN2Cm zb1xzN7T`;O*X|2*GrmE9sQ@18KXBSf#V#kl@40RE`Ice*-cH6IvuIK4O4}4eY{er4 zp6)ETN7}3&a*G_eRW@&t)mvrd7FoPi4&5RrZy+EpzkW^AP%~b1a2VajYPeH zC^r)E1`@iFByS*jHxl^<$2?*o)Q1iv3OdVxn5W8;y-ocP*bOtW?FSo}u(Li%@}Nf= z`%a^gTj$kV*FMHO|53K+}-v7NtoQ2K=F_1WIevn3AZ~YAWm1Kn$v+mcK9n>jtzug^glj2Kr#} z;b>XMxf{RWLJ|_dTrrA`KX6%>Py-H^t)z#L2PIhCu}fKj1A-jrL0M30Q(-d)+7xhE0(X{hL@84} zIFuR+>{D1W$&+CTUWB7EQlc2-h$0bYH26=@!Jx$%+@opySL+ivZP z_$gWSs-5iD`os+r@~#<%k*IALX*YSou0OYm*pgX@y)nblL+V4<2TQ`vh|GP>g|RD!24Rzpu#}vKjeoM;&%Q}ev=2Hcb8T6j4z!7o*?@EdymL#{Kw!V~Q$$mCOGnv+ee6q~8Vn z7r>+Q-;w?oK+SjP-J2g;=E?#4YyQ;M-sWw5IS36hPt`O{O>2^`0~95bwf&)ZIVnBH z-b+3Mj2~#HVULS_T!M}FJjufv7vB}Y!<&zPfb^FfuT&P_2Bdj7#Etj3>rI}Wcl#oK zcBlG%9I%<087o^?%wO5MU;9d@|Kinb#$fCc+(7VC2)Nuy=%CKC0@sgKFn&j*oDkn( zNnllwZ-p+WMe|uC29DV~gY_$%arTua!9hZ5?8QDhtUjHH{e*uj>oTpVNt$u z5l2iOKM5vT(Re<=*2G#$LIxcEQmO>20#vX48_|AG#uw(G+u@$2OYjTT?^>f#7>Ijn zs;X(ZPA5hEC(wu#R4AE+7tN7j6;-G8!tryp+2a|m&?LT9&bzK7!OgbRA8vElbH)eo z#0hxfr`{9CoT8mL-cqvnpNW1=Ka13#j!q3s`A^4>DVmHCq8LzVj}kwHo*4Fkvnn^P zMvq@B!|^ptN-5YIo`b7VXrViIWsJ!*sAsQghOQUDzh0Cbh1}&KZpL1yfUR!sJ)_VQ z`4yqw{?3#h_n|w%Ze-`(J?;ZbnGlk^3)xP=z3&enodS%XRKX@yEjsHLh-ARltOh$+ zl&wM+@(C>V%6Ahjs@8+~p9&S+KM+IH?Q@5-XKaGJ z1H+R^#yv;yC;iyX1%D|$pH_8rcJLTszkLMFh((yD=)6M&Q=@aFGUUBYqDqt1q_QR&Q4S0h9W29oV60;%pktVX9`S5i4Y>Au9;u2!T+P z@!D4>Hlo7vt$&rYSXD9oQ4F1yhh+&iq3!Dm%oZC0yw+g~iCuPxd+rZ{pAXauRX40K ztk)=NE=mNYD`2{ftw%EE!cH1-m-@VK#VroKJ3+^QOSJvVGQQb>IRKB|MVbkV9~DPvk*Se+UZwGL1bUmOP78I2Me=gD!&}hb@^XjBtd6sTdT% z3GfOv0SeT`ut_+J_g5-*y_>3}MB$jP5`qqmuXm7cVv3Gioq7_e$hONLA$=m?6o5y+ zbx8AYts8eFoc6cPwO?Uh#LsSb|3zQ(4PZuBwYuI9TQ+b3a1&;wveHN$u%k z8EmhB1ch`4R*YfI6_zPNqT|E|wZ=kY86*{O?_y|V6?Vt8`8F5-$}Hb>4AK_@E(3V@ zKZ-OD+ueA_U!8g1X2s>3?5jRsfB6qxJ%91^6{}%wbX6@ZbFQAhw2fO(i)|*KlWPgt zOj7o*W&g_80=4Va7pboqTP2mWSb-T|qljLc73dnaNBarpX#qHLv>@r?se z$HoZu@dTt&XBpbUG=_`#55UH^9E?cZi)aqat@x<{|1zbVfV*#Z=r^M(E8p%wdK=&k zfJeU%k>=qaZrt$)hkj|-kE2UI-|HVc=li<;^b(&Q)3zKHYRUX%wToa-)n1I=Kpis!D%&G<^U3hMazVylAwLsu3DO`K@E?O!F(dZ zJvu>)QH0l38^1rVyU^ok+P!yq@_7rp9_@2_#NwT;{J zb;Zs5q*kX*t&Qp<)OQsGd;@5nR3IGzI~!H37tQ!!RRX#di$Spp^TEB+F3ve0tntF1 zp9Moe%#SWlF^e^*70IBfCaWUhBV`vo19v&}+y**%^Pa|k%FAIQ7lGh@Y)m|Im~Br*J+0c2&9XiuQKy_z&y+kAZ#Wex5X5p}57J5K%CL$Z$bS zJ~kMFCFJ5U*nM(ZAvXzGlBELd9=dec0sK5VjH}J~4h1X%xO89_Bi#Ym4&dRW)ec|P zywZt}ch@bKG&{#@`pLd`Z+dY32M9$kcI2RMI#Di{hHg~vfLGO_Z?h)^-^(D=abQ=O zL0(jczMxjaX-S-(LvAC&?WB%1n=`2v!cpuZ-rfp9$Dt5%7K!^a%u3MpaT`)ejE#!l z45p?p`gzS`b7M5brJg~@PN~vmLQ)VJ})Bu3Sc|H!{-g8d3f86 ze_(tZZ@hacpL!Rc=BDiUdNtCU0XG0Ve6}FX!)m{ejxiG?@KE`Fyh(wYc~w zgEC$AIF}>60iytX30&Gs3%xNZgy07wHoyo!+m>_%qU<0saQ?@cIYRJbdlOum7;^ ziI>-YE8CavwGQ%p1|D?!y_O-_e&Sb1zX*5*;Ni6$X&!###(RGF@|t-}8?T2|KC8+n z;vWmT&JWM$Xcw>Mq1p1f0qHG(TL2zjwiTN@nexb z0dNw)!|N2Jc{sz3f8cRyW~;Nj_056T&L!5JUA#JxUvIs0`f%vK0}cXsc+EkYhr`|Y z2j=^_$|~-&;yw}oVELUN2eHjAULDA<$5&L2$oQ%ObpQ{q2Bdiy?8ZNEdCgu4F_U8w zaqmUe;o`Ls`Sr?67@6@&02ScjWgyK%(2aj!{^FoEuGQp@V0$aG9WGugkY5k4-y;1x z!219XuboKq@Lz8HzXC6}N8B4;zK5KCe$uGyxO^wlcLVMNcz8XCG!Kut@ej;D9kOz% z&1`&=A+&P|{X-Y8^yn-fbuQB912zCWye>wXhmCIh1M^WfUjL>V`ewLz?LmG$`Pflo zGQL*85`c%-(Ma>K!i|66aoNVpt%iFovo$VW+mK(6j~YG}vQNNRfQQ!vqrkY{4J`%SS3n{4$^^RUr%fn7TxdM22_`ZYmhk#uG58po^&BGUN{C(pK zGs&x09<#th8P><`<&WMt-v_*V;0zftMDx9|#{9;`d&z_>-mfD4Cg2@_hxZPodH91H zfB$$dpTEK_=Y1jlukV0#%Og%X&)F}F?=O&k9`G{2!*@HT@vu}rs_l${IydOpSDZsM;5AWxZ=HU%D{{HcvzjEdL6TYRSZ`Z#o-Yt*1{LiE; z-ghJY5a2O@hj$0kJiOq>-#^|fRa)q z84W5B43<-HZnukf#gr`G7bCq1a5ccgdo$8J+~UUjnrC`=^L5YK+9mT>EvfD6rJ<>g zMg#max!YUAqYoUV_^f3<5xWHPp(L5{^rv#Ma#myy&@DfA$~SO87S9uqJ_E28;NiIr zX&$b03^sE)8d2Oi zCw7crfnCCKt!*>e9|%C1B^Zt1m+wN~+XCv5fbpO(e{RHQEiYyx=r-+=U;fcpVF^u|B;d&7VK zHW&LfWEppG2j6yUh(mz%nd&4E;4d`&XF7=!V81K@(!@R!B55e|W(hFk3Ag;GXWPSR zNS_C|0N~+&A<{f-a^v3poqZ8M{a^lFvnVsrgf-zDpEcJf&c%!fyQRXsD?@@*dimMv z;^&)@#cv7H?SPd455HrO=HaJq`~&uD-5ee9N zYMt%Wpa$!8YVf=q$EH9iHFkAlz77w6;N{_e$jprI2*6PQ5C26-^U&_b`zq&~T|d74 zIDQ@E>EzAkx>DX4HsjdoP;$5gL;!#YLr~yQao}3Oe7CL$LpZA7Sr_p6TAp;ueFyOI z@SZvgI?sT401xjLq-x$AHxUk1od{&BGcu-dBD2 z9{8Dq+EyL2VnzGP)veC9*=&{Q(F2ra*&6Py+hJ>bTU~rRfrp3hoP#pH1%Sl>58tDa z=3%uPui1w`+cl^4dp+0}wg;jrl<}%?DXIbhbzh;2Y(+s-0cZr;I)MS~3zpOX`hg-_ zf9w}-{|CGRHikamq=R7-7BCy&;eQCyJj`?BeU*3rjblfhuz%aa*5fN{9o-8vP~(hZ z2l~VV`QX*ae{|vskG8sabs)cKJLhN`hh%)UfChkv*C3>M7~#hI!YktHANMsgUQyKz zuT^{*JiKClmOJx`vP?W!0Pj@>&yrA&Wn;P+u^CT0<##jk@6}&*PR5r6R0BLbha-Ie zU><;n9q&4P`I@(#`daPsVVm9Ke#CRuakg?(K?hw&pP;0JE_;G%9Tcl42c4_#A?K*< zTy@krDpr;cx;3ze+!A2721eZysDcp}%*CQ~sQLzxETP!vJBa?0K#jT(Tbf1@`+5-M zDaQ6M2HzlYIJtU*z^*v%^aY-E=(G*^d-c3-F4klK!vG$gMk39_I5*x`edy16&dptY z$7=3d;o@~O@|(7E4%?WAW_(dV9N^)Vk2DV@ZoDtN`m>&Uc>Oo3xi9cbr~Eb`|6V=c z&G9=7vVMSvXED-^fN=mGde`&O-$Olj@ch51=BJ^WpBiAN1xB6vKdk1yZO=J$dI+8z8}F+=d=KOI%GO28S{JN7Wa;W9U2~LP-22|gZl3=czjFIO z;NjsLIXvSl02Bi}e9MvMq27&uu(-a zjrUdF{n@WMrTg7_wi(Ym<+=v>P1`y5`945;H{ff4hnICE@C2j*JoLtEw%guU?B|Sg z{V}d(@v?iiSj(Aw-k7Flny4d$rz z4p~a*MEOZR%%_0^y%RPS-C^D)5$A%^*!ien_jV2y{ZH~?9(O_y@IrfG{xdpPRbHK?1!1tBVN(LEC znFxbY;NxxIC_Mk8Uvm3D;Gysn2cl= zlk}<++7{H#JY?!It6PsBmhS5|v^jtEGxYUjR z!|UlmZOiuA^ldtIc;!mp-Gwv{e{|#jY`T6cS$#WPy3SaVrEC3C z@G5{o0FSOikmg~e8~-n->tTI9QY~8Ax@_UUAERsnz3hzpn?Wb9o}T(6tj7Y*26*&5 z7ik{WyYYW6J@-9Ear&fPdhQ0DJpTH%qcgr=1Kt97^n3?t9^QB3|K;OUKi1EGKSqsq z={b5?wtf~b&-ls!l>m>P)kyO&z>WWd>*v4iL|a^XZUCLU_P(+WzK8(F13Y^E1Zf`D zxbc53J^w8^eQR8Lc7jf6n_@oSA??ud2Alxk^h98nA$spUm|N@;n8CLD z4q{t%zYCG(yHRcWP&j_4@Fn?BkauDw^hTkMO1~n*;WH~n#Ak^jO%ZM;&k(tTF9X%V zEY37;W|^jCLyC#@!aQzLqKO_459AO`*tZaS0ZAc+FmiAJ6ri|u5}Ve~d`Z2(Z0GHlkC(?fb{1d=K@A^B#rFZ9x z&iX|k(Ru$>Jt$3MyJ7eFQ$lu=p#3X<3OsI9>pv8h>=a5|l0GEBB925pBm+TIKM{A3 z5DWc=$ggvp3t{~JT-$P2JzYXd92(*_mxd|OkMF?`yz096Frg+DT7uaO&lnk$qYZ`R<*W^V=4-FF$B$+v-N!3de48wnL)( z5pn8FenPJ8kVikvCSOj6ZI=su+d-fN^*>H(e-8N#lX8W4eDW>Au&0HXV>vboOV7Dj z&=O(0p-ie(^Tima-DFxzMvIf_FjfdcVrv&SNEIfGlwuJR#%D=bps*qe`x;#}juCD? z54P3JeAwC+RnPFtitP@4w}EcnxL&p@;~NP$65!GIPNd%jd;#F$p>{_vYprj)eLPzI zwH>b>=A3Wod-_hDzhKGIw$}am#^r(?^gaBM9rPYzNB=~`X*~6361!O{-zALb6uu@; z$b&lME6Kxb>g9CAcDd5`7qs$x5pACB6ksZuXaRB^iU1{LiZE++y>KucN9#$L8zBk9 z{@+G2=yJPgnpFj+{{%W})YMz}y9JswQ4)1nZ>xf+t)5O}g$73}(UD zVneVpQX4A>DW+X;FfT^R#XMTXz9z~b4NN9a&0s*+^Ky<6Vw|E(a9= zR#DV|6-I9GHPLTZfvs=2<-a=H&sQ7+`2%1uz$^dJNb@k=jXnG7lRBODWnaY4hHcJq zx_|oltXe8ec3lLMT{_DAKH~c|Y$ly!JC-SgdSZmukc=3y+Yt0y!dUQxSx4Kjqu2jN zcsoK^@oNYF=YUt*K7%!YV`1wY&;aoI-N{HF4p;)LB{9rZwni zGps^Ma|M=TVdPFBr|`AlIuM3i_g#+&2Kt%*aQ6PU1SbD9=81ew*fpl z_)h>`06zinaKP+W?f8$iPW{OJ=^OU(RX=jhuSxB&kNaqxuBh@T0skYO9+*pvf)3#^ z@`OM-gv+TNy(ZYvYWw##oZ}tn3-n<&<8s=tT`qrB_HUQ3>UDfNxl1nJD*u`I_MqZ5 zq(`Io%Ofg!sCgff8Mg=x7qIg4nSUL;YlY|pZpB=j0?uduKiL;IvhvHB|0*^G&&aWy zKa1sGf%2xz^7DFC$!5OJ_jDGl&PjB?$t ztkN(>LZz$JYz&mg?Q>EiOtu=hTUKTZ(cA-K0XmW7@|V3pVbHKaCb%VEj& zbfT53zy}Q`Naxdl48ID3DuqZK-LIu^Gjxg!=T)+)z=IW>0fccz6)iaukYz>475q}E z!SozU^e2_D9K~J5_LGbj;weQ?n1XZO8_IBvcgsEAAS!roQqe@i4|D&5EcrvSA37Y= zgqd4a;azyjl1(Oulss6yGD3!5$AB)Gxm<}4A^kh2er`N5+fF}6`fGsrlWhGok>(-g z#^2UXcl2*No$c6F>Df*nWB>hj8hFp4!)D;;wNrXh##aiM4Dj0N2BcpF`~kqjymKAC zrJ}-Vr#pW8x_y3hz&YRXJ+xDo7zJyDrC(FBMmU|?(WQbN{n-AEd~LHiJHgX*Z>9Vg zJWie6YK`sk8N~N2tD^-@21G)`Dpa~og*9Eb#zJeUmh!#hPx8q6A%ax)~n3!+06e+~p z8cD)|vxa-n(wtTXgT4xHS>2xH+%IosLARY6aC^t#!%maDR%W`b2lgaCaO%yrle2tq z`A;*xDnKp3;{zIy=Ap@rd(Xe@i}>j~yJbD*xwQwwL>y;;{phOwzCSX*PxSMn9d7FyADRFKcs4W#e$n`i5ZJ4AVtxQSS(-FzB5fHuMObd7Kj zuT537oDgoDUI2Rqe{V9}m{B-eNPy?wPd&y-s_gg=2 zPud(_Y`$$)cM~`=UL03b-$n=qq(Vt*OvVc~k(5o(2+d$8Nv=oFaykV3s7JX7`m9{o zivP|OoAHrDudSeiH@{`4K_>)I2Jq-L0qL25MF1W=y%5hI;S!g>_u7T8pW4L?yLF@P zF6>ct=U>az%`D_q)EhxJwMLRkD@eJ1FY1~6wix=YC~rlrta5ARQJ4g|H8Nw@NEKG| zd)GnkaKrC#wh-PkpBr zyKR?4uZlCW^UE`kJ{xd3z@?Y?Go)_^JP6?7&8MCA>e;)?b?aZ3{t2`Jk2$J#LHqK$ z#qBk#j+?)DaqG(N$zxj~jl!93_bqEbYW}iSaLHY_d~ti7J+4e`Z(H2X`(pT4UcRE% z>6K|CS|?dAqmK-&m(fA$z7Hg_+f+U^L-%Rsy_)XBB)iJzBVbEIqAB2*!W9+w)D!4* z@Xb9lt8aH4(kB9b3h?kf4QU?EbYpM4^kVxWe!S!Ec=R2<+1kN7B+d6n$#Y?vcJbJO z{CVpM4QIg?2;fkFhsRo^9|SxH;9+-_GvD1Eb>hu#J>PJLbKFOGEP*47K0F3RZw!iQg?w;cfMj? zpa|zHbc2$i6$Hk4wS>Q?!D$%(4GKwk2CCG9qAV$DgOq_i?le4?soZ@Z4RSflV}#a` zI`kz120eTYVo7c&K5NZ80&g3(1#ixjQB{NyebJF~Su6-AW!Qn?ZwSaLcv2dK6OFXQ zM8ECDp@*Gn-|wCJwdQR2CIG!-)aR>Q3*CLd*#NKqA?HAb2{<0W!&R=|i_e~Q=H23P zzp>BPyMBAtDDT_HeN;X(=O34yfA<-m)7E;N>je+Rj{O1WiBItT0fX${<@WE<_U~Eb z3Ce{;OFm+UVZ>Cxj7T3d@)1)$W(j&Ixq`kb*Ke0=UX`uwGHOd#y5=J`;A2+myGk1h z$r1S~Hy9xQf;;EpFC~3_A-4YhOI81>DtFcjx71=Vp=6Itwo2qKzr0q3xRj7zsE0nQ z)>4VyORT~?EhJHLomPLnR&$+ZZPCb0TKyKS<|fVBpcRSwS#kE26#r6E{vqk-q+t`E z^Eq|mku0g`aGlG*MjZ+-^(v`Qih`j?b2ukb2nS*%;c%oTY(-K|tTm`{EmzCoCis_N zN>L9dnij_zHmKoG(f|);CIW~0ub`p&U=6&AkVt*FCSrwa@P#;tqYI_ZWQ6;EQOFS3 zn$~FxQU&lwqktEK-EhL?V%%Ngw6(J3EHF>HEUG=wRe23O$%)+@NDpDqp*H}0VvN?6ZS$ASnBTT^K~_i|1u3Gwb$ZkX=Sn*F z{2Q=yho4U!d?u~S^6}Ro{T|@R^Skh2+b+oX{=6Q3O*c4rZT{J7_8Yz$_Ldz7GH=>( z#eL5Cj=t^37Pqd(5-RNZ?BBMi9i2|mHeSe5je8}QE*;D9OXOj<*CvL{&Ax$W{Lg8hwm#9zpX9Yo&Az97Df^ad*3twrzC zTH!HO7A2_)Lcc*T66Ke~e2xgeB*H>zVcr5|L7W~yqb28+RsQq6@@NK*s) zK%Bf3JwiYuf0IW21Cq}|jEzb{hQEa(EW`z+gYU%R3wbCW*i}>~DRXicGo$UFdegu3 z#((PJ+oSAWwe4?u(;mI?Z@T{sLkno=YgNe{Ubp~O?5nk$+^Cf!MTHz88b-REj#d29 z79yTVS4We>g~e>_WV>J8)op_GX zbgt2Oj^W>^l8=<+$I8&ZP&O29x3#g_211W*1uj@vET-&X1&B7C+AWzKo>&MJR|to!uLt$el78|B5x5= zhulbL)nfF>4Oj&mOcLS%xD7sv&Y@%B05~dLN#O1)s@zWCSQzppT0p>4!_!ri`Ew@I zL3xpsLCXvLIcm_KbBIz|=pI{1GK|#H1Sw5mVV%}t-R*V)&a*8uygFYD)J-f&#uasT zwJwgSE3a0h{n!zTpN`0zl&Tu+z5*{!2QMW?Zd^(nkggo!o=(hDRk6K7q3ID*MvffO zJUY-6Ri{MsiZO7N%IfPot--? zesKDrQYA1W07r50!y@wnV-)mwc?GKycAS^UDIH%07OZ6AoEQkyOrzu)5!2my(kL_q z1%;zNMT{oB5&r9#+-5bIjh5g1OoLg1#(>}d6bV%YCq|mWjS-BuVp13ye1hdR#Ts+{ zu}g$RP5d2^CIWI0wH?IgGO!eeGA#MQW(T@g$jmfIqa!#jg~NngT;O^M1xi8)N)i#| z3AiKIz_4dx8B-XAt-xFcheae35TgVPAAeFwDHPJ?_HR4m-cS?h+$#x27qYV(B7= zjudK8A_q=*s325EGvok#ThtWQOey)5NUKUoZaJ7&u^4_XAz&XGop``31X+*wOWpZ)Tkq zQ1rD#IF-OPmlc&FIpKM1R-P2Xq)7+~C4wrH3-Ga2gndBp|BaTf!B?{dalZ)HIHF{V z^>C(%rp?`l2XeJs3|;wGljJpI9f5Pr{2NH}MxHz|D8T!k!K55P6N;HR3#BhK3z9HG zs1-tN4BTh?SvhN9gG*>~5YCTc!3jFLMzldzkP*k60n0%$lVv$yHsu1jRE~2FpS~y3 zG@LiyMBo_fP{4VV4kHy@gn+o2&jQX8Q6cZ*-5c=56ZgPLC%KP^wTSp?zJ*>xlhbe= zQ>Qd~=g_M$;Xu@r7_L1`@iPTgsu}TN{GB}P(4G475b8m_bIK=QmhlAvIRLM|G$YN! zNH_N65MJy)+Sl@lg-efJ-p=LwVqiVN{(Tw6eK?F}QXxara; ztVSAiJvw~n7nxgQIC$Rd=AY;HZydkNu^$-V%_9aPJrOV)z=J1m^8E5X;ct=p@!uEf-GPgJsBiP&Js|I z>Co#<(1FW|e+*()Z-n0iz(RmWuT4nb2Y4R9!!lQ{KHgnNnRKhuk8BOP@}IudgMzhk zOf+V#K4F=?#Ic6#qTE)~$^0k6e@2|b37C0CPCP3=Nu{oSWj@Y0U`B^Q(qTRrm=8Y0z%2t>rsL5S zLkk`gv7lGP@5MFlgosADhVi-cg@?@m>^RUwc$MyIW^iKUw`E9r& zyZ-$F(qHo9OHn`>I=?kuL*T2NEeL4>Cd6ZprysEDuuM%EXLH=`% zz<<+rvCZ1W)K1p8ixqXUwp}a-9=Z~pY#rIfBAv{@MO0^_ld)ZF7E)jhK4!^XEZvDR zeHo1ej&LyM1XBZMxL6z>;4G}G@n#phZ$rqbFCABAz+&-UkE`%~`fD2FFP&R~Jyg8n3=3lrvU!kKLH@rEYTYzvO&p zUHHvY9l67j!``-^-Z{_FXY!r)zJ1(Be3R#9a%E*LSFIi2zJMEp?w^-C=Fa=*-3!`R zt~_Q1Of7L?$!6^y=~|6!)}A7E^nR`#-4L>)+ntjS$=7PU&)!UTu|OxAfX0r>pV!Hr zGIue(lgZAB+)mbkj$kGiY(n`{>SW7yv7w!;b{C6vvgTdPK$qaRJBPVm=kR&Y2W}E} zv1!@oC+=beo$Nu}gYM=sMEtwxZ*InI&Wm_|BlmpeNxN7aw;?xc@kFwd)!E-~a=wrJ zqjT!|{@1u=WGA~q+{F&CzY8&RC!2v+bh7(_ZqUA+e?{r}pt1|SL?`=;;QNX+h-1O3 zRwZVleaono=#D1u;e<49hrD0P3?is?-VtB}37nguqFQwr6Ld>x|LA&S*+Bef>AE)S7QZ8X7| zrCqv0%Wh1?Zb&tMtV4L}cH90>b@rJ)u}8N(t>Bo&bihxY+$be47ySEgJwVh07EH|* z=YsIq#8A7I(7;7KpJBc8_b)PWZGn@&N1?bQYPyI8fuNMYZ@yHfm5Nn3BWXs(DE+wt z$o+xHFH38t^3^80-t0+|D@i%30$VBmcmQH@4gYi`TbZUL#5T zzCoB=@c;?jPgrRs4PKufd2Kpl9ZExKUQu5lOkGSf*a5)uDh>7lVSfS#^y81yDqnw5 zX`Wjxy2$RWzZgSl&Ym>r9{aqUmYYyU9|!?t01i(5`q5&kz&2VkC?a2LvCZAacI9Ul zyWQ$Zk-u^Y{O#5{@{&$I6;dAyPl!p(Dcqhs5G%gDly>MeF|i$0aY;qcwT{;*gpu(hpgcUTj-ZV$Et1c@;#kGJKv-u z=;-N@nL#pNG{YqUWqNRiVLn3gQ^l2I(^$lriCczX2?#eG9At}~n~=A;&?_B}teN!S z`H_V|QXd==QsxJbGT4cv$WWrW{6)F>i-!+9VUR*+lbj~AS%KGLjgDDvwqYK6bZFVq z!5KfkGY}#PI?*_p#Pz7PlSFZ9=*%I}q0u3+p;3Lr*ag5~7}(dbM^+(a&YOVWNjNr- zYz|b-sXAnELFB~X+;Y%mq@WZ8)5<)PHqISh94HBee?cO6U7#ZJJeg-4c8yR7a&JbT zN&UhEuvC6h%AQiRO7%CQp+k3;pD8jsNQke<2C>}BSHeU=iY^OLn$Pmg+GH%R*~&MW zwb=Zeql<}#l%8b?;F{$Li-?E>JuwWfo zqG^enVgcASxk+hO23un3p!}v3kdHS<2P;@9H0fZ?uS%p`f+!MCGKfTL$b6nJ;9G!q zq9-2C*C)jSmY)uUOy^1&JUcUJOT(M4(1ts~<_%{BVt$g-!#!Vur*dc{ZIwo(;PC3W zlHgwm4dcGG@g+ct(&6HmV3|>fGsA^p)^KH*2-9(vy%omxzl-zA2nmI3uW2UDf=V#? z3Ms}nxp!$e=M}ntv%=0{_Nz_qSN+|-njEPVDEVCA$iEOr=MhG^R*D5e0~a6xs=IPs zj~+y9@}nPS!~G+$Wa{R39kBv~&=$w=Q!+;(KVKfMz-cfZhnkMGFe2vj0>h%Pqzt$6 z%u=s-H59Ln8tyVobWu>#3l)j^e&~t9qIG^Q;=F_q*ApxrQoGQ$(jhr7EGC3dK=Jdq z*+n2ZDS%E5>m4MTao(IxDfL2KfEPo4cVfnIUYRPTqWN8K71L;>yxQfYjKV17<}oqq zo~fZmQqPA}EiL9NLKJJ z+La97(k&xDCDLexQ)8!m1KnRNXg_Nen(jZ)vNQGP%JvS9@PzEUZK{NtB zMPsFbvQR!c87^bw=jxR@5qI!s{dO}=P7|gY)7aE7lm;-Rj4h}ct{5vInRbNH+JP^qkrcd_tCUsVJo(_wyvyQ0o(Mg zm={iIJz>l$+hRH98PEhd2MQn11bGVvBl%q7L8yAve$14Qu(u*<4gQ!tf)g^A{p`l3 zjd^eYAJdpOJMB|A~o`Yn0i`FspMfXwN)f{iK&}K zd9ChnXV;4fK{P%>0AVvX;hjU->jmjuE?$JFZ6i6v_4=FBP zQ&MV~kXIKjg5K|bRPL|m{?C>BD~&qP(Q1Y59x!i3O4;c_~BO2`*Wji6p&Ma?i) zA2eI@g*QgSZIoUk_ToJEym!5;(K_0qZTc67gU^f)43 z7w%E*dG{rlB4hg9Nqo<<26%v~rKVCvhe_UK(}<$4hmUpCk$W_@USoL*c;F^_q!^0} z)lxYVg4JfmqU0XUt|t#_ER=@gz_grD5G!p|)u!=*5#sMCS{+twF^wT>)uOZ2^z=fA zR~a@5*1oP5y{4uo$vU}$r8Y3Ko~70>^0k=SBgzkHPR;rZGFIf9VAde17HG8T{5s)3Y8Y~O$}2t?9hr~4uBpCGHuY-LXQ;3BsCPGn1KXx zu*{j48;xmt1z$-mQVQczK3a=Ofh*n~k<3V*Dn_7|Z%frM!qwobktFs@LPV+M+dC)Y ziYezxV8iUZ#ULB!E6uDzD#u%JEzKD_02fPkkMrE)h#NZ=0qRG%^?$3Q=g9lCz}>L3 z1Q>l!w*EhTFZ@Z|hxM!bo%-LRIpfZ@FCG2ioqu)o90Mmf=Ue)={*T2z%L&U`m$$a9 zp0)JEzT45k<>mJKcrSW`V;!-;?n^Is4r=X#Qu}u!-__YcoKuZ<`f&T#N$+r;sIpHv zPb|07>2AO7P1W5_IhRM+XRiI`JKp*?L_* zz5Btz-7efpx*hDnU3K;&#_RIV?pL1ee(=8F+X8V){*M$f)Xr8=Q6Lc_C|Kn+7##=> zlRT{?et{JqRe~hyTDg9+Tyw2#-6$8TWzRzK1T#};@ER{E>|{kF52=XR>bCOF=Qxm7!_hJR{eX0Hfspfsj`d9+i zXJqd^Ph}ItgY8Ukg9}b(K7(GO{f92t{(D!EclJK_GgZD*b+5l-?h z58CfH-1pnpgnY;oqS!>5{d)EtK~hYIcl(z2?o#*Nk#67EWU~$L5M(b6(t5<6@OD&UzGs{TmX{+9>u`F|(FN6s)Eb$5Ev2AV$(h%QXh}_E0_R${6Pkj) zTgqNqhFB{oluG-9o9;PB^yYId`#W^n4E())U-Tj9J^*q79-Yoa`ZmDx03Pa3b;im1 zl})5rFY^D#|ri!+xr^!C-)qv#F;|iGqZh`ZJ zNqt^;)JaX;Pbfh9Y7+uliVl!dS}C~52MM<(@sa?} z?G;`mq{kcrOdFp=aGNH1VDQkJ;{}{S3&TvWiLI5Ap$R7TPi3?iQA{huXr3%U;ULe5 z>Y5%9`38GF=ZITj=+<+6R?I@c9x2!f*t58M&n9}!BB0N5fKv~)KAdeYfk!Zx1Pldu z^N2M_-w)Uh;Nh$J&OD;N-YNH!T)PcRT)Q{EzSXntHIKj)f^${e-9^DR+9{&#Z=+LQ zvFG-iuspYab~WvKVoxBFzL!x$5|}@Xp>wSxXy)03x5l&gjT?_)S)~}7xv}RG&SK1O z3PZeU)nUv?!M1i>DaY$3VyD{>$WB9aXgHFilOseU7D|BO&kIKMa4=$oLws3zlK^o* zU5|Yi*JF}N^M#}>8oz0wQ(S~Vz7Du{el4V zLjjUnW&|q%71=d@8M}xWHh@E!kjbS&5HG;q2{ULJrkxMW`=`6@{?TlC3y-1Q18M+X zd9OnHX23Imy_NU)Q=D~eue?Y1Yk8yL|96UfcecnC6#1>+Qsi%XMSi?GSwHR0xKk=hh5k4K!DX#VI)hic(lzK1YU1IE<;FrEu}jqe|)?h1{*A zZdJ%FO4qvF^}Hv)T1j06SsPkpA^n74hmt03wRtyaT2_*|*`6ArffN?kddhmhOG4jM z!ioy|YwT}@3bzbFba!cv*WY@v*WY@vXU@*IVYX8)=_j(~auU+#0X6`!XmO##sZh6pQV%q7NGEIG#h`Gr8(KD81# z0|sMICyRp3z-|Vvdj#F2>AP68lNIlR_6!vD@C+1{7VN^prLCZd_e^n8&<1j^B87W~ z>|*(y3`#^;CnL}nf|jHE46aY?Wd6Opx25ZzeZN<--}?Zv>b|(O`$K*7Vu|PYbbRAm zv%IwHo^Q+YquDIa@BR?7Jb4#0I~i1bU8OHud1{5Nw6z61Ag&eK

QhlVW?X_z{zM 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 eCH=0H-O_rGTz4xg`(SqZ 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%0A$g{_2;?`5pMk}EQJnxi9@8#KhwJ2E4^xq< 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%0D)k!z$K|@hw_I_Orix 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

%4c6W~t()h{mrr}C<-M?&t(?w7RebsuD}gR=tV zoG04f_H3s8%Ym;1{1zbFZ#@Z|%7Cofekp}CT8%vWb{TDCYfo7w!go()IOIXvXh8< zj4+0VuJf#cF~onWKzv!t6NkHg03%Ms20?0FMA9qOYh2_zjg-Ro#DfG`0VG)p;%12l zvFKe^OST`}+4;HP=hBTCIp|No-vfLOP~)MjAA1*I27pTH70I{FqP|q-Bf2l1mwBpY zsgnJ+uut`mC=XE$e?0Uf?AZ6Y$N$xy^_u-RU7KI2?_hduw#AtB0q)raApngw$0BTB zFubd06rA>T&p{Lfuo5A&P6ksg%%Odd*}M?45&{qU8VMsC^YQvDhTlV^2?_>FoQh-O zWlzNzvv}C42&F1uF(jkHRg?gt`}4HMWp2zH4O%{t{tB5K#jAqX#J9!^1;4)lAKT~! zlzlcK&K=+cfa3RAz^Pm#>&ABkp9fx)eCO{XuK#P|`8JPRx-NwqCG`__=ke3{TqN1E zAE$sDDb4Qz{IPT+Xt~c_uWQ%hj>#c7=$z?s&Dk08^Ej+`1%_o8!=xCn3XMVDP83;_ zyqypl8P-MwCc_Fg9v2`+*Mt-Uldt6+Yjr zO#ti!pb~Bud}){W0XIuIsweMp6=$V4lzhpinRQSI|9wLEA5Y$8_qnGR%`Hw88O7z= zD)fMJ5g1yakGp`e4ZgXX{08Yw9)cLA;fP-$5p;@%!C`zI{@!-uth+66zK6Z~vc{9MTSS*hJe{Jcu=vzxI; zdJ+u|juDFK$TUmY#=hSt((61u@RP$;rDpe0<@9tRGtyUoTz3nCo@zZO)jVGjPTo%$Z`uE|~Xu%fIP!~++D$ny)QOUzf<6GU9SETJ~YxR0|1vB^18<3k88N%rc409)lr5YoGk)jar`4I$}?z&^80n|A91UQv{%6jlKCh+e8fma0`-A!VAv`v=d$ax0B#3R$(2hFmi}vV-pq@=Jo}zud%mot_@Q+4%3lf= zhe&o>?anEgTUw+Y3m1Yt>u0k|{c~URhxXu0kykIsk~JaiQ!dzgDQkwr{>MLqs482T zP@%7>@z-;u;B(z;nSK8Z;1>g~1Sme=4E#aB{{X1u%9mZk%V#+Ne=E2XRoq!vTB>z| zI|tMs$j5dJ;k&uAqo}i^9LIl8IF)s>9!ee@4!R}b4@$!S!n7Vvco$?qv5*&Fy^VqH zwEP#L;gJ*IGYZ-X2GQSkjqLX~GV;;&z#jm71d#MwN4(jrJpp(RK;^8BLLQ!Tgop#x z@qwrt7m59@Z}$QEn6}O9^SsWC8mr=6R&6oA@qA>mE#}Q8ucq?Hvp+&M%{A_7_LjYo zy=`BvzhT$BX}@Lt(Qf~R-t>-B`!^@@j?;y=<8Rx>TekJK?Rm@gyp2FnElu|M3^KNH zn4ZAtp4Y9`C%7eEh(g!0?V6%)=}kmkh?L!{0RMQm{!VD;h~|~Wd4D{9=?~i$c#7* z$T!vui(FVgj1`;31rda0+0i`ENfpM6Vd*U?@Vn*#Ml|Rv@)tWrqob}rrtj#Dnki?B zr`fHoj+fS!g#3YUDqtn26~+Ul#X(B3fOJjJ9xm6-8sja?Zr7VUwNAu?aT8}0(}YqS z@s{|IUfhFZ49K_upbYAx>5n@`IWS>V2q9AnnLbu-X;91NGQi2WS z6NC*c;4*LA6AQtmI2o;D$beB4u@i|X0%CYrDKn5F6Dh0`$ui2ZQBdv{1d8#qM!8v$ zh#DXc={QCwTtuSrAfJX~73pQcsLwHCW*DDy&*#nFNij5V?jl6kt=Kx*SK zlpi?`!Z(O<(E3hBu0J36F98n$)Oz<7@QHuN*&={Sa)IDi{}H0rWc<6+&K1x5@+H^v z(IAC;q*?l_$glL7$gkA75uvlzxTm~f&wA57kuPumWPh~xf=c*~)ATpT|BkajTh1DU z75hnJ*5llY?dX$rw$4}cn2#2+aj-1!f%sExSL%B~Az03ue!=`b%m`SX!>JD%q;Z?l zorU!uv5G(-81*Fmg?dTMW0!@egzBRc3L{9cRvYu%&Gb5LH>beleIgc`e=>V7y}{Fj z%w!9Awj^!35+5irXA*RQe$X1B;z=Kr-Y9*@gptRGRU00z zdWQKk`W4D*mexJu!NN$=hgY3g(!fzzAZ;`k-{w8v^=mo*H)r&Zp8>xba2-I+pF4n4 zSug96wU@W^-WL|JUSasjGMBF*b2)`%8h&%R)_;@W*TMhD$b;Vj559~1EC9u?-GCnk zSOB1stCu)ZULFQ}tYB8&l#|RdytTD_jeC08-10=3QC_Y+hYoP=#z2L&{7%Mtd~-J{ zYxy&N<7s6rzmtYt{;lN$H;aDR0)8ty`R?!GEF5qYK=sSzz;6RQ2%wUy$25*WzqD^{ zCMQNNS277S!qL6JSU*p0|{vDV&3}$jIb*r5JA7sYaoxs-u9s?-8^aH2zo~(z` zi-wIae2@(`ldo}MCchNP+4j_j%S^7d-6r^R+J_l=>{;M11O5R}{P}|LkFah6sN~wo z-_qeC<`>9|No{ zX+Bsf;L`zn0jT8K*ZX8X?2b)BPEF;{zMjnwWn({zn@qD!><_}}dLuWkZ+0sG?)Wzg z<2rKo4P{mz_wUT=ND4~!(@NM+x%7&hb;wd3@Mam(`PJS*mQ*-a!^$6%KS$s{aEf40}(%WVGSE5~Ne0&bP_!Go;1<3YWX8^wg za36rmu5*QbVb>jmJz<*k3z-=f&wKJSK6o;|S?#B^5HZ-UDtaKl-e|BM<647PaOa|D zqxoaOjp)n=-5c3^=8X5vM?BiD4M+>@9W&jj#q6Nlq)w=@HtHw85gox-lDdst+lD{j zb78Zz{FZk|tV+6_f{9^oqtbtjsP(4Da|j^q~+9gLCTO4mf!>^;jj|I zNn{V1HX>Rc#RcuV#CTo)X-2<#2l(dz_p?lYR|4M=FdIN6_uOP@&bi4ze)OwON+z1s z-#Bi|K0bL6$0uqLsOO8op4w^r_(Y$wjvt>KUw@qc#GQnr_y``KXx(=UzHSD;+BnCc z|Nj&B8~}#^)H-kia4J8Q^$4Gzq$d)5&9^>9d5}&~E{4RC_hS^Tw^#7T`8*@X-3fdx zU_C(b=Vjm@0=@-M$<3Kk2967-wA%7_OFb5_$=_(0Pg@4zrO|^{Q~j40aSAJknZ8< zw^T#2&s2y*3sa@qO5)IEtp0Mwp7PPL%B8s++SYTG&U*x(dO-h7&H+vP1o$@q_GN}o z0pL`sWIdFAF&yU$a_@tSo;X{1kj_?~0&BMMY=!7)yI0Z=x|F{9De!Lr`d1nHL%^ww zmi172#Bk9s)d+FM@}P?|mX|mKy7F+wLUg6>6MX0eeQoptivD%8<^zNPN)Ac_r!q>` z12P_XSo&Y_H}RnO(378iabD-%#~_?6j%TydE%dM--N+nmt-C}kE<=*$CQ=H@%s5;w zk?h_}Pw*}Lz%>D;8gRZzy1mCRD;_Ztkj5$gEm*+ zUH5t_+^DzIjgzsI+-G<;aN#rqv4}g(AjmgD@B1pus8JfUy!@b=)7gE$90#CV$@9jy zhye<40g68X;8eo09szki!=JP`zZT+rYt|_Q;)2NbpN4id@)qJu6!>$1_W)`fJKrHL zGGH=*O0Il2%`49fmy7=G%Hudzt}*@WUON8jXZzBLvFhIgH*qcRU1!`s9RIscyEYTO zeUrcb*Zv~iwx@i^#k^_brutiFh(13k%S*<`y<{rwu<(+h-anB0PK|@_6xNW8?-U(@ z1@#2E%xtab(Se#9MD7M|w)Vnh#@6vElZ6oao;%HS{9cTcm%u-@ZjSpN_niQ{1JpP< z5IB_uvOa&Y(3`q`Dfr6Yq=(z`G>_8f@#Np#jxj@8Q@4Jx&hI45=8vUxGhwa!D?>YE z54{5#^qIz9!eyobS5S)d`Pf;C;YyTbdv?z3((y`^r5WKTC`Pw)d0nxjlkaodu;ugO%*mT|T1`$N z?fqK#hm0ftkhSh1m2<1ADy^yz?k|k@G_r=qMs~h`?!Er1`~23uerp0*AauuQgbxT0 z2jv?_ej=4vte|E}UmB6BfnGKpi$0n5rU53rwdq@1B;Pw(i`L0GscBCD{}bR1fa3dC zz(abAHX1xDTR&n7k zki#r;togUh$~a>4Z%QUTB*yDX@S{V%^d)e^Xwe*i;#(Xzm3mp9f47*=sTT&%XSM%t z^S+p#&uTIkcj>=l-}43Y&rDmvYA{uo=*6@a*1+yyVg4!?8-CTLChcb8z`x%yb|N1E zj2XD1f{p=6cMs@M<@XgN8BH4$r5CbMy4?m>`Kt>UYxW?;4_?gYDNtH zl-kz#u%L4(+OOoAzW{$7@D@Og?{|Px`G>5BU9K5KXIij%1cFUfwqVmP+dtFJwEqU+ zzXtpUpxVC@IF;YZI@g}h-^4@S{N4w(KOKpo5M5NL)fH-{pOR_$FP6AHl3|S8qe<4r#Lj@I5FpIU#n(lyrqqT8mdK--|3c*Z?W1}htt8ySN zlxl@GAnDqS_O=RAwH=%mZGXVQ07chvz&TyA9w-&-rrPi2SG8gBAI@}7FQZT{g9Bea z;(o=n$-?+GDLe4xVGxCQ=*xfaLu|l@xXK?M>_a^8h?sYpwOf%O8Qi z3HTU5C6#lpE!i*Z>iM^O38v&p5K=#u_9I><*v$QiA8}_^&#fua_JC1mYS}cl(m(et ze`tHYr6auc)_%lgQug8M8TrXlCbulf2O>NVjG666{HWk}r`w`o)8OSv;C}|Z22lL| z2)ONQ(Fy=mp82`h&(uA&w&CZu6o90x$bE^4Lknw4wK*Vmx3U@R2LHmh{Lx)=I5f!S zMLZhhOT0CYa(#)3-mX5ur{$o(jb1=`7x-s@F9C{AreE-Tc0kZy zChOyexM!Asxku2?2T31WB^mGx)6VC1FI>D6+OKderXiuO-O*@C%Y1aF6B)iG54Pq* zc%9%w59q5S#-Mxw+zGa50f6E|3OJSBWZf?FOmu%Qt>It*8_A_}x}G0sHNs zdeA;a z$JfBEaEs;w6df_(R7zz%lw6fJKZ(U${>`Q%vmo@a3wVIbK8mD^q+)gY0pb*Y9!LI7v18Anro=ULM_){B1Y1|5x@BIrQCKL>mbQ1rSHL2tFJx7;n(y^a-w^}LRW z;`ug?_bh6ab*zV71tKxf&)|<9G1`BxlRa#*Y3qBNXL`BUY$eW}wmB8UP<=N`74)Yte21tO6*0 zZ34a-@HK!+?z!em!*(w|i&=RU@-kCX7;>_s7xcNOkD5C=G0GTSt}TLT>u~Okc?j$B z&;6@%#(c$ZysVrt581l#_5zH!R?HLvV?M$bXpR3P z_}LFWsqtQ$0Pg_P0E(Y`0H<=4tcN-;&A;Da7C*(}knNM%M?RT1L4q0%pG=~+?J2>Z zEudSCx0!{&0fz$=e@+BW)aLYX3S(b=iFJpnOR30N4hoe2emv=wg>$Ho!fZLh$ra;3_8}LI6UMoTB4JFSco$O zNC$YW49;gb%Hh`#%PqLf;gfOXPEX+uR~vFb)Az=v^{B>YML%vv|FrU+(6l{^TeKqp zzXGU!{04Yk32f^CD*oxRA9oYAdC{Nw>wT@FAG`9?kEbr0x8#^1I`SZTk2(?p#771{ zh&+WqwrvD?>)dHm*){e>>{`2S+AdRr)7VDm$bN^tXHS3MZh6nHc;B|(vy0!i$854A z*V@K4c6pKKE#~QmUuqlasOX71;jA}KKkR0Q&dx04oJZ)Y>sjzR#+ri8obA|ye)hFB z{u|5G0}uII9sw3z&cb65PpwhcJCU0m;})mId^OnvXM4TvSfDq#`BkYCc#fwOu8y3XxF; zk#KP7Ym^7kaP;xGgczg1b_h%W6%<1&j!#*71&bO@=}UjqEzsNbGH99jU?6IT+}*r! z+Xu}QA^d`H)(~CbumtR`L3lWXO#>J25Z=u)-B2K|JHdij#4N&<(-6|$!%;L+6fO0{ z{kWq^@c?ay37J0pyx?zFSw_Em8TelS0|3R}w}4Z5N7f^xr)Kjvt*5Sop1LI4_>Xoq zN;+niXXv;Y_-_IC02Cb$0jIKF)+3~+X44@A5L#E1p1O|o)HD7gJ#|3R+gg#)QLLK zkoEruJ(Y7yY%^Qm8C*wt>T+;uxD{2-1>~Fkv*25IWk!DAv8qMe8*m6f@$KipuLs-> zppvVv)(x{hBqtQM=WSfc;fyOLWM+y|U-YtUeRZ9CdhOi0M6FR*jyw6#v91x<-mYY9 z?GVxSt|SpC|Mv&GUKIV)Se?-yE&={az-<84KhFVw5AYp;O0K@zK0^J&Rfxg*Dlu~* zXJ)0=N6frYF!OrG?inJ~-t}8EGmkne@u&AC!PliVnQ{L*@Q(nW0Tf^LQG%Z(vL0!@ zHEXfR)?3$+-ugM1Ib3>c-^+qOD?zu?TeZ|k z^w#r-_f8?vJ@AU)(@UVgj$S}%ti}2XI2j=MWIY1>D?mY=;MeTy#QEYER|vhe_k$Ps zcV}NKUe{(0@aNmO+9|np&H{vQ9CU6{HDF$1yl%1q^E;ha?=fD5UPn-t_3qRU>^UFW z=NKQ@Z6Dh92e$K}eWm^~56tq3Q~R+K`UHASQ!zN5Yi+z0Px z5Qa-UmQ@gT;H_Mw@1vI+<#xN32m}&NAjMMADUs%QZACm-8{qMxrs{LpIfmJ0*f`a? zQkP*d^I|06;ebLZ)vb1?)Su<5=23vV<(i<>tY-w>ofA~Lf}gPrvcP_I}!J4dZ-JF;J>{&1cNJP1b9A?&g!=HFkxk@=BbvY;ul$&iTnE$MYOU{fSL_ zg?TV^_#&N6s+?Tniv*njMb|6DS!2K~G6RMcWcIPvPi&-h#~?H-po(9l>y<3ZitOu{ zo?;$~+4ma5OE)s}SmP%c6@0iNx+g{XHViVs&|u_4G=c$YTI8oV!L~5S1s<{K__mCj zWPn>tuZLNtkd@j2{G5pRorJ}pmNwJAH^lhr8k^A{`hkA{h>gqi%U-}Q2HXOmGW&O; zKb%vA9^L+-Sf{#=5q6rk{McoLcFjkb)FUdojR(zT2J1GO_~RDFs~O7-AC{+6KCowh zXyY-xIz5HeiQ=k!;xv8i_&;%W!^JfjSLFp`_9kO2?)S14M%yn8d%58(6N^z|d#l;I zOAn8$axrVVi22W&nhB{g388$cmuUs6vu9WdCxnhHfi=Z3Qn6I=l%o3536&Jfq!wDX zH;TY26vXKieKtEqE=N!4>EJ56{cvyrdfx$Wy)E&pLl8EW< z;Ht3+TL6yk`67ehDfskcfLv(soy>N5YId@-&*|iLF2!V+h{3uv<;$p!rt>+!VuRicW**E7m zv}ivATnteBx*zy6fY$+3y5@>?O!-rvHq7$4T(I+~FJ-m>p)aixo?JXS`Fi)L`nh8g z^~RWT?O77>@8BYSVkKj@3=wZ-Wk$r;vpl_Ibn@+_rx(T2-YPn|{%@j__xxS-Pe)@$ zu73#l(|{KNs(MC>G|upbOfzBM~D9`XE)koeQPS@3lY_@%~usHsJ(0Mq~!Unc{n zvX88{JSX^?>mQakzmT*)e9j`#%WlhZHC*q$#CYtL7JYvT#EoHvDEXwYBdH1;rOD~1 z5P+1!5iXJ`k0~q#cpD3+B?6Sge2qny`;Kwht@|H>Fa4l*CZ`-W=VtH-umeExWgp;F zPLTC|kBNOX*I#~E`636~!-6r~!*IR(G2^jUTJ>WjV_>;gj41$P;tG@CUA zY1Z&;v0zPxJ^aJn?+X5W0lMoXfA(*IObd7nAo*kMISJ={fDZsvHXB0T7^lC;pWkwU zsMkL%_}13(27f(o`jHquIVzI#w)wil2Aox*dRSDy*ZGT~*C7l(>Hfp|$Zp$W53pCc zcJ!H3`>7N9%qjZR-uE+`?S#X>i*+3S?R>zW>@io{4nO?+%$_m$)1*t8t)>@usBU8M zMm-pe+MQ6RO7ue^7eJYcaAoQ>qwQ70wvX{9;!vZEkg?0#JbvYj+TB89k|z6v?fWrf zSBs;>G8`qI#E%lE%cI0gkX9RK0VP&EHG9lj=7=N3FWHRqxiU7oc9c}c4nov^rCNr-kUJE`6Nym33I$WaDS_s2ZCN~A8>%&{jAW`2kpU0a z>qbqlJGyd`n+nYu<1Z;JpHfzznmC?5#b?<+EclZTFcXn35vC?&6(JcsbLoI;H+?Rgxs+ha3Woc(C(`37~)Af7Q#|`py@f#^t^?@ zrKX2Zd-aGz`d$K39K`Dov^G2F9gFjk3cnRf>v^W%BlNt2L^$R^m)Eq^dsiG3QZ}^_dGEg-ZFP`&V;1PLZ#~Df0Gh zGp0w{*z?Y@FF5QYyLgLz#-HpsKRK@cvu!=^cwTUdwR2e$&hLE)^0K=>gv?UAu}AkB2X2kpu{_R0&W3f){HMIO8N?mN@wWX>(QchtTa^;v2fwm zYDI_|?4X+VSCbzlU%`y+*$iAYV(zgxN-p-Dfe4_6S&htR9&a(9t59i!7OX2s?%~6j z_2HO0Gb=;3A2yO86xe`20twyK{W$XU1cFwXKZLlxW(gYRb13dC6riHgGAj@hUI#wz ztzaQ8B|I8&6kX(CMq5R86Q56XHx;+t^&qx-2ZzxS{OtfNFlZc9WEE%M)MmS z^}`n8aHabjz3od39Bf*_?P<$8m#f<=S<`LIe?1#pl-Y?cV_f@g!noXCABQ|$auW$n zj~?xt5NuTXIBh*;@!|whT|ghN4%w;Hl#1r6n%YPebn$9G9#hq`Y;P$v@=AJ*6yK)elPl|tu3Q(-2nV9z=HtQPk#gc9U!uk9M?Je{g#pIryo%9iK7cSM=P}t ziK9;oj&5M={2^5Q4O??GpDKQzb`c-X%fT--{yzb(@7$t!0E(|gz^OFJdgS%{%wjQE z#eb4i{Ht-|mv0rH)7!%Yf7XERnfw(^i|x{)RRih(ia*-}r*eR-M_$ht{P_V@|4CBy zZvumcN!90c_vnI81H>2pil$B6wME+wumeExX(n(g2grJ>ctY~Kv)|5Bew>q$T6BoJ<$$ zA+A#Pu2HZAk^eQcDg!Y`q2b_s5nDiqDaK#h?iqTo0)9K-E`Xx;h96ercZM3-Cqqvj==q``l;1zXRBNWcXPCd^BJpfJ*!Ef}iSqD<#kGhmD_d zgS!+1jF`|oej%7}H15go>+Hua_b*&VOyDsBzyvNS(UJQY&W7WN4dT6QHl**xgB3lt z7*{JnpOS~Z0Iu%|c?h89SqwOp(X#HoUhtu7iKzLTc*xs2IcQvoNw!q-U=@R=OIHo{ z9()VCZG$T=w1e# zN{_5ZT%MUYd5}bt%1AU%xgTUnG?jxT8qfbO(S!y|G=eYvt{4w>`)2l^XMq0+@K=E1 z%lp8;2H5)v{^ZIv$IG}i!?O?5fX|DI2}w3`_JGYwwt32JXqelWH`#_b+vyX0?E=5l z{`UWf`x3yYi|haI%=g^y-pS_J+#vx%fFwW?@BpG9qJl)kiZ@q~C`SZTw6?|rOY0TS zVzrvKYSr4Bdbgs+v#3Z@MSp0mre3vbH6FG0Q2(DdM>bhPN-^>u{p`H`?vkDN=FQBT zH#2Wu1l2)2xpkd#Lo_|$gJ z>!9BUJ_58nz5q=rHc#ez*3Qw5Pg*)p`(NME=~8@e06$s}{s{Ul;9WrT{TXOV!6Rh8 zXYHJE_5CcJr)l~)G?q?VSl0Un@TKjXKZ1S(_zR%<{}?o-uT;KA?3@YX)9sw&;HlZ- zualk{x38xLZ~A*`T;ZvSMI?XAzLl~QHi3Q^cnr||Jqeo9Q!3vhc1|yUy>`x)bUUX; zmA~T1RQbOPdOh%cK$rg_(3GxH`5v)zdduI(&S`+BW{ZD}QF9D=YRXcc8j3DMo*J3j z6ko>t)Oddg==s2LfadEY(3HNT@;zYZOc zX6LBZBki1ZG=tsZj~#cycwy&w2fBTIIM@c1^5G1JH?Y@-L!b0@Ui9(d2>B?vE;}YQ zzC8qbGtdQSxxNOv2lzKYDc#QL{^sSXhPWSy$@~_7+_+O93fMW=3)a_@BSq2c$r&Yt zp*%V1!szSC5o{Ulaj9qPj!o&=)1bEjF9BK}Z-J)txytvfoueDy1xgk;CN4cXv-&$W zlv`sUk4~CPqcKDB-Ev$?4;};kEbttl`F<5NrB778XYHH`rsCTA>N99o&$I#m7~ z#dkOO(R|k}!oE155zu^}0Gd*Z%J;aPQ;*-LWB)s@P;DLB6)M4|(Um3j;dAh-=h@dS zMyzt+mw=YbCeY6SF9MX(?HunLU8f?2A2K^fwVpoyoUMNKgcE9q)}NCt<=VI;HNM>p zx&yc$&~p79=%W^hMw{ZR3+2`0ecnm6#zsgIk%kLJ7J z6rcTQ1i*{aKbx7VFhftBzAAq*>%9}9O5?kyhN zol}4diTiHEY0Q`M*bY9meRJmWTH`$6LO{#oN1$&7?gl8O+c)#S(Qz1xK4j*NY&6ok zIfJ}7U4B*F3H8dl>F344xssF@XGC8w4t+A97pF(bvtmVRJo^sl?*W$rTAtT~z61Cz zKq=j>Y5m6KsYbL5#mv3SA76J0WFX9%e(oD7gI@PdWncGAx)gSF-x%!$s{db^(y#A> zz5>_?XnEWSn$mqL-?Mg&YHZ(Avba^dZ)W#*-{6W$I%zzR`=%t#f6-Vd`L0=&(t~qB zUj$qRXuf|8n$n#r-?MhjB&7t`D8?Vq?wb?(GoC829-{%h{J%Vx-1+cU+hYmH&R2te1%DA1I~sC=uJ&41Og^p?G@!Od7Q)aqShiY(EF3$Hwq~F5> z1x6N@Q-&GJL{J(LX2|FsCiS8la;gy$LnxWGwZ?Q{4xsg79q4O-p8%9fURH8^N9K2{ z_S*3i`TlFR*WT8uZNeV5!TgY-_Lhs+V?M+H{+z$;-_Ak*asI`P<)w7e(P1B(2YqN3 z^9W=xigs<|q;(`R-5u_k5Y3Tdvo;PZo{jUeHX7$b99hhP^@MQC!5X5XXf4b5K@5Kp zTQBul^@NBBhI0joN#ojd%FuSOS(jq^;-q?|!)O0D(>VNpuZ1X1?c+e z1pN~5K0qlw-f7n!sh>tE&c3&EkT_2f;w%;SCU}=habCpOqdSRqdeM&J?02+p4px14 z8oeiXhhRtpMDM}A$qFggb!VjX{#np}0$vBSTzf!M3Y;nPo!OB?e-A~k-pfv+Z?x0r zDB9_B(9NNbcG@vY%B2nb&KH~`<~iukfPVv8F8;TrJcg@$&&4_Im5Wfe{!vb!qbR4{ zLNMzYMP-nhl*LEbF@)|(-F};qiOaeBZvUs?{hk#F#C)6_cj<&%224c)LJ+F>M)Xg* zDy4kxSA3I*=AMQ7Nr4jqB_I1V(B}Z(2PkQOo3{7XsqtLLH)Wymo#8sfQhpWU(+tlm$H^?}1grT0 zY#NdG;lc%$PcqIzybB86*K0k&TA~Ovbom(W(?Fg_|3IY9(Ney#@1*88t3jU%oB?S4 z`wnPI=c>HxIq4@$zi)WR{F=SzOmJ`fp{rJ}Sh&3T%%&L-w3ar{f=IHASIsN~JG^nJ zt<7RsPf+~4gK~PJ#JKA@ZDf-@ZY{YY}hoviUU`N27B_ zw|Mk5?ZAr4UcQJpV$H%6o7Nn;dSOdT(~@4siaX55tUFBBVQz@sfpC*Q@;^)9V!?@Y z?LsKu`EG?@ikVx9pUfOlk4iS3sk{K!U?jaM(0~h>eK!m5<7{G)0K$?y!t%p81x_~F z;vFn6m>((#=X0k7Z|`O-mg;I(B@dK3vcC;bkHppRt^t zXYG?6&+@Zp3%V{lmKDyXzg(YHmt7`vgiSfj%^WrozcOz41UE)KMzv#c3s=c`%=7YH z+~N_8L}G{`>4hnJMHrD!3nGXBg+2pQfw0eWec#G7>Cy@}oEx&8upI<#hZ6t|Oo*84 zjKWMLjJPf%^KcA_+D0-NiN->uA1*Z%ffvP8AT-iDXca^@=5lDCRF+k2U@EnLaNzxIkM$8A7F={#x?rBKGjwvRw* zahlamL~|Ht*5JA0;8Bv=of&O0L|wcpeent^4v!xKYAP&AL6C^ z4@1o-^x(i%>6(yPQ(5g9xA+GbPr|x^d%+a^dORrz2mY#l+lq}I#pnFj1VOY1Q&+k&X=2z#MZ~cA<_$Cu7mLFxYlcGT*f~|}eU?2pT8MK;-xjv-Px|igm z&E#*@4y_8%o1icaX383ruHqiF~n*d7b>&9!9 zT#TVvU#+MV^4Ndjnx+9Z$+a}08+TXvEm0$~?Me%Sjj*P290)Lz zbQ#$w`6NQ3pg!A92=?)rOeOnB{wHln@qaPscHmY(>&2a*p8&Q1l(c{LKi5coNT~UT zK9AfmRQ}oKmP4C*1B+;-$ZO@7v9B1e_H(~tek)HJk)wX)*Z3&zdzbt)oigOy3^yXf4GaH!ybyC8p|7wr z0#Q*sqfPO%9p%*P2=x~t<_*vQXnv-FrgX5%_gwufId%2Iwau$m?s^?jIeQde9VoBn zD|At<5d|^;%~uv^N_i^ZQ}r|;SA*15$z<7%T2W5T&nuwc0Nw^PKYs;H>0_1ete$j# zGIZ@|DdweOkdf0;>{sBK4TnudOImJN%PD+EAs?;VQZB+V4x{$erudqFaf+`yK|csQ z0%*RT08MF|%5UF^AK~!}WxqL8?P&n6avBeTDYQRKp~xLD4gi?^ZyWNN>8YK zXZ1St{i9w35p_$II#~B;v@3opE=}=sHt2JK^?>GQ187PYt9(zjyL4^_X>y``U5cO2 zQBK|N8ry1(BY~p<&ChY5DJ@a?9;~01|D|WFnJV>dGs>y?DY~rICK7z-3X8&OWp&!?dO4SWe`e%R%bA5Z0bu71`CA*O2Cb)7#m_q^r`EgaSK%BCa44Yp zISe$V`6}Pj_0;cHmtAO2-HNYHlvneWcXh2%2$TStuQJe-DpbB_+fzTT2Cb*qep2t+ zP)^OyhoC^R*Q;rRPC|+SXzJ6hGTlIq6~Lk7|v2U>|_^L9z}9P3aVsYk#B8#fNy& z^Qzr;N-SL3w0c$bil!A+JNjTZaZEgxV&bvQf7~>BtP^nedai16Mw$NdNq8#h1pzRK?_&Zf(HH?Ea(pr;3co(CKW z=z2d|ecq&UEgzk$zh>z7LnJ4fm&6L-vpq113Fp~{b+%z(VGJJI88pjGk*$i4%_twm z&p8dVxA=89_W_InbbTKLn$mG9?;IiLm9c+IKaThiFAZ7p`Pbv4YHriQB{Q0rH<9nT zlfBO$X1Le6PQ2DXj4ggI`u{d@r$z&ACJiv(EBD7_|CGhCi#BeDW9CF!Q!2G8u;4I` zuVNb*AHfckoBYTfhe;<(;(m$mHyTls@{Jr_vy`pyk>$v9yk+F^0GIAz6rP=pwttTeyx&GGH=oAac@cabx!XV z-}{KY*8UL_hE4GqTl?6H|b69q&K`VZ+hMvp82L%^M>cXi5rma zg)~QX*^{2K$7b)#*}^f4yoKhXlAPE?CW9>0z654YniG z=e!u=E96zU-i89+(k2vmK1rOoNHfzZ#&sS0D zU@4%>eFo?s0G9!j($7hi{8hG-E$_+tABu8ML+!6c$ycqZ(j?DmWy>knUp@{^ZTClh z;g)~to?skY%AJ?Z@|R5bUi{&vJTin9QH!0$32YxoP-7X%%h?H3u?&@1j!#7-V_fSL z#of43Rh8XJ9$tHD{q=CrM+3(LS{_ZHDYdA4{+5CLze6)#REc_=ee#lK;dWba;0YeM zUt}C#$fr>MM?rNRDPspDyl_(`oX78nO;ekOsYG)?7uj33#$ zGkaNDIyg(6il19hPOYyWgZ>H#{4~W+0qC(nEkG$*L)!LGkt%+P_|d%Uk`GvY!x-r zBGF7c7{<0zbhfsS6Md<}jd7lX#+lO_Tf9%3%s`vWK$|Q%MDn{4e3S@|4C77E?*ShI zn%{qbro?ZQ`LdnNzlX9t&TU$;>NM(EGaIL3MQOW#v~e{?jC$Q7u>-=U#tFA^u5OX7 zil1dDXNf2=cIbhA2-pm0ezt*r4R{-%l+MpgrN2WtPDp-KgKVV0Y1{p>zqy4UxcSEQ zV9ZGt=81@Dg{UaSTp2H<&4sx43!Q2vkD?<5%h->h_-wo>)lPp7`d7gHfadc_(9Z)e z1C(Zd)L&1JReTO@y{!}@BF2@uO_Jo9E%R0he!p7|?v*1e(&FDo^j9#D{q49wF_kp%_mOU%PNE zX=}^jg4LDAufXKNT3gGAMIEvb`bv#a@7BToE5%pI&r{>bsi4mSE&w!NSAxC)xEY|7 zK8}RG0ll5JY{jZ2(oB#P&s;E5jF4qtxWlP7@1@#ow};Kf{E{bJrI?SN^^);6zb65Dp<0ctXZ zuuSz3`q=Xs88Q?@z6e3a3wWM9J#DjLuwZEmwU6DR)Um46t@!*L<)5UU&At`$K43ne z`CJ5=(khkrq_tD^Plr@rXRU$49<;P^)tWWUi^SY1vt_ejx^i^jN1wnJxF@&^ zuvM%2X`g-JRzAbW8CEs6r?=ac&pS9*F#_j3(Ty|L&X#A2D@}Tefy-tz19L{)0L~6>s_?{4%)A` z&(r>jr~Lg4YoASQ#RF_V+Od}njzz!D+(3z8?88@x=h(N7yLtL_@kxeHk=hPd{U7+! z{rku}FfRfo0h<4PK~p+J*=N;~f0hc&`iaPgMHlxjWHS;8Y_oLhm!~jyP1M5D(2te~!4SEW206?iH(VxF7 zRsDYLd%fg1t@#^h2sJV{96+oFNA@$#OLxBc5W2!wDU1JAt{uT6Rz*m6g)43Bd@qs*GAU-#JgM4Zi#(=CY zsa(8^tcr5?D1JA954}G20_azPKLeWIH$hYSo66Jo)rt@CGQ|CrawUdi6XA2r*)?4FUseb3jpl<_y1!z9*1WoA?mG7Z`N4aWtx7R`c zq4=x0J9TdL9MG2o*8-Zqn?c_LYyv2i)W~r}_p4n>FI%1(61!6OJN;cT8yNXw!e{%f zG^|W~+CSha|1iUv*vj_ep>x<_G_YhK1cQ&mEMdEZ&aWIGo{DZ~IG$%SxMMiyhy=j! zIp%{$%KELjCp8~D8}voMRe0-EoO zKwk^o2vBPMSn9LZ^O=h8A?}a*_-~f>8&+X3)<46sy}$ZK#%?j|pRrIbG8lyyhq*3{ z2MR+|Z_;yNGLk1J0S|yMELx9}^&PuE#rJWbPXg8en(wnfUkF?dP)hH=K3Dp^QTZc> z$ZqO&<@7nx0AnKeDSs|lzMbX%g3Z;&M6dl+&2z<5(W>FAgE67aD5Kv{}zK@4V(@r`B|5NrgXi^ceW3tW3jYP2a;Pw!6!wd_aP(%DgPH-LD}9I)N}~uvSmf$9?!5`>3Yw`dBjRSTdZ<| z;egBi7&qMEt1*;ni5Vb%m!>I7f1!`T;YE2OWyf&r$voQBpXwH({>;P!DK68$llfoCHux-|wC918fx4Wy|rh9=D_1+MYBX#5@7W0yKYPLGKG3 z0u01o$N$dX+*4Nyo~%hgL9;7d<|=57K}2D&>;Z z3!918%yza?_EQ%zqs=VjO;ox<^0@JdEZe2P6?i)WTMDpi1AR{16p!$G9jg4TDA!C? zh-*OK1l$JbdfEb-(uXQ9cuBUeNfBvRs()%M@#Xu08WVaCs+a{G9CNd?PM|Jht7%+k zmgbgOMM*C&ndv3Y!or+qVcDbD&nsgl|5m=Jo+8`{JeoAiMxMA(P_O3TH(EVeyY}R3h6iKolv2jKg=Mrue6#=&cK7J#Kh7RgbrU z{xxt9pylucXi8gEp5E_>5AiZx)$c%Z=&iriLQ^wq4yyJbizUXBW;tx#Y=pnc;C?{# zB;~w7o^7G&sf%4U9O1Dt(>t@$lBAfae)ch5{ldX3{7r3ul>)o;oTzkE1U*P`QGTt#u z;hp*xhN7TV(PoA&H9dYnRn4d@JYCM&6ReGa@}6Wd&K_hf@bOriSbnD6W|m!S+LxI2 zKX@3U6u$bB`s&M!{YjCputnO;G5;nOV4<5>Fgt`l8E`$k+9PNi zRvf(-Mo|102o^?id1(MKC%{x4x55F0ml)1VW7Q^TsD37{_+7*@Lsr-lVJIpyEOc-B zvpj6wqCG|kT8EGjMcLH>{Yn3SmDlfY#Mx1*(}Sk8o+#VP{g0;f?hVlY07gI7t9RBa z(B}X*0+iC*OYHD%;(6DSU9dYAuANKTHN9zh^9s?$zeR_~GlAoQiP*sSia&q78@#|B zCsbm}de^LX%HWR}#{RL~7s=Ao!GyuEN<6*3hOu&8TBXF|43PV#7)eKC91Qt!`{BKrD z?hVaS?vox*$^B^1tAVQkJ>Gl*I`RbKxB--U)c&}NKgw~Z`>7Yi^Tt0)xt9#y-e)x} zO^LmeJtlX=Ju9jFin5rl_eqUljP zLra6LLII14c-YM2m1sQKj)#~=R#3Jo*>bSki=TjTG}E_&R>%(eyfReH^mmFdgi#Bm zI*f{zMs-;x>#%jXtiR7uFELRAhOzKT%;$mg0bPIFLH`R#{!Z3kE0guq7?62SwXDDP zzsmQ<;Pp3c)ru8OE7uO()h41=WD5UpX13FxQQ0UY#VXKFXQL3%XxNyeGkM2 zo_!y8ySSULD!J7}C1;oiVw4|cM|rkcrzs{H-g=IZK)%(=%p|r|#t_;QRemmWvtb&j z>McaLSE|rbC(AB%iV&S@gor^|!XqB48_l$Dbt4Lx<=YJ3uW<4`>~=-LY42<44o~WO z8*1k&S}FTnqG}pt zoy-wU^ZC95+tSAt0< z2Dsku%4SL%Xm!);S}p6N<*8JCJP-PSr?KZ0(DiZJGg!mf0)HYvsqq{s_w&z?c2W8B z+r{(uEotXA)c;w$AIOA(opjL3HO)(!_FGH`%?ECL&1()=xn$1LS?cD0ucU5WByi@nA-ux?&}J~P1CU-0G~UclIu zR^$qcGsj^USdsM>Dvh&Wn%5#E9QQ7;ijNBTc<_LFaJ^|41W>K=KiW}l^I~R)*e7Pl zLgVZ)i%t6@)BD)Wo$O2xPs5Suf8rnlKKTr>XrYjQQ-A1v)0%BJ;xB)q9(-&DQLNDq zm{+h(C62mZ@aWe>XAaMr%YzM4gd_$Fg?dgtmpJOU7j@wBPo1l$f#N*_18m&XnqU#Ch7!-No)(j=zJU{p?OLvNuZ`x@&Ef2|A&J<30MVa{<}dB>#8*l z11K%%k^T3++hzaVs^+aDfcBUXp_Dn2tu|J%HU{l_f$jaBeC*}IQf?%gEVYJMf-Gx*+c2F!3)+8G`? zmca3XDs&gi+{y_a;hc=m3f(wb^=PNqpX6qse;!Azaz1tp|B+eGF!NyN8D`gc&oFn2 zznKMULbtGBfi#F6gfvGT&<~;!mm)w<1OfENAqsjKx4|bu6v3=QKXsoH6dl)%tqMndLEj>QTP8PI}!>2G2Vk7m`U zsYc4NSp$QJ_{NbaZpQ^uU*`WIr7x#}{tj>sp!CK1K4?mptNg#MXYWK$W;8b~$5v3D z*-(qfB(L~$jO$#4C6S(A(tUE~K+DNRC3h-+PnOSkE>*r#&=Y}u0j;L%VsQ+|!uT#@=9;GB`9U#Vgh`sA=EFja%GOEYh)$RDSmv;Cx+&@RBN0oyUD2=Sjy+SIT?@&A0vKU@L&KwuW2 z`M)0YR^StWQo~f)o;%0L{46z(?c5;W8-urJQBQML_Yng^Q~i~HMWLylml3L7mDzL1 zNFG;s#wHhDxI_~64*R7o8h3}CaM-Q(b)uEtVi(w>|6;YVcdTSF76ZO#ZxqijvI|Uh zVecFJQk$l$k#k96<@_<4k*vqgZ7Dr|4>W(F)^Gvc&L)Fy1Qr35()~c&m7iaa zO9QpDUYFp)wey-*uV`MmaP2DUmva_OhC{g;XaFL>Na0+*fE%Ael~E-`ePzp``%63f9LIf~6ppSQ!2B9IpXn|mJ#<8CCp9||lX7;57{Jl>D?y04 zFbt*$&s1jJXf*ZVJm4+DEgIU0lLI<+01GZv?f?H$aw-Nr1(*hCIsE|iL%^Q^N)11j z^7zkbay)OSk@Mr4i{$gx!RKR#p1NX@9LwAIGhEyj@`cRqWa8b2$Vg&W1&pV?YOHvz zeZg*HFWLoGku{Sqe+_TC@rM1x`8LgEZgz?hde=4s5q6U!oBhp>eXA3>o~E+uLJ@u% zPIHdN7RoUYXF=e8My7l3+Z^j#W>k#c2Mel!#^#3^Z)5BOhF%3G`W4KsrzVfR)Odm8 zP#V-BxK1$VbrD&+zv1ekMcbLCG;PVe&IVwBd*v=h&|UdA{#-ZHv0Mu$dV9xkm^Z#K zTKj%7Ml1f6vOYI&Pu1r~p!rMa2LRmxvKY()hA$4}E$YU*<@^w~66bIa zfys6(aYUmS88&DlA|Hz`5|l|}7(K^LKqAjmIeo7H7}@7NeJ@wMx3N@;P|4z76iR{B zT&?u~<&?aNK-U3#16u!=fj$qo5}=gcPc)|W6Agop|A(EricYo;)={(v`g9ZzzFp@ab7eKpDT1lQQVwo%Hf=8q|P9R_+CumaHXx&rjCfQJD}4I$Yt zG-S$rosw7k3i*D);PRTg@bo?+dslX#Z#9k05LpHfShmN0q9oMrW(V0zklxEq z<_}%>61o55Fl{^8bv)Y{1$Dww9(A|-lLeJyoy(wc(tQR6EP(H#@2D$#<V{KP2_E zxE+W5kmXRRu4|-xX1U2AM?n%Cfxge6U*s@AS z>r0;B`TBL=@};(c^{~hJhjas0)`w82SN(U`d*0FSdlm0_?)wPq@F>i|JRIz|G5wvz zvK@Ai?=|jUv7b9hbb>VH*$ZD7#wIf69F6NjvnUkfJ7nco=q63)qI|6Qg%H0nifhI2 zkAfn~FSBEIbOO(anY=V^vH}ddd2q^!oX$Zzoj%x?QtCh#ORS`c zGHz?TUm9Kyz~Ul}z23r=Hq|`tWRBgZrl{Jj!8+=whKg(_cWk)QAGN#+!*zACGFQ4; zvv|3kZN=b$$mR2ckr3_z42NSgqTv`We+ULW&rL>hsRj<``-t__iB^MIg$NqHwH#~a zNj8kEs5ll|9Tva}E!WgvOQXU}ZU@+v_j*WSMmlcU+2XoD^Pj@(2Hs*mDft+xj zgA;ImW-#VOla`KZf_+cd%X;d9{IS?1(r2K*0NCrPdJ2H1l%evDtS*b_Bt-qI?ke{VrAB4Jd~$ZwKh#0uKYa{cQ$K z=>?Ui#~BwN;zh?9Zy2=w&BOK)**~P(UpxB=qfJb&`j0VV1NJ&>6rF#mH44jl2o^3z zP}B}hw^A{}Bf@b=F~V^+2fyEbgOq>c8>x138t5~C?*O`;oCBKD1uEaYelEpFzkcp= z^ml3fT!$*xJNP{<=g6D2MiEd3=yKJ7rgV_X8&$lUo-EmZ#fNz5jqg0*ro~jbsQp4O zFfrUFt(FsLM)<1#0>|FPQjXO@lg}i{VGjha;Lvcd6pH~xf%4E8H!41Wi-FXJCc5xz z2I%$;dJoGZ5DvLKFPwo_JCI?PQ+Qh38f`mKn!|_``-!ZNZt$b|_TB;w6at#>BS2GH zr}D=$Wk0^@lm2|q`>uRGaC>NMZfQ!>D|9p+mYCWFXlD1S|Au8e$*ZAN+?$E}1bxqo zl9g^-_3*aZUcFT$pSyjZmIv)Duv87dSO!jRA7kxuCg`7Mr3kfq_Im&ro*@K`3_E9l!}ecP|4d&qfBPBMFRRx;0n z3*&rNSWt3cakwPRVuitBxuuha zZ4;(xm6`{TR_8(0ZQSx1v`p+riaRzY9|7Eoi>@GqdscWUR`=jx%S=FLag|yK{3hd` z>*R%#kxbi5Soy=T;s)2g?_tFs%ku8nTsxDVWOD?uHmzU=3*@;;{5?DAj0U_=1q%es z5cWgDu}_v0?4eLBlEtmkf^zYOF0aap4x( zZkGKu)el_)`YPZWKl)qRhGBp-BfuG27Nd% zA5i7B7l5X;Lgm^&P@~S7iVyLk?FeJgaanFuNb5myK;pY{U~Xr|ChV#_RSpXtufl3~ zg1UO#l8L!085SgVT0GSwa=YTA8|Bmeg7+Twfdf%M%RLh`rCgQoUVqiM{QY{Y&1Tw& z+@Z>~4!@_zrQd;m9@q}(a=iBrN|7_+A^FZmI#GaXo`PHe0JU@^=~8i*7A7_^furn zK+DJeo0LnD%3G?WTsrIekJ}5TK1Y9cz#T3Xm9#x=;mRdxidWph@8frH*1@;1JH*)i zOUwA&thUDcP5{mkCkFR3;!^O{f$T(yc_j88gsplr!wZ`M6MF`z+iJk}*b!`nRl*9` z0nQP280Rm<2g9hh;vORE(Q%vr`letMBQWM+Q7kP+)Yx0XN)lG4BcHPbFlHbU%7Tk;nly`B?U}WU_$t$I8L@l@}-uM;w@kevX(-q9uB)cS6~4hZ+ZZQuTHy=)-^`09|j#fTpxa z$E6@l{xwmcB>Y~6$8E;}mDv9ncMib$DY(L3> zR|O7K^#;p%;tk5vsmi|r<flqK2G&3^FSX790Ta`odBBB5|s~4`TBJ&pQm>%^m{$J{_(q7emS3D zZVOZZx_q-hF9yyBDBb=yS^u4{$oyDk|95>V-|w29?!1dRwCVJeuxTRPcmv5uICvoov*8kq}^s0U~N|bH9kBCkd z{WNu*9yu6F#Mw&$Jzy&2d7=yG*|ru2f!cTX>S%hgXMKkcuQ;&-}Kxh8#{lGiz) zF9I$Dbh&N--2prRP^x)d)?dY6WIj{PUj{#~*juihceH($0`P6o)2=~Bn=LxpU*Kdo zbUSzW#1Z+!v&%&n5#Z%+h7+^$1KGMW&BqBj@fmfRDZf0v1?{G;QhZbJ(R#Pk-%0;W z)yr|97XV8D&HpmclulOp?&~w@sC2Gk!<+6CZ;982Aj(<@pzA zN?)ja_w={7JZbuSi<7Ru9jaUl{*{u`de9qyivV4&Hqex=Qu*%bZ*RH!>2C*Cebe0G zMyD#*=lDG>ul@dwy??-AfG*bwpj&`%1C-MB_xxSb-`;ZVlK$e`JL>Pf*zY`q`rC4k z)Zfp+m*&6pKZuPD)B~FTLqStIM&)|lMYmt^Azr4}%5i1j{!VOrOq*R}0D3?UK#m-M z-eAVd4hDPdxy`|LLk~`B-^s_#j-p9U;){6>-5srmcWkD|LM9!sGI=QMi%ByL@kueL zFSu9ow;koy{pMGo`4^ZE0GdA^G^MD@cTey7@YhfC-rqso=e&ZBzMw8_)l%+@6(3DGjqy021l_zCD=1NQ=24%DrHDR*Z3xsDJzUKqnj`$}W)O?ja)((Q zgJlF>KDoL?mUyU-u8MR=p%t+0bQ2?HxMJ?URVWuA;#LuOf9{2JwIm{4?r*$yZ$Ms)6rG@Jvxkl2@SdVAmjIiZp zhO;xWV6t0wJj1M0COcL}^ipd3CRslfJSB%l(1!y@0$L6yfTpxW<-1ou`{VB7wBceR z+Ui832N%3#lZ71QV{q%QI4ea9!rELmx>Y&5@cX*o{|xj$fiD1EPG-t-Ix7FV=SH-HZSO6m4St+F?~LF0R*f^YRVnL8d- z{k~P#8?W>Q(0O*9aU7udw--2d#z(+-SMopoOzG#na<=r}KmODI6LQ(IR<@(owL3rm z+Gk3jcj*p1Ov+EC!mVjWtghyzXTTxcf{pE1!CtYp>TufW3kemso9~!ng|$h%jux+P zFp;%#k^R&b*~RjEpUP~tcy^RrmVJqT;>`Xbuf8ZS;le=ZqQEAz|NHN=@40(zaBoig z+OMsToZ63_cTA%LJHuBZg5P2AfLb`zKI0sF_N`|1?cRi6c%j?8fD=Vyr{z#u7%j^h zlj|ok6E)oN_Tf%O2A;*oJ5HG$;xjID=pSwhOn4v=`a!_KNA=bO&PRktIv)FzyVt9( zU;H=5?NM>IS%KF5CJ4S<0J8#*99hA8wh=hod|dcMB*VH$f13q#hk~o!Xb=~ ztOfT}VfnOzKDVahHF0)XE5rRxKV-`;c55%eUT>WBK9`lHf9*0>b~%0TDmI2?3{MZ@4GBy<-ip-!72~OV~!}jKNSTSrz5G^YQ;XNm0l;`UYzZ?233qTS)-;MbbgQae6(bT~E zeI8-|XGwgnFADS$=d*dWIRQ}~Hkl4ccY+skzt8-=0thpK_u&bVPk zD&IXh%Q{c9L}dNn+rR!BRJmpb`_w<^HNfeBF4wm~Q)*TD*DqJU`hO_B{u@=fy77Bj zUe%#GV=6Em(B=9T=u?1JfKuDja=o>4i_C9Vc1Pn^QXd8$Nc+lbmn@IoMupR$e~_m^ z54aSq{Z;>dZafZM**E8u-29w)u9-6~TiGDkPRjETg)JG*hy|h<8Ts)8NMnw}xnH^8 zV4R$lkP|P8ivjb+9T2qBAe(j?IDy{X2IAidc8#`Yq+WU9K5_y*9;gSjoc0DyX|l?9 z&wqwJ$Z1L?{l9O+2i)KP+o8(Uj^ESv>=U3j16u%Ht}f7&UQqe&=~ZvJ`YF{1=}Lv) z=~U&K6iLbJ9MBg5mjSw5H-PQ{9snq%+p}xc`QgF+zrE$!C8at*?C{QM?C1ae6v~vF zGZD&^trh9(_w{?u+^)*CAeNHT1)#qVTny-P zT?U%c)hgdj{p~GRKLx%ym^Lb6Ux_N$=lDG>uW9i*V-7G6(B)bLdJXVhfKs~tE>QYA z_IHSAiOih4JG--*+r@^9E{~tkhp4BgKCu=>32hfa2d?1e(&>Dvw<($Aec+mGd(3Azm84C!aSw)GZzjJU;Bd zdg02&%hI|>fShi+C1KBAO5D=CdfQ#jE~bEaT~5HD>zRFc@)s`gbfd15r6L0(Pt@ z6Z}`>(%33EqDJ!)H`6cUGi;)&oFXwjz=lzm2XV@47)(ss7w9=6ssnbGV&fHp`*>mj zTm)J{2(>DnllDClU1~pJDZW#Jcp)K1z?vt-N!vTSe=p_OkeSl&WuQ+6RsmX%)_|t8 zPUX9&-+krRPs4lCHM~caYdd~V>-Wk8`e)!WK$q(Y&|X%ZQ3Fuwc|q3eSqIAf&?R%X ziRTL@%liHA^}0(Meq{5`Lvzm4M|$QiTzTS7H&*w4>mUjSSKP(V=fCHy3o)cbcAd{WkNDX>-+R`{hm4$6bBH-Bf6nCkm31TQC)Ans`FrhMa&qy=lA2<( zBtNq#PAX=N#l}XQ$l-+u_nM53%orIz)UhJ;EW`_w*#*h`N<2Hvv2xY-%Cbi!hs*B? z5Ax-VpNwO3f$)#Fp_E4mU&p8Z|vl6;9$5`Ues*Y^Qs@nPU%TG=vrVeKKS}ox?As5Fm$0qwfQ5{4|6OzV0&2 z1IBu$n=g;}2C%!M0Gqb4$yC%sIgGwT$mqM8@nz`q#tP|*K9Q_G+GPsa!R~`cx)0U6 z^R$oT%GJ(O@#k<}_XR1BSWZeF6G0yc%mTDLjt6}P@O@w)d2HMzc?b>vuOiv>|4}3z zFG_ioF51S)TzrU^_DcD_b)YOTwVA*J?@p|*BKLl zNq{cb!Jrods{u-#t+E~#oGJ58-G0}|_XCf6{mZpWBcJ{!WZ$(R{*~zdCd=;cx7=t8 zm-0D<%iwb_#_qp-;djSiLv!9tG3y-`&d23kp^DY!xsqB6LhPHUjdX z316;>NUfPtze})>I?Ij0@0g9dAj6?(aBe75>Uab?E(QWgP&~o$E~_ z-2yW3PIGJ*g<>Ek)I(gvgleQ9P~HArrm?IXtIh0ccElBkYI82*m8NwiL)1u9yoO02 zSF(h7pK}edR1UQnY3E|OH4CCi`f!@?aTq~i3G>3NMpB>&SV4RN?l))<4pqTPY?8B? z{;AjiMM87pfn1E1S&%F?R!{&I_;m^BG!VpS6hh_MX3Weo#UDid|4GVmei3X+CC6t# zzXH4sC^_2M#dSs<&pG zqh9QY-1GU^^Z0DboNgXiL$RJ_*$49JkZd(yioQ4xQFvljt~VBYRKw9RR?w`=aHIJ6 zB)H2hth}#R%1cs2uR+;pPORGLgPhnoY9Ci9klCG9`f$jr2Mx- zu3G*hO6rV>z+eZ|Xj-CSRYH!j4RK)~&k zc$=Wvh;6Dxq?IS4b8Z{rRb%#FujaEYL67=_Oq^w?1>8)efo(3wsNzTtuLuoh`E z50*GB4Tl}9-{Ctkd{Xa(5vvt{UZl1+rCi&FrS$f0&<_Dy04>)yLAzyjMjW7&SR?!0 z4M8c_nX2E2Jt*Z`vI~0Kq(h1$!12>21s?A9AK-s?4*nsZd`V!OaX*Aw%-_eJ`g7UA zx0;i00?66p2=6USNQomZrtf z#KFFED!N+wR+9+2(anD*T|Dn0BQf7^8eRNQ$T#XtG+D`8EFYn@Nw77Do}b4HP3BC1 zIO#I0@mN7djF_- z`wL~WX}m6kQcOaLyoE4}S}2ouE|hKkg>uvXCX|wQr98Y5DLZf;=p{fipyXj)1^RyA z34l`14B5`wPL_GOvVRt+`&|apjnz$ySDi-D@CN(RnzgH1l)*#>bB(ZRj$Yy7+~Ei&F)EL|f~C+X-@(=a>~Zsg6ni=k zUX+AqxhF;fEKXA1&iEw^OOGK|POFd<7&waSF=#tm0;gF?jSxNou~!Olb%Sr_`F?<| z$v6?Ku6?c-H#*;w@?0=d+LM=XoM8aH33vq1`ZcNo^AKPIKxtXIY>)FUmU{NNI`8=S zadP}<-Gy;t5c^V_O1NQu_1a#scC+(koc=e&G_u?Ofs0K^lMs=klsAuxz%;b@3XBYN zrBM_u3;&HkXhkweOO>pPN{T}~6fvXNN0DL1@k(v4AUTRmOB0(wVj*0y$qG$Gxf>0~ zEVC==SRB=fb-W#SCPJ|hemR&7jSR*Rmp2hA3sywvr{eKsA~!QH+s{g1`$j=tNpc&@ z!}(Xk_$T8ZF!7)7`nMcfub z$EaL!RDaW@&Ib?F zl^nF@fE6uk&!9nzX5Ag^h&veTV3#wIMa1ii@=c+5bH*J)Vt1PFdBfjF;7j9EI`v)= z9XT>o&$FO3Q9BX6j1`4D+~Ie)3G@Wfk~4;j{$(=7ZH1jQoKIp!tip7x!x1+wZgOWo zhU429icY0j>z%km1VteA90$3S(8z9KLl5qh$UxVF$ew}yFo;o*iKyvd2QeuzZLE!A zQ!zX?_%6pW^9W{l6oxJzldzygQ8>{8p_&mmKC%DHO$DH6`$WpS2XfSUdGr{pQvg2& zv|heB7W0CtI%A(|Deui^%Km8M?CnDSZHLIb{Tewx>)eI$u4U)*UELoIb_1d`Hsq9H zJSuQlXW;qFhXbrL@EiMKblKhh-x!<1ud&%t=yT?xRmb>d$E>&h!0>Vz$IBZCZiweL zAA>iW>F8sHaho-smwbY;!}^$?{S}|mie9Va@7RT6eaaho;XjD_jHr7sSHSe{cGLQW z>D+Ff$fw5G&&~aL@HTS{k2v9L&7-a}?Q7vm@XXjobIlc|*Jj$kFvrm^{>Wr^@p<S{}d=Z0s}`w-qwtlPU}Y;N!*dY^&!lj|Bv z_R6v+?O%Z4kj7kuowq3+(2S8rv}7C%M?H*nA>^4j^6kX3F}bM^G$F#nWHu&JA8v9d zc~#H??#7%k8TIiddy*sG+Yt-f=V4ro$*s?6!VWp{lws3+0MT`!mk_JRf{0;r5N1v2 zbM0g(7L5CIz{yWPuY7OtDZ>7AOc8=aiuLD9tLzyl;5C95H+GYGa}U&ly4s zU_Vwh4U{p*%?*^shUJ&Wuquno#PBzsW9aB8O#a?x9mds3e$Y(4pA?vx_WmR%XzhpF z7Cal@x9TW%4k?xaoBRi&ziF>Y^;bQhjd68`4e0)A2Iv-GJwU0aUD~0E^Q67hspf;5 z_LAdhLua@6-az9-Z)ZgP)%2#N%_~)i&B4AbCXX~5Z#8eWzv8UbT=$ij+H7`=ZmZfl z!8#N}Caw{idkdm|O~VZFVpIrc&muk^S*iJGjS;l{OqTmNIw`pEg25ZO*^ZrW5JWYf z#H(4o858?DThPjE%9V&tc|l$u~-7R9o1uV0ji7q{F%rjmL0LPlDOC}1IGpMEr2#_iVd3>^IhBt zj5~wzP2Vh3MvyFk5UbH{%6e-YUuTraN5*NOF9LoB=y823=&yjR39{b0)cKXp^|GE? zRJ~0aCf^TM1$3XX4F5=16s?zc4jq33XYIUP&gPrhG~UYCql{mzM*`pYfnCk_e$AZr zx;Yu$a}-@Ud&_*3y>3qQ5Q^>-Gv{^F`?G1kO5-&`dO#c{X40!bKE^saI5MIYIC2&?0$N#T;dhU13yWiXM?Y#@^!NS7IA@+;~JhqR20Y#w7l~)jhLs zS2-5={XhSILv7caH*cnnsyEN@it>S)- zJ;8g~({Rfks}$on|1PT)EoR!OMi8O~w;h)1sdycM)u1X;im*flIvF{jE@xPfr@%xN zjEP>R%~CJs`y|l8Sco<$a?@BbL1;nvUgxxS(TFZUR__E%UKB$t2E}hvHU<*hh~pDP zP-(N(`41AML-N?F}qi$HC-p|Ux=mT3w z`xVGKc-E0cagp2rQoTWZtbHcf264HN)pzCJG4k&|{qWuT;pS(^%hBsxrm=nd-d{bY zSvPaI);B<7yiNH0f8CT{o*(=`4@cO$9Tgpc>FQ0{eoBg z6C$xxPFxOHD~4d{N55MPy;oR27yMcQEBxWF@-b)X4QJ{3bM>(rVjp4>CK3h*ZWxep zs2#Hg@46kmwt@Xv&|G93Hb#|1(s1HPz+t0Z)O(|#a(da;l9G7N>=12UL##$imw9$W zJYQC77aTyOBo|;_fH_!8k4$#&vBhHg1?^3v8jm0$rM%QynaKQFAj~V=N5(mN`;u4G)3!v;$)^ zq%?jr9YFFUjlJvYY>fB}39}F|QZ>DH)crp<`p1LsD>1}+G1V?Zokcml82H(M_W^<2 z7&8X8#IaZ>08m+bgldn|OaCB0zj}+(2M+I6enO!wSC6Hx^OWo>t@z6rr!ePbNJQzBtD9}9|`?qK~{Utq>8daM=F_}x%)4neDba>VfgPBD2WM)h9kima30J$Hstf@my1z>5Tl&2ybMjDQ)LQP3wq^vYXQGUY#+B zjQH3kmS-NfGaJ7%>ahtE$u~xpPsn#wPsoR>+QZ}HJ6CnonPrwWX19snq|8ofGdE@0 z9ts_lHngW4zZ@v;Q; zgk~rI*w}fJGq_sUv=mOu3k;TH(BgL}qnhE)BS_>cy(V z4VVvsQs_5nSJ37rGWwU|ie&V6FzCv8DrmI;a;}Q#*eA)mS}rYD*8r!jP17}J2<<`< zb#&cWgO^B_!LSmGROZ_08lu_1U&5%x@ybYcFGOBjf(gQL2(z>^>aik=yXTx`}+0Fo78-w`&w1YFY%{$z5jU- z>t~0}opadH#i+GByN($Y<4CshlEWk2YjlG1H z!Qh!9mnCU;Py?*{*v~h?gk9aDoqbh0VxLFQLU9T7+A=MT@eM1E7-WT(#OmUR{uW0> zEQ(@W9Rq75l7036hIC!rjADbzo$GkcwbhDm)&#YF)&o0zJMdir#{dGp{S)}!T^*sz z0kTY2<6zH2YTUE@ynbgLuI6o_LCl|}U98{it4BPczbsgfxXqMR^kq4-xZCFnQHw`gWqA8RZ@mr!uS+^Du|uPh9U_5?mQQZVqaw>s*6sFDxE@r z{8+P71yd@dVP0AZtSIkF;Nf^xtX>}$mZqGVj`~8r)a|q)RxQ2zH#nHEw`kNVjmdhM z)n$&xl*h5=vl2|bu(oH6(r;$k9gGhn8w_j1V^D-x8s-`y-{Lf|jKc$w8$1~U$>@NU zMaT@AHN_}1v^iDTT_9&WSQafM9#~(ZX$-?LLr1XAIP9}l98*pr3G9|uIgO8>Meu`l;^@ak)jHAqxX{*#iYI6gr-cRwhKdq9kNIycB1P{> zYVm1shOUzCx)rz@`ZIVB>5tTeaC^o)2cwz}c`rv3%!g||+VYyvZ+{B> zbGOuAXm?MMA20;|kx4_~N25Gh6Gipf~U%S(F|I@W>c zSV~dM10%JP6h%@Y_xScVbRjD1S{46tyA=613HWybCjf%+aF=Nvp_>6;1E@T!D?8Fz zE7W+nvh_82eBr5Toa`Nhz2eaM3l2NF$jIs*@he*ngex>P624@y?q=FrsxeyV*CPQ4#^BrZG`6+V zqP9Z|+CSCBQ-=1mfv}X0b%)SivuPdYX^c(cSBCbaq2VQ1cM0uwq2atI4gFV!@u;Ca zVwf8p?M|Wn%CO|e$VSKg+|lo)tq)|uIFs=ac=I{Og&SrH+D_O;gaf%yf~P`$n0%%o z?Pcn)K8`r(`NpzbX}$tWT~M6%(npn-*E@B&M$u4kqJ`?F{IKewRV@w8D>QoJXK*MS zlkgDjVk6Ve;KpI_5kAgruA4h=<9Bk68o93+beC8{HdZ(~B2i(-`_mQGkaoQx+hhfl{77BY(k zs|+~K!!>G2K3s6IAcR%Wrj%7u8yngvV27^NhvuEQp1^=aqqwqC_qS9lokCfvbMW#g zz)8ekPl0i-s?n^XZlQP~n`>z1DAoSGU5o91Jn$KS9{>XRaTf4ZfCm6nmcFUR)%WgD z^FPnGr_Nls_3;+w>xJ`YFYYfxR%+L&z#&U0WJs@bJIAow0K)?fyOR*rpjCA6ABbI@ z!aua5|E@J45&hpa?H^jje>C>K8T-g=BzIC09X~=VhglUXZq<>zR~;*b^{dP3B=@!3 zx!jsW4&-DBjcHh2B@1;kc-iQ`Hy!V70z6O)zSSvDZsf=eMSSamO^SjC(aHe~wUQ6r zor-_^?^g7yIv4nIz;%E?emn;JL%=@(l7FL>oH%uys@MDSccG>Dx31&Q^1Lm{VL6}P zC)g@6`xsj7$HuS^pp9T-*uPN`D=!wIv+P!=5e}wu1tV66v>OA6j0=)^-I{L?IuuR|I z|BMum{lQ%6s|JQrdP`ca-;^C0+sTNfE5|5)uGzilm-Qm>KLJ8}6#01;@ZSTXGZa7X zxLLKso|_aubI-jd`S;{8%I?2z%ll2FpZ;MgDn1$3){0-j2+P)ruf^R`DOrL+Yy_Lm zZ_%NGTu){(2SzBzUuKVo*4S7aeq5jYOSmtG!A6_2C-mu0>xD-wGLf10SmI}vagTK} zl3F?58fJx!oHiPQ0xjz2mbu2_m=21lssGs2@3Ts!_2>Yhy@0G9+I^OE`rW{t$8_fx z`utv9uhgH>vrp>QuXOz-UH_TIZ$ip6DLoN;1gkbbHWSu&F}a_F9d^(<@Nb&i9L?bf z9D}hA>n5yZX?Tn~(Ha$nRk*Shn*4<7U8*9mXvAPda?IKilYEYrV5}V>ro&*t*W7Q2#U5&)y&Ls9|DHjVrFrJ_tKrMhmL1~gL z$iD)g0;?^VS!hKVN(IhY_MY(r6@Z|t!uVOo!ITK?(;EugjJ9~7B zYG1QXQFh>-#j2hjQ}cnPkN0l1-!51<2UBb~h;FHK!yGK5wr%w+8HOxd6MiW+q^O&_qms};M)s1`bd3fJ$eG#Kl7}@LumWrK?^=5k617dKWv@$XMXg1 zyzmS9^r*ErFaHV{ddEgfd~O*Vt&{)A6GoZ>6T+0|KFhUduq^CZd%VfLKXOlgj()CN z8+Gqi!`I%|7}hF7TWWhrWWSWQ*0b!q9|2^or0XXx7LdTBq~?)_HVueo)np}RHpF|^vL3dqpCJV~OqzFD zrPpZYcMyE>4X%G~@eO1aVkWKIwZpG{KUfuZldCy#vl@;LWqRJ*1&&tV!z>!!Cgx$W zM$dAlA(Xmjx5Qk}w=q<9cr~$3uf`r-Rt;HRi{4+zJ7tCzuQ{I$X=qNjRkx-a!wv0T zuFPpTx}{-wdSvwobp*zU5(o_PD`^-JKa&~5MoGKHgpNst(P_JrK9f~*efUx_G~yhdZ?pVEb`EkM`?4=3^hCH zjJF?z3_{DA8`HfMV!@Zjrl-iXI~V5OR8mWoy2HFtu{ma2n0}CxP9|uohUQwxlZ_cF zlNMjNR44<;Fj#!&ur3G$WfFna6uC>rxq-t8q?64jE8_=FDlzuJMIebHy9Nf$Oj$ag z`yP%Wv66PYUyl=z>B8f%$kffQ`!jTLGz>G!8-J(Z`Wkp@AxpgK)WGL29 z4Gb7j?%^IZc?(P;*lK{3F^wEPh`b4OnXDCAQ4%ogDQ%`2OJ8BVT~x#1OB3(So{@4R z6QvY|;WXN&t9zfxqORF@m|RWQNNxCBfAs2*J3 z8+gNKymSNRMN$5J{AE{LN35_~%h+djY@=N|?ET zwNz+dYZdD?tRJ@-(1r?sg~u-B7a0v$h(*iPKeT;0_$dtK+6T6jfREav zjH<8n@&DG@TYCCWy8TyOe5yCRrBkkj2>KTTGHEoky zk7{q^7AhZ~@2Z@To@7s?EAMHvNP_}Q?VyPj@sU+S5%Q6uw}wJ5F+LS$g;I8c zI6`YPV)}~|aX_~+kVA8zBGNikg?VJS32PCC`v%9h<56sm>xRd>-}A=DSRx&_k-Mk? zX)DP8TZ0{zS`?3MWSJw*bGV@ewkQsGF%b(S&pXxelL zW>OXY)G3X5mT$@sX$XusrfJyGh=nm7;?^<;3K69V!qcA(fkhXBM*dcwgGpNy$3|N1 zIw`a!ldCuWR$0<<(*8<(2lh!rFyZ_pZx&PV8`rTSyT~iel(GSnG#H`>-g(bJ>^L5V z2qiR2ah;rejvNFSUKN}c)U)6zH$&evd7Pdv=9KAJ*Yas0+Q*YL@1wX9*R%Vm-cyVP z#Y$ZEc?k&e7XHRD(3Z!wVi2YEQo^k~P{}uM|Kd8*PQZ5s>S2`zaCwNJ?*{D<1BOmBHuL7Y}y)$`8tBq(r!LD z9Aa03jP^pF>NY0QcshC~HrbNN;_hOgkcQ^atb^2Ztp~lHq&yUg8~~d+pac*+S1oWV zO@5twLOs{E<#$jX3=0=5ga^a%5ZS_OM^+#c53_SAM&B^MH>5f!^G9AmT0nP6kl<{+??5cy^|$XZd!AeRlWf--B4cJK^{_pc7lEx1hK?F_rlh_5iTpBQD=8Wv7ljcA@S1AQyTh3QDikcaIl zVzT^VRcmG>Gw4BX=U&q*Q{!6A)PO_YqVjB2M0sR=tK zZ4^M4p@o$B zK`k$aKf&kC@fp1!32z(bO^R8e=qVv_3UYPvFm_i=lsUYLsJh}hpT4exi*n^C;Ku__ z1O)V*44leRzurE%QcPryv}nF_GEcU3wpwkmQ1sA{I5ZTh7xh|(Dy)ezAgZ(->dQae zKahXXA9RGWfD%AJXE|^xwSK*$bo%k?Wd2d2adt?|CgSP>8VicXl|Fsv;l2TV_W*wc z@E9PV?+M^kp7rbPqi-KLqpDac+sa4pFvZ8VLyC0n2mBDgp@4wSIl!sR_v;;{bFh3| z>eJVQ`v!dcFK}}f>^Ojcz6fwCDZk!6`T_^NZRh0%pUx$?e?aF=z;6fK1qkT;8E`5O z`t|U|ex7wMb;O_(00|NR!22N$8 zUvD3M{qqKI8z;McI`==kNas@E=L0SR1avL~PUR}U-f=ny$;l%XAHTqT13os+=?D!6 zj06PqjRsC-XTRP)`idzax3z08^yyrQ`v-Ks0Q@z;>wtjHKLV%nj$i-p&^bt6;=a8; zozssf(s>;4Qvg2#1avM1PUT#`-ab0}^1%(dQO=yJ-uHUkH{fIZNX&fz<$!>`0&pq~ ze!YG4_2v5-G=1xQ`p(0B1Nwdr{87N;fPlVV0;lqvUvD3M{qj`}nnHQoP}@Ak$F{je zI==^e7T_>IK<5#_sT||iJ51*wo8n5Jz8>5+;Nw@o#XQV`00Dgta4K=X-ah*Jm8e2)BArWspAI++5YTxpa4MJh z^^VgyI6fARQGDEh`v!c>AKMYC2Gjup`Wk^#Y4z*vqYt|ax3ODy`}B3=z5#vr0e=ke z1R$XAN#Im|?bka<-{6=>H#}DHuWdn*z5{_D1~>u`&^He_m4$x2o%F%8bQ>8c?~42S zbiR)J2Yd`IgikOa3<&6q0jHAj>+Pd6i0eG~zS8T{w*>cv(N>o0f!_#N4G8GF6*!eU z{Ce&$x5pkI(ASr(ARmh6LjwP?saO4xcfp?p>iv4h75O$2_;^4UAfRh9a4Ng`^^Wmv z@Xc?bPv2VHH+ZkF0{=bW4M0HOTfnKj95|IP{CfNNR*Xx&t_TgO`j+Fq0ez1Fe**9%AfWFV;8b4l>mB9WR+?R?$EU09q#|8E0DdIkC_q5h zF~F%T_UrBATc0!Yg2U%DwQNh<>sqAV@9VgKz(2mEBjf_2fPl_8a4NZ=-oEwj!0B4j zIoNkh_g(ALxfJ&g=)4*DU4Wkf0y^&nPURuL-adYUg9F$Y@rGfkFB6K+42hYcPz9~W zR|tn8Zs75Xf4P&3{dPR?DS+vKfUZ4&Q`y(AH%Hf+_x<(VlNZiuX@SSX+?Gu)L1Hfe zmLRh;Put54MQ>yw0l*6GBtDYdi6|Z=`8o(aiT&3@;jyvSr*j?dAB=170{;}S5fIS% z58zbvQ&c_6kE3VZI&d9&<%zz(hNN@Oaa*QxKcx0++sg?>*ML$0C~bk?UJhi&6usDE zkH~)xBH|&YO<1@Tc?j_|L$eku{w@JM0o^Nr-vzh_5YT-;a4Jvvb&&sh^{WHv4&v5s zim8o5C_+$EOP@?c>g$tVW~_&qFEghH3y{$VK|dfg1fE^ZNa3BuhL!?-EX77rT|?*} z&_Jbdf}*?ahsE}~AMir}hXMk+=K!a2lwWVIT?Bpro2HxQ{?wbATKqn>g$65c7h34k z*Ms|ZszafF5)G$PC^m55*O^W>)I)mvIG4_2cG3Z{{2G5QA~@dH}ut(FVD zyxL!i?(ykci2DZgT@HK&;08cI-%Y@&+~(IiL|>mk+B|J-C#v^q{ixU;TY!%Oi~$66 z?F^jCG{4^5dmUtdm%-*`hrf$akMBV{1fU-sSM2fVPO``M|EqdG2sug7y$Kd?uhw|Gnazex3^3=-fsj6}d$T1Wsu`XV?Tk_d3wnb;U2 zr4~GH5XlvCz%rtUF$RgCBeWG991R4*$9^wXk`Qso2FrCsl4^u#m7jy!ad9D(?j`DZ z*Wx*X=Y1Xc+kkff!SlWkoXV$uy}9@F$#1?Tmk%0o@TPhr$q@1mnYqti@C;cH5(`41 za%>@rY4GGK$G#uD9<7a>L}WQx(YgO=MLK^B{CvR0fPl_Rfm6BOuZKOg>3;aa@6~>u zzW1_aDzgh`!$auD3(%y_;2{CPd)XCxYZiiD|CNvvS{@EkF?ayU{YsoNE5q$6Mthu6 z8Uk^ILf$FrISNaQ{dITX`vATN2%h6W;8bS&_4f4F{@w(Gl_?8-`qtsTfjs#D_y)lL z00R2{0i4Qz{CbD!8-z@u`}O$r%{skE-vz)g2V4aR=(`3um6d+IJ@obS9vCe9LTx`( z?>BTtk-mE1t$=nwKwk%ND&zcmN9h|R`$FA5eJgR_S(1WK=o#QWfL8zkeZK=vYtAecAvRP|n8 z$Nd61$<9J7O@Ips=!ycTlJ@J($;rNX%9iJ^!9tD{lsl84JRl?vfPBP83lftU6_kiv z>(jRc_YLT~0r)L|+W-N5cL1kypI^^^Majo+&RYl4x0!kC0P4mQb^C|J{zR6|hw46k z0~4sFMLDj;uL+TTK-zIC{7K;OH- zKLLCO2(7sjJ zZD3s6kJWqq0{5LRDF}ti&czxCpb-$zHxxLPcE8>+`Ub%`pO$W)zU8=Y!9VsG@Mi$e z0|NS91Wx5uzuunr>U&dc1NR{JeEK@iE4I5sfX@XS4G8Ev7C4m?{Ca!n3$o{K3xP9F z^W`7zTaXkW=P_{eeE2~E0{SArsigdRyXaG^T-!okXsu7*65O{SDF}tG1-=S!3m~BH zHsDm&`t^>`H<;GvEmeH;E-20iI)P6FOaTORO#@D4Pru%t`9Pl+$~JIrp-p+=a(- zD>M)pD56zHI%sJe(mx;Ywpa(@SAV)M|8W1n?pC-6F_Qqp00Et?z^RP#>m8@FkC&sB zpcKZe?+nGi&Wnrm z9Sr;kz&t=e-+bUyj`!;wq_2;8o3~`h+l3bT^u3PzcBw<5{{S~G!5T0ipf3!ZO46^l zhd#BsI(XjE{d#=*mf*f!bO7ZV;5Pwo1_bo20Z!#^zup1*2F1I!Gky8DtSFa90iOVv z1PJJw3Y^Lwe!V?%+4mCMCdPI9^sU8xgL(5Gfxip*01(jkF>oq>_v_8|+dzsuvhXa$--X>p`mX_gGvGErK>wYi}{|5y0g@IE^`t=UdH>f^F_nUc+;@=Y7w~G#-tOR}=;0{1Q-`&8e-0#=h z)BpQc;|I^a&|06q+~r03#sQxSm<|Z&+Z{NS@A&nO(Kl%Jg}ieW{~pAB13B<6@Q(nW z0s{Ir0;lqoU+h>RlVgS1RbiRu;Rl@>`m^=fzKa$8} zKe59NO;FZGZp29dlmK9#MvO|`u@RPZ<$3BobX{3&C-ZjH^7)FsUfj1!Qh+tUtFQ(Phyw!pQoyN{`t=UdH|T~u%cpNC?i;k@JAvN| zcn}cK_b6~GPx&e(xB=CiR;{gGECjzJPBfs7reRLmx*Xm$-CvSL>-~VynKws9b zg%2no1_1o>m8zR5WJh^)3pTm>ymd4g>C@825>tdpzAK+RPOWZ?HOMKuc&R| z+d7}V+)s-1jRighFbxpUw;OOOd;9ec(KiUb6)slqb1m-IChr^y{Q>wpfcF6bUF(5U z`OL4a?XasBcmEBZb4z{tX09mGcLMMq15O77^qmEq%7uQtgY*r8bMkhfUZ1`VxNk7t zR9@E+ss}Uy0{Vslr_$lqn;UQX{7$yKE;4Wfpqx7$Nb3(Lgv1FnbE?P8$zOj!SQBVV z!7}o!OMLkUIs$rM1pYeUO+Y|zFK{X!`}NXiH$C2T9XyEf=3CTeXC90Zr-DYD>oDQ~ zFyb^~dNi@W%0wd#a*T7irmvMKRcV=`f7bQI_HZ%qs{q#k0{T|~r?Segw@3aABzy2} zmhL;tr_;KjNat|iV*uj;0i9jIsZ8_h{{=b+)ppnU^sT{tElB}lAOQb0;AH^Oha!Fp zoXTr{9n2?#T7HQ?!RG;<4lNXEWX9|zQG(N|RR|wsxBWn+vc0k|y)C`MJGIbRh`ev4MJ9s?UpgY|Ayg7S5E1ywtcBdM z5oS^9Kl~IvM&AX2Dk%~0POgKkun5R}2I#Kh3_+(0aNVIL(hQFq6m$tufRJc%7eu*6 z98yH`LmU@;8>AK-8Q4pDE>(P4cvF!tmjYh{xDycY6-2HAV8?^?+Xkg7+A`xg)d}U=e`I{HZD))hE+mlb@%A zR2;;@6{>xAjr_AbK9JtN_ARq)9`TLXuMiV~O3~D^r;PVJ@aKmwIN{Lwb7sz2bl99@ z7vo`(-|k=5XM*~}1Oz=|7n&0 zCy4}eS#5L-Ev23R7?Jys{RaKVl2DG6AX(myCY9qO;Wg_a5pYjnrHbz7rhrA~H+8^?8oX_C9#y}>;80HbAkw&Cov^Mlh#1=+! z9D$&32f@-)>5NqFH@s&S48q zoI}yivc0VBZN_@px!T(hTkkl3&_WL)+F}lG4H3d(Is!YN!K@CGBU`W@cHK75b4zTz zoGMFYzO8c(za)%BQR0B4*68NS`v8(D7y?U z99np-;@|7wOW@Z~zXp4F0eb@i{+$4P1>i0KmAR#=e-67$^~VQizABH;?DhHCvnl@d z?|>v*PFOrA=#g9MtNy9P^9}3~F4M~#BmYjLBs1?g53zq5yIsv&yX~rFcDURAISc)T zSBWebv}DiSZqr)dC8ZDjR2=U<56;& za5NTApar`LjpFYj(K17{c)XYdY7PBQU<|Yn7Fy>XQAMSDg?cX<_#Nosb8my40I(Pk z$oEr$Q#s$SX9~sto?BG=mS5sepm*@(Qg-lZB*B-2x)H*3A1T2R?LUP9JZ1Yj1$9bF zZA#(9;qHmwd)Fy?LO)gXe1s`|4e*hG{Q*Hcc?kGMK=yV;*Bu9|{`AFo)n0ObUeftz zsN|wUb9E+(HQk*kmwV7IF zW>%Ygm6=^_)`ga9V~|yDD5UKfT;z;VJfkD7zuCi&hR?pPS0hP=ZnJ+^>K^+qT1)mT z!(CQ|arnQs{Xe#KSBrLA3wAFeO*6A?x4XdqZKN)2;1@Mymo;EcLyerd!oUtOi{*83*s?`-YyJ1 zPJ#P$tsrzqixk7YW4c8`ALpPMW88L@&;TV7-81IgGKNGN)jtkOfxG0Ka4i75@T5z+lIip`Xnlpk-S@m~6Zg z8&U`JB&4#>;tSRN5!4^YaarUnq+v7fBF-evr8tuaxJd6A)8!~6d==s}(u6q|bs~%- z6SSA0xZjLC;S;!C6n)o0)*GAQMKZOXvT&7pZ|m+X&cjOYg6{@kI3Rd$KLcKWH})|A zsH|x4^@-8GoFAg%_lp^-KQG={tGmcO2=> zc6nCzd!9yuq{+I0LEA8z`N5{=po1bx=uo7PhzLtmXvjQ>WRM1uzwu}crj7W+M3^+2}DH4B@0IZ4OIwr0Y z&S7>Ld}HVlU0sbCpg~@*S{rJ#__Pj{ET}fKdQPk2ZCafb^(=ve^CFVrN#xBlvsyj& zOVBeAWzD!tH5MpptSHjbGf}WA5j4LN@!fOKF%3PTBUGz}#xHj&#Pyog5cwp{8Ehxf z@x%g8?Bt@^zIo(^HL8E~u2uHiLomMSKSR7$cuMc0FRRMPza&fwq#r!et`*Pf*ba_mLjDSF~c?@i3^95JJeuinzDYjQw2^ z;d`cqxQ1ya(#EKvi2o4tPlpe)jc^nq23creb*o1*)D+IH*Bfn-s6tHeDd}cM4ndT? zCrxT4H4HG8Qh-nfp9Eq&r;vIZs=HRB8JMI~uzjVF#?Tn(B|tHeQLE((@sEXh1Y!Cq z-MJ2+)aRJ$)9*0Wlwgz+Q9bg_6eT-TXA1S+uK2(IJw-p7V}YLyIQHj#{1f1rGsclj^uRc48tfb{#F+jkD8Bsd3u={jZ~ zRy?M#X{*hcx-)3V^uKHI8%%J9-UtORDzAd$yU{NUmRN0CtIU)<>f$b8i5&n8UFRlq zuT|zswisr8?xe>JYSJFKhN^NWyMeO{QA80 z_bmS+E3V7)m3iySEdOtI+L<|Ab3HZH3mtxm6ZxwZLs)wKJX>7s@NUOO7Lb2f)6TSU z)<2LnR-A9~i>%C7MxhMB>rZF=5-a+(!Ot?MEi)lN&^h!dPQAiqT-*>gZVE%*UE^vo z{T|oAWXrhKsZ8vhGG^iiiS&a z!dT%vR=A55el7~vkkqc?-$TkVgE#3-nC(S@wV+!>pdloIrvNqpo7;FJ&d6Y8R-K#S z#rr`UL@Fe7;u5FCPKDEm zvX4X>ND0it5dh%?(~vbf70J-h6rG05(dDtBo)_cZwAgNm^0<{q#d#tRI5NIhxWEf~ z!6~o;nJ4IhbXJXCO~IgHU$F6D_(bzg3($&hNzG3Ir@rq3kTyxyq#mhXP+BWGt9XqJ z7=b*X{f>C}o+J;Y5}|nz-Gyeg>Iw@maAIzxhqqQs8AI}->t{;NJbSmFua;9vUn(xfq={34cXwA*9%X<9-YCg2`;!W!@{pLZ^tq4LM zc?wq>GEdW;}E~!gyQ1*XrKTy7;Y3um?o=VKFJkx~b2bD+Q8Q zaCQf>#ACR)6-|E%QmLj9+q(h6ByFYcDVJJN#aBjrSrrtSKr0eTD~g;`rT^PVGk$xm zlZYD`ZTCp#ddGlHt3B?x>nIh~*HQhl*tEAD2g&HGU;uuU(uc(UwB_rDgX{jjHZx`g z+f`3hVuI!2$w|R+(Sssd0htzN*Y0w9F^b!YhtB5skAQdlB>ES%z73C8qe$ zd$f~{h&Iyo5^;SeHyXB)K`f4RGxcn&TNbWKH#s9b%)a?9xV+6P?JHT{tB<>#`Dlr) zWfD1zm@^uhjLOt(aCZU_vQ3JDDGckls6?(xK?#akKjC_ zrOYa=p{XD4ta>Xwe`ap&|1Bbpc!-y1Mg z&ydPG8m;tP18q+Jvae-@iIYg40*^JwQK83UsYnv}z`ZaNt`$bp2`7?HN>3t}wXWxe zXH%Fs>j^VXV{U0hf%uQ#lZ1x7q0*r?!%DOf!cIk8Gpr;3lqGdlvM7}qk!TnO1&lf0 z`VKMZiA)46xujUsEF*EIFk;8e-4N* zSFw@EHai>%%G$%DBj_iT0Mu*L>_n?O4ucNYT5(eY3neu%EZ0Ha;rm3!swu#-)=`{q z{8F{&&c|UVl`R`Se!!mtd;tjB^C#;N+x!XSN(4|Tj8gN8u6tFxPQ}!GW9bR%_|mPc zf1y45+q*YwV>x!g;)(t8=u~!Vk88^`)~y{S|6ajm^@yq-P}R$<|G~%9r}I>G8!8fQ zuRs~vt=RZmR+;(L=B4Nn0}ocLHh^5T zqpkdUx!&@r`nCC0wccDA)e2T~^8jTg8De86km+kpx8axK#t|`$*Pm8%_iAdKTb3%xU(W zs?!>|hGm^DKyBPe4NH2NIBU=vg_Vq^Y<2?gOnSMvRy^X^aisQ+^D;YHQqRYlRa&E+ zPSx{0BsLEBD@fpmg`>sqeJodR*V8XblIUkuv6*D3zMo-=krzMIJ|PRl(EfecZZSB| z;_Z6h_#)Zjab6bJv9{%kW)_8clx74l(Layz0t=u1r&nnG1G61iBCv=&1f!5Gw1@#q zr-3CCn6V;8irL6uZN<@Vv#c~?B`n`)Wo659ZmCgLieE*tR?f;c=8z6LWnuzrVMW7= z2r>xKTqs+}!5m*^BN1_q?!m2cqfD8#fR(@qk}-M0j3Spy9J$J@Y&A|3#A3`nOe>P5 z@v#;u)uK#fW4UC%GYcH4rRhuz)tGN3H6)I<%(`r}nkMR$2?(MRskUOEPX}OGNY0fC za1?hitXneiDp_C>;1A|`iQ>6gWEH~ivjr?XIT)p}G)UA-4n;7_k^FHY6=pdd!xP&U zQmDbE55SzW@16s$Q$~5uwn~|1fo+14YyuK6mVpw@N=r((6?P@RiRa3INbiEoYGzjX zaTQ)ral;=Jp4;L8DT0|L2s<5P&e0hsx;l6x=wTiI<^e68vS6MvBMaOq3x^Q_IR z7x{YDyu;^^;5!x{X$61aKtAvI>2sD8zof;)SD0Kzyg;ofu2r9IRG&twwZ$(nu1_qA zvqmY-Fv@@H7~BJfU1T1#%A7FZY}jh5L%&1jaO+B=?pg!!YAWi>UEOl9YHN(vPR!~^ zkr{iiPb_VE{poqV@lju>JyD&0aw}&)rZ+z8pZ%+9cDXSOxwfKKT(2lEhsyn6slAoe zu7~x;7wGq?XR7&6jLanlq(GINZ|(sfg*2~5XUg*`eP0tx+GZ_`6UdimjWNB1YX_ff zt(m8hJj&!dn_kLwgX5MdXL?PTkd`C$(0V3iO1}j#yHU!Nv=k}*jwc%-QnGPYGAy6Q zx=ItWKMq(pt86U8e4?DINiKOG`RY?Rj{&AiAaAN!g6@o27nwYzdPIr(p!1k5=r_@r z7j{K0&MHIy5V5FdyB=n*n>fx{#KtentTgf+l3xze{8_cg&pP1uVS%go)7rKke;)7* z)^KHu4uyUI{8+&80KY$obAVq5xD7z%$qUr@zrP=MZGT@6>AG0yCj(n}pZ-Df*}m=4 zq=5ADd->a(_43TyQvdiH4_#nE|M-~fM)&WDT{ka*oo!Le(i76^LIU4eEuVVp9DA+ z5Xgh;fIk9w20-PkJJj=cKcV{n6#x0}nB>ocHsfdD%LC#=U$_UQh`psrMeJ#&6tNfe z&=tgp7md0e!!;_bd01*P7wZ_1H2pV5<^{zTGAUffpk~!0tFYt@-#s!%DJ{gE-#~Bw zrf%gTz!PlgP8e%b(5un(NN2Cq9e8M9E(z{IGnV5Zt?tr}3rK&VSH|cp0G(a#klDk+ zbjY+Jk!{ke1+DSnigh?v>p+FT8(sRU;_u4miu`>JcrW06K)~Ph^N7a}I1)f*?P8@b zrEXPxp6jpg{jJOA@7DFE{$ZGi#cQ?y^1C&*R{KCzL+_T;!bgnIT^6|dp;7mV(a9^Y zkBU722Z+)0Jq)^hy?p%bC_C_SCK=kwCqa<{ACOf&SSO?) zFqI(qT!fythKF-zgg?k&Tg$=jcOxf1&Q@r6m%+6SO}-XZh6cEnH8PXTzcOVaR+=KJ z2?vWtS{4@OOw@$Q4Xy_;|CHyfWV?uC$yxxgsuWLXSvng~>DQR_utb?hY$|Q&Q=39v zZzw)3e4!(>RB|E|x)S&;fZG8s*;E|=qL29X&Z$fzFpxxRonfE+&`@SVLa4YLsQ17i+0#NDW zCAhGMtk?xiqcNq#(TpdZ2V#T=2DMr=NB_1xZz}%wfNv{({%!ZoM#eCPa z-ZOIxr`Mi-;;;AJ;(Il7pxkC zV>mK~I#9q~X0RE?l1>>n8a34rAw$DC7gP7h4DBMWH_SSh@rv`Qd$priXE23pgc~7w zjaHdWT4S^Yc5SGea5^BpuYp(PcjApsDO%MWoIe$fHp%zb4{u7f$IX!#_?wZ`IWI<0 z(;m?{vU;>J#*@Fs_29Q^O^)mmo_a`oO=fbssU|#bc!S#%AM&Fi2m05kg|OY9AqjF* zEEUG@!_|@!`sE>!>XAnKnBhYwW~`wI00{wKHHkV=35lSi(TU0$%y!aE^OMM_Ky@+8`V zGZdPJSxDg7^gR5B)P4FTw)UT^7E1&X+>@pwWiUO{DrL;l z4F|^t@IlU(@ywDQU6f#@8y+F?xPt{0bR>0ux&qNLGz0ZFI}QsVgLyu>cQx@-M65>B z(l+-FYQc0&zd@HSYB4~AQ}X(f*Wh{-cb4av_y+5&NatM!8R+vQVd~P=ftD`F3zK|? z2(QLfp%}y3LklGcI;7MNnV-yiDgN%%5=@) z(vPkku69-YAbua?k8-y?yof){;81lAi?n*P;Jq3alOdk+*-S2vWs?Y=wz@K39R{^h zNbsZN%&}3gw!+%ptu3SMs#a|XthEs{q3^~khE?EjE+g~Rix%XDm?HZg9?*R^6o;5<<5kdr;BP483NU88q!(gK6(FIv;b4Fi#2r&K6^L| za;(!Dtpl<#`c);5jKr_@%6tcZ$z-(`MuTd-%9^R~6=xYI9Ld911bwcgs?!{e)bcUv zZ?ezz^$R=|Nh2>xvku(BiWNK|9nq<$N!bD(;btYmbh9nO#@Vh{8yhk+vR4JpPvSE< z1>||I1g;F=fCW{@zl-0qJNlhR9@f}{(|2xcPiqE#qp0$gBuaZfwBK*?^7>o;O;fE^ zwG)&#GROJ*Z9-qFejfUL(NBIn@VS8Z06{-D|A6@_;2!`gJ=4^D^lvj%zdm)fnlD}C z=U-p9WqTIX*LjCyXPesdH*k`F*z98`%|T2cn$@q>Rw!j_sVP;j<(jN+5VAT={;g4Z zSf`u^VWtFkBg~rMSOAk2@X_-4d+bItf0Jq7XzDkat*cDEH{BB>SYnSRqrpZXcsamJ0 z)>_B>C4Bhcf$)s5a)tGR4nFII(XpyIdtGS17d+9JjFq~DV?FF^5EZ?4{%zatwe`2{ z)(1@c4%0|9G`T~TF(a1Mqr)OFq3XJQAlFN+GUy@ciF~?lm89aMpNIR6D~#6!)|?-s z_ZyA9CG?hD>j8H<)?H3So7s~s+Qy=r^aQ`jZh0>Y+nD)wh1OePePw9>HmtWRIGbSL zg10)>8mAF0w+Yx?4pwcGaSSpgJXrx7k$3DW$6D<;+A-w@Pr_K*fEEv5M6K~!r{+fN zn}p_YK4c3_0o7Wg(TE!Uk2KqX3Wkjw@h4fT6w3oum=NhUc@s3omogn&3*pCc2y<$j z#z@r=bHXq;8Oa_C6MRi}bg4Hgny-yDdRA$+%*tNIM@|_rYE-y%>qnSRa^YSs<(_^g(JHB3E1s6mGSg7+dKUMoQbYOqWV+kpQaY%G|Jk}Y3nL*W>v!4hwY z2zfWqvMBCu!O==xrxp}h08+q6=*7Z?nCC^wwCG}J5+aG^1gh~_{Vw5VF<&KdO_Lsq z7Be2#8xfAVk_)&NHvhm2!?K$|J*HZ4%XN%$*oCIxJ34<4+>7`UIJCC$3#I&7`^VzC zV-N7jZzA^?Adpu_zSR->&YwC$mjS4>%~5urb;qf?ZO!lG@y3*rV_jSJbE0|4#6?Gv zNb1#Y(cab=DkiJTRkcc0uc+$hs#>bfd`*3NK~-0A^>bCdqYj?0K7FpLGt}??fbVGH zvpT%WoW5zfbb2y$P8j0nai{K=&Pd{$X?16#l@yq=T|!|?_@|^yj8CKsoWPAZ8*4lCQCf#yeFm>8t+8u?GGiUIE)#2j%DmrSh z%|seBJpukIPHZ<(_adSGeb4Uh_REU*NSaM#HBU zo6dv*NCJk*{ZAzvN}q{lXjEW1vIJ755ejO6c@o1J_U_?&Y*VFg3w_7-Q^$-NeYESP zu!aU(k%d-m=_7(GSQWe;HW0c(I#Gc+ox)3j&++jtpC&I?!Ac^ygKhOYa}2&cx@1be zB@>q4?O(PNY8-o1{~84!)pfJpN)nLj{`{S zay;5fW+e-riv>u*OJGP0zKdZ~4+KcE^Bd?2T*FH3Q9sY(4ayI=}H- z=g)xQkwidxGr#emOVYJssX`WO#;if!7jwrn#1ULh1oJQ(D-5`5&H7S8|- zTUL@}hmy4784IvhAz4F7-mmG|`hMlxyXd~<;9a3!D+f)wTEx|CW0)}%lDyh(_!gHyRip9>k(6h=XbIfW zD^uTig1##^YE_`8)~ZpD66-$yOO&W#4V`&S(GHY1!Q@z(IKK}~_ zcG1E~E#R5d#0PWtdTS^w2pQ5?A@Sw@z33vt& z$oG$dC*FZw4?ty~70M2}qFdE%zJ2tQ1JvhPTepu=*l`GWB*pnJlUZ?of{MiNBUMw zGL%h7qyG-Uvf}%+=!At_TFtY#jYTK9x5dVm1hgqEq#zQ3fWCm?5W_!akt~VY0#srm z06hjTFq42wGDij^IfUwV8EV3n{+?2Nd>#Dhk{m+pJK*7W;rj~+_}Bsb`+&IsD&OSe z8lR7kUZm`xU0Yu_>7QQcJQ(qiUnt<@Q(EX>#L1t#)%W*ta){#OeQsvmmN+?N)13Tl zTR15-O1N02V?}N{0!yBfo0x#JO#<^j0EJa(S=1InT-4bs9=9wxow14xY{ob2uo}mp{#m^=07x}pw_)dNsfg=8-Z&dAdUba;Oj8p`vPVIHpSQZ-{9-It;^3{<}aX~k0d}Z9N0>q z)k2RFH~;Qdf6>Ry8r4ew>1NIde_Md|Yo#@tZlxQyv6aG;m!-F{mBL@TRPnR0zR1rh z!1o0l2nhJO5IB`9{W^S#rZlZ;>zHc(vZYa_jtrpW{Mgm{J`5LJdh5`9snz zTIjdnXa{ zMiFkXpZ;<#_tXD|$!eLZ;08sT?3b(W&Qzb4s!z|T>JA*FA^#OvkOsPS!q@YSZ~1!S z;M-d0FA+?sZwS}j6b`oR^7{F8+K_CMHAHLT-t8y&EH+q_CBA;aKp z6}N-$Y->+gA# zPh<5TT9S_F2lQ+-1yfs%p%B4G6Y*NeM-vXJr0N9IT{-HJ&qE3}>|7Yz>EQ$;9R;Xg zWD!!d9FAGARw%y5Q{z#G} zLTW3thrMh*=VDpas-)jW@x*1Q3GcJ#)cNy(zZT7nsb;OotCm2*=cz5*UP_!)2O@eD-F61Hk-;V z4rsru67G$#|6+@&DL0#bH`r_nA%Jyx*p{&o%?Vu}t>Po^LByk&`QNbfpRm3(!Zxzv zrc1PWY$GwwMnkDMi)(!wF3pQMoKPkX*l>Bh!*HdaVai`|0WVw$K?G^;@P$~jYS(Lw zVW~MO@(AfkmTR{V?Y`UGeYQLMz5>G{jKe;z4C0C#2!o&qBjA!9*SI?>;+jC> z0>-F_#;DOq%;SP9DjJP>l&DdRK9Lwq+!DXvsp_6PGYpzM@B4j!eLZu!s{8g*U0q#u z&Z%>Lr^0NceYS8jloErizAe@AeV8BR@f7Ni9|xKX^54fAg*czugn9gFF= zjFMIhl{A#E8LBks|;G;-r)Acxzh@x5xy@6&if3(pKUd={(5%h>u)9U=YlQ-`QzXw+9`L z`c^Di2IM=5@K(Bs?__szwuwK$?-Ik=(`sN_2!qsxZq+631lWHZ&NG&+{+7{5f4Q5y z)@8qNX58wa8e~^L5!Ml~+(%GKC^C2lX8AhN-P;L3HiU}Z0mz0QDiC7_ARDAw2@`PW z@rv{eI*hpRk}XmTfFXgY3rtth^dS052(I;#pHRr8fX*S?KTRvsA&QwHoCo+I^owCk z%2HpEtC#h<{;&CZ{WbEhgIYcws8{tm7SBj2YiR>8z12tkHv=(I4~fVZfEYnYC0IIlBsnc8T)ZTQw{FiKD`LZNYJMgq{> zh63awbW?!oCO18!oIXF~vx9%bz95joFzG2~FX(qnMvLR)G**G|nd0jwyeDw93h}A5 zm*y@8&nIkYlI`l#zvb~W)4Rt6NU)%MuOvR5_`FK=A+tq>< zy_oD2jf$-BR)R?_=$Zh)!FTP$0;d;4AP)}$8pH->y#;0!GEhn4J3trC2(c>HEX%tI z<%oDUeHQsQK%q|t%B!7${DYtmLA2DqBKhfgcgub`{)YSxc5Ig4L2lJZ_HFYQE*w(m z@=e-p)?FIgq-|n%q0@ZVexGeHj`OD`HX7J6HyU>+U+6v8@L3=4=2SkpV*!eEA)|e=rk@DxI*5IGWcNbSE8HQ{-T4Th1qH zb!J;x1AwxUb|R9q$6^kut*R>93H-<26fW^T!;5GdFt5TyAc4zq!@Wa^^zd1j|4*VR z1(oi251*QN3an(i8U!Oq9hbBPg#!d|2w}=gFA>%}la!1Z<#U({K!K1#042iy5mQ}p z9@4r^**#`3|4Fuy1$gaAFx~Jm1cON|7+uXE2p)jx0HY9JqJ{Gs$V`G8=r$dC5lVq7 zEF?!fwn~kJ@clAJtmC*ESrvtmrXd;wItzDE^C*O{qaG#OTkaqE_BIarDWI7ke>|Iw zJT3FQw6#IDt4)n^ToXTH)%Bv>9~cpb5be$XK1#Rnf3Qb@74xqB6CT*eTHx}2GIdBT zYCX&uyR8~0LbD+R^&;vVgAQRkI;a__LGdK0bD(~~1sipVoa!1-rpr+pxGbaPbL~QT z(_Z1sPl4|SDgyc6eJk>`O!CtI+Twlp!*J+U{ca>a=fvg9#RHKH-!l);(IL``d|G{nm(Z?0Or<$$LMee6g{v8WaY?HgFxV<=^)igo z@6wA2@g7L3FfHK4ssXd801N92sVSvx>NJ+hqc7KDo_O|3@QTr&%5@V z^Q`#!*6AAzWuq}utXH%1tl0ThJg|$6MR&-qVDUBh#%4YjQl5nm#^lFC%43j~E7j^? zr4qTE#rl~oMT^rAlKmzI2ryLK9Dux>4gq5(n1j^}=BUI8i$nB zek6_~!KB{E-;QGR2WNoWtC)a-*%<0!%XnFT*M0#XI#Dx$z*gix0=0ZOP=DGw^eS6R*)>uIixQOABEAU*wk?NF>3 zN)38pI8_DuIk@zDL&`lN-8ot3cZM(kT5DJ+S`jONzroq~=m4wRvX*yV&7FRJ03W5y zO@F%sH30Uu0n-{R+#t(yF=KGW#v{3iOGn z=oZX}lUdF^3{zK=%m!Y?NAXI4g{F8-%5f~M%qhbdROnvBBCe9|aAZi zFN^JMv!!2X{}rB}(ui^&K6{}UF7MZ#RfUc0-vPb=Q`w!GNS=^e{akF_t%zi^-1!@s ztR$P-ckNR|bNyWMZRHybw$X@hFv1&+@CJdrg?LXaxY2kJEqTs0e2i$d;WgIO4Fc`U z*=T4R3_=Z)Iq)HLH1>HpTuX5L!}sTp@Xp8AGGw23{t<$CZ1-=AQcNFIiYY^X{R^G~ z9o#)QYRWZy@Jad257~^3Mr~jl%xEWY_OYw{)z$TVA@T?L1a+>?K6HuY{4ZvAxMT3_ zDtp&uueHuF8&fU^N?xa zkK5nnoqyutw>aybj*`B`JO9YTmnl<<=(o$1&P$c>$6PNhD2GI7>HFX7D)+d&&C#{? z#n#vccH9&k_6+ZQnuoV=b`ouE;hm50@b03Db3zq=3Q|}MI2>dErk}uvJPy4+^r}!C zn7kL}e({2XlH}zU;$vBdT3;0}K^IdRE~<9S(gaMAqIyYLT^1=+HxVMtOT=W3w!B}% z{;wg&sJB~TOIFk5U8#IhsJ_L|S4Ua_8(uTY+fE;Zl3dRUqRmdzG3eWJd_uBjtbg!? zbj^4_zmVMQPC;MxIpkCr)RaT57Dx95W4GXgEHsCY33tL;bE*>q_VrPqsGxWZpa8L` zM@J0gkAQH{p6Em$&C=8Pm`rCjoI#BPj-#_AT>KX(^h)nxk3|(^(r% zRA?2!T9PO{`(p631nKNROG}k1pn?j7uSAk?NXT8?Ol5G?4GiWQNigxWQ3i2fG>?!W zF%(r2wp=h*D$(aupljj1q^t z2;k-bm`T8yDF)OwjBLpw(&5KSNy}j8f;#lE70@|BH!#R0B&k7|DotcimZpKS>{-se z{8mo-eYMyr@lx6X2_5$Va$K0Fb_~R&KOOlSK)XP`{B)|;5x5KV4-hSpr=^@U?|zxy zzf#&)Z~8B}-8CW~v$S{Fi9X=wMG|oHA8Z|G>*4M&IO$&J^D1+O$nNMpM{h8UjfN^l zf=khp68!iYYn0$$u(|JEHe(;MHVhhp`xG!R@01GbL6=u}u+sw`V!m+S&)6ldaxwZ| zAhPM~7H(|h>IE+Qp{w(KSVW%~Chp}yWz++Tb0>T`_Qlqn%BVXO=T>;O($=lYs9Thn z&;(?@&`oFp{#q?~&lX;z6zM^7BP*niMyb}D-6&+^8n7S}%*yaU-mZ-L`5?ZKH1W6N z&|+GFU>u@)A=qlj{7P^%nJ59B?NTO~mr-C|SaM(9k{XqEQY?#H;i#fmMuW6qLL(rU z8Ci;Uq5aZ;0;6hU%?Q?{+=1f2`yPkEsROSK-(wIAjQB2^Ah^H`OhT>yo4*kVkYQxt z8zXY`P*}DdEZgBuy<-5c=S$=}jE=yMKz=)%Y<2|R099JD9WMTn?KM30yXk-e`gE!eji-5blnE*&&a}>lBf^F1LOxlhrZ-UqXk3$uH99OTILQvK^11 z1rBCIsDVP!G%(cn4Bc!Wx`~7HjKCTw58hA&7x0dwybZN#8t4ESy;`qP$t7q~Q6yZ0 z!N`R6dxAcN*Ev_RM55$kW<+4g7v%e$NW=Y=YUdSdxL+L&%S-TsNu?MNC4BiL`faDu z`JNKq1)YzkEuTq)?8i#yUzPA5l%6))`h(K>x)OdxX>XvdSCr0|mGE;4tDuqfIi>Si zCHy4u)ik0uz*MuI{|^IRZUy*rmqXZcv=gJrSP2^TOz2s2iiuCDomWANHMT|$W}}kj zz=}z-l2|z(6RnGn^+!jiBobmJY3xmn%GQkWhQ4u5VOh!8;<{YhKK`B%ycw!0>Z;o& zdwYsnYul!Jd77W1f$~d3#i*!tA~M8d%tY4e#CUlrb1=$*{SUi6P?xnwJ7eK!`=HSf zBb^ux=@GqA4xUE5MyQA5S|PY{V2c<87%%}uF(ZQb93tTR3-JM&Fhw*0*MX7H5+4;a z@oO1;vE|VO5(w8fKrcge8iOf=U`N!_WVuD`iRk`gr5PA%+DW`KB^^vxn^h1+W5V|i zAb_NG^9L{Ck%K#1v1lTmOu@s!jHUqx2P1jS#bAT;$h#*-KoKS!BfkE;u$sWr(9F?D z=Tzf4NDi@Lp+WZwBZ`Iz$q4vo!>(Vj=dn8VLqkh3!cn4&0kRrU%J#S$y$O+y^55A@Uj#@lrlejA zYQGN-nzQ|5P zfSUxoWFXf9IW(2l^|(?Hgw<|LvSdYWX@w1ZxFTwWYM}s(+;oh5k2~lci8q9p=*WLb z@5>!{kE)G4Ed^dW9EaLFHLzpHNcyN%D^3&aM?v4b<6U` z6JKDTQRs582w6-wh_{Z{2A&b0Eyi8UVe+s6sCMWN2nmrqRP|W zLiKo@eC{(t`RBd}`RhUJK>l+-fIKa~_tGsX`F!&VWa>ZnGvh{j?&T}?^4J$?|G{HJ zU*|u#Fn31qp09gwOuS=S&{VP}tYC&e`ljRMbN7Yw?eQGsF9KZ#@}GMx^0ch;(!I6E zk>lq93J?!o&@&k^Cf~J>3EZj`^KlgSr5J6oYH(Yur@dGr^JKZqNdA3{LcSNYZ$Z9X zH>ElP)6yM*KV@Y3E-07!#-Cp#>p!T%*%%l>X?JM2AmIEL2=^H(leZ~*i=C~xUD z{)O^9XWMwWSl?-ir(yb9KIM23t#{&IUO?I7hl2KA@YyuhuQVXGiL3YgCb=qhyZsHu+zXbL7>&QB#y1 zQZ|&-FE?~i=JkXEfd4MnAKaW>K-}pSKlxdxW^bF z$GIDgguHuX;Lez%jSa6wd0mv%JKAeABbF8Kbx4hStt7usAKFTW=mhZ`bo>yFpLhp2 z>iZiEl=oR>gRuqos12+Juq^a+HSF&;>E#}TVQakB(xdOI+FR&;5|PoEWnkk6|2)C^ zMAiPKh7b`0>bpn5=~;snc3VxG_6=6zDO*kUC{!kcm2S$`q~5Ad&m0Uz%=JmBd{drH z^2d`>`KG*(tuaROL9{23m!yoH0)BZIc%kp)J`r1tJ zoRIn(ap=|gNC?VfX7EwJm|IQ$`+PBc+lY?AY#APw*hBl}a+K^IcgGxaa=a)iLI||)$VY1BG zy%>+I3r+nJGxLBZwq%rq=mT0|*7&KWUTh*vg7vV*AJt}hThWI#4O?3^G#Jiq9^P7R zH^n}Bg?`)!<#xcNX!rZ|b(hJvAmli%mp*Dp=}pkLBonc7D04CgLW%b(%gV`}~x z!C#u1e?|~z1lhwp^=pnuPGOef;fJ_-FY3vB+0c@}TH}D(!Sh~h>zCP)dknE9V@H_x z7;aE|)R2)Q)L$C>Ap_4V;z&5ZG&F4e!hn%CXEzRS9ycY$K5FB>`dPUt2_fp&{x`58 z$=Cbe!0k!?(7=1V@SddR zogBo;@zGjKyfxbpZ`5kywOU1_QZqWV+NyZDRva(MX5v{5 zvXd5##I*BMUFU?le#pB1$-2&0a_5F}=Y-_C>mIXYHaNHzNZ2dDN>>srm;g!Rg+Rb7 zaqApFv|+uUSU&+*Q*0bA)-cLMz5#k|c&*diCv6sqH5ua9ITOWtsy9icpmcEIkY+1z`qk-6e2mhxaIG7L?EyP?q389@PLc3;8@U8)OM`LNR#Q9tDaD z%Er?LcCre=wit9;!MLizR5?8xWJv-(uUepa>m%}cuEt&33Tcj=(GbE*i_ZpGf=(=| zD}<(@xE#uEUNV!V3N=J34CbmzS$U+)DYwgb`D~CSNXtP@n>z{=6{J_DDp)1h@hSw^ zam-92o6E4;a80b%hJE-<7aF(h%uJ%bs*W{A8k|O}0U?4wvt(+jm0E*VABA~4(GfD` zYOP!MeQ~`x@c7q2SuX{^n6Us;+8QY9rNAj;T4Rpo43L>~b1G5=Hlpt)7@nToYQ4lIbaBY{oNiInnquL%QT7Sq{C2Eko1xlBYy_<8ut#Dwsj zakBp(r6lTue7pL2eNv8jwJ0yg{2BS(pwB?Q-bO8!@=Jl2_FX6Cm%gKh%G17G`QRu0>J~yYXTvcje+z4!d{l zNOJK~5)ToEZ#Tc3!tiZG7(OKH6_MPoi{uwfBtKU#A0%l>>8fXBNekR{(-3K9C=YE) z&ig;*p}$cg@#F(YA0CG-b0iI+MBcB+?N!o(1n_?(X-Nr!?w6NQ@|-{R2`(RLUgGge zDxb}h+q{yZevZpaO(^%!TKo^Cz;CRT8FVk0s}0--cg&X)k`2i$QnDK=BkiqZ|LOb1 zb@K1Xs~60~<@br&!%-B{khX#Wri>2-r`PY4Mq&lkR)FyBaclF^$9{%XRLjNVT0 z-H8Fo=)DC0bHbC1K1lEfn8y}=l+a!^JkjV)L)&Exh(>Q4+Pj7)8og&|e>OaB{{v&- z3~R_4)}S-YL1&maLyAV*hCk2m40{`%XRv5wLNt2GU^sNJX!JWHxZN-2>jwWYU(7cR z{+3_Nw+)UWOQGaFga6*E789b;ONO@Hs~Hob5jJ-XRE`1B2s_^O>c@m=gw2P&Dl#D( zy<|9pZm$iwy*B9fRAc__Arrxg6M+7hx@Qj#f5X2)U}0Gsd5PvX1`vv#@*ndtgTIo0 z%&i80#(&Ib4Zh94&kF|swReW~n4#s*upr0zXPD0#ntz7*0?ln_Cl_f3}IU z$AsGvx=1Umy@kbp%CsM`_>WokIu^g4X;-uOTBaeq#Fg-?tA)+RwM@H;Ofa*Tvv@z# zE@tsdnD#>!xqxZ?Nl$>efDMsewi+eVJ?UjWL?H zC{h?KvI}|9Y>*`hRz6zxa8O9l3?PId!eFVBvrBnyCKJL?aiYAuj8#S|f|XVU7c@(z zrdp&`Xyu_YNr%dmt2w*uIe1;}A+t1%B(qdPLV=lhjvR3*_5VhaS70e)32qoX8H|c} zJ$!2lSPL8lYY>t(iclvo@Fi3wk}D!^L7j;pAKpGQq+6DBETmsz*h1W26BM#TFhUqO z17W{(+Z8k${9Y8U2k@iI|1L0+=q?~|84% z%7aR4(wztl1d-qXy$bMlT!Vt#M_^4fq;%M)=kI7!9BTg=_F6OIImDIoXNo(z{v84J zN;NOJ;Jh57S(xYpHeHAn$0G%4os40L48V5zdBkQ?BjLTuAEpKKRW%GJiT`&}yqCf9 z#+L6(e!aUc&#%u#{$x-e$d@!*}k}q!^HB{cneJSS`=Zz?DEcN7#3nePT z9iG_n8V@`LnB8Mx_)-Sr+}oIxHjc;iT^69ELI^R&@~o6eQ0Wl-D8L@s3KSvq27(p9 z=X+1l1bQ9ji6*(#@;Phk^UpZ}`Taq&K>obdvB=Z1%u6G0$mjFz`o)h}jXZC4BFQDG z_3Ui6jhL9L zBcW=SSMD7sk1tPsj684X2pAy0+zI4qsrJ(Uu-xLkj8N{6|F`Ada+a*`Yf&C3TEwy$ z`A0!dfc$cY8)dmmy>#0pt|L1E;TCFuzZfe+&DEB1{fK z($-*u8o1FcQ!7;Hh=b4)Kv&FpB4Sl&)nPUnMmJWCTdNf&@VzCVNPx>Xc$7p+L%25$ zF>1Bi8KfRCj2gU$GQNx-i|J?8;xokygVGPNXBatq6`{i^M$bSa};%O*T;&U?6R$iEHx4CL2KVN*w-9W)svmKE~(Tj$Gkhv#R!t@-Qg zB@gPf8rFK`Ki@zr1Mc(h+BKIO&Hcu=|7OnJZFc?5G(A zVTj-Js!?u~JZ~6J$!DJhbN_DG3&#m=6E4&S?XE!-;cu&R5#mB1CBq>W4LO93QW^`8 zcflVJP6_ouXy%AG7%~m5j45dDxC(*~``%HQUq4UQ)2n!Xzy16T`OiWB0{Qi%H_Q5o zdgW&fdkoKSB zxAvjm!AUFkTREq%cfpeR0)2Nqe=jJ^M(d@$=#A!QVB~~%*B9(Fv+Z+pI}7w%Ex@z2 zRd$jB9ial}^3bW83FR`^oS7=@IdvV{P^@EQ3BCgERDEgdAiz8ys5NyO-02KzA;gje z>~g1~#XAuevNNnzAII4TCj9Wb<9{|)e!Q7dzGtX!n{6M$C=-E0$Az_A>48wq8eu?c zGouP?>eX9-FRQCp864iD`>OjZ)qH=}r8|5Hxe6YGQDL0{fXFYH+6EZw7C5ny?zS9= zCUXSmqiEAH6i|Hk98~|%-YSYwVot)olu--L)}_czU$UYWP81!HUC}Tiu?nh z=RtmZ{VVcjTSp)T63ejfy47n3>kl94yY}Dz;IH~8BYf5M!@ugkSoo^fv-)-Lxe;IW zX9(WY^RbDq`hC-Q2j4w=4?x(npj&m&&FJnE%Sdj6Vz>YWX8MvDfp z8~?OiChwbT&wroek?#Uc1Nrwo5P4dT@Y4URAMxMI&|YM%{ms3|YOj1-a9_XwcoX?| zLAyYH`Tm8xH41eHqGfpboP(s^bY#BdutN@XcznA>nnlf4Z6P)bbX?$_8L9P5xLxJ_b8WN{`JUj0=)wA z%CB{g?g%UgtpU-pzDTz3{-{jveNy^S9eTQaj;;~;M-R?-C2?7s*jWub7VZcs6<0=f;e}(ZA zlZS}!0dkZn^of!YI7-gPmcr2z$-qP%;)RhKEUt;AYT) zDKQwAr?N?oHyA{$PT0bM^%PyNcpZV(E986Z9@7yRCwB!dL;lC0yFh+Bd=dGNKwp7q z+2rAIZ1eb%-3Q3`*SA%U!$ZfZ+Il|-bzO7M{1q#EXDnITi?_M=qn0dNB6#Y4wpchX zKMDgtJFwHPf#i6Ias#|aluAUOKBz6ovNq~f zti|bp)mM7oK}Wv+wj=*3XyVv>{rwa9)5moLo&?bn`LnFAT^`Q$LmOWa`=9xN+&{Et z;OzQu)Y-wkXAG}Wv5TVa-6>sR8-yq9yP8OTA{}BKa)jM!KaB9(=*-tL^*RRcdj&}T zKnjmRs_sNfL~spPsli^N2zF>{(?5lG$y#gF)t0js1NNB+Ds9>Tjfxj(g)XItl>_)% z-X4kS`cz{Y=1lit>7d&I$JAn8+)=}|rc6hz);K;)0MV#+1)ni&4d2x(T zbe^hAawEz#bB;Ey(PEEsa!y%1>O|)Ry!{rmAVg2bZ4tzjFF=#22M-kGovC!z%0#n{ zM=GC;-^ld9;kmLS(g`P8k%mSn0a}sHQg_Kp6KTZ0%JOJUy4I>mfJ&;}u$@?%!#PT; z(_9xtuBObPX815ZQ-p?N;K<;edmV$eL{X>npHaK4*D6sQIF^`Wff@l1Sbh$o(g8K2 z24UGjh+2YbgR-H?fn$q13J$#DQ4qBVf8=5n11JV@Z9uI61{%Q=V0J!O%v~qNfjbrq zdiLb$G@5rNn#R;PtyQxyiWT|thT(6c85PiFrIjNbSf69d1*B*ictdIsp9R({O4Lj; zW=CDe4zhtO!YG@9RU4~w0zOiun{9(P&T;*ud3mqdm78kCR)CAORwM|ynduGi)E z`Vq%t(I5GBvxVIz4gZf4LU`39P=4&RZ(#ovzG!Q$Ceb~7KkzZCsSW*s#m7D>oZWY_ zruUfhAv@Tr78)KvFkATSnpw5l9E^q>#C>+mMnJ)2@tI|*QQyEgoY9pg42$1KUk%m- zG0M=DSirw5KsRro>mZ#cX#~jygq%+-boq2K_-R=&g^cjYVcmvw9zow8_Y_5&ZjklY zGcnK4tU&$;pnj0wz8*&YRnSflEfGi7)0R@1?(oLJ^{>k9y|=GfeXEu%Uq+3q?_35H zwMW@(a+6_=%0@2J49FC^dY&4YOVWJR}V|u)HSR)&yw2MYIN;I-IxIe+7 z9X_U^U;;>iG0?z3w`^DwOQODs)d=gtZvg1|4hL-!0tfw<4bqwH_{0R96L63p_ zdQv-4kDyi%Eu%gCPVIY=KPd9P!)?|#)ziw}Rr#vg!rqf^C0WtdI>q`tG(W1k)~k%^ zYmC1sfkgyL!oF0d{{zCMiMfuD8A3d@BJ|`oyija#LXa8&^Mkxn&&HTGCLR%0BYRSv zz!xclQwYvX@(#QPt`?!6C(n*LwN)w6Yn1uqWzfo}Gu%q@X7Kzllqv*EFJp~Rm;-DQ z{zA~KgV5aVDx}~&p&>T)B=kiF{GduiOd*0$qewvHh5+@5MtvSZtNCUjf&O)}zK^&$ zj~BBOb@~D5BamO;AA9xu4=-Kyw5;d7=|gxb@Q$4d%u5A;kr2cRA1y7Ly!-tW{7X*k z2?UPZ7xwg^lR*Cc?neGq(EA`-9`f)6&-L(Vp7Fke9iE&X zb?I_4Z;ploSUkv7`RRr%weIpP7z#0=sI&L%I+Fw9;+M&_Hl%=*i@Fo2Cgtt zNe)GGA|SE~GzXiP1~ZNmj7nk=^}DEw8a!}gB9TTAyG(JBQy2xgMMb=#_|#l6kCvs& zt+E8DBppc|6RT7vyH)nQ?70ZuSyhj);g^EJ-ELDvrzA+3ikR!#(S@oPjC;LvUQK~TX zMV1&!bSQ}+Vn;Isu}j=pA{uv87ZPSLnnHv^f(tS+PLmg7G+v2g0cZ;_R-hA-U!0;9 zTY?LuVM&+rY_wQj3%09f3QFQ4np{+iwGtCCyN%$f)JscM6NYSXngaq@NhQn>-D7Ii zie!lm3sq<((NE)Crd0qzELf$R@r)_JjEaF#Q)I&1j(`*7wf!=haV-kFSxg@b7=Q*E z`&_MFNAUO&o`{Z)XVpwl@TDppje6-O#8v@=@^6FUGh~0V?U!;K&G~o(J+dF!{?Rv$uag%p6e9Vd zD|*FjN@s^%JS zeQ2+cwb1NW2vKVazXoWsuzqaBd@{6|{0!(cbJ$bnD+SQ{&y@T;N)T=1uZU*>E0zRe7=vZulQ9MZjvM^-7{K0Xe1=+YXj%>RD8MQsGg1V} zG+?*_)GIgRXzE1pp0yP6h#VAQl?{+z`se|=jrupCBuk;wkVs@v2VrwqffI#ks#=hN z@2p^%&`B5YuzNVYCtB{7^_1?;%Rv*6p8+}mlXXJs?^lyCuKm`#<08@h^*? zll%8R%uefFy5tn0nd~|m49=TOFgSnUfz257^gEcb3DGwTVW=Hpkvm{1?J+X9GUXP0 zEFn@&z&`-(e4}h?E`YsaXy!3E<>%DFd_1|>cgY59uwH%!bOY1<=9!S}CK_`Nfji-0 zPjGk!1aqvRuflrZZ1KGFHp_bI+E4QFPhszTs0QvQFJMxc#UIEdvt3b9Jzn<>* z>gk*1X&)#u)w6{GRWS^DlmUY19s6D-@C+0!>I`-DsCaG_&KF@`5B6`Eumk)BcE?a=&jvGM1Kfsi1u&`rtO(%$k(!b zxqD^3owtGTR=Yp`So@m^0fTMOE>P6?P$0?LI1XIYF`H~Uw-mwefana=FJ5_ zU<~T}ckGK<;4N@fA$_V+Kwnp}+JN!7oTg)o0bnYILUcrN49Df-%h=?Vd)xu}@8T%r zPX}E9^81h9As;!gBTxgP~&*nfz@h5C+N%2nz|3fraB zi}fh6-oQUX`QNd-1snRldXAMk*Lsfy&Q*X*^A!u8&9z&2d?WuQ!-NuPazo~K(BU-d z4dKxkHWZi)A`Zb#JXP**8p{1mVwV=0ycavwATr~z53>8`)8@MxRytA<& zz*WE>vcPMO!?^}gHoTwJ_sjNZ9+Yp7O~_9IO#%7s@kr!pS?Q&_j*#E+j+137e#9y_ zq96WXz1aMfE0<%!d6i%m`W`3MMHbWp?FHmI9{9Ne9BF-~Jqul)gRp|_iYHSaf@<#s zIxwIGZJN)hfKOYAuqzcFc1AbF(VO0@8+lg8w?qUh#7_r zWZt4_#{;q+A_wQ&_gv&p0xbvm^>7FBkApq{(Q=H31MBN0c6)r&`o5RM@5B53m8?-xp%b);2?gn)>aj6Bg{Yo{;LziLp1ImY4 zN|`=gD>g^*YO51wEVe4_iY6f>byS^=CR7AABg0&@TZE>dE&==q{n6Q&LXv+D`ST#u zTUnCW9K`+*lS!CJf;^12ik1w`T3N6>T^3S0BVgVN>}Y~65m^5#S?~R`FuyHoED*R8 z`Co%x1^NBTXUJ!JIs%O#S~m4~?Qb8MuJ-hfn=X;tTSnA7`gkLLt@G3l*7_!6JJ`+q zO_b+ddow_TBm`E=RhGNPQm(Q%K?gkuyofdo$mMGBIYRk(r`mFd>fWg;cc}bkS(n8$ zX$C9_)5t=uDmAKY08zmi%rx4mC)g~Nk1d!8QNZI;1wsJ{Ll{D=1j|TWK@_GFS(V&l z_E1B@vK@RO^!SP;E+;E1_pq$LC%t;1y?;XfW6+l%zulfOTh`lqUb@ShANS{d<<-E) zERyv%wB6EdS~HA9mVCQ+gBAGEIs`5I6Ih`yhAAfUE*zfbT|-;Tsj={#Ee?LEIA>cJz0VB>qk!9eIH7EnO} z#M*+|Wg#`;L0QQ0Ps(zw$NhYq@Bc#nY0z^Zzg#aMPs{JUbU4np_z^4LpKsN-`g)t2 z7tde0xOr$1r=QuoVET#`0y(CjYc^sPgq8+Wn1w-m$6;?xjG@NTXyOFl18`Jjs8&hOU?|BzU_3HnPYOmD8lr0@1FcWV`rm@``0e9uMc<^=#x+pdwT$wH8s+ zyS(!D9g#2Z70CYx^b?R@-dm8Tv=#0 zp~Q!H?WF)%BeLXZF`AgrQ4u5u1jYryykLB&D-i%zXT6qFV5BG1V8(0ydy zK5a4bCxe!O{O39qd0I~Q(#4O;=kmv4@gr9Lcs%su9LzsYm1_B-K&U97;vW_(awRU& z>XqkJ+^5^S=qJek3&f7fmq$gO7S~I6&6DH)@OmD(Jbv{ydxa@z9o=HKq8T3-P>-Xg z3zdqNq>K!h6h@1cOTSmXGjU(vUT8h?H-T;i`So=h^0eIPrQ09--`1D-+@>x^yudTb zA}ALKV2M`0QKh zv)_n11&Lu|-@ObIuv3DE6Xx*B5Ia3TMD#x=>$mopeEAPX{xHyyAiw-aBTvghFWp=H ze)xjdF7owzblb5*zxF{7QP6WJRq^tGx}2(bB4%x9B!+ST{j1VCU``I)L0QgixW8Y| zyOIA2q#T+lHxgYtrK&j*8^WZS` zd&u7edKyH_G|!HInx}XD@+J>wKP=nL;#H?C&5z6TSFKucDBc7OYW)nD`V{8`kxj5Z zM{evZHZG7Gb4l+0(5|`KaMl{;)rPv(Sa`J&U29lZ8_jEtQCAxsYYj!L<5wH)YmJ{V zk(36mCtdDN)p<`fcdF`}YA!O>WKXKmCsZ@dE@sV_KwV)W>=gxu!M!>zW3ZU(fJagM}{53Iq@iT_AO6Aq0x|8%I z6jDc1>R@6;2p0z;FMKp8#Wo>&L(nx^@p~umYoWQJb6{vgd&dsE*c~s*_j=~>`S*Gi z^0$HR1kv||Mg0}>v^?dd*Y0J!yu`D^+Vj0O=Z)RhvvZ|m)wkD?dsS#1it`uyE*?mi z!JcS^@*Pazi`qK~#zQB9*$Pp4%b=jk;=ydCfx8ePuoG*9IP+AZqI{9<@_BmZ<@INa zkv|Xg1ju_HZU6ZlfmNUfK(yp0%l5cqv`n2BdaiGv8!X#p|QE|6{wQ;vmu-VY=Hp({}sk@EvW`o~t zd}p&!b(f)SGGccdxy`7HozRtr^vE_C{IdHqkqesu$$oE{2;fzfw|2IKwX=uutu&Q0 z_9_K1F^)8@$9%rc&2@13WEK!2jIf1g{tB`hOc;=Te8Q9DIT-Sb4 zTlHLl_Hse&$x!a;kf{F<)bRTQPdUh8=A2^Vfw79{T`C~5;XRasNni{xJvee-SXoDu ztWNDV59MuI6%n|MMvZs@=4i_ksd%^mrs?<+X2Mw|iNRDes_-^r@mzuTx}kP~TVRut zv4c?4lAV{PHz7sja~4B*BQh<~ED?Uhal;jmD`0mSOxj@>>>%P0*j?C5q1~%N-vDRc zE3$p`ose%I*CD?N^gkfKee^Eq2wVkv2}H}h8)Q4!b&*V;>GIk~zuca8>6>5EJ`PT18^;8DbF*uja@0Db?2TJO{Mj2n7@<4Su~Phs)&@eu8 zO`VfotdIo5sa(hj$nCmkmUI(=M+~Tp!B)NH&d1B?HX&dKA0@ z*Tc*)GG>;QYZXRas84ntXV5Afwab-a$Xg-SGXMQS`DKIh z0571<<`W~Z2`wR9A8Iff0ikqIhnCW>I)2q0#O2d;HG?~3 zikxU}(Ao6649Tf)QElpLet1UggjTy)D|Kn>wL$JF0@>Aq0uUx636oI zh`GT^L`thM_O~mo1D*2V{-GLo|41Y##;g|jl)$z~xQ7ss*x?A3NqT=`n`k@C65{v# zc5KM+aR7?b`T5_69-m^h^oDxglJ&O}_0sB9!ssO(f!UxXAiw^$ApbJxe?YY4hS`7i z?3DAh^F06Rq4n3hY~jiymaJMlbWEVgp{;0bmOeSb!-? z5$*$?ft@G54ywn#cVzu9J}F=Sn~~oNdL87~|I(A8{{X!PqNURFXZ!gI`JK+YS;{ee zhs*acw00NvE?B;>7d5`+HyGWt7HTZE`7JT=Gc!SpPAKcYNyyty#7z&s>0 z8<6SM6Qko%!TacT0;cI2?~b%vU1Ph)S(ACNs~f@&yh#KAe+veF{xoM*m@!+0iSoI| zAGy5}N|Okm3ul`MpM)sI5&Tda4f08$pqhhEX%WSG9S25#5nkk44$I%^X0h=ivlCW5 z!mFG5cu)!y!tCWl<$Z3qTc1IB&;l;PWTWwU!Y~Z_X3Pc}i(q@B7=4I%AA#yn2}aeN zu_%_t7^T9?cR~{3?V>YvJJjw5Lq}z7eWC-%d3Lg$h7ysEm}Hv~H<$%G3LXI4C3Xtd z_z`r2wf>%1DvYs9Guff^IS2YaknL&9()>8^8uEVzeFXByf#fN&9o2ZLFBfllN%9HQ z#%S?z{R1QNlZ$)LoF6u5ZJ8dKmG+GNK{+mL8F}1WxpKhOb?7%E`mcd6 zW($8p7o$U|Sl2&-DZ$(u4{H{9rx}t_0nnN&H*vAf)S<+GFfzcUkrH z2Ch@Vu9A_uN>+({3_DUkTI<5ZV-v0bd{YFT!Q?c=BY4YaRm?`h3RZV$J|C)Yrz}W3 zErK-a3al+8cY7GpO87mnkmmjXBRB>mnP%V$hki+G+{h3qzs_Kr^_IWwo@D3gP(yXNGFT&jPHaf~GCkQOxNBR)8D=#okJ4@CGnv&Q}_sP|)?L z4Hh}n;HoebQu%>J>{F%m6D9d~rR)*C_9?u^2K7iSxs^|Pifj7{d4}HaxA+ArZ-C8k z1G|%{9WYF5U?!9mIi6IeaKT}0;ZR>7?CtxEy~)4P5$JM||9)>oo|fCa^gq+@EF_!BJa>w&X-@^u-~X>Dcy|3=K2Pn6 z{PWB}{ut1FkpDc(kf-H)UizOsPw&#+Q+k)J`i3X^^#8&WX#BM#Z?I0F$rbWa*l$-r z`b_e+Aod1F4?adXvcfV6Sj8%YH}p?{e!>^51}WAg!bZa)c+mI*$s@J_k+Q#83abBZIWXhKtFDPD36Xwfs)TO(sJ;cfQaZN%mL(2 z1d5Yx;H~Ix2AY^Lc+-dl<}@j-t{Z}b6|5;{m^Ld7Mez2!qNCz(M$|R3FXC(sqR zM7*LiPtT8k{m9=0+6eOdlgE&!ALMwBIlSpJKc_pQXpAIB+&2>Uiadq8@}z?J*8^#s_(Pe1Vp`jFpLsnT~oZ^Hfk# zg}gW8JcaQdYGYo992~#Ip0W93pkk80<&SE|uf<@ey|cY@Y?v2b1c{ekKr31vSu*L6 zWo3?(V|WW_<_wNE<4S7{U^3m-WCbL2o1ulazhypxBDDQj?=W0#9|JC2h%flZapZYe& zACTYAt@sZ7Exy|kI15CJ^DQX{AGyCAfBF^4|EUkj{ecntxjov!|HFzxWrVepjaRR?GXhGK}wr(Vyhj@Raeu49P{SnwcV zNeE}0$`CbehmW48oTeoc^OWOfss|sV9KF8_LC-n2ARl=c>k4WOxeb=_oTSR7)b-MXaUNNj zBGj4Mt8}Q-aV(@aI>yOH#)kK}Gmey3prcZ_668T~ML+fL5Rc^CV?sImAx7~9Prxk0 zF0O86N&{wU6=0a{#`ms`L-g|dRC6msg!`zWm~F;x&W|DIWMP#pM?95HhgX3EW{D&= ziee5&%rH-fTruAOJ+r1|$@4(#LePg8a9Syrvt>u{iwQ(m!*apcQ)o)+4Is_q;+O}6 zCL*fG;46fvAI~8+m%V32?O{J+^5)&gTNGlv&RLRw{ID%#tm*X0RnWBzi z+qu$cE?rsxyxdUE@lw}I55~17c*keshNBi17mdeuhnFwLxp8?cH1|a%Mln6bzg2pa zNZymqPvPDXZ`)7(vcwB>d4RLfte1?P<}X zxXxI%a{8(049mBfHyF>GY@2ybLL_a^10C*5`yHcratSLg2010~sm1Lj_h`ivv6U!E z6`LTZWIx14_mB9wR@?;tU9BWq+*YzOuv2O0Q2;N1IpKAk`|w^~OLDbZ$g9AMCl`(F zZ81zJE5L%88KwcuhCr_nEeZHEK+_5;fUk%kbbE@k|p%MFIS<@Oi5d6Fv6XY`-gD(t+~UtWntEiNjLk z%(1B%&h&Pk{JZxgb$dR^CoKDW@ClWe(Da_g(IuEu|ar_7(ZtQ zlvYtV$y2oBD#Q}j^-&mi3Nbt`g4VbKP#3P+tsD*R0da*Q?a;0!I0m_9J(6ln?wiQK z|2C1W=gox~#2Sj098#>8z}D9-0PMFKb#YHS*Xf2Moyq}tg-Py~9+OOj2u9#IptqL6 zfonF*?xOg*bhbl^^7GZWI|qZ8(h z*C&L-W}RD~tcy*s!YXoFojsv5oQgnD;GOJ9RzLn$rq^nbuC_^dz-JYVMSo-JKFZw; z1`3lIQxj;e3?ubtm_ajk!(Wki!yBhtNrZpR zBKyIZa$L6 zZJ3`!xoy*B@wieMtS}2)>lhX2r|o5v#SmF-RLNs3ln)FED>OsUgjZ_{vkB#3ngPDX zoEk^zl(qyTOaryiXwVwX2Dz_OK4Lx-zTr%3KAeJLc?L z(MLvt1rb$%RAXf8&&hGJ|GbVsj~M9!fnOuP8`N=rew>{0!;ZjA^&D)OOqVvzf`1t+BLfz?}#vURk&h!5uPFJV?an3G!j4Te=cs2p@;;2C`q3xS-MqnnuB!v4F4?!Q?#lbQMWTvhX!YA-$cv7yI2sMqbW z$BdlKw<=rN<4VJ0O7w9>c}!`0NI8XWwU6;l5npZ+UmhBi?=gA# z?Sqd*xp?^vgZHe}%P$_h-LGRRBNIxBA)y8xKA>Vu#Az?}v+bw|+7~PcwP9Z~8f-)m z&GvZ*4;&EzHWP$(P!_p*tlKfC+jKzYVDq3T#E@7|!>s9tI0wz>ac6}NEUr1)nybv6 z2oK(=_4|wUwA=yp2X>jE!%&`YbBw&*1PRlvU%?QhJ`K;lv~{v`1q;@Nu3+v(9Ioc! zhDa1ce_Qwx7OHm*r5fhNKk zm>931Xe8wnm~EP536oUE6x>^m<1Hzj2 z-8P6A|_T`81pqT)kcrk<4 zuoSQaB=Ai@jBy8V7h%z%`paTyDh`i{VJk6(C*Xs6OtG6RPC#!c50_5W2<)a*L-eBY zjFfg!g}^&Wy+<_K+Z$3ywL+>wG;E_0o*saDhLSIV?^XnSvn?nAi%A?LX1}XR)?@cY zd40wy$bS!XHps8XHOSL)i^o7ERu4|#_!7hc&RSi$vf+18n|bq{&)}l3_Tab zmxW76O*4P#QW&TW?ZHo(e{wIx7a;eqpzeCLdqemuhpl#Jf8|i~xh@j;i!liw>~#QB z8~E$j&tfXfI+mzoAQ0>7wTv%S0jhMU+6(5aMDOKQSkK3tf|oZN8>)f=dcPeW{^Nk7 z358oE2zU~68JZm!K}0*j3?Dk6T26Z=mQKi8=5pRyQJ%G&yIIhJk+Ew<%)2(G zsxpnFkA9BvMeI*5bpiqhMttigKT(4<8NTK{sau(h&Qpc)Ns9Ubs6x#DhrKtCv#Pk( zhELU=hclnk=k$Df9_emq=w_5=Qf6AgF%BStpa@(*MPrf<8bwqwVnk; zOSt!g0Cz&LV>I?U!g5F(4l@+^5aV8i0HqQApnpewpx58^bFamN5hv`r2yj660?s^~ zHu6iMD(>@K=(j^X?}CDnSek_z>U(Dn^(P>X60}5r*JDsS(Dksmo>SoDr=XIMYIqmX zEPMWSkkv!qm4L0Cs9S1>?JctXzH~*lKeDyJKLX`|{Qg*vJZl1>GJf<;v#l~ zkMq{Odif0;&~AGyrKI*@#Q%`7eQfB5;1HkLH}k+Yvz{+RWn|Pm*oJ~%G3oz}b*z!B z7>l-fh)GfotSjMFM%|UPYG6^|*svtUnk-Dc@K>k?t0n@6iD*7PJgMqCTIKt8;XP)1 zh5iWn__~(BB#_@+ z`I#ZKo;S;*?|+G9z0d6ZN@{%iW0txON~2Uc$WEKk96ilw44fcTqJ!a&*W+MJV7ED3 z9}TXxz-$7O(u#6)*lLGPci2{QsLlpC`;9sL*jA+_F+^#}$CAAEKSnn;jzoLeXDELI z&MhYUordzMVc%_X1p}g^ zd`wIX>Wy-Rz!dL?W+h~AEjv3F+{jh~ znm+%SX4rUE5$*$snv#N%4i+{TMI;FW;}l91AarT4)WO6m5{f4idKh+I=(tiup>t)> z84LD6PmdV!c@XR9dS5uI4hG(&;*mM{L7RsGcj7Ou(aj|H5CjTwg&uMZ&iHao5_(UP zYv{!*Ad4OHUl0m1tB@+XZKGwsF|W$PYTDC0*zkdd^d(@wD0WsX54C2u-msh>nFW+N5^Jnmr9^+gMrutFO+k z1O5v6M?g=5{Q7?b`A_M1gRK9y2c&!yc}S)mo}3Z6T^`Tw*RHEa{mb=0pI?t%a+J6;RftVw+ErI7i)f;6!-0`}Ut0pdyc5QFH^Md&6#F_GZ=FERd-kK$xVtsquqoL=8SS1gA zE%KPfR70iPv=1U%HMUJVc`H^RA*d^tSk7uIeTk*5wvZ36wsJ19;;XG;msqu{tr*Pq zzl1*4KF`Xt>#?A41G~gh#hti%q=f)_xZ{LNt(rAf?xj|Ijip^`DQm1o+>V^F#u^(~ z3(K{`VSn%Pgd5CN^01PG+Dq|iaE!HJCaFy_d2pgOMjNS(VGna>H%~vzwcT8Kn1^@s zoQFAJuB5+xn3iCe{sKUU> zRPAKtB--+H>c^^984ch11JmEo;35eo7xa1 zs6_ym69!I8DZARVHkh!Y%hSfdy#{yU(K-zMj2r;nVF+sGu`yR$s=%44-C%K^lOxY- z>2#^0!5H>Iv*0x|kF!6Rp+A}-K1F3ewrj4jbAN2dud%fs+sZXICWh~rd4Dvub+&O8 z7XDx%TVfPqvKjQEK!t02Y1fQpq4|>c^Y;QAV)7mH=;Ae zZiq*NDZL!p(vXu6`5X&$h8}5Ao$xvO2#pG4Vmv8BT1TS^Bu4_@C*35m8<{6Lk|bp! zIj)d%fxlqm>aBPJ?DJTGevHVI$rFsh_=r*$o{%|wl{zB_*uZi zP21crKl5}}W9GxUQFdW;P<6e!Rb|`MH<(DClSjYg;;2sShi=7!>1X!aCVP_c5kkS- zz+dEnP0lDD$vcj#IZ>D`>E)JvzS<1G&KQgFHXc`-bXQ*k>{vI?uoMOQOj^BA4ZChu zC}zCCzBHa>pBW=QH4>kZq}A|*F_|Nz1Jmkf!B(3YaTun;T`v?xMGfNDawtRUpp37^ zXoL~Tn&pm#bTgL6o%xZI`4BAU4uMZGiaO*4DW(psDYN69I{Maq_xqE0Yup3fOy9{yYNDaqOBVE@feWb zZ$i8j(O?q5@y3J=0~MO+e9XEOBZY}EwVjNa2Id&r5EQngvkl^jmGldwcQF&dq%}cN zP~50iCP2(FjnOa#DYFfrM?e9sZDwNR+dNaYla8Nc?SHl){~ORlAite-Ay3N=WCv;bS>OMH+YqgdY;$VI3Q+fD_m#Nq&ra%9O(B3A((hYlz1 z^8F(B&GN?o>$2;k_aMI;^f<_`hgXoN?Z3VB>*^u%uhfG-`e$q6(%v<(g9mOAHF3lN zHBtDl)tWMRvp8@MApbb%_aMI>5;s6b2OSBbt?5zO{!hG0%0b6@{PQ24 zp0e|@uaScwkDnz%1z`bupIpFRDp#&M6bOMA>w!nzLC`-AVStK;*>&h6$M~mHVJ_eW z&=z4rSfrlIOA+XaLd+ELNEAMNNs33}rfrs!UnF^+%hCUHU_|)~S}neY0b%m|V4mu_ z%foqaoX7>A!$km?uhaBYy!I1bCj6T4aERMw_>T}?A z-FG__riJtf39L6G*bTgzVYryWP}}#30QshXIciF(Ws-fb(=VuS7O;(E9;u^n?3YJ_ zItuduxMW6bCz&UJe<%0dDZVw~vF`TU*$J|E=(_n27VuZUYeN*{9G@I4tF)+f#$n;lQe3 ziJrdMc5bybJ*=JBw#Z8l?R^M;TLMW?9>{->D&%Qv@zO(kk7aXDo3mn0uQ$1}*C$!c1LNhJ9G(3na}N9@ z#K!0|^!*$FmzM9b4dwIS<4NRS0lg0L-{XDcY5UYm5A8juef4^a_H~2>;HOro zHoyWw2S7f6WJstj(vpqPZDe9vp%yB@5Yq}noe=B{5GX8V1CmqgLeayzl7=`o&7M+F>g+C>f6GIi|8Z0_k(q#Fa_xAf;39n)4tU0G2VA8j6`J}}-51wA!sq8QxQdp-lUhLZ*!qD@DeZAr& z+gl0#X`&0?!Ml86^O#bFVd zm4J;V0|Bv^RrC3z^Q8f?6yDHjIOF6(FEAK$lJDKLCHvmfkv|f2 zG{}GNCTs;(s}`X80^EXsp;wOk@qB+A z_yGB~+gkz?Kz=!1LH;e!=OEhp;<056*$;pBx-4Jsax8{gbn;B0pznQQ;qu8dg_SH& z>BR#4dbS4EC*7!FC-un7Z#1gMndTn(K_V~5mzaMZ>v_&+T3~ny^qz?8P^1^a=5YWB z@f_S?%F4(Ms{K>IicH1wNq8-VR=iH-w*n6gsdl?+Z&9^7RV)Bqr@AA;CP2bQDGg>U zJX&c$6k4#s1e|q%fRL+YGLUh@WjK$g^R$(U=7lW_cRS)(n}FOPttM0-UKl^$m|-+h zD?zi_Aq+6?hciE0A}|%gkO&d+1o_pddTL12XbRQE*pqyS4h9{P29%x|N)e1N!fGk3 z+0&qM ztR<6Y&X_(8(NP!7StN!`pd|f|gh#rI?IEzF%pR1m!)e-?MM>IaT+DVF!Ci*2(}?df zter;vE+cQJkr4UzU52yMsMuvBcN&>p=w6?}H7I1V8@>i5DOJx-*d{nd>h=JXq%wFi9Sju-L9o>ILt~{$BlaX*bw@z8rts`o&p0gWSin zT&Q@j@}&8?!uBdRagqF!iDZ=`l4W9F_c{jL4(CGS3d>w;edh{m^jhl+zQvewyK%jC zg=MU@iUXT@qZ%t1fgtrseY9Q0ts<*9S(^__^J1Mn&0|l&;8J(K->(mrP#eOu5q8$O?ln zIMH%j`MK4Rsx}a;a-$mH)-`*vrQO4f9b5=|%V}iC+VxZ{+(JL0uHeVQHV0$-g^ZuV zPEao}rr8;mZ$#9mm|kZscUznWI}?T6pq7T(Fx(f@kdKJVBZ3n#o`r+s#U3#U0C=fD zJ$(}#N|o>EqqQsHzAo61&yI8o$_TehNisjxo?=~3+P7jVRzBA6Tm*6gn=WPI8Q-m1C6XrAQ&l79c7m7Cg*a1KkqOiQ>mJz|xtaWZZ@f zqd|eKCG30%@}gG&_v3uop8|Jf`%?k(wV+0jKaP$C+R5I-tWrycnsz9<$-sQ z{|K}nCPy~>ZptHi~tJjnuY;8p5@(5k7$ zYC<~E#^GtuEL2EB;~=#S3HV}oLKVut?E+c;^(fa+QPY9IFOdH)(9vOzwHOIzCT7iroH-(+zY&aP&3GHFRvg!Al+viHTWU+4rR6K3qt7+Z{r+>Ts@LTa4!0joohGA6ki9uMXrPmA#=izpm%-qRMcU z%ByR`bt9q1M%oF(E8RQ z1>h@#4wPZm@9Jy-pk`Vu;r?gCa|SGJF0RgYT-ODPh%V3Jy6$*+{vaHa?MA*7CmLZb zsUTboO-rr-5EnxQ39+&ea}!!MYes|{r=v35Q-+ix=9ZzBdi;&ZBRC-<>PEc3_3p;s>%Gs2zt5xJ z%KoOv*TNkQrUV!dicxC%l?p07(n`W~>UE{L&)-KStM0s5w%6P4%eL3u$iD)59ptyy z_mQXVQ!hO<{E;)3W3KZx=p(C~Zv!xQ-zD;WR{lEsJ{yp~9kdnXzt48$X?xO35AA(K z^rT+zMTKt*@KL?!DmEd$45Bj;BL*BNKNqsPl?|;((Ge-MqSb)T zA#a1(O&o}WWG@fDLEJ6@FM!*PB`0!%%q|B-Z3AYPi138veZ+eexT@%5Fk(ei0B4G< zy4jb>dh2)~J8s{E{1(tJL4G^Z!DC=Ebd7FMC+pUA|d_3}JgDwU6<-G&> zhd@t(Xj}22EU%Bt`qDd|-fx>6M|zJNJW|jtWi2wpG zfzoXnob;k*iQ$@~s67BsZ!~WNbcCxMK`h_IoI(e~C9G6@e1$v)$Z&lCDhFs27|dac z5y2HJ2|(6S-Tk8N3i*8(JSgkyCe+34$Ug=83&`&mgSNK>rh}G(Xlu{Ndg=O9*4zD6 zFNpKwKbPk>e{H{*C%gmt`VI7~+3C=%q0^)~*(M2{J@g^QI@uDj|Ghkw|B$HH9|7dA zbS7xPbq0k6^XoS+umkm*KXer3=2dj|38uSwoZB2RJclF|A zn4bLf_5GG2=fGf=K3E4EP9QeNLFB&JIk9X+c~Rg4R9qpU^IXqHT*neZn@J~N&X&OF z4GbFSBB9bOl2QZ!RUk1)d5D(J!(irNdb`={<$FbTz`j6~I1m^?c~CpZf3H)KKO1xb zh_(~gNj~o5(iC{_HTwhEeh=Qiz4!9jxO~6k>HUru?{^N~uRO2@wxk2m`>?M5{Sn{G z6O$xFS1H4)GY}*Z?iLOOh$@3OESGOcA~4yc!a!Uo-bg|eZwj?bEc+eXu9WX<#$|qpG-G-@fC*7@a7!{!2$DMv!-Fu5{gGU zX7OoqGUZ>u`(s)9kNitomtL)iWRlolE6-uA+F!B0*y-dY;nLNtWO(UVzhkxt#%r=9l?89hxN>sk@Bx}KYPIN;H}RGmxqCfasT-70 z8^oz=c*~EuyOziEiV9K9HBwE>pW<-sV#UDrMgid0zgBc4K~*$|cI z2GYj?4j;6mj1OmHRdigf1*7p6W+H2~009~+73Fx8Df%!BT0J&PQY!QbIFd#mDW0pV zO0E)w7ncJi5P-H=9Ht(a4Zti!^lS8V6N?padgBUuwQpUYBoFvry}Xi`H(b2Qd>>KR z@f&71Uvc#^mhbTkatP@AS2TqpsOmm{h1Muly~4C(-;ZUxI&NoHzPkwd%RuWuem~lX zJZ+o3v~N5uaS^+(=MUrO%?IYiX?{B*aVXw44Drh@c4h^h11}I!QVM})mC(f4ZV{{{ zbO<=Wcyo={4|d6ZkPidG8ssN{W`O+iUV{7<(A^-~_C4?Mv;UImc(31249fBS;QhXP zJm1T%R9~mqlVP#1^Y_HucJq>G>7zXGf3VzDVvZog=Ln59N5Dvkh6D8;9=#XyF%1iq zRhR(+hfS%mtK*Siy;Uy2@LWi z#lg!$$UNi(0u)kA`npFI8Z$8PL#BfkEQIe3zh8(2WZ;f3k1$_YxFaWiYczRyP~AeW z)(l7-@L-mfJZIk~SCF^xzb8#BS<- zdH&$_+&3=$W_GpmGZLS^EA~=+s+Qu@U)8`iEb*0?RL7%5ZP#IZ%vUF25!zKKP%O;1 z2^s-)24Tpl!CG;RtmmJ=5E@aMa!l2T0-??Vj6*5U2}fg@=*-xuRMRCGiev@%8KylU zlaK z^_Ic$rKsOekS}}$F`7X>KR@@;mcTwx`)_6aUS22LtNE(bi?{t)`fqlgDgDAazLuYl zTeM^`jn428*w2NBz+P7*E5-gLCX(b_0GTzWq8~_&F;{ zl#Z`(D(~hM>se*6B3!9dxS$eHq%w5i-{#=d<2>+JWs>0Wu^Y%mie1l0__|7I88{7M z?`z7iR~2_Jz`4@sEm_Y{9^K4;#O!9m9_|o-b*FL|p9bky_A(`LFI+X^y8Vpe zJgY=)Y88NeHnBd_yG2+zk0^OScPrx+YVK|&_%P5BG5g=GC=bJ*004)o@|dFh7M6Yp zVSwD@u(m^U+OE21vva7l_bV;OQfXJI!+xl`n^bqU3cxM8^0d+ps15qPTtEm@3nVnT zW{mQ9fHKI*p>{Y(U5@EiE2|Om<1oY3E8s0q2n4Jq&wDjBAqI~hz=aeRH0P&_XbCun zA6phJPnP9Wsuj`dL{+dl&C6=OSDy#28E=d`l5b4ZOQv~qB23cuW321iCD;mu5K&fY2?xb z{4Cc9r@`Yao=>F1vje50=@7VHAqAAC0Kg&6ooM${ROI0@f@h&4WAv1xasp5K9`ybs z+{22TN(SEH#*DH^rCX7U`UzHR`KEI;mQDJ;s~Eixd{_KR5+GG5C*(bo)hNGUp@cQq z6ZyJsk^EubW7%<8dAuc%05yYr{(Bwr&w>5{qHXCKDc3zVMe>6J4@Y~mrw{GTf2Yqo z7n}fq^6#tb2vGjdoS@_{cAlaxerCz!(l=-dTB?+kgMy__iB{SkxDQI^!}#nsd-lp# z_!&C;n{pU=dhSs2lqz!yPcs)df(k5*6hr&9(#P9#o1)x>sSUh6?@*L?l;D2F`9#s) zR|W|8QkbTbHW|j6T8>#lJ)(*SgDqyMk&eKQKU$S2;kn6ZI-NQ!lC(o2e0vPbaKFP! zH!yt2Y5PnVk~rEMOur7jPA`Y{E{Mpjn$k`W2BU@^M7FOS{iK7ouaSU@L(7JCFlwa{ z*F^e&!~R4k?Vu;I>4rt%bBD<`1Wl)JN*fcVw4zL1x5@9>`Gn;6oA9k(NB%v~K9K)C zzd)Wg>q(iu^j`n^llFe&X!V*ki*K81UrW(6!-)S0DVzoVsMcb1!@7q*mz@NC!!S7w zL(}dxF{P=9oSt;MVFuQ3k?*k@<;#eYV*La8`$2Dk{P#HLcaRl8AA)F0m& zw0Zu^k;lGHE?6wzqm$jBJVev}w~Zk7DeKVgWFU=to5mAS{53&E+{z(!|1UtSY*X>B$gz@>=m2Xg;-X3XtSr zX^wr#Fzb*?hK;anr*#w%0hv=uB>av!##n`yOZi8m2*#pGhpZ%+m>P_R5Dx{;Fg_D3 zf+S->o@Zk|W}70{nRwDp~5GE>| z>8-vL@G)Yd)9ICWAIi}rN)!mh_P}-mGzjFEcQNu;gKh`W)-^)*r+r?$x^15R^8Giz zPQNjpFxsiWsrK367=LCnsF&51999}G$&_j(=Yl4nH|^GdM|&mIW6anF=kxsaN_d?T zVUhKU_Fw2-MOdfL=hpqI_G>iF5EPEEYNK}l8^Zo9A=hTWD_cg)4qF*FkB49_U4ddlSj>P)pNlp(!Ed@bhWJ~6ab{ov0ADUFBHFrY!D#_|@LTN39zZ;Y z>Z56^YwZuL1cM&~T9dK4X!mZHAY& z70PlSEbeV@xuEAbBIds^Y@8<=a|b)=2Q*b*8MpzCpR=f~7OF5QMq5r;;y{iW2sVII zwkDMED93uQ+?^UNeGp#J_5mMqa;FB`)?E^7{P)hfpIW`&AG@lvdzzG#bqi?@^T$AtVHKKosZ_ zHlls%_{FH|7$F`u;|Om-M*QS`gk@Vh2UblOIl=%M_9TE@s9kfBFC!%Zq+f!Bz(`=* z!H`Qc;Y2bQJyxtSkTN;Xyq*}xUxmUK|$9|vXYyXY>KR_RY{Pr7o zPJaKOm##1Bzx^)#``7U`(SDCuwB%HD$@tQlOQ`iO4%}iC!m3L&*!Y31m;9m7dJVtz zqWya1UXAkj{P;%X{|odi$Sb$@5%LAkw*=}yv~^u6%f0lMGF|D}k2e`o9_r}V?nAU= zugqBXc!CSb=XkNN@b}bww|A>g2Z&aC3k%!{+oTeGAeyPgTfbB$qrKg34A^40cN){J zN~2PWAE!Y8N%-p*A;4#bU9%o0`gv$;g2*CfJHw>2Q5gUc1rPSzr_ylCO+c9mb*6_Y zL2(nM-zWqee~k&xgqji|_S_g;k4eQ1=%0uY!{ibm3=p;Od~Dn9lkMRp)K{B01K&~P z!!KZ*1NrUYJmjwgZ2{4?`=#D;@jky^kCXM>n=h>JoUT)Q*=ni7D|($YdG%snA@;?u zqe!crvwZjd+znRU)t0uwns~Jp+F+GkZ53{?-USkW1E%(hK72kb*XQTXvv}!g+B`HD z^{@${!^Xn*Z|(1T?bWkS+IxvSZd=EI2Q z@DcIqYNHsQD>6dG(J(@aLPuiq!P-9=L=ck?RSb55dALAVX$~jh@*M>pU@VqzWUR5+ zPh?5@NF6%gLEh?7e3Ax$|I*x%pjF0VF%{|%RDBy5X9Z%9wLmGDuwf*kQ0Sz%Ua8#& zp%_t^a0+-mK@^%45!s#+7Sm6PIYAiR5_zRs8EeP2dH9-5JLGrVhwsxSz7XbwFJt}> z$_4rTq7Hf5hI{E-p8w&$w%)#C3>@10<<+Ij5fr=vLBUr$53;~|UIW*DR5mErsFW>s zEQD49Huc;R2-&9&Lqj#D)*{dZ^z2@_Z$o+7M9BhyUC2KVdIjW{`~M(MoA!!Km%i1z zKYM?AkoANW0!hIy`0Vo_W@SKWkO4Q*)y``ya4WA-n>f5&!OOwV5xxs!lr&l#i%<=5 zbTJKYC@hy~-CScsFlEvd@)`l(en{5;Qk1XFE6nA{Uk|zwLSnpuB*q3%NW8}9EbtP(175?X=fEW*AI}V?Q$<&^n@(G z*(aVy|LZ*~CeE5Rb=+CP1>B`S9s zeyrUk-n>(m_hXc!O_V4Q$a$?LPy=cJ`Q<$fdD^CU>3GkMqi;WmcLwQR+fk;5B|gZR$@faJy22aq|?j1ff?Df}NQ1QixOCt*97s8);0^ z3iV;y*6)(#zaQoD<=)>TzYp{o$S?nKf50~YoeQFEgEzjV-;nkGmN)NR@r;y%dzT;n z5%X4d7aq2vf0rPgYrC;JVK^EhlhM`Ac14V2Xj(fEy2<4Q8ARiCO4C}(1Xh);=Rr?f zr)J<{=mL*30~pi1%Xs1C^j;3I`-(M)!8Rb-^o$)3t3yq37IyA73mWNy0%&Hl z1uMjaRp%(>`jJ`+Q0X|kT>-8Yej1kxu=*NgHL$D?X{VY1ZGqQcLdn=R^a?N%42}is zQ6N`@0TYu0sF#!oTDJ5NS)b+~v+bb}`3$HWM7ws_q2H#CPVNmfQ$e$S>W}VNNI)KCQ@63(LfEf z6edcB<&a3ek!OrmMOg zBfkK&8svY^f710gS^}qlXj|?1+qmQ9eB?1tj=tkgZ@%5HzYU!2gt}frKUd!!inAL3xJl>GMdo|50MSkI%yf!EaGz|BZRB27vojNL}^3R>hk2D6w# zEJcC4&kA8}TZO zzQ&YSS;M=mX=X&r$ph9Fg)wM^3j7U*6}W-02&oZpK%@bUAsAXFJXSAqBdo~@s!eW# z)6aDTFv~cVv5>%ett*okaY3&kx+gzA~#fMwqOI^@V8TEWe0N>k+-jpA};lErIc)Kj2>}hR%8#I!B73^Lie5 zRIA}r;Oj~gYt7AI=^PzaDT$1v&rt%v7Si^)2uzz&M@lJ;WPxH#fZ%&148YKvvT2J z8%-juY~{jgrH2GMY8J@Fp*C<<0Hw4rb)TVPf=x_Tzo za&vGd4z+U#edr`;BNVt?0o)&^RUyE{!EsA1#PM`7KDIwEzr)HuXTQTbHa^ z{S9@*{Dz{lRKSF97PE4++TnXNpM95&O`GqVMhz!*7w0uIfVV zf$OoXP653MhmZ3jXtW%xadPu6_9}+3*VLj{)#z)g@~T?*9IaC36j^WwlT#iz!(e`3 zB69H@y$I|rm)BTLZVkX`DS8|J!!J)w2nPulq?b=QXOk2j!$5JI-Gxs zFgB`)(1z{^nW+rnWC)*%jGlFH{2HLR6Y0oHA*-G-kR=Oc|}`dA@m_uX*49 zui1M459C*at^oPp|0U%A2`YL|)_Y%^f!()wal2CejR&Z2%(A53q4!8JXZhTP3&$*4 zx?oOUOZM!Q>1UrsQgA1}kI><+m!|8@w4S}%`H>cQgT6^Tl_30f*uiiHAKY9!ga8Tn zMtX6vILctj7Eul|h%9~utIM$K=*q;w5MdV;*aDgin$9;fb}lr# zDFpDr)gvI3WMJ8li_cSo1v;cgCj)M29%3Y6k63dla_Ey!VIt(yWPGkU_%sO^xRQ>G z++bA@*g90s=Q8?}Zim(O*S&s#diMQ1pF;i>&>unm_xJ#L+CK5pzTZP!#Lo98>Rs#j z9>*?#5b6hdS0huxED{76sL^?WwNMlyfB>v~5v?T%Z9ke8#A&V{md)m~GCaT2EAQ<0 zv*kSx`L&>{L4J8}MV_{My!76K;Dq?=)4j`k_OeAiAwteuM@SSBcS4|otZ|-Zfr$dM z2;RX-xRe)T$}PTT9D-yqKT_ySu&`Q)RiPw42Cci0ck24RUi<&=?E3aFoXULDL&a^{@*^ZZHa%M7#95a?otsp%SL?mb4yy~gD{aB2x3yRzim zFbv*Dm|?5|E{Cfp#&y{)A7uPHYz(Gtc(1weq`)7DrG-)G>Z3vAZ#N#V2EzipCQ=*^ zp+BW9^M-s+^MmYnDn-5qGyvqk=V0V%8||fs=0A+@lyx1BFP)A>qczULzy*bTf><-c z;v7Qk3iD*4@1fA@(m;8=SH9cuyMDWW1o_{AxH@)$k(bjdWH%^U`=_aqe?ER=e{RQf=ec6(^ z^Oi4PLdArIP=ujt90%4jK#W5O#2^MHtX7@OrlQf%P3R&JKZOtoP6}>SjtRD{J4ywn z+6Y7g&(aX9^jj4a{cp+oSg287P`~Ng2!z@z z*N5@Ls$e9Q3ksDiuaD>vJ$IBEDu{(J(;}GU0U+Q&g`8M!1JO_ z1B|L@GKb}63cMYHL{|Y>bQPokHW9awtFN35!QbFr`CUFnef#~X=>K4z2Ra_)x6_{^ z{{-kyAlkNh`l;F8dX}3n@kTfAl;5Q{UtYd!?(%snBx~;WbP+9fA6qMhDFDqwvRcPQ zQcW_|8s|=Y5j5O2Xuqd!ve-SwlzWZA8?6w1q+8(#G#=3{&AdD{jrOKteX9(UCa6nc z)y!c$0fZ@HSamxtCqfU{o%31ZfLjNR=_xeF2KfGqMW7P_7)62^|umkvfyYY0uU z(ZhJz9K@M(Cq`{R7~`fpIokgkrk<)WeTp`iBdQ*qF2Tw_IuF8vp(ChON*o4?u+hK= zfDtZMcH?kQ0gL4ofXAke0h1h%yc^aF=r%dF!YhCyT>u>xtzZ#jCXC=>DC$YaAnN-) z`JFcZJ^P)se_$;fR08t9)3wOo3;GL)w)K|$9v!+&H+cPL@GJf4x#tUft(oF$O;|Kf z#&z!fDHkrMwFgfiIOwGr%f`$cH)+zCMT@0OwvFAY3YPSOoDa{JoaskKU_U1Hz#AvG zoob~f6>Y@AWjuyeJwz*oPfvbhOo_$;aFQR_5+lq6VXNT`u2eM^DTVQBEnSH|X**gg zA3O!79Y=CIU#rk6A#Rsyh@!02Xbl(|n~iD+ZWTs>k#EF2IeQD|H!%EhlX4WBXcn*% zn4OL$0pM6n&=kyxs?Z?x*MWl7oRIiZODcK#$fYs z>SVZr=GsT&sNPbcb&5m7M9Zp$b{X`Q3Bsy{j)~4zL*B-+CSpTY3E=d$59N1W{ZUrV zxE1;Bpq(K9J3oy)ZGZ4mUw-S0D|UImcC0jR0I;izC#M88Vtx=MpVrUpaey@*Yt69ZR*u~e*aatVpf9{<8tZLewa zxOY7*T)c2a1J>ado&4P_gnIHDjaIMTx4W2n3rl~&j17izO^&_DdO%gH z%$!uIk{_r(>0NfpJ1nu69mS8jR}b+)K*7X6BlkVM-anA1dhhddOOHCc9$oX8uliT) zz7JzpJX6UHh4krsCZB1}49zTd4-di4L;RLD#YT=zq2KPkFLXau7yU%D5&agGOaH8J zm5X558p5AO5oRPB&v{ab&2C!u6QHiuk@Ui=Wlcz66nUUxEG} z1yvDj9O?oWA~PD9O7YDh4G0rstSrKUIE8o=IwJk{%0r20k+dMx<52&B^Wm>)afBGx z!H#jBbVTAhBoq2&`_P~Ab-(ie(sl8cJ!`Pf8{_R2EsdJ!QFs6UIfy{r^^$Ef;#~RH zw>-Fq^=h4wU>s5ZvNim#9{azH`^)e|6(ZWd(dPZu2&Y2=asP@ZeEWC!eU18N_uClp z64XYu?FJxIT_O1YW1q|ML5u~+zXN&?MB_*z5Kuq#uJ89!UmxqI;vv}i#|Mrh zG@wTEp$a-9>;ytsl~rkFwwSyh)P*#v^~hqLq04g3{vs>aT!8$Apo>9%xh_SXwyV6f zul___#BRg0az41?yruIR8Wzl1zM$bdttTy940zc2Kzq)7_j@Q`ynW^jGZ0!FP#43D z8h-C#=^H?JEefDEp|FY=vRohI_tM_OV_!ml2`UBo<*G!Uwni_le?z$M}7}K66=Xpb}IA^2=F|JZ-IBdZ^{}B<_E^r0tfh&&~LKznl*t|2xng zkYCPck*DnsUV5nI6v$Wqb}6C1^2#}pXUjPs`Q@N{%UO;*ZH-=fsO6j|XVL$5QMT<-8yHPS9?UU(Uyn zr|nrUJs98g_0B!`W^dN+ufV0+f6d_37b_ z*yecsU(J?#G4khwz7O)ty$X5SuJ+Q|U6QZ%wSyc#rw?B}Sg9{$aIRVj->T40c|ZlB zgJI+fF_8ok_d(iLTg)|eR*jyULz8_G(Por2RA1p>OybsJF zlsX#4fZGw2I@?gS{_g_siZh&i18}1MMx2*!8O@}8+I<0w96~!0zF&KOOd|@^b?R@&Kr=Y?U!Ea z$9LUIBadyQS?|N->rgOEH4|5UmGAU_r~0pyo=BJ#8y>81bnclR|H;=`XnAO7rsdNx&SVfMqPyFdJ1uYC98 zcm41FGV*VM-Ua#Pdmnk)KK0T&Jo%~bci*1#mHn(o=~C^(@Zl#@Py0D)6NH|Y2ghgX zX`W_ON-r)40zYgAF?D8n)UyzT0*YxerwptQ%lchuX3M`G`Hi5Tfc*0R6nWZi_0ogY zZ+~*(z=6#tQN)PFr~hj*q4=SQELX(Jma7u^L7*0pU#{WE(>Bga4<;AxySz`mey3Nd zQnP>9Efe02+619C7xpg`637uPStEK?(#JFC^vc_ba`^4wCFEZRy#eye`!@2lec+{s zRF8vN4!ItiqOu;3v$N$|jQsha?}PkutwNr*%e?du>al03zHvS7^U7;F+42@6UkR!K z`Q@!gp0*)gdMNeS@^3W9*)dsAzl&JxleCt1*y? z%ks9n+47!_{9@35fc)~VK%TbmdFi3l5NTfx>q5agFDiac$3 zUiz=sW6x53^LlJg$a>s_a`@%liu`?`2S9##wER^0b}mrH4?DJxcY>>#-v#>+xNbW2h(*WcqMxU>WEc5S163Hami2P*GHt zyXg$M-q2Mi)6ATg#Eo5E-1E)zrQhD^3s)>S`_u*mY-v1w$$;hO&N=<`dCPic&zZOQ zv?Vx`y>I!_`2(99=gwKaqG8sOSqsmaHvz*FJSgAc!e8*4{B$JvRHQb3Qkq>XPCXuRpNIq>kJP4Mru;>mp0_jN?urC=MrwJFEajuw-%@`XfA+FD zD;6$Uj6T()%l%tj^YBGW=B#KL{LLRUX|Z?=*&yE`&5oxFrnqxg%W?p!5uw4f@_6F4_oa9s3q+!u;C zuoIw_DYyf`h=am@KyYSZoJ-?(;xL^#7&6 zYbKz;%h9YR<;1RKK$hFUYOf`;p-s#|3Kqi>OV1CV7d~G(udx{LZaC)vkuSjplie!n z7%R58p9t;<`W#rxV7(B|7{hQKs%>Up#1gK~Git^xT_c+5W>)_*=B{Doa8S?C@_9KL z$~ZKR8i4q~9E1hcLb&3?4-NJ-l$IeFIbd#J6cq%Mn*b(^AQxbqCrUPofHfQhH*%x} zpd933L0<|aF%uR;En1Tas9N2`XyNJx&c@U<8GrnOq0F^-CkF*silAI!*nm(iu?s}o zt_R=;yzQuX)T*g9QX8gLT>;;EU|wS!Lcn136nbYJNO@c(UT&E|C*@jjf{F!$E@xqD z0x*atyg(ge z3~=Dz53DOf%ry-{tp)-DgTtt7uItNXJO4P9ZRcatXyc$ifc$oTL~d(fKPZtW+j*kQ zsEzbug>=i%oEiqkc>cx8j1^zl`dwHeUZ{#8wCiVlw{(P}NUF?4( z?`;qVcgcfk;$WQELzbdv-725bC=M=^=LU-d`*p0QuXSGKexHyW_d)Y!0n@qNlE;5z zflfxecU&9i^=j3GBPLgD6DZ01S@S2%-OHLAHQ0k4Q9iY-Br-63Orj~y%{t@znInsN z^}wn~!QlL3(}Po7v4_H6L_cf?BfQJ^S@V0$eU~+~PIm`7yuP_kh&jZnzk_A~5LO_F zL%H&Nt=;T(xTAy5Rz3D9uli@fu6AN@@; zs0QTUPv_}g!)%6`^dP4>R37(#kH8;?;O|LTqTk2^*(4~v%7viR3_Te`X5)PqPx-PV4^qGi_wDmmOO_( zrPkrTYM63ldn+9Mz3cQhWY`LM5MQ(uxgbE}dR}ehM#v6N0%E8vmB}h&K$YkN#zLhk zhxeWB(3pZ!=|YwgB{CSwOVuK`_4TsS(bl*B zb$R{Im!CSmrT!;m6|eW*EPF?<-ZxNm6}i7uUat|SmWjRWeb@H9FhpEfB~RTVd!M}R z9C4*y?9rcT%zB|u=eyD9-TA&`fq%f0N_M^~>U`5H44RPKtu)`IxR)z+Ra$*r-DzgE z!3(PMC%SbGZ>notk*>!4qPo~l)W?sF)Q73>mEb!cW>eSOtTg{jaj#bfv`$v5f#+9O z#wS-nzbV=)bw27c2X?-m@{)r)QlRm&ZHbOYGE^8;=bfX@NB2>O8jO5iKlcLTtykxx zUp35uqVv^+8oE0lJ$oSjo;n}pV<2>X67F8ecE1~q?(T<*JD~d=^_AW4U?LfeF43W= z`(cr~M@OOnLS=xc!+_U)o;n~2Yt=B?&2~VzG#>DGVOAwOU=Kl#x+gkr#Eu>T5J$fQ z_6Kn*MMYnzqjLEjkV-`*sPYHE!QS{+l*zE7 zwS9a2uX&Ky|8A0frb2X(Yh=%95(jehS}m_vi&KlmUUsHUJuk???T7Nz&GIR7^gLVq zNuB?P)c>CA?tg=XKzLPm|C7g`0&Wk`0J8s8s+H9L=28D!uMS$Lx_?z_(f?}D|Ekdc zs?h(c(En=C|Ekdcs?h)H(EsYP{ck4qzb}+QpDXTur5^pS3jMDZ{jaiT|D#?+J*U6H z&k^$#8&_$F?AiYe9EU(X`yZX7zS6h<`S;Qw)^qTqU-kQ+9Q@?((fxk^qdX0OcrNw7 z=VbpIgyHWh+5ZM%_(R1V(Er-Mvj2&8-aXI|bb@J7JFh_htL&%$(ePE;PyeIym0!{S zd5i8|q#xq&_uriQ-zL3z zqwa3d4{`kKDSZBKjDJ0a&;Nz-uXq0=K~?s@|I6cF9|08O-&gj(Y`Mz%?SFm8zpk;~ z_*c;y$cUZ=4B^Vwz)7H=f&BhgUey|y4!RmdTgJn^-8)$7HQJweQJ#N99(NqRR~&z{ z`JW$;niS%lY!`os0hk&(GfMKrK0{8uYn{&l#|U>Be2?+nE~DZpLwnkY?J+W4nC*Y;l)yPB(g{(8-Jcuzq%_xLx1`t? zdXQIqsypjSV2$^MW&PbU?`%-EG{C}|D{ok(j6J5ZtzqL`+gJln0N4<$Q&pX9Qc5=} zsjD#CM{vWRs{96c^71c3+Ew8rK8tCe={cY3_I_Rac~Qjs^e$+@_839Gg;{%y`Yt20 z$4GP;$RE>X%-v(SU4|m=!M>7*o;LEm_O{t=0T2=Z1j)#+%Iy_5RESjm5!p|CxyxvIp$}&_NgA(uUqdVLO-?g*Q=SU zsZpY!XgZD1UKOw@Mu8gzqz}PDmf_caL@>A({OvMEsa}>}leXEhh8wIhO=z=VzM2Oa zEf>!?Ml{#qKuV1O7Krhoz{I8CJOIW}^x!6nbm1nAbUbC{)#ql?iIkNVt(I%KbAeuB zI0{x&6q}H0BEYq_5YQk$osl>iLh%cadve7hBl9HMv#wWLUP+;6RMAosAp&?-g9-d9 zg*lprbK*SohQMJ592MF#VIfdUhk1C7O6{A}#JS#IBuvijU=<1h4I>zU#quMf<%g-| z@0%#weOp~?Hy*{M$XC?224;YKKKdf^Zwx@2Z;pbe!Jf;>n->ADQ=H-yzu9*u&PlVUj` zuZw-1*tcP-UM6S0LOoC{&KmNX*pKURwV=n>n2*0J_Wq_u+%5M2>%;OXs$w%xciBIgh~?IZ zSZ=r3(6@i0*##CpSht@1a10itr?b(~2I!UoO&_8{kj{_JAXYNi44|4c8#=fYRSfPY z(Bn#+%dQBCX@&!BwyrVj~A`%Wdw&?&e z843v-+PXCTmalN|?oRc%TWa$Td@Atc)LL<$CZCFuQ<-Qb%F`}-Ps{h7CR18#b@1jS zw2_t&T1wn!aRsZc)iCWc6!{#g33{HGko75_|3uvHtzpqB1Zn$)-Vt>Q#2)}N;ks@Z zarv%H)`6W}2WX!q`B$JRI}dvw`J#c)LxOz%^=IT44r&eD0ix~R3Ep^p+Kb}&A1yL{ zZkrs>J5KpF#%+JRo;GJ`HzWIIlBNH|Z@QX$#_}bLWsznrnQ`hF^X9Gqi!JRk?^gGi ztjqi<7s)`e|BE7$P9~CF@~C)^NdoNi9PJ(WFVJhG*hgT0?Hl=^?bh%It?+hhBS+5? zq8=_@qQdFF1b5S&+gV^+a1cLCoorr$72*$_I@|y11s5ES|zW4Q*++Z>^HS) zHCCt9n|0wB{mCaz#eS#c6DPUfaXxWU`|$(KDNPB&6&s6r6qPCoQ|Yum9*klo++d3! zETnmDv@Qph8azKvD_UtyFUaRZtY){WI3dng1*SudOIIv38C)qHrA`pQ#YoOz3_I zQ!8qxtS~f6#FfB(aDNe?9Uy{*h+k3cD#RrK;B_J=lv}4eh&%l((i;^ zMG5L5%SuG-Fo6uvJAsV@>@yOsux%@-Mlcsw}M_}+&Nf%gSB>R`kz62EdA?{lAE zCpRb~f9A~Gq6~Q=H2m>U;8}D!jKI9}j9p@pZs?#}_7#&t?R*b}x z+3RlgUbp=3PVyg)^LMA}AGq8+MjM2`WY4?RFSrB$;w1m-IDc`f{z{ixFBFph;jms| ze{rk->Nb4tB)@Q+&z-6-=*gw#S=wUdENub%GnOyv-&UPJtM=P!^}>pFyk-&C5ssk= z`=wP5%_R@n}whk>8iqPYmp?u9%WOh@wh z;OHpHG@-*CVzs!nS!Su*1!wU|WqNrPXe7`C%JEl;x^x5ns&Q1Q9T^Aacm|l`$YFKm zWz3E&7>G0|S@1ATANd157OeCbIMa`u;ImIE17ughh$m&sG;t+h(M>*y?mg1K*PebE z15ip5sNDFGll;>pCW23sm^gbi1N^wj&!QU^`Zpv)J`1myzk-hhlW)c3vE}T#m1TU$ zyp{#E-|Zd{zK=6!wk)pwA?rSs(16G)c!}54)tLZH8;(-1;#d$OShb{Y=|7D_R~!4ky7Jg+);U_mn9!P>-cm7?mxhD@^9 z!NSCYtn{c7r_?UFLM_LSR1B{SSB$Slu4Z^`xTc}+5HZwa(Ym6$VA4T70`>{G%^rgV z3^2et9V-H;J-{1~VTQ_52`vub55vmI$xZ8KjDlk##%#ijr*e|HqcCV3mPp6_fuaU? zTjK6$ZlcIhXowL5MaYgh$y8b`?EQN#Lij-tR+TEf9HuQ=)KuzpD2wE8r}4A|emq-- z-2Tc?Z&x6qO|SBri0LAq0k$721V*`;Hd21M3o+Qal@8*Q_WVn_Q@)*@lgh0tN6=lx zEp!-$2Q4LQFLU5KcL9v%*ZxkK-GAMy{~vK*0$4?L^*{H{KJ(`7FYjf4*~kJUApru& z5_VjGfFQUBAqWCV%A(TR8uzt|ii$h#)Vf5!*4owuty-!UQE|5#msY;kg?~5eR{y^< zcP1|ZqP8Y{7tY)>Gw;3JbMAKTx#yl^6oec^uid-6`{I}2LuR5!z(gf5M6TD2fEL?l zYbv+lh}A1)x<@Jd_;mwuhD@W*9F`4(w;oe|z|z98l;RAr2RjJcw|5&-47el8H7LSo zJUbSFpb$55b(od*YOAPGrR3YR)NlDItn@sgp?$TG7dDN}$P4cQH^wzc#QziJI4sU;g-Y2`lQ|4ANuvBKWKNCCFCGIZK4*5~}S()vSPv>rSIdiin z_d4QPn0?TeDunsxyA>P_u7cxgE?pn0;iHrl%4wK{UUh=6IrEgk=CD-p=Qe3HZVNTs z8VYO$*QzqTh|?Bs>J<&XKtGTSZxM0T_L#of8gy*tLeE_AOWKX#kfKS&D$ z4`l3O#5QNY?OsWacUO|j{Dq~s{VSIqkJMNQ^ zZ&fd6eHC&#!bd?&sw*D;(;%%TUy6)>F%o(z0`Z4Wx!HZRJu?3H^vE$zv5$!41?!#4 zV#M$eCdQND9u*+~w4rEbQ&>WGj4YU6<~muHiXbuLO$Wzv@gCb4T6~6686K91!+5{k z2`Qy<$O5tYtnys%i3Vq1`SCy+-wtW{Fv-s~2N`s&M4U`C*gbimU*#8t3Ir2Mc}k<~c98&$}<>oeWL> z#H5d+brpqW7cf_k06RU0kAd)*rsJV?*nQCD7<{H793Y(HT5!=CHYwU&`ws=Z4}gv) zuh8n`1}PUX0^rko1n>^Pr2tA@ABldutX|9$n{=^`Y#$`1#- z7>vV+O={*Ch_vAH_f%0YGo}cB)3eKgZwA}~@ajdm-Fx5Z<-VU8Kd0|e^3QjFxA}Tc zzh|+gnK-)~!J+kw?DbN`dOBWRCBsA%2qw0q642cnNowv8^rWU{=s61b@qiNmL{A+4 zbXIxqPxf-34nKE^!NtG-?)0Ep#lm^;zcW3AL*l1O%Bhl+i^!9cl$w*u|}`1SHJ@cijG;|!qWm)FnF{9n;ey1Imafd86~6HZ#R63%)~f{W>8 zEvr{8YOQuFsrEbQT=xFS)h#%?vt&xk(naf5uASAkwxxZM8-1#ab;xf~fWilHe9n?C zwck{vg+=^FoaH7l_RzmV{L58xc|AOM2g!dN{^?nAf|heQ-=30_9+rb`dwQ0GX!o?Y zegb^NDSLp8djVnO1TP`zhP!q05ym~f1Wwl|iU~oOoX!=Iqd-gwDhr^~R&s1)V$WaJ z<5>H-fVk9gSUdN=qKD#%xQag@HJ%~b?<=TJ|NQ8P84c1{KqJ7f_vyeXHF_B z+x=MY^Omh{S+lHd<&qxWhMH!>^T9^@1gSJ1?r*7ELJuJ#JEMQ%Bnmcl1D;E0x7?i` zom)|UjJR$}9*DIAU?#w)vlIANfb4?=y{~*C=7T%`F7i#=gq-)qEYZ&Uk z;D-hOLOi5Iv=S|(WKVCNk)^SjOJ+4HCc>{*&a9gen?8IzPJQ6ei;O@VZI*0inQ-H5 zIHLJt!y8zQQH_|hkSkQg2Y{hK2u-qv*HeT={zJV1f)iE@YMzCdjBs#R!b_Yi_!LeB z0(MrQ*v^I^l!z8bB4GqG55vO;PbGfMtb9Jn4&!4tyDc2M7R?w>m&g}0Y^TQfaP}I* zd~ziIkh_8?!JlZPb%6)8M(75$y9nACY%b&}*wi9D2o^Y5kO@-g8d(YqUq~shX5&c$ zd-)Vc-3&k>9>s6QBH#$ci~BYHDn1x=HQqS?WvNCW5yn?UF{Q3^ML#hP#v0RWKTCkO z0&WI)?MM9x_>@C%h8;jjSufhjnRP;b>hRVFuN*F(OUHl5^TB%$Y86#pGpcllOp>Q| zE4KzdMqu`h_WNi>N8hHG-KvkcO`qQbpL?r*g!>%LYM%dm>TTG-eFJClE@8?H1l%&@ zVg*)KgSN7)M;HPY%+yM7tO&w8TFdj+V=m5%PTPXthimq0Tjq(94WEeV%o+S!Rteb5I0W zH&I*+R5uUdK$fA>0l=s+M2B`1PQ4K}8g0l84v*8eGWPMU5QVbOhlFVuLu@VJSiw-x z-PnO2Vm%brv1LO`Y7-EMTFEA~De~$}zq-%&Sv|iW==FUQ-=C?FMEf=0SHd)vxT*1C z(JnX7%-EM0vmn<4N&tSloCBQF_r3g()uR3FJke{1?pw^~B*S5>Wt1+#& z9MX3Dg4Ku~AzaON^6m0H6fJzLd#$1P;2Z5fD$@CoW3#lu*xfXEC>%CT2>T)Ih8MuX z2!ZL9W8rBOM+LQUxwW+1sZp}9!5D?FWyFxR^TP=~jI7sK2v%!pc;|=x0&~sWYH+H0 z1RV0ha0k^FH!Rx<#&o!A=7S8!FcLUBjcQl0qm^yIT+URX?SkP{q83NDE6`NjpxT|6 zc=F%u1}W_E@KoSu1I`Ed^U4*#Dc#`ZefeMT=hc3kS9**GhqkN*)4L~B5)sow3uz{u zA^nVY7{F2lPN(Tq<%Pl-B1JNb(G)AvrQSH$l#v%!0zV1x1AtHOdB7=c@^a;wef#a| z^!y|aB)zlOt!-bo)+KgQA?m(R2f^*qRuDXh2!@k&kK_PU)-f1EWNvX}*}ZM|=$7VW z>iKx!CjeRjKHaNXxO;Pe!LqZe|DFz}RMXDICm`p!;to?Z!D23qj>*Gz!Zr4Ox%T&`vJ&!&vFW z)UcAT)WedAB(xx{l)P8yu3?4tzsQ!898SkDhzHE>k6}?O__Pi5`}JQjzd@=2)B}7z zO#n`5hL`tM{{!CMr>$Ic{F+_^_1W^b7^s^(Iy+JRv`Yzm*&fy)B>}krpUyJilxn@a zFMogSUYwPFZ4c90T9zEQXz_~5>LyrSuU*+nbT%(ImL{at()FNo3PxvlFh;m=UhMk} z%tt$buLkCN3>3ue@aWwPI%>ru=_}y+f(9u7@afG0PN~GpXS^lmrRF{2YVQwvmlC-h zYy|>yZ-haEbQ=g>C=LPVV_rh6ab8RYl=&F1$!P+j9C>6TuIS~W9d7^~X_q4SYyY5Ns2yW!5~4=3y%OFe=eN;-wwX!y%SGJ5c1DFt-gRQ>enC6(S(|2;&^55cMHGNn7Hu0zND#7pF9v|u1#3SL$6)+n>{3gBbT;PgVoDT>Sff<~MaISIIkxl)T@Ul<)hR-H90`FQHpKdbXmRem{B@co*PZfKSh# zfK&R|%ln%5_T@*j?&#%h)nY|Q<@#pl>i9dgR|`HbJStPJHsC)1oC@&Ebp~)s7kYVL ze&Y7_uim><-^sZ;{{C*SyvEU)@-73u4)7y@U*5BTZvb2gptPr7=yp#}{+;(P_O;IL zmX3S6w{2R4Ee(CP)dcsp!_T&do@Ec0l;Oogi-wb%+XHZlL6@^7X*eIs+$WYBql)5G zkyDvmhIdFCt`YTR9Fy5cJQDcvfYkt^A4$0k_!dAXfYOe%7;nO#i*b49M?2i-U4#C^ zaj0$OqSoW9+g2Z6b8^j^^=oR@wJtxodeVBtpd^#bX{*~-iOoc`z-0Rk6e01jHe0&F zE`LNX*s8z4q)Bk-@Bu6M3&UX`5Dh0&ya)zaWC73BdNDGuz{3!92q`syHL*Jhm-7OK zZ)4cT$6yhuvk@4rEwu=`P(=^n6gM3>!geGJk#eT9x|I^Z3Evj9Gyt^!VJ zi=Y2?-}6@2yW;t`9zXWUr>5oYEp^11=8+hg=OMztCL4z^HbdODc`?N8Vw#kAoD{w8 zBRI>8u()6fovk4HXrnm=vD#s#?9xi*Z@x~@n{LMWY}{`HtJ;8H0=NR;)B7ZFN^g02 z>FGkRzT;q~=$9m0da8Yf)XU{9*h2NScDoeUbMD2yNB zG%8#V+kg#>yi^srR+2NIRf^#-NfZvB3@lpc@CAZ&LnJWZp^AJ^!2dP$i&h{JiYWDR z3N~qlYzSEe018p8-8TsSb}SO@X(o8|9PkeTe+Bsb%{xx;cZ8RB%=P%%(3`(fzw>up ztHi-!T!^N>9A!v*o)4`&Vqx;dMRFkScf?{j*?1* z6+}Fw?foKXiYwS*$~*|g70Mu-Yt2@t(x!D0I4v6E5aeMOr&E4V=BX6CgGMb_S<)I1 zo}^_p3fTaga&GfY1XPM+uj+8zl|Zy^1kuHFl{Hegm3G`H_`D1J^XJKRiyNfV0apNg zK5qs7EZ`jgC0~!#EpK__+kd=1+-JX?ys~W#3?sf<=WkiPy0s0bTB#Rwu%l099qhnU zE$LeOU?^6L;TD5KmmdbCrA`DChNB|R{s>=C{1q*z#9!1B&ujcGP3zLauWQ;H8qQ{l zaiLa5{7a0a2NDAhh5%a(qj1DaM!je(?REit0*)&&as+X9!UVXUGKp`SZxZ}oxFoZV zxdr(D0DcSb`TY;zN(vVW%spV9*|e?ixF>fvW~91RB3 zMEe~BmO!b@+-Udn!L)Mxny|F;m`0z_5wJUjkt4&jj++I)Hh>TQI`r~Youn8c!{wX1sz zMO)eHqF&ZN!f@aN8+lYa2vj4xh2ABb>^-)?-lI@mqFJV#7_98AxC)CoRDOn=(Zo^iszb+m2HcOGAMd;Ho3 zK2&)88hHX@SpW_P`20Et_!WSk04R-mtoL|)$UyLG?kcZa(1?6u&k_09y+-6taI9X8 z$nO)!UL%gZ>;zvSj=k+@?>ON+egvu7ueH~JZ9{wX z_#x8s(IO>ijS&6&@+cU0ZZxPAo)rzA9R=eqj%pjC;R~YLh0!=OaVFXAl~7J%;7Fi1 z$1pk{K|Og57&x@Yls1HVZxCm=tKqLS7e04m-rR}v`NW6aTLk}>t<3Q6F5nLVo&)&& zlUG450}KXG+LM2sd+@KLU-)+tZBx^v_RS1@D%pd9KTd*y9Z4|o%dFtPv%tV}lG?e+ z@EJ+%%w+#E@D9Ph&EQMg<%}f#3HaXtdTTfTlwrUd0fz!8?K#e^-GhJMZ30@=y(s8l z%Q6DzVQ6-}1EpQ%& zhPIc$NuSuaz}e;TX$SGa<$xq*w;^^1U_8KYXYIhx0$c^4bnb_}`)TPOe3JU5ow@SU zfp0jvl3^Th4I?*}{uprm;6r!TiR@4?6K*xtM)Xty({SwgzGa8K5yrT0pT_)&s! z*OY*97nOi<7nB4qECJ&#FVU_j313p8U0TvTqka!3A=+dv(-ZrA2%+b=2!h!L$vf=%_y~O`KoKuPoIzm4+`X)i##;9Tobq;hxMM z7czVEJ~}HIBS4bFya1U!0M$n?nLT{B;M>U_KZu)80N(-F3Gmz5E8hFJz1-Kg`?;tE zN%HqWzFRxnbE_kk9sL0X#GDCK9EE#kh;&uiqo; zWf#ilucK<#BK{R%B*057{qUPE`rXQR==wE_7pVD@W~#8GG4Nfu9aI3*fi&bAeO(v6uI? z-_$?-wue6WkhaAuP>m5O7?BkGr`4i+5jEB9m47$N<=gvCJPEeFfaw6g{09N2G~3Jf zTlwd=uKYR*I=u2ffO7eIOylGRsSwZr@WxHG1Na8OjQ~npy?yg9ynP7icA@9U+b!gu z#xeh)o+A^_Xz3cE-Kg=A>e=lXlYZ!nJ{5Y2psSbo2W~9sCcA^(W5zp8?H+S#r+E** z$J9Hq=$KZdWGPskxc>qgtBwzaJ|Z67IeC{V z)>HaqTD>T(>y_C${&DJvVI`)3%@V+hm^xa zJ9J;-5`Is#$8SBad|f-l$qQGp&_cR#_`$nR{)!@}{8G51tDrC`x7fc@rGrY9Jkmy4 zDJZekFciS>QbGSNVOl;f(~qaa6xkLQC-rtES?-kbL+}~@Q}|@$;COKe+YvmKY|BZ3 zTX1;-w?X-2#a@a{jW{_W=-oGI>+wwA`i)L!Q8| zC8z=^b^KiLe=GPJ7LTNyQ{aaXPzmt)KLR+Vv0mP9f0nUGj^)JAuFB>?e z3NQcHbD|yX8RyiOuluEa^`Ot&$>GVyS`gPXfm+thOxj4EyLi+X{1W?+1 zt{7L^?+|(CZ^gK?p;F}iO+QrIs9LOT|3|ECujTF%_Y9F`KkIh2wa=Ng&zt4XnZf7H zUntT82)scK#Mteub_*-Nodtgd@0(RHCNdE?xDipJ;II&0ICU*ITMew^#~@T%nTZ3b z)AI{L!*a(N}pxaj;*f?>`v z=wO=Ss6o|9BED?|VQ*nM0M8i_dl*#Kb*RqHUy6EcKULJ@<&eR*0skZ5Q-D{G>W~h^ zQUn|eptSp7QD4e9k$2wa&D-n5z0{xcMvwM9w`En^i7iy6UF-sJW-{k3Iyw1<2t1hk zmRqBr%fEC(4!X4(cpm3){*6j4z$B4_Nu!ESg{vbqUdBg-hr$g;TFb2;cefiW=L=T; zISc$1M~L0JoW+aSaX7XgMb$6Dj$%@&mf>GK5eb)vaMGAI7(SQXurlRXOX9Q-)gz88 z!xs{{UNhAmb%qFcs15Q3qvKE~jy+)e*sUL&{ps}%rl#0Gj>DBuz582mAYsBkGCoW7 z?0TUf_i52!B9cP;h>-Vv|AbD*gWkM%nvf%3gmheUI&|lNy8wQD{^|^j#b?5oHh|KF z4~coN^Qf2H`@9du`7z^j@mzZFZTES9_fOIkyJ7)sj=%M9?{hD3uB&tY*1z#}^FwRP zNp6|Y%tmcK&*-#oIL}}}9+f@hBjzDL^zxVe2MO=Nx6SkMc?)CmZ)J0d^<(Ebv*CGD zbqAuWWa%|NLx~24@nJCPz}3hzFa$9<4$n@DmYk4h?tN@F2M?pg6JuC$F|* zr4oFuRbWKmsV`4?2tgs|=ELtROg_+h5LHfxiHRY%gimnqms?uS67AU080ZJX949K{ zaBonxEuM84PC1cW6$y*n7P+~=fluY(eB3f+g<4qL^Ludz9#pa>KtPD*;d!=S1N0eV6q>wfr}Tf**Alq0bt=*Xqm75tbfhskHaL{0vy ztTliwK@}Aw%}_!NY)7YuG^9r1ug1k}!ss-YN|XBOg4u}y2Rso{ML$5U&S zVz`phWca)>OK_q!7PZwz7JwTAoI<0)9={YZ2jgv}l8>t*=Lb~$f^NpFD83KRNOsT+ zSxe1w+?6Xvz%b-cGOEDwO;yN%E3c?&(Dy9WoCLw6SZ8W3Lc5V;WpXhJs2~R^Q)x z635J;hNA_L%YKYB>EDWROgcLwUmXej1i&c(U%t2=_!hv=0hIQXAJ6sXrJaB3NBO;? z${ijcJs#iMwz}nz<*n;ZrYWg?Jk0-A0LH=u@D}?=FXPbOh^<6z==%8g)&v;TYqHl?e{NRl2$8BSQU7|!a$ zRuG)RDLD)Vh`sLaR{MeUYPWgg|2abMTLk|y?*R{-i?cZZfBZiL_(_0M0hGEv6a0|^ zLN5Ejlgm22xTwwjIiF*EowlS2CNH!A>X#9_WmWsy_5LrCEy$IMyQ(j8uQhvJLytgA zxXu1tl_u4Zb~yFE6%Qs)ta?2SAfH22%I90 z;Q#4T^+{s4sjx#vY*5ZR5khPV6%NM@=FA9BSI1V^ z>_b-j5v%!-B_75A&hBNk_pzFLS@3@5+FsUhxU_=%U%3=sqE3PVs~cj8PgINPDJ#H` z2Xifm|5e?XtJvA4K;DNtG-!Kj&l>@xz#-l@rYQ zh_z|LvWV`AaWpL(9bb&9N~3q}ZMAJ1G{6sq41+eN#WaY1GreGmAj0Cr)fT_k{~ z0p$Qno!dow@YkuYc;i9SYvTC;w2KuG>%aBS?o$MG&jQduyn+3|-BybDSL*Dw_K3hy z(w)3W2@M%h$$83%!`Dz$L?F>{5^5BUz_svweH8Um2tC-1QW+VA!h5A$@AkCjX9Yhu zflvOr|L?%9A2&!*fZxw5fY$@Y0QSYt$31@51_!90EneBOX!U|c#8h(kgyk>A63Owe z#E>Om$oHiuc@3;!ozRFVu_P_$8o8t$s)5<;k^C@X$r7*x=R8DPO;KCLGPMZnD0n?l z-R()}dv*xEbb?-Ae{Ea@eE=W{@cA+fIHf6GzUO@HzQpA}*1vz9Jl}KtSu9Ljq3sz7 zg~;FuIv8<^^d5ALA$b0ea~u5)C#J+zoCQP-8d#>;7`0*hOX{C|C7VKuDmX1g59w3V za~}PmE9?VQ3SvbOE*y!`MQ+%|1|? zkq>=GSm?OmrppNXM;{@OLT0vw(hKEo^61>;m7i$&0Qe_>&jCK2UwQA14T4^O-_XzL zdzAWB@3q%9X}4Rgo8VUKZ1y#NwRU)PwR`2Ivi%zPlYplHL>KLoZuj25>g7H?eoo(` zZ17j&CiSW*my~1oVpD7X28t= zpPt)*Q@Yp7_dGY`zQm

#3q@c6-mGLXA_<74->vBaRBKlazIIK&SxPWL?f8)M6oY z$y|mTsmr4)b!mpKHsB`$)&qRHP61BoEHCeCobl;eyS}}px_a57HOs2|rOJH$L9FQr zc#iU@%Eu@(Ty!!z(qhVkyZcr13!=VuqrCpSGW9a-sRHH!e7Y6_r*yoR-}!v+dD?x6 z%hprGydvmo`Cflh)riAg6|*fVcs5!h0QLtt(3Pd2HFkv^oFRt48#*(o=`u^f%`!A% z&_SZ1x@osZZx`tB=^eSTL7EJh4)Ezc7&xWFyu7dW>Dxv3OXYR1@4An6#hMSpnG*e2 zy%|l^?|g%l+Ds#b`zkDb$qA<0P&;;t`rL|g*SZu)Qr6`SI7i(ewE&1dBxUdwg1%e4 zeA%@^f2y48=~2b!q-9*_SN{w8s8KIp+_t*CX4&GEF05I*dU0FpiPiI4zqbxf=v)aw zzCeGLJO)1@Tm_GEZ!S~aOx#Rz@oU9<&!ez-Bd!VZE4;=2cT_5_!CtA2(?$sex(_34 z)mf9^&;4MY7av?8k1-cS7a9wUh2aH8fdL11wh=MSU@4B=&{kAfn~V5dHtE4BA`i5s zwA(ks9$jFT$W?rtyi#6au2dIO)VLf&T{>sN=+R-T0b(>(a7>+H<%A=nurhY6058_e z71j|-U`mU#6xw)8)5`dw70${Wti7f>gU!){b&#|sLAIX&J#i98!czFr zfLdXsov|p@SlpG!mEnY~V3SytoA60EiDlX0JiACvY3rCF(}rmsOvvEU9n67-2kVCt zo;1Qv62F-?YLt*2MsP8_K@5%Ta6bHP!k4i;C!UBPiW|Ni4<-~RLgCC5Xpjox2;>Kg zDg3??mg`Zz3cwKe-hdx0x-XIo@fQhbTUwId6#Zb^m6>&E;U@UZ1`GoD{h$^&r4e4< z*LeLO+rww()xP@yI>XvU%Uj9qMJ-xzt+Wdkh#0vvO@bD05M8iq>Xxt8qh}M!+2}rz zq-j^d#sqLaz^CW3t8q>aAYUWs+RDXvyyG@8UT=F_^zX1|=g_bHdY$Oklb0>}@ANBu zb821dvKCj>)pS0`3@`~WvIk5Dej~%>PP)*WC+K6N0CXCd9?+z*#l9&ZU5bSm**B7# zZWCHhg(nb%PgCV3+K}kr0A_s^PP0`T`yQx^Ag?qKa-p=e2v{zl4&W$J<7TFAghhGf zrq%2hCz@lK5 zek)Utz(>jeAq&He#R5h2dnpIM&()h4azoRuck?JbC=_sAO~?iI+4MxsQ58&tgjwp< zZXQ&x5TDg9b?`t~>ey-S#X#Ch*%xr4X0P(bS@Hu8a4)4soBH zEj|QScJx{C{toWmko%6PT5W{osQ&{vOPoilr<*9`=2!p+bZE4;4e|#WufRd;C{Mtb zE-)X!Y?!q074F+Pe5QBNC>6_A(jSYdH3R31HO^NW%&ryp3L0e!(Le)_5bGg zy#DX?1L`uR*TVk|pdR4&myy6JP4IGGe)ehH z<)(6e4qUsgK{5eEAFUe#z$qoY+^5UW-Iuud_x(;^_xhofJU1LADNu5VB|`}bp*>Ky zD2;y<_11y%hP}eQ4*X5PI{?4l{s^4XE-&wE-2M*h*}X@jwQVa}TB|Fnn%dS>Rv)Q>m^85-&W4heW^-DbodO%Gt+o(tQ$BgY}2YifvbccPdEY%f3;9xN`u5nX) z1G6~-Dp>jfWcY*AS`aPJ(OrwFdOnm73mriHuMU#X+t>prQYta0spz=fHdF4tf!I-w zLireCAxLcSMhOc73d5yCncaPCR@(h1(H=J3AkNzp@$UowGvFhD-yZ%Sa7v$f`72ND zdwtTc?L5Q3Ni9pUA%nJ129}jcbIT<1rwO_(dW4jIU(m5|bB2z)f!_=GIl!mm0pOG# z_455p$Hb*@Q`t?%QG1agHF~#`e^=H_>JL)mE>X{o zH)Y1J>w(`0xE0{@=O@4^-Rb3iyYzGSB`*GbfAi}MsF9n>(g5!uWOBA&_+fxp|~ z(Xj*N^XHQxw?Ga6)B}7v8h}$8W{-}| zDBnV_FrQNSZ-w3);L)K*fK#gV@(uN3{eDV~$i1&h9iE-7bi{vc=iJx)IM1CWyE|av zR(`hp2%OyBX?MzSvRuPI;nb~a5Z)pe-e<@KYd-B}!8uC^0^eZnhRm*k&st0ySYd`R zNyL!Twx!6!upZ4($OM;$SnLb9p}-t`2JW&%OxLDAi+;EReDL{IaU0q%U~*Y+A53e5QaD0EEu!jS zNX8II84ioF`hkgoc#@E@Jj13(np@zZ)Bhf+XPngmexG z9x$+F$wQWfHIVnKFi1q0X!q|XS-?G+8-wwV|Gogt5ZmKD1Qg3FBOIwH4lG^ZYDK4Z zNWUjUm>!>iNkjlZyEE8ShqJGxqFpv`$>=2>1pXS}fS+`?OXVNHhus0) zGJw)8mkK%X8BagA@;niLDQ~>!*Znvi!P8VL%?&eJR<|r^TZ}eYxSM~We9YNy{tkDu z2bi19_!wK{ciN*~)YC8NC%>qVc}Z7Z)YX^t;ETHRl0N7~U3*ElT>LclqF(oseiyQ$ zm-MLnDd$B!`jY+^Jj#AaS6|ePmvlVB*Twb77j^w5{b1=$Y!sTq(!(vI070@3`iPDB z3sXK|>R(v!1Lph%4$I9yG3}4o5o7c*N=XA+MFUSUhRI58p^+nSNs85;BKUDQ~xe9Z-PSM2d>ky>cb~=>o zuVl4DF}{+GV)ac~eM>e9aWC@Ftg|is52l{4GdT4@AejOZ2Wt3V8H~{mfm|HrOC2X@ z!oW8ji3JUGkEtBClspm|tV|A!;%QTl)<=dJ6lr4y*>~a*J6RdyD%r5vE)Rk=m<1nA zr=i1Om0Jd0T16&#{BaP?KsDj$D;xGg|jCI7x3+k3BFu6kOfu8@NitK4ym zm@mJ}KG4@wm24UfwcbIr7j!H3f&dWDbKq~KdoQR6dVTDuV^D_yx`KEbEN8F%pbh^N z^|>4LjB+WHqyz76kmduH0DQXJfOh~c08rYnNznJ;3L!7N;ptTePT$}!&74lQ{vO6U z*$^q%a;+V?#*SQThpw^n;WuhwWI<$MXhA;Kn^3gp&`t%G<|-?fq!zeXia>kjzRP7N zd$cxv;?WPfeEJW%r$IUl&;s!3ZwG!F;6lK@=-)ly^mi|@zm5U3A~PeiLNmWT1H%9E z=m%YXyFaKC?H++Dp~(5`Ag8@ zFJT9Er-KMYsZcP=DpdMVmW`NRt3_06v|~ zz*_+A07`p~TZ*@CACPuVD|b??^;()b;ZX?gl_Ld*TyHzq*`e!gex02qDMKD+&O+&+C@0#|p9 zw)|0yV*?|9xJz3|Ajzg{*ld^&J%oV@fQkAT7^FbR#S{$<98UYu3g5kwaSC44elF-d z7v=Zqd>8n~fWHBJIzItU$+%zSeaR!Y%n|FSfsjWsR9;Hkk4s4;K|o^#07_TD1rUiO zHXB2P6=7E&(YLVUJq(AhEO?z$5bjw=<1S~oq161Pptl2b`1HOG{3F0$0e-#z6F4RH0g=~wcI11~J23Nu_JM zviU2)$1NxaoeQS)1@Nx`@~=c0@ksI4kACic5EuWxU*xt$Yt~jzTfVZTy0vWy>GYU% zx6PzMAWG`=%Grc6`SpDV@Vfx_{$G@H_Hie)EM9xaaum5&X)CC-u;=s2EB!j-|LSny zM**4vUfO?r73Dp+Wqt4BR*B+DJG}CCQu(~XSr5X;DIfy)KPvBmYg<)Lx4x>gkWBDY9eQMQF%;c^~EY+pbTV854Fv|o|{dzZFOlr}7h^0uRFetDk;z8&!V z|3!JdHObxu9_|)6?UgtENG9Iw$-sXAI2Ewp`AZ|&-i00MH{e>Yyj>_;tyj2_TN|Wt zfQbN_*N~JMz$qQ-<$bLW`c=N5d849=W)4J(5~{oQquUJ39w$rF>iKw@o%5m4$wGV` z4-GTyyr7(&9$gQhy#9JG{wQK&0xAGLUG=~z&G7P_j|utT-{nTAxhpEes042@O1^^dbGLnsDYe&NgR~T8bWxb@ z!_722erUx;jRT8A95loc(i<6{h*Lp$1XEbGKsBcF1)NPBF++BrSjoA0Ms9wiJwa}S zE-+RL{~ZptMra#rByfZUDNgBnGLMd=;h-QH_Fv5#k_oZJd6oT^VKdRSvToQmTdvZKko zP}hs~h+=2+P(h$1P--V+>_`}e6SGvDJU7c~E26oIT@cRZPGnS-Qc3%D0cumVnrIhY zsBgcYOnkgSIvCId@Y}_Sz%K*b0ie`8P4tKK5h7pfwTt&g_v8MX=>I+Y$>e3rS1wuI z(n@RSE_Nd)FC%x`zv0r|IE4${E;R~lda}c7=E;XThgtJy0D_09^8?34Lm-#D?O;90 zC*tJ4$|u@^fW=a#9*mN?_bOh41Mm(u(PsdHXbmu)q!lWiE`$9sT0xvEPGOiNZ*1&1 z;C9$d1hOcWEP{K5EL&HiLIUs51z$%!k>Ts*z;6KD0`U3z6!7-}{|4-fujlR`zD`}) zvT84$ZtKm{H8rjBDyQ9Qn*j*6t8IZ(_AgI~KRXP;*9}i*=BpXM#r_1~2!PMmWx!7b zoDZP1`DW2hHARwtNs8e@+Tqc&4CVCcc>?%0z%u}!p67v6 zdfChOBRxGN-`*5G2Qg82l&{GV?XeSd_&^?)+qyTsV3)lSF*-<`y`SR7;^OX&Oo0JtT!hIg$QN?uqIDK{!=_#&1pm#du0IwNnSRWIW_=z0@j42KJV z(<4g|Kex)R63#{r;Im*eXY%roH82F5}T&o|4Ifb9fAc2Fx;H7x~z`LU)1V|<)h z35RRLZQD+33sfx-36}8VbAx%w+%OIix}Pnu`3H8Tus9$H+< z&I@9Zi^Z4i8b{M9cQX8gKgX;C{K_!6ihG0Ysw>|W`iY#*@1ZO{nYHGUoySf_0 zJ!Zgwf)F?K3-ovFSlX~Co;+66Ua5kZA@zU}GZe@FoB@w+g@%zIgs}-luhPzsi+|s5<9{zJ z!)mfJTq-F`eJjJEv_=sIhb}5LX9;@FMLE%2-1HXkU4Xv;e0n|tPU&x6-q*fhztiLE zDZPCHCtM6G9oQmGlay&>jf26cfLBPJ9vw|DX6U#J`2B!i0(?3i1WxHuFW--J^whU} z12rgMQq)WOr3^hk1b#N)Jb+Kng}^CY;^q6D9mX89)Df=O~jyljVaN8nqSS(^APYS0lx$I^gIKc(sN$E zAL;42j`~K5HhA>ZzLt?ge++yh;7Wi`&(**w-R$Lk(c|0atfdXY|JpCm-j>rOihBzX zNMW(YIdC^0Tq!A7Zjg7N!9BeL71LytE$Yd5Jww-G;H`kw0H3ZCfm1rm%lopwlHL;Q z4MEp`=NIUks7f|1hxyeUGQWBQMkD}t&EM{tU*T*KEig#025;&(p%lR>A)#iwL+<|iX<44UO zU~2$40N~Rz9yq1RUcUe7ad+@5{Y~+{i(n*Tbz^FjkvfAb(OfXZakJ!FEsg66;nVR8$=9JmB~@nnLW zWaX|R+?xfl84u53I5J{p!)KZBl$Z2!F&l!g0#V=LcQgCCt-vn;Yyc1+kd&RkDZS_A z-&EiIvaUw3yw=v1)v%d4RA87sT25X|eCS}$F$%=$(50sPvglM>y3hWNES-zJ-Za!q zO1w&eAt_f7Ulff1{|pUooXM+^6-?lo1eB=pa=3Sfy@aefru(U=i1A$|S84Asb%IvX zEndjQa+Nj3^={SxrDY|cOrD@Q2rU2sV@ILjXY+d*em)HRcYs#`K0m(%uKf`Nz)m0&KzE-~?@gF-mVxr@&v(^P2sfW=>USL=cHU zaEZb$KbND04@Qv5YFB|saO6+)BlIs6uhR(*iTsqqkw$W{2z z^#i*%Jx$ZweRMe*@I%aV_aRElBWCGVbMYf4E3EA@<8PV4F7r|@?U0Meq{1Q#DThHl ze-@X|ntn^LmL(Lwp#llmnhq8J+EyU6N zG`t9fz1AnA^)cA=4MH=h2UaV`m7w}Bn7D~w8wzoY{Odc2dB+WGOIStN_dwVtdw$R~ z8Rir-;DlmPv}fJGE(Pt1=;T9#KoP~=>St%v8Z0Yh`dJ3vlUi3GgC7VW0C zLbSKtXh;5fqw_Bf(#wF{4>IlT&<|k?2Ppe!-|bC#@@2Ojp1DZu9}QGfp!POv-KyjM z%LpEOs}Sf1NrqUyW=6}&i(&Jjqfz>K5Xmt@PEZ8dq0Fv-|L+XYCRk6dp!2;-i`KJMF|vW_@4R(SMOJc|4ucBm>X5~ZH3pM-ECAum#IpfQsZ!I zgUT;f)oS$}g@1+V*n$0#YMF8T)w^Wu(=qJOxm~5#U%gw7-GvwwQNOFeg&VrcRz(?( zzj~LfZjsd(4lLr7TTqGV=59s(J*cAtMnUoWQRP+Hctd8d@9WoJlVh*;{B_Y0uYiYR z{}=V&$+Zu=wj2C1hTc}B#Sp=wyT>VyF?h}x-2EcpcSU6$97Q((D)#ZN49|6RLrf0e zgTV;nNfySY8Frs}1sjCzuG#J=O2`quF>uiF=4qN>_g*GD&} zE}m4zW2etVe70OT#6@sSjC{Smi;(~xbut5oF7tpL?Eba|y9zN#lpsnKl>!WB)mX8Y z!2<~mJfZ|>lCkbz$x&5*_@PhJ5L1#;lH>#@Kskn)aJ3j;nm*2qFZTog4d8WvKc6-1 zhQD#Z830Oq&S#B(6!P3r2M+vvHggdiqpex9$X!p}O>+%=%TixI!R^(@d%ZgKmKp9c z3#Dgh3za*Y6zeL5U9E(!Qotlr`B0WWlOYW6qX+#<4t^pR|4UXrAv2@ye)KQd{!+%Y z6NW3AvyAXAYK%oN!lou3>~7*IHHi7ZZ7v76EfxE2Jz8o|DMp1kZtGKJc)?b}FrE;t z3s&C_ukzc4S%g?HRRPH8J=z6)yC7r@;y#AOG_j#Z)L;1jW$N!l;HLr30{HcJ8E{IQ zy?oF5b6?`(>t_aXewem;(c-ns+gfSe(wK%?su*gi`|P8oT`Hp08$lJ*w>Uom|Grp` z#KjRvME-S~aEMemyFI#%zh>xe1->5eBY;o$M&Oig@bbRs9_V!%O=D9}Zf|SF*)5mu zV?lRt0=3!;nDhk^?he6Gi0DBRp+iUn$cL3b+;a((dN1{2a-$|(XcJu>wW9u0f6M5P ze+c|ez*d0A2X)Nfp(6*Z22gtA#qDms&5M6F<6&VZzvUw#A9Nkwk9Icx9KMHK+QWfW zhuopMQJq5W^>o?I#<|xu?sb`a4N}mj`|Q`%>tw_`yh)DTD37>FzFUztYBfq;Ag(#E zkVvo+D-Y@)J)SDRtu zQ6{HwJ58%r4Q-@49#F4MA#YQ!BcK=>b4(dQCB}&h1HQ=Oj20(zV6i`q52bSz2#b(} zKUea*Mt;%|qza)uT`y+L2*mBIz-XH$loB}{R(J)yRpiLnK%I>^iu?GMm9Pjj4$7sAj2=AcK=V zJkCOxtw@1YgT;lWnyOGGjYIIQyAgs9D+Y`BR0Inll?}nuS?H1E_z)^Qd5~=3{12@) zT~(gc)FAlS3I2rL9tS&@PhbNFCTn?Pl>0aI!ANR-jJQe*_Xe-;NfQ4P$<>8aE zbf!VB*pno>T=JEBl5I*2nxp}2Kl|lnL87!q%N)ZZZz$1T=XE5)k)X%~G^k~6X<6jxOy59ib z0r)e(=j&;o!mlgfB><&8`MTTFLv7hK@N&zPm{U+5^haljx#Tr>YejT19dkD-yxf+Igh7CW#jv01hF~ly#irvPF zJ*qm?4y!SeTUkn?dqv)UfM|CepJn8ZUBEvD#6HioyXC;o1Kb6mwCDNMGd=y!2df9Z z-Su+Ugcx|+5vY)DU{5fz!@tkoC>qKik@e8eOq4z_iXf6W&}u|kwP9ST8&~V>Dt*tU zU}|Mo>!)0$7hkQbSHa)s9x9p-;D}Jwv%>mydiY%7lKd7Xmubs*T(1+WLa3L6nuTRm z($l_>?vK`C)$9~FXHjuh$k)J>dkPpFYlF=q4HurYY@20hy$T--fjtiky0}~yP&CzX z*FsdaS*TctBxj4|TZ-vdXy-Ulp9{ap)Mx&e4bpJHXn-$2EdhQ8;9>x!#}|uw+a(FP z>10pe-#Az3v$u}!azEFveZ7bL)UtYYKMy25etdPyVu-0YE4JJd(+fAt&#)V0wpl)l zyV;Z*P*wNYTNUY7W(_$Bt_dqPJpKl%0(=q=YyX6%tX_v&IuKKH@HkhkLKjC|8NQn3 zD8<-r$V0$WIw@SoM>@mU6q*^1glojD1!@Br|wfTsbJe0vZ-|Cv{> zzJK(7t&X~BU@w<{Z1Glk0nxipl(q*J-X6tRJWe^RN&_UE&}-D*cHGj z{nX2A|02dK>2WW2-(tURg1GPK&vORti&n33w}UaXOkKUYZFOa}o006&#hzhwdirPf zM@&i=@!zFaulDz3F{|YyR9bPD`fvFym367p-ogNWzx{jo7=FZ@zSV4ol2TT#WAgAv z%;@7dF4RDr#1>O6Ogi~2J5i| zT8L>B+9?fNGKOlW0#Q3V5Le+-S}(zDlEfn0fV+AXVoF#}$?hLO{immjcC$iW|h^87f(4gCDzM3xw^)hr8Z*7*qM@sc9%&~E!6jlQfCCezb zouJC2IBjEMQ3nW(bJhE<9|CkaEOu$FCUPwFV5k8B46?R`T?PvFD2F2034^2!Jb)*m zd~t_UR1nM$$?ney9`Bwe_}&G6R^ZVb7|3kaMoGT_YzO#!PwAtig8|C`lxlx2 z_`R!0^w))6f2}=O-1p1)ycgfwx?QI9Z?}a@S+8c-wUY9T`q~ENG38=~ZBSOa*R$Eh zij6M!a|WH&A^I5O45qgki*fTiCT(H|@+O|6@X6{}%hJMS+zB8m_=+)W=fW);+n~iB z)!?Zut*&cZT8~v=Q9xa+E`{^`LDeG;;p|~8_G>NTxCSwG$|>;pGM)wWh!IgH%ENTW z8fykDY^>{gupWT~YE?_ARwLGIGoodYk?zlF!F~t=+aH64W)zy3#kfC2SO zKE?xRIi%Die-~7gnRzdxUR$Gt`4H@nxjsbHAr`HF zBbv-ic|3Nh%VhB>sr?Yaw`FE#{CffTdw~B1_$QnAAS)Prwp1#9F@hwG&>kmBPww}sV3q%q_Z^@$DzNPgBZE+nTR%?70M0g zVebiBKSsj++1;~5eMq*bkAt8RJMoHWmCFKGro$?34_ff54e=g4( z7k6DQv{+bF=eBb`dff*Y4Mz)|;;6 z{X`z$At$gKVe#xV6K=K&F&04534f9mv zbcAV1z^sbhq1d-8l{z_R=LTXs+@TovDtEy7Q4Jy@VrNfDu5|lh+4r5OC3uciU^HE1FARRUc>lE95tP% zr;NCsXQkN*daFsssxSgCM4J1+;ePduKV zPK`(wr!2!#bBuBv*)GL~MmRT>s!L9@2E##=8LUelo~jEKr-u{{4rfs_zhA?gF<$PUJJ)+O(SH&EfvgOlA%--0cm4-QH0EZDAy;;z;mjh3 zVhN3=4M=(N1q}8WR*uC3MUenRMd%>{<#`Hu@C}&hDrVc+m2xr8C?jfT%E%tdC$my0 zuH*RXH20fo0A@J0QsmT{k$852d^o*>5<xj33=Y~c} zZ2-Uj%?*!|z5cCq;4g z0e4kj)!j4GJ=f06?#}M)eE@sG%5VtFDI(}{qj&&vDk36Y(Ii|V@m!5j6OE!`;th#L z(V%R6jlm;I4vkTxL``B650YpOlbG*cRoy%60_ywA@_ygf@Jv;oTX#M6)bsqGklJKB zbfg(m2OGuc#|?IUuYTM}>oQA9vE@&5@!@Io@$z)Sqi(WV^m2Z8u2EK`sWrG?TspL5 za2cMd;p0F(f1)%|vc#w%Mb%zisvhq(R5v;e$#e?u%}F=Xl4NoH(7J|3{LSWceX?#~ z&)p?_+WJTnoqrQW=Re*UOGlX>6Rf?q5*uTJ^FxAVQ*C5q_;(}{4X-C2E=K=CVlnP| zstxOaDCER0;Yxf=zd-U9M%Wnw*EQ(+ZW9(?!jrTX4>3I!9t^H73@IU))t(Lyr@JH` zGozMPWcGA;`1wYM$2*nc*|fUEh(JrH5yOW`24Qr!dcA?&I;XlA0>LQW0Wtsv(QsOw ztCfMRWL8ZWTU7`A-P!}bqU-hY@5U0*C0Z@djg~aAUx>8s_ZMO*|NC>0n0g8l{K$H)_;9C~h>oX__> zCdZr0-}U*{Ble2t4(Is7=l1Q|zqM@|*$(3k5qv@Xp19v{a+{dfH>%H?ldq@wx2<1e zFmT_tu2q#MwFzi_)3sR4j$+y9U3eFne3zR4Ir@7G%?jt?DjHcOnuz`r&3#529fgM` zI3qhrJIOrB@~6!;bOyMoDcBFMQ)}TfEfP(lZ?vFq#M1fH?DS~2%)5{BnQo&BUOBJ+ zngEIce;z#*?NlfT7uF<<+{gD0z#d~nNx>CafN!D`kE0^k@i1fyXc9WKo%y^3&-VVj zG#jee+_SPTSHPQ?dwsoPEKz_I!7#E&J!Aizc&dcT_Lj+Z@J>SVd3#_BGdYQMF6c|3 zpdCDmxL%Z3k|2IuG)K-ST?=J9_`BZ@-u;hk2lM|A_&ndnrF@V2r22wN_NZMlxP*wa zqhC-tWA`E^lc}NsyeS*NCZc?(O{AS{rcudC?Gqy@Sbj99aR40Z09k8&l}trr*rdzG z&;U5hp2o02cmJ-n0qa5!7h~kXJ`-Q_HEVE)4fSrT+Kxl5d`5Vv*Wh-jwGxy>`~QeBKe{|SFMokU?1u?hb!-4Jm^g2 zl}kbY1O@G2Q6{e(QJhz91o7jYBH8~3z9{|At@&8;8=bAPUCf_%IQfkgKDaL*5xVu) z^<6sY)~{7X@RU6Ju?+qqFaDN_d-oF&n7ahK@rS;wf1`OE%LsRZt66QpY52>6$>uZ& ztDuN$p1~?b%Nik<3>aEYG$(_D=57d20(mS8zHxP*_fJ-~>sVE=<1tYgaFB*}L+wOt zlwEEcQQC^8NHMAm#y$f)`h=e*`f~L|^ncrYiKxGT7*ac4Jpo#pDiBp7G|!Hr<87@K zN)1iu{?u;$n#%cvZi6@8!jeNQ7#=fXml`>0MaU1;`+9l zx>}@er|6h{^7e=x+o~7aY%}q$Cg_$YnDfxR+IYu=gjRIS^@J?MgsNgOQUe3GxYdqz zjqS8X8p3&x_tgdsyh<{iPNrIlolG(^EW9w(K#sH`c9~_C9#s-9HKIu?inU)$c(4av zsG`@i9!xsK(^1Q=KB_7V8<()B6}2QA(ls;+&ZzL+Q|!@Jsm;Hfu*`u+4G0gkDw0-9 z1QH}IQZ_U@IESyd?*H|#lSr0}x^`&TXexuCU?bJQ6Y1|0BZk%8ab^Z>gt66Tt>B;D z=ls*;$h5E>vBNBKM!3?ON=HQBCowmAVq$VUkuc*daT3UjXQ3gsx(FXjy-(7y)X98$ zI@Bl>=A#gHv@hfKGHAJw?J(@Aa#^bfbTTy#r+`?*ViL<_Abx94IN><4)m98u`2&V3 z!LOvvlvP}m4LC44wH20J3&HDP%7a{wXkHQL!l1TX6@eO1h=z5umTRnO6_8+5hZ=wb zoWq*e43|f37hYg{E$u$*??8)+b8Gx>L9g5+o(I4+@z+`-ENa?A#9wOm|56?(#ts`4 zwgI7pcLJ?BOx6D1={@uo@^gyFk9|a>6&_!lQiB{3!rrv_J7Xez?C71Nkx--4lSj6c zCQ_{j8R)Ig$Q5=#vV4NV(ftKEzV9xTN-nx;;E z4rT%#e70%AVUgS8wg_$Sdt9*aoH_hiGyj}9Mf~E*jOWY>WuFP4^w3$aYMpygG$yV1 zrk39Vn+?N0@(wM3r$&CK&UjAsip?yVW;3k=8bT$VtXH!P&662gt2)D|gjm<)`_0(T z=!Du?UY%m(;m&%T*~)p$B$kqV(~CjQn1*7DaC9x&Gna2kjTElB%fw=pZ%}{_4d|HhQDP@iu7f(+xtRT3IT&CY5hYy#ogpZQ ziamW2hq@VbY6X@gFAL~z>7~FtcQG#H*8BOd%=h4=bRs?nG!GQye<|YpSnY@7ecX-i zpULq-+{91U9(lg^Fy#N7m1wf@Rg2&m;vwhD%2t*|wkAMK%Jox_;cDW;`EXCvyrFQN zR~@#7xWC2E=U${=<^)FBRe9w&(0ouZ{+)&R<)9lt{OG(|)^p3fGJM&`i`@5fd471t zKe0>MwB($Xr=m;H)T*Zl^o37`y6{8JfVV8H@t=`PJX=}SNXfkXiQIPUxOwggVm{Dd zm>x0V;@qkVIZljQQo84Gfye-~jAsZ0O8hZkBN~vFSS;=&1ze(TRz)BeGWiSGTaJoX z_HB^uBV8So8hn8w{w2_QP*83c`}eQ(!$5y02t{Gyr(f+s{C#5%G1#P{~cBrcA??+%?Japi|TF#Oqc`2 zu8vK9{*fDyI$@9HAdEPx@uXygiZlwF=2f1k~*uv~1yXXgm>?0#Sz<9dDxk**pDj?DzaVud^ z%XkfV2}ZSUns1qt$2)!cM(NPS%*a@DFns zXNEXa3u|MjW`{9iYlPbx@qO<&ycpsW{MdJiY!BTipSkjql5PYK3MvN$?V%EJehl!# zm;LolU;M0o8^`*TUynEI8WdTLGQCE@9L~3vY=zb!UAfINADfZBARlia{wCJY&qwEg!uWI-;yXaQK|wzDBK}9vUqSo`^q~Vk0xdzi zUe-_i#(wp|m!11H=q+U0Ere_#=iY+Kc+@%V5>~pIO}&Jfo0$t;*9t9-HI;58R5Gn} z`qXJ=r!L{jhhTg9T;7yV!%A!_nx)GZrR7*00I^!HV_Xj@0!gB2#-TF}l3C{bozl-wec2I&n#aT7nm`C-V14_t?FSY~2-PbTnp*ZTQTnhN3$fbHweW|`~>HRAs_pB&6XM2v0p~E`1#m_^mY1)X>86bLqNko zem?ZEi1TBCA1*sm%J(m7mZATuvi2l@J~^SE>~{C>e`1#GnNiBS=_Yj-b1k*$8* zVu^J$(8oErimq1RJcqA$UMBmY(vnv;``v)8*UgZnBM%?R2U5T_b*P-TzV-PWWi{dqdenPNuPl5!MWY zE@R8WHa5y_I*;8(++~R_BFpl42zuuN9ghEcn3(3FptE#{o|D%|#2#eL;*)MOJ)U+z z*`b3x4w0?8T$=>NC*bOEtTexjOM#vQ4QO1`)W9yP`$}2f%UWf5^1^x)@gIVAgLrxK z^~SUQ{g?bO=ubf?3K>7ad4Kk^Uh9p|hHMu}X}L<~tD~(j-`#}x?VxXgf_&YDI6uDY zhlk=vgLPtmt~d7UdSKte+DajhR7YMrrms~k`IZ=G>Ku2P-Du>742W7WtVKz#&ZIxeOo1r(xy0h4gR9QVes zJWYc|d@)=p@TG+*z<`mD`CYO;y&(m@{4~VR1zijZ^4*2_t)P2B{OI!a^mm>v$Aukl zO1}Ist}g;sEWDjuu#J%IWS|mRe76(5%Zc9YxOX{OMO!>KIwv~Uos$KFi7jS;V}ZEw zTb-gThE*%qK@|5&$oV20O73bu|LukRpN{x>piQ74|5qb^8|XgJ!Sesy;m>~$OZ{mD zaBOsH^jLT5=PrP~LH>^@wENQ${~~A|D9HcCi1XuGKTN;#yg1+P``Z&I_zC)Re~wfB z`m$#NP3<8Uyg;y>Y`#G3Jp@h}cA))(ltxtgAlNRaR8!6I(-P8xNwAFIL>^nNk@c+% zE$}}J5kDRD1yGRRuONOU=<6VU^c}zU9@hHi94TK=_p&?=dwD?N6f2Q|_d4Nw9QR&_ z-s2Q0+Q6+Od^>Ts5_&tz0D#}1?tGcj(6z4WU9=)Jco`X0)7W!ddJA41t!_=>3zI!@$ykjD)R?X37hpR-+Q#9Df)oM8`J7Ju{qc#EV znp(p1-EpmK&%2TCAb+(Z^2#7kD=5fcJL3Ep<%fOyage{mfz!O-j2&>Y@yrz{f1JueJ#|S^n{pxvfeuKZSFHZ1tnEEeY;Waevzhv2>UMo%g zO_=&`Q8P;9b*g9}1+cH!%AZAI+B8g4Rr10RauXqlcU&*?y9N0O>ige_d!zD70uRL3X&iJ)bADd6I?{no zT*otuqvHmd-!9}M$nUoizaR7+P>|mT5$DHaet4*Ue66qFA=|guznIrL?4+~TU?+U3 zSPIPGOM#V&wvulbjeum8Zx;#dFjZ~gO963g_tRBBx{$6T5kDF<6%?dv8shvo!4C%> z!awM~%lq`ZUa3mWU&l2RgS@U*gt$6*Yh|ekogt?WPTAh zwygww`A+9es;m#-%VW`4tq)+%wX&dzWk*Kq)d5^NHowJHfS4zH0hf<}3iA;_Jzf-) zpsEg5Ywes~q>ePA*e?cZIe4TVh0(p=kmZ*iQz*al5MK|v1{9RvLx}GJJp5O~YvYxRbPh06{09^iB09<~h00Rba`4w8^8ZNrfw6CKD{qKOw zSKTPfCqFi?OcFU)lqut&KLJ_@3d*NyJl0X51t5L|xaIr){=7W*aV~R8f6BQJQa&?; z*>C?g-+o3e7yLnx^ght#k4xzC%MA`)zSH^8R{l(;OX%`_8vBz*{;Wm*q#XcVo&Z2+ z{Oj6Z@9yUY9hQH9s+oHr*oQU7EAqBk^a5q z{Q^izokAFj)PR=U^D5%E-;{2%a!@l+Cf3Ba` zH^JnzUsvas4hlfL69B~5YM&Q?c%Pr|&B#yCem_9`W6*y_S5=t zkH99i>I1H^IPgr)wm(jlZf=w;Kw?w21&~;HHTFSb^@D=MMkGiqw}Pzzc)y{2TL8og zo}H_*!qVK(CSzI;;9=p0$cKmZ4FS5pEz55Y$|YF$v`@_|V?Yx@LHS*ZI6rRp!$Xx{ z|H=mr(SHsG5WCX>KTJ+BH}hS+>>sMW zQG*ivg8~uO*hTaw1R|{QKg4}c_1=}8XAwG1v;eG6#$a{V8wfTk z_!o()A2G|&?_iDz?KF?L1vuCw)YqEfOkMIaro~bAn?e>8?O~-UoVLIwg=6f)O@L{| z=~y3WUo;D)>mJ#j)^--g{of=0F(@&u(4J01{8G^UAb#|fORw?y=YGR~?N!x%=DS|o zFwn|>dVc`eo$${i*q7fR5L|6SaJ6HUSI__g0N4h`uq?YtBR3vU?OG*VF&rS0boag-!3qv0RSu@P{`*5fbG6d z*5};mh59U?0h?OT2#`Pi>Pry67<4s=AARv(m-%v&0RMGuzv^`!WE}1v0N6vdn$L*< zyOSfp-f8@Q5dn6)tk?RPg?V)?;+KJL0R{8wBZ&V1^c;vEfu2ebZuRRm(0A2537d zD39HUzW{m#bg=U1I?Uy9AOP%6XX0G}0PNi+z01tp4FK5Z3;@7BVh8}(9R_{C$UJC# z9st;m@5px1F_tj~~H#Kevnh0bujol46yj ztqLqDh88R-M3kpvyPvQ0oI?GcgZM?DwVQGq-z;Q74G;?X_<3aYRCDmxegK4;Jrs+^fIFr_3wWw$o z@HW)}>Ocm&bMCb;X4~!R5wMNI;zNgo2H{{82GRy}{O}oFZB|?0@kG^|)h0$OAuU9) zMn_=_&%?9Fh6^#w&ehs#O!^rp{)fZ$5i4BeX~4JRlr=3#bBgR7j0b9x8P8#3T-&^r z7}-Q9lPpcsoS97~jnRoPY}or;Nr^9W7_cz*eSjCFx%ew!>qruOo(}VO3m*K;NGwxd zYLyg~Y1t^JQtpHl_*~URQ5LH&uTe9e>1a8CZUz2Ccu7XtPapyxvxs5cVDRIVa6rC%p*bOzNfwg9Z zBavj-(uTo`c#Ss_*bkMESSGE_fX20LxJnD!4{up$Nno%=ObhFcV6*_=%H|I1`Dmrt zj9P8hPJo?v(nj^u93XKPI;dm1coPSQ>pSQg@nu!)`K4mP+ttobBtCMoCBxPtz z(Rvg1k-fiAY?g~p4@853-7Luh{8tO3jsfG5SCb)$1fKzbX({*YMp}Uc&ZUbG+{2Xv z`b!AF!2Dh0AyEQ2byRiOB=l+#`vt%_D_Rnc0lCK`g{kz%c` zhW`Z&J^*V}Q{gKK{IJ!BCmbpfW?-a?wvc;FwyQf&Ea1d_`y}Akg7$#?cBOxWc;e)| zG62MnmT6MHo_I>OqrAU9nEz)vK6mu1o^oLC)lY!af{XOO*`J8hy|_~eISo$)KazS0 z-+Qmd|ecFmW4||WX&6GH#g;beO8solc%)^kNwsu4&RCBQD z#LY(Rha7CW8DJS%o%^yu+fp;A;BoNz3ZUumI4)yt!FrOYrZJ8zf&Y*Rz;zLuj?HLW z92Bfl0+ngHnPh1oelVh9Y=!NKn!>cj9oPUa3}^^xReVj<^WMj0`{+i!=fo9gyq%I) z+CW1=!MJk*;{3SS54ZeOwvSF9=h%N$*?4n*$|L+bEC6_R2Efv*uHqh*>OiHS<}-QG z-=QkgeNbt1e}GEcIhNE)9mfQ$bhrj!r@cX?ZMd$)gAGnN#P>4*DIIk@A5uEnEQH#h z0VxfJfWbllJ)46)Y0LzoHvnYPs>^@|2Gnn$fJ9Um?wnjzd{F7?mgU_tUzYcK&`j8e zxVa#&WI#cAFGc)j&|@Hek@|bVi_#pxU1dH2P8T?wo8q!h@BkOVW+^|7esuwIS(5#15G3LH+l1ig&I zNsrbVX(RQ3u~2J;%=XYw=K=vOZ4mg!jSV(+yT!6um5ZME0RfzJ8KA!ap)v+gTMJ+-NdOt;OtSsqID?329;Tf*8!eT)@eA zRx(s1pm!a{0j51KRhEvVxOGGn{TY6yRi2TqCuO_Zyim5QQYc3K5pi~EUI~MOc6AKm z{5abW_g2gP`p(n6`Owh3!@xfjDqXfKABY!d8eQ58l81@%{Ml?S@D#7AzViFgb9}HcM*H*#+bUaqT7-NAZn~cpwB@c-QR4SwB7#%I?@IA|8~qRC zBk(82i{^~$Y5V)usP`=QeQR;=)9LS7E#g+>ed}hbd_vl^tmcIPnA}Cx_lN<0FAWx` zx(m9D&ee1k%y(_$N=mLFaJvLc=%hr(4XLFGhYpFx)MkKmaR{)XC5bXXn3lU`X`059L#-o1jaB}&bQS>6 zIkPMk7tcgswmFQ=H_zmMWHngWsqg@EyROZk?Qp~B>Wdj-)+q3~(?c!Js8Gb3K<3kh zJg0m^UE-KRT8tG6*k1k5gjG8bMskp%us+Gia2Vq_wuAso!gSziu~@X3#Z@4g;u+p> z3%FB79G5f^O(lT8ihFU)P}-4wo@>AaDey~sKj*oY#5c7P;Z(fm{fNM5A7)eoGKkT7 znMv@QFUaWN}$m<>d z7wsMP_UG_54g83_t-Znhh|CwiBgF3_@jFxe-b3He`QY@D`XWaUZGPX%zh{Nsx7O)O zH=tEIY1z-=B+7Y_EYf0t0*@rtEChmR^KP2|5e+>=XN5-U94~a1HtTtE&aX%#ASCtI z$--X|_BzqukZN>o+VxO{z>GAUG-B{80rYmARU2xGM_Jwsv8&}7LVSD#sG(UG+~=60nA48LoYtnF>0?QD{9Lw={Bk)@ zord;tJ>n07o(2W&!#WLmZ=ks#e&jxs{ASQTy8ZUC_Q&#i_wc>qxx>l_$)@qDY#P%< zLm1twIXu_X9EOSJuv1mu;TZ9>>|Wj+?n856n6mBAnz6h&yhDfmj)q>R6Sa=J$vNMX z&EO%j@Oy+kMD&M)W&r$k*$hhiG=pJi2Ale{0H}9WkPnGy0mIM&fN(?8+q;bso}1dW&L`m%ldr>wQ@G%8$g>u0Uxpzaeh4P zhq-E5k4mKZe|o~Ftsm1D^jYgq<~56yz-QsGUc zD(+*-oekZ)kQEDM;RkoHH0wV&svI~!vHhn*&;+*%RtyMpMMi|w@R1(J-e1ac>s%qr z?QZmo?;!pXNIj#c-1H5I{|r>LQkLJnXUXw#$R%>z-18NQv-+Vg|H&PWb$Wr1+aF-H zOTSTKw*OLMwm%~=+lL7p_e*iYi}X=7dQ>bPwPSj8dF+H>@RYr!L)|8;RP;PFFpBnmt>ewfuy(rutUiv0hV$y{d-3 zrP{T2jRsT^@%UN$J#H@3mo8n=X4z%7Ry$K3{Md zF(WK)+TIv9%#x-P>!3}rg{w|RW5c2$c7eESrpKhhX~PZUKE93R0+tc>1nbOL5nnXC zK`{S6LA0Y(z)*50pwO^fuAX3Eur`OWklA4$Wr;i3=hf|{)(Sd?K+6sMfaD2shhA9N z+NjYo2AN`RJ_0v7Sg+nQ(}Cz?hFZ;8g1hm~R3yh5I=W z_`t;xh&)A~ha-ZJod~{;b&H<%zg{E1ZbpQo5X=91F;*)WA6NyZJ*$ilcR;h}4qe&> zv!EkA!EAtWeXnfy9cRjRzXR*xt%yGedIS`V7tbTkkGK4=g~)N?#A|x5Tlx)m^5Bcr z-oTTU-P&F1E{$|+NAD7g)h(K`R^zSqQVO>}ji@;qIMG;2VMR}8JLBORV~AbEu{;ij zqdE|diBMITWcBetMI91AFn7Eu%W2grSx&qxeunt(LB?4<<)jZp{20(FAb#}4Pwevb z#RL3ACH`yi++iAD_XkisIBH@yP!nG?J6|$~zi8%PGN*`NT$%9_P!k{31Zv_Pr1NfQ zYyvfLY5p{UnRsS?HEEqu^#32c#O-g(`fFKTsK1SfUkUmuDByc;L7X4k{qVE!66YU| z@%;e6#BL6lxL5mc024*7U{~`SSq}NL3;KCqLA(oeEhs35Er|2u9zXmn+{Cqqqa5}F zPV5G7;`>la{Jg-4`}};S*A(=;E=2rl&~>0-T>CZR{3tm`hVy+tzI!k5*ZJZufSs>A zeEWiOKj-Wo+{E%O^?G)dO1jh|#BcN}NVXq$zG5j}Gt5T~!a_q}>2)-%POB*k-Vjd? zwWpZj=`1}m<)zC~EUlY!)lxRsY%c<)By9&?cbb&~MbRA5uIhPn1V+DR;Ex*y|Ijp= z)aSxyPZku00R)^T(4_M=)tjIt6@t%^`Xs#n(fX*Jz_twE;&CxRGCYk%F6;`pZ$*YB zaEL=C(J;dnQ|7_W89 z#b0vmO4~7^sD-mKY(!;kl{gT)Gcz8oF4Lex4a2DcO-FvSCtf)Hvx!Pd*# zKgf2TJGX#?uo3ZVLHC1#cD@_&KZ5=Z;>XA@%6i|Nl>2(Cd^zu)Yvg>l_VBKAgnYfw z5cbj!rMI^%clO4Gu>r?6^gS#5zNNlr(f7gj&dt+@$!{rVy~dYfJ?M-JkH;p%SW(T~ zx-JK~TS`z03{@>{N=1uMXqn+$Gy-8NSRhDI!&nAWu5Z^2kj-`u*@jw$(?-=r=@x0Q zO##OQgj(q0Ni-gQg$p|@cv_Fbc@oU{T=7Yz<6T+)H=HNSm6z>@i2nzqp5Igcnt?b! zTt5u-CxTGi#83a~L;Lc!Lj!Pj1AueNrvY$w`}sTHPd88JvxvV0`Xz|BFRnN8nt%Uy zei-B{2>E;b2+sSJ59kGm^ZEP+cf2R-t@DC{{@ZrMcYt<+f_!x&&W~sOu&;isxQU;@ z?s7l-)qc&Q=rF4x7)W(KMUI2H={qnt1wsEBEAOE~d2~NpbZiyDA|1@QUJ8%21N_Aw z(%JI9%=e@(6!QHo#J>aj9w^B7BZ%|k89zLfU3%azS?0Sxa5?v9hzq&ySPX=Lli(&i z@-{LKLdMg8r!GOJP149S7@+2~z{_AYP;&syX<-p;aER$3Zu7M>KXM<)a+rHzL0&pL*t^#d69- zwL_8SBPvv9&KAFuxdP1-&Y%sD?ONdfRbp&pWCLRxVSe?2)w0j3{=iDSOIkMq9B^SZ zwRTim9{B{D8dd)^oU1CZpYVxg{l#MUH>r0uVf&F1c%FXOCEHxgnszNUnFk@n9Rza| znbtDBdRpQeRrbK;Tea0Dtn z8O+fr@k23d(ju=nK+CTaI z{)-Zq;5@z#MEqk=`lhIe@Y* z5;YGW;WC2C$L9YZ<>vp(>MbhSqW+19;0H3eQ3l(3ojua)%zq>)UV8wyc;gwdfq5HQ zWCOD|vdRsNY-Hob?|Lc&@(baxXrJ{G`M`4bS#LQTn7WbGD4WS}n{@NG;<~n_7L)Bf z9;fO1U2>nBG-@DsA~(C_n=T;Q2zFEGO(Zvll6?{KL1aC7T{t#+jx1EO!l}{VXNh|o za1@M)8cAt6L%WGsHxbiL*mw^o@Tbfj58Xsm@xQJ}U+k$-JzW1?SH0bJ9RS9Ufk=fr zGHTYkA^d>)ejObP9y&tX!49OsmkrYgGoWslCo7W`E!9p{EHWrO8=&{%NwYS1M-Q$f z4!Ba*_lp1QTywM@f|C)`IF^sXBOn%W)rbL4OlGA`tnne@tfvvey~n}FQuHP6`{XSL zK1u+m+6+~t5G_N;;CT3Bps%BW%0aqMrFPhAgcG-BoEO1Ycbuj1EH;4!QXqpSj|t^8 z27fEM#pS8O-x9QVxX7@2%MNlq1=o0RJN3VMe&j)( z=ifQh_YZY_h=-l(Xok6=P%31Ly>cWQX~94sTpo*l+WAk}zgyN7a7Q*Heh28!pkQ3T ze?9o+4SD4P5I?%kl6>&y3uHL6Rrc?Ff0X0;+97+zbN}_Yen9^od*+!dcpvXle@VqM zXuSA+L#~YG^EJ^E&Sr8wE5Cu2ZD11$!~MJstb8NOUC*2wSmb&vM^;_O+^;eBI;MV& zHIt{*8`$0G!`$oKKI=L3;lw`6Ro(?~D8ae+SBSZx(w`gjzH`HX z;k06V1^t(iCi-{kb8lc5$9x^4HvLs>3c`g_V%1LKexJBIiTZugTn<}VeqGmq0W<`< zK-^zg1f4(=lp@qvpbx<{-LUmxxX*Q1uj)h9r+ z0d~5WtWE^M#*Lv(fed)op{x{Cg!m8O01^n$^>iQ{2u}EEbHsFkq zlFfvcV^@OEX7paJizlWva~>w0EEEhKB)|);3cC>(i_&HoiD3`TgZI7Ya|HesG0io@ zcA2jz82)5}z)hxMpKx101rk_2Rs8Ea(DI&`)1MylPWknF8X+<)h^M+me^z){T1It4E37|B)y2w~3D04IXStp^H9+)5?wPm7b}zryE`i zG$D?$(~KPkZ&OeAiyV|SQ}4iT+vW=JU+8~dsn6+lTK1KrFBfy^&9tYle3K^DqBr&Q zl`vhTCs+hkr-K8t)G=^JQerv0uh==qj>x9ohGsq(>t;DY4&)Q0SLgao9aAcA=8^rl zx2L%5KdZh%LYULS&yh$XTxillWRis2$_V_3C1}LL-=~AP@--i>F`02yK@9}32W%w3 z#WN@drEN5En4m@NkP086XnuTJ@|zs3=3BwIUTAU*+rn@ngX@+TkM}e=8ygT%m;evR zn;hR3;O(ZvknL^KC585O3*t|M5}OO{?MH}LeFeJFAbw2o`MuEXKNsh3|LA2ADv!S) z!+!D$bRge%wD14~b+s-{_zAyE1}nwMb<%~nJgI#H=4DSfchP`fh7j!1lS$>Lzwe{ zPhn5reIggkBGIcVpk2~;7U>wyDjv_tS>*e5jZUs)5dXsZ2>-(U{0p!2d_i=C1HMp? zFTCV`;b-_ljicvED^SC2vDpbBS77*zR0fEM0NW>Y=n=}-vPb1>?xG2-y)mawB>g8k`( z=z60;f!BuV1Al=JGv@%sxVf;(&xJY;OcF4_~$mp8D?MwZ^d z=87((@fG)s4XkM+yghDU(+mCRZLFU#=#SjMPVk?MY-Hu@SY|z2wt>}dWJT+MP*S~- zwe@=KGC5bA_Y1T0dfK+nsuK)b$7g<}vDa5N$gg~e83&&kwaYL<)^{4DtQ$7zF9I#MRcq^ZQ*Lbl_EUJv)J`FR-cIB(n=ny<(T=3ZjPI1A*p? z8kV%tiko>i_QeTbuhSE?aK$-vcFEo4y~dCOq!h1_qe;!k;r4|z$0}YclT+fqYpd)u zu$APywf{7deEjKoH~6y#>mucAV~mm=8Sjw+Hf;rDBbJwUme<}<7Wyi&uZxA=595=? zME^^zYq4C(-p@$Rx5z9=J)GCeWkNox8A8UL1?Q!0H)(Y@YKiOAx;7;2na@nv4pRPd zR3_}|Lc-P_Bw^3ix z>tSEjV(YcWJLTUG{kpO2&t>G{7zSnYoeJ%$ayn7{D$(CAul!q?ad(v79&NnMfArPH zvUhtuYFt-d`KK~#Ym`0^wY9qY{pWtySoZe=p8I#1wLMC2jYeqs&Hi)0Xe@i@fal&T zv$jOduVEeQ-bC1UNQ2zdUP0jikVWC>xR#axEGPrz1MKu@7pMs@>impEG7c9yofzY?Sa~#)7#}|i2o)toqce%pC|Q#nS>(W6Cj>x#F@>ZC7uVG! z!1BA=0ySMfri#^;*JSF)*YUTetBIy)!vh4LZop?Nies^0=4rs|(GlrUaG2TQj85VM z3$@s&^pTrLM|$)Z$JUKmN5+?r+YLnu_^X55D~(+Fi8R}fKNf18YwBSgxP=9vfA33qRJ5Th|4o=^?hC*a2ct`%MItX zb<(!Mbwd(^JC5k{nPKG}_{^AP<7>wib%@UlZJgNWGe>VA6Y-g&J|vxR*gEYsGCek} zai&E>v&!ajW)ZeabJ*O1Kc#G;ygqP&buvAvbs4TLFI(YXJKb7FmkwHu zYiF08>t8#^T5X6r zVi3}Js5A?&yCTg+4Sl@s!mT_w4Rs;7E4~fK^O-?8>XFj0hQFytLN3HVeeR`k59^7D zjeFepQrI?O7#h6Ub2o~FVrgEeFaF)0yRH$ju`~%2+rj25T7U_DPVhOavXal){M7=V z^9JIfYxByTpkTcky)Lh0ug@!A1M%bKyX5+GZz=b53;nx^zZ9W&uHF$b<6 zrY=~8)oNvT_>su2FzF8eMi;^JL5)O~dCGRNZU6%$vlhel&YU`bIStGB>R^FI(c4j3v@T2NwbX28Vp;wKe z6W0l^;rHr2v+g~5Y`rm^mTZP8r=uAcJK9_}N7wS4Bk9i8{vfN*X7^)=(;Z}pJ{oeb zaP(`Oqe>z%?YA8zWg68_P#bW+DgxRK-_x0FxCG`i@l~{ zl_3SpCZlJ;KDw6ZFFRGgvrErHTW{m~5?TqU3`>>4&}!iNW7XJN=e}3CqiqI3K{*EA z2~Zba2{vP_UIW?sU^u*~geR5;mZTl+iF}j{fwsc2c>2p&h@1%n8i4B5jcLp|Bh@W*2sD8r3!XnD3|s6971 zBRo4aYvD|9jxjeu%9b}Ia-;mW(?c;~$ zt9zOlReCL-^m;T;#IypX5bUyv2}Z3l81#cRSO7;M@z+T;mWgpVaG%U;hcSm6CZ%u< z>emqm9Fjwebmp{?X;`|!21XBsU@6Xxm#i{7Ylf)C9EWR{V4x;2T(OF1I^rV46eK1! zXmL7xuudW@qKQZ(j>(h`!Cy+?uXwf|%393f(~(xnN@8UU;!jo%T^Y!Pa1CE72kD&f zg#;}T*J5}VU_^QlmLe?}^eY*R)nF(U)=9$FtVBq+ZFrF8+j!AL$c2Fl;r8xaV8qh| zfB=hIz4I?|?Hn3PI3fHcIq`U~iQaFL#10AcWF0F~6z!RC5++2KN&Jcl2YNo70pK{I zeDWWO5>+vogyH0!qYW@iPLVn`CXrt-5()HG)C$zr8?=G{-QUIAE+!uvGG2e$j8r3c z=&IKKQ@xlrKRp+oYT76n{DMi~ZAO+8SM^LZrW-;r(?RJOuoZ{fb}bC>c85=NazUSK zmh;@QZxrUaU5LL3`aQ^>=d|RF@Yw}A3d9fZPf|bjozYSbyZ4{|I{qjrC+q)peCHaW z4zZV9PTwG8FF8s4*1duG`U&TH%o}2&dKnQ+POh@Ws4&{$dwC!wub1{3&c93N(_-Uj zntY|S@~u*xd)TR~82^f)MpO*XBw>E8C(Sx8!G^tz-|5NA++@t<$_HpWU{gy4 z>leXLVne>qQ7L?e65`DSY#szgEpJV@$8Dt>z`48NIb6P|!LheRmj6DKYp1xPC`aFv zSC)dF1O_y#lN4(3L-vWLCc26jNy(_5;jr@g%xfb>4AX#)cn zvU~%xz%)RZiRWho?88vO8$^|zMjInn+T;qG-Kv|nVW=64WgmIc>cbBFjd^3DW7A_! z#sUK3ZmfL6#a=F59?2Qy2F5He=V9D>jTi&g_HH3vYSJF6t+2mI$}_ca_U7jPT2gs& zsa}?@(JQJV^H&&sydHv=9hpF({3q9r&#P4T@r=6EzYo zbW$=`1bH4eEXHq$9)adpNk?Eho{RGYIHdWQU_Cg|3en>7DU}(%GEUVMdwO_4MU+k~ zX^yqUXdZT3HB>BMXQXE*XSK|A<|MIVT^K9E3feIZeB(qChLk5cq-=B*aM_2BY&;SP z8%zmSp{BahpDDKiq)E<;)?2DwY3(H*X1VBVB$kdg8EJhvW<=dspby1_7v=fl>XVq( zNWuUHwJ`x_$e)wM5N<_S)X>5~EXKlIIvU3WgW(xCE!>+px?V}nNMj{tBY!Xq(6NnN z!K$??MjT9bd~(ZRV#7d>&L`Gua&oI@b$m!IL+BZL^)RkeT7`iUaaN_(vYHg!vST{H z1d}l$d{X5@KcIgLQw83SRAJiFKv+kTMm(D~H1Q3)%Cp0+)q*-{r$;zdm{g&!!l$o6 zaK?GSz|QwFh7=7w#Po#s-AZkc6GA;yGvGOd%EQ?Hb5UX`h?7$}7SfxI>STkMl!k=0?Ryn>b_ruaIInK{L zL++FNLzL2Wb3cvqi_c%RVCAA7y{Gbhbi4imR7dEKi3pm-?-KD_Cw`+JK)Le?=kH8; z(1fxtmIt~$+JFsD#P;GWPsb*T>1wsuD%MU>E9@-9F{ucQSD~59hXCCk48eMf(*kzc zFj`XBry9PW-f$V3VFj=;RJs&io|BjlilfOyGM-6@cxrNSG7~CxGO^OSlAB4HM}X`? za#4#k74bNfbyIe!nMH{=qe){n=KH5*1%hQmYrfqGB{+O~sD-AcrBAc&e&p*rl1mi0gPw!%E~ zUBvf*yxV)~U%w4;vNf-a1My@2#d2OBIaSU#8~-8aneG{T#Ql!Lwjb65UR&9%Z`F3` zq+7p91|L#!*0u|C^ApZ}eb=E}uHGpG@j^-NIh>YmWEH`>w&!9UXA`bt{@#}niD2)m z#3?=cFB%`!Z)QEC`Zrmui(N+kS}ere7A^UwA;jE0^5#IJ?qB*neBZVNtHIR8mAYPf zdC9?7o52fz6)#-LUq}=C>PoSXE4Q{vdTniCnG;WAYpVrYTS;tfEyUK=P_eVsf<+hK z=N%8bs1nV=4%fJBqCRT1z=|8!ox=4HHnGqy@1w9A9i_q@c1*pD7&fhjD6&V|2)z+( zO{L5VZ~ui46!_xL5$F(9a!rQ)x3s|Be~v9Jt}|eTirlonrPU&~w196UwzL*vOKZAO z4bYS*WV{%B@kPF3NufvZp%Yj|QgDavB?nweEhoy&@uA6^Gul~HLK4#l`AGxZZCN%x~+t4FS*4Q!M=zHZqr2Yi6MfY%Cqa#Z6&<7Jfp2+RqGj9 z$Lyl<@0z!1e>BtYnm^Nj!SNNw^z0rz2fj;1|JcB=l{MibbI@PS_2@@((@RK(AQ6Hx z(v|p7@VU|WPICY6)b6t$1Ao`+!vLS&$=bA9>`Y{+^Hak9ha{O4@r06UQ6+8h99YD% z+0hxg?M$|gj*qlPu#pVS!HalDSHOfL`Vg!79wQGi`!}KS4{7PPbR>PGZbb6yV50#K z06@k8-9bLm(%o7mwTmXep4bMo)dY;XE*TpEGL{N$VzS)Qv&6G-*`t;d!fRS(x3H zbQC_VV%ZCm%cvSlQ}R$T~F4-|n| z>U}nxl-dZ6V$zB&S86FspW%q}#N=9v=M~bgURl6*bTW z`g-Bc5}#c z;DZAboC;o#vQuadYts&+7`jUkD8-Js9x3qfj&&#WkD*tSw+vp=SK2)#eT7|nr_H88#qkmX3D#YrCVpNReSgMcKV=Xe=%+nF z?C%p>FMonSXA6K;E}Sg6G0Xjgm~K^j*&Op!3~vQ-mIK}yZbj${Qmb`<6P`gn=;4YO!}uAe<0*^7l?k>GxzMQ@Tr20Y zN9soaTqiL!Jv=$AWu!AAIjZi+g&h!=4Xw{tpe91tq$(MjBH58?2+rnd!}&ft-aQV# z%}zMNIeE^n11o_pSeiI3N(O2nb8<~dBU>6>77C|fn*@#%|I+jw0v@F1!pbi}j@6o- zTJr^mPEv=^EUQ_E&0A8ddh#lpWi^1+Y4CWKd4<+HVScY;0VaqlE~x_`RWcHvkr%6sN>I!u(^ zP{f%4Enn!}?mu;5do6yR2W5=tm87^TLyB!Wy5wicGQ3>=8i9=NF;a=Rl+9suD#+r1 zlE(Qr)iGEc^A~jQ#Ce7$T-9^jx)@CNA-jqfF_g9gAi#lWWaSmL*a%5`ETLDG*p|iL z$#6*&!sc4YsEJ-xp9TYmg$kFIRdW^hTBoL}7S&w`=OkoMB_uSh)zyw(lAT#=R%k7( zIa8U_yc!RPE&~9OQ4R?swka?h@-GzQey&pYVsOZUPC6oH6s5!2iX*UaX=b%%jfV7O zhF4K$h6k77`F0T3&&2WwY2r%~p3j2ZtbwN%?^#|Z-m@@a;5T)sT;VysQFA=XiS@pH7DpFQTvRUNYFg98zlPK-bCPZ22 z*tCHzGmPPBF5ApiTG$*jYl4!mp^1)3V~S}et&L@;R4%MXx{P>sS`7!e;pI!~IvPjY zkP738$!uxmLM$g$FL;8NAYDd0EDw2UmSU?>O4%6d6&qkEQM0A~2=upj_85E-=Q>|X zqLe98v!A4ux)27S#6_8h@k}W#?l@vhh=pn3C}yHqRXBbjc8|vhot%64q4^NX;3Z|-xjsr5^u`J*dVRMo?;%O z*YGs)Au~k>qLWv5xTAqOVK}Cc6?b@W=Lx7XP>i@iZl)Hbt6Zumq{TgX2(}|XM~g8^ zr-#RBt}p4N)zi&su&nGQ>HHjDNkBU5@RHb1!r7D_6iV2-8?I*T1a%hn65)9QOCDm@ zYBjt)#d(|Jq1f2#SS0zq`P&Nk!P^ku1^NXjkhi(p;kObr2E>mifA_oy-~B*_%*Vsn z>-$yiXx}UD|JQQQCCgVXIu@2d0d~k90O-EJohVnsi82_tV>hs)C^P`11rV34@ny`N zP6ZqEZmO_AIk?HsCTl1i`bi2*MCzYqIu}7!XmOZRK=)X^$Vli6+6@jbr(@A=tD)#z zu-{n;p?r#)>+s2omnhaMv<5;C2O|ORv%I9axegbEpg!=pVL~T_2s0d|Yq2c%Jt)td zC@DoL{tj%hK<%JF{xBJFe$4R0L)qUcKbH0IUzhia#ph2&af6?R!+`6_RfKeri1;Q8gIl#5uB%u6wL7WREL=oYrv8uWn&(B{X^SJ}*Z}Ib~d>6PX zphi%T&k2Yx1Dy-vNA7PjKYRWo!#f|7@)mF83*!ENoljvJ%5%AeyhLsxWDA)qey7|* z9OWtJ_*c!*z?=Hes{4x-`q0`+l$HvvPY7WWS*wnQ0d8YmL#TSHI+Y8=DQwzmV7g5i8k~6EK&w8;?7u;>HvxyahFOVT||}betvfN>E!A9590Rs z@=656^Mj0QF~s?i^}`?^K`3tGCpiDF+kY>c;n^-MYOjW2DM%@y5Upyncv~w(JD1D$ zwifC0{KVXb_;*1MgMxZ_2XTJr56SRQ?QP>}QjWT2@%d|-*DP3g-skUisNK$1O?i_*xDEEQ*fEPj5R+76GYK0`m zgTO}1Oqj$>f+S$n9M#rNqhs|-twycXM#E^s120=DMl38*(&&g-pX#<@8uh?GFs*Wc zU1D4ZAIp+pK0GZ|SqvMjRK|u4RwfKJe|5*UV5T=PK7?ZzGJMM*}m5jaq8Eye&dePXxnB zn)fzkg-qw9hYS8tmm+>P=zLI+&YKbE$9Md2{!=fA^ZDPFuMJ2eF$I9eb z3rRBe&4*zvf_+2P0|35;A=FpMK11fOWk+FNord^)&|;9EKm8oU`LW3lwfAH`0=`Dv z#7}@nu=fRN-+IV=iUy1sj!!5{#Y{5$7SUSYAj-dx*--#WMq-VLVt-W|MFC9&leH{q z5Sh|E!9wJ;5);Nu8azq*Oa<35^Rvd&wAarcd!&GO(tvn7XgDaSzhe>S$MJr+;%72{ ztWW(Ve*PKtC-QYH&sXPH2z*DG$MG73qvtNI0?T#aT7khFh;^Lb%Z|e`3idgCPUMcz zxS314kXu3pALX%SrL3RbNLNmz5V#aP-H)Q*fP(bbBhHT@et4*Ua_@_uC;gomO{5>~ z)co&q>^TcG1yptl&kgYB?nZ80EzD}c%~{42YDb|zM~&PO=tgC6o*nHj?5h~3%i-b- z5<`=NS2yTYYCwSG5E?x;0X*IN&XoDwj`Y{_3pidx{5POKfP#Ep^L?4md;PF`kIc{3 zXJshgM7{g=UZ39n_=tHnud6+MBkOO~&O-fNjrgsgZ-IjP(;k!cSLBC>s=sA*l7Bs9{Vh3j^%=sxF13$bu75zt zK9c0lXLmdQqbpAVY&S>KrD{op0;mtgnuYU=Se;eRwJaFJn2A}o&`tjjXBg0PC$LXU^L{H^fQ;A5kWe!G(i$xD)asPyicB2w1O5^2t#CMgO z;D{s!Ck(CN)ihd-z0^FkJv1obmYCHP3iW)9;^5gaSYD=~+5zb7kT#x|VD3D>{i9rh z`S4@JjmPtf0}9G-5aPo@6F~gv+s~IBBl(12U3tjzTfA~n;GXc1&z!Sr(SkLL=PX~e zW|P57@2b~BRI$xH<4&*N_a;PXjNBp;-KZ1gC_z&XzNbHi~ zy+4)xzwdZGf65EuxjuPZhCSmIi#r#rTz)Fg*;;Y}cS~Qze@^={&)=m~c@+5rkBWab zc!3Z*O=|kIzyg-(HCUL~td5M6;~VUUp}+&BD3e0HtOlToHcG`rCed{8K0@r(YrfJH zQsiAA^SK4-5AxZK_>Vx(f`WYh3~_$E=7-y#KX^VrlmD5x;+(U2Eyg?AM|1wCQ+Wyg zLxU~RW?19SJo(N3?GSs4+4)A zUaQ$6n(HfsF2KH`O~*oEKZ5;2K;GlGnfHBQ8?S-V|JR5REDiEoIJRH0IK>w;BIFu^ z9E7A6%_)jOS;Kv(tB@v)={EHHO~z3$6A3#LVO~Tv!x$LgXqMFR?t){>g|fZ8jPm6r zyh&G-(NE-+lRyhWK|SpFALx@mnOE)x@ng+GIUWpLEW_%^%i?;+T|XD$md~mOvA)1} z4!Q1FwF*PYr#x`>ngy%Z1Vari?^Zvycd4XXy~h#3S|WncyU>w#J6&nzN;VO-6r!!% zL5`tKGA4wHHi_G;w{4^AVM4l{k~`=zlzj{P3}hC=mO0h7LU@E7plv8+nDK-Cg#t!H zB4jz??UZe!lYUFuena@nza`{Vf|p+dSWW1QDq6ufj6>n`?YQ_rteAQ!)D?Vr(i~Y_ zvLqQc6A5k5Al9T0VvX=Se>GtjX%~8Q$wm5w8OoOEOH0qy-V9PWmY+x*Yph<`1a3m72Fx z^Kxo_o0zAXuV77wHq@-$4PiIHZBRzg?$Ac4tHkL?Ds1^f*sGXiL*3P621b1Dx6TA3mxMMP^oxWHyP_RCwiA+6pGD= zRwuN04k}ytip#u7?pZ~fNHSkkl4M1bl1HZhAKtzLz>ccif6kdcb9=vc+udHWEt|HR zLN>jS21y|F4PhaHlqCsGP(u--QdS9q$djm`h?Gc^CM*&akg`e$0Z|sD3P@0dJP7jt zedo;VZUXVW=YN+;zI)Eh+&ep`f9ET|??RTY$`rr|Yj(N<45kS;hfXIg(F z=MS1B<|DrhbQFl@8Ir#o>)l`FrM{fSPsQYd5C43>`C}hxN(BY(J6h3>_5~>AwEjq0 zipb(Qk>oRkUkO?b^41M)9rARn_tFE^ zo8O-Qzw)%El`B>^2^3yPv8JB2Xx)ZY8&|Dc+c>XtEf#ZEdCYZ{xvm2AVw~XU^V=Wq z=kE_2A8l3IKnH>Ra!f^@j)h)&pmJ<$l6=W}EId%43mH&JguF1! zOZ0l+%wfhX-~>_zoEsX$!Fm9z$@RYL>$1Q1pd65rh@<$iR;3X%9psnyIOM+s`WA?e z$ZlD#`=`nMQ^1Qy(DB^xmUmv~2HHp?WX>=6Qxr0%`YBjhKISehXfJFlm|R#=lE|k^ zVp^y$sw`OgJa2!Fw>{4%KgUb71l)>aJ9+3iE+*|PEDgw#em3kD5)fDx!gQyEs%j~3 zXKj!}mO#;zHey&z5Ne2~c`U=ILltOnwQLfsBPmy7e@WKlH)TCWem5{a&qDs|pznda zdenQ7w;yj+av(bHKU(rjdmobai#0DvzBPZEJZ~S{C%!kN{imkR8xggQE7q-E-MM1p zv~_FNbgtbg!5y7!OyQBkv!#WPbMyBEa@xX6)T~yI%3cg3k0PXb zJ!@AQCBT>fau(uSu1}^i(+NMG1(R;!Aq8U!0cQb;4TJxu15?zGNIObT5<$truzM!= z7ed;zVHX%Q;iZD+fk**O0~KGeQ5}n=8s3sA3*ivW0#c%5*Fk>|>U=Qbuu&uf0Gi2Y z^`@s~a#k9E@hLJ<(8^O)I-qSeDAmJ808!G^LY3>bRRT*34UyNg_$%TsS6 zAFMlVW7lbrTMt)1TeV>^1bwSJNfOp?L|xV$d^mPlkaY)t%S3XuEs~`8Jo_^Eem>^z zRZ9xD41S21~m3rd*UwJde&BV*;P2d zp1o);>N9@`NloFK3>WTDpS8_hc7p=o241LbW`RY4bYaA~3V4%++u6byWgkF$%ozL~>}JJsfdOrVY7yZXZ{yPLU_qfS|Cs=*o?oD*vR z^J_)m8B)}&UI7ar#KnWXNrYD;g4r=lj}$IT6;e$1{F>0(qd-$R+h*Cf!ibICV%axC zd5&$qp1OotTYzuI)SDQ;%VPiK>fd*@Us(KCfEnOU;0eq96{Mry^?NLRyS)CC72R&} zpV`w-9McJEWWVGSAK=z6x%vRFx*Wd#W3;w->H$`2FM5!Lf5m1z#EyS}&G;n?{D#f= zHEX+@6`jvQ7qAofqT@0=gcd+u?S;ZQ&8v_adO3mZU zQZYu;d^K!5ptC_JM#EW$@m&QQ_z0h1)&s?paj) zxfNFCPE%n6zL(WA*)z&k@doCWZa{p8Hc$!7jNtgGCd>16ND(0}%a=CgTaZsDwYEqK zo9{_>ZIjbHw`q*Yt-NWp&TTSr)@T~jNAPho8d|50n>O8h%A|^cH=VbHXX0x|I?Xjr zB`tO1P?WtYJR)v}6QTMem>laTAVZ*_Z^Mnzd>!_h_E9kCnub`edc+QohD{fQ>tP-# z3B!Al(Jv6KHB^ECGMr6!$2imNv8jo~KPRiK>E`t;vnc&TH5bah$#T=Pcc>{d*+7%! zDX33@@r^jaFk%Fn8QJH<7DXqWN*q(4P)Wn*5`snk4HXMJmUrPmNuC#$9>T3)DCSnd z=D{_cFgZn%(7!MeSI1-Ot5W^%QfpRhFnsqbL@NHpHBCgE8o->adNiCXcfyE1+8(8CF~$vjX$*9<7%oPO8Z~TvhLm6v8ybK-JdCl? zOrr(u8)k*j9$=mot1+xC0WX4QAb!WSvi?@?koDKCDazx>{{^Hx(_er3*~s4s`W=Xl zbG|G2svYOZ^)v6`$ZuaS`KwLCy`GAg>Ry0HuvF*Tf~9(oi=GuVe}aF1Gy zxi)24Nw^~fbvQyFr4gfB2gB5i!yZ;AZda{`Rdu^s6}*L2-@=lq54m}l3Z(;-@?!En z7}IT+HW6O*8SM<1y}W_=+|RLbDlcEd{qsF`$8K0g)5oG?Jtea2c!=o*b|dB^8OdJ`&%CkE#m!1ip_u zEUekFpy|S0SK8JMB{}}ArK}lSVByZ zu(XGdbpkMBhPX@86PWmjrxw97jPZ%E^M;Ki`90Iy8x!1${_~JA!K@gB@2dP*_S49- zvY);lho}%d=f0X@nuWValSM{w4wk`2zCX$i2CTP%aCl>4`V!>|LJof8CqaaoI1hHTD z(8n{xSN(-pvOlnbnT01Ivz>#>+Cm@1j}dJi+|%dd!bZV@jaGg|F@tysuQE!sfl_;q>d;}{Y%Nyj zA*}5pYm61ucQXA$;9Qo;rA+^_6gmwpt$_d)Rtmp!e8c4#Ys5Vi11Ab|1IPk0UvC)Q@JUxa;X^}{^0ofGevKaV#eh?@R8 zZRX<|LLmN03;kI;QG+}$Ek@PttolxM`u%*2 zR+~*drJ5H&IAJa}ZL{3Gl9_2S_nZV=4#G+FnMIkK6%NOU?JCl6o(7m`3I^0C8CEt6 zZY5f*^CYV&iWkF|lC1(~nAU2_=T?0ab-}M=;63SKQ`jU8IoNts>N70L)dk~fpdr|3 zH^f`q#OQQc47%`8U{-WCY;_7k#mjla{0Y_$2KKONwqQnU3u_n6%M$}@Cug)D+Hgc0 zT#L*_R(^@#M}rFvPK|e~@TAGPmV6Dal_u?cBhnE_Tak`Sj(0oHF)O;<`o`n$rt_kWQ+(iJHFq%|@1F1Y0mX?uZuoCWUp+E#6nF|9EHa?IFP8NXI2jN+P zSS(qrr6Wagnslc?MS=-Bp@q}2dLi5f|0E_<8@P{!0K*420IfxiYooxk2|g+dK6N~v z6jINkeRi>0QqIfp=|;~3fI+cYf?*;~&rsv7Pzp~Dmf59ovXRHeK3g0wEE`o5v1+s_ z(di4YSYqz3ZYZ5lrWN_c=uh$e5dKhEL~Bub5P=R$k-F24kL0t9X10}2&A{S^JLyt< zx^o)Lwk3f4=Z>z;0kh{-iT|upbYz7N!E&27vH=dWRf@A*gb!fEAJY@JO{f*BU-qpC#EKC4Zk>U%LJ@;1|6U`PV?7 zfc*94u|KyedqCEUa(#JZgXDKAMoRfY!jms`A1%+7VP0RBuU>W1+RhV*5!yh)r5^1O zS450UJ}87so84#aR)3?O7wZ93b0(xkPF{;^!5VD@1Ul{7Lfgtj)g$#1y~&0=NGFwk zN{2vNa6+mz7cLdW`Y1gQ%pW&c4Y^#P5Nt(?<(-PK79MopwhDry)X_0a4N$cNJWdI& z^}5xn<+X?4q>i82mbF|xGGkSOX-b*;5$f@JAT=jl52h-wk4fRjg|kx!2gl-0m!8Cr z9d^0dy2Z3EH`Og>{&LfN-!Kn03H!fAdyDbQfdRvR!`XUGFih$R@PjzYov&qBmW>Y) zlF&gcN%l;eU4)4ut9kOJ$k4bYfkA{;5OWODoT1U{p}UyaC_&XCS)?d2Le;6X3lAx5 z7UO`OvsfdjSzd!RPZVbwoILP}DS=p`N|>ZjFekkr3oITmM#%(_YOEv}p3t1&NFfzV z^XZWQu}aYlOe}I`kbdz(Y(Ik;HyL#;HZ4_?Z1*}T`0nP1WIxUH4eWPLNB$Df^&r2W zp7RoX`a#cu=s4kU$*=EzK=#XtUO&C*BFP`M4|6}IK%Ue;cN^b!-Zj{6<4#>9=DR=% zdCYy%9>k>Y)I~o<(0MpzA8Ubc0q0$(#ZZ&#VcIcn%1BzrTC-xA0BL7aYGAIl+{#&5 z>v&L8Is~u7xz>bn+CnQdBG#CLkyCzLY+^wsWi@eQMa}H+EF%I*QI%Q=JAS>~fC0Ky zei)Y0JFSU#S=ODFdY6?Ck})EDbiz;#tJZSoc)i5JcFaNNsIo?(*A{{s23`@ck>;p6 zVs_eKkii@Eze%{s3PFIC2$i^LJr+*t;icD_<~3w@1ix3-s$Bt#T>(5_#xLXiSLCn1 z1Ss`9bh19zh_Fe3>7R^c;~@PI>qN7_S!Fxyw9wLErP=_Mb1A$ng!jRdHuz}j&pV0T z7Y~O%5PDnku(C|xHDSpyZOTI#3OpO?kO)SWiE}k;epJ68>S(kMd|%1=haJ z)#!M&98P4AEtnO7dY2+g%mw8@qtQkI+Wy-G7JPQ`gb=RMqFEJ4q@tx1`Jp&aU5_=A zSvggAOTlARMuYS;7(OG!c#{|`&5z1)()yQHWs?{IigGRT4}pFI^2Ukw8uE0oS7cf- zSI*~KLr;0Xl1a~Z<@u1x1$@2PVBzgNIZ#Tv`5tx|XWcygna|S8gktStRk_!0f+O@~ zD+l*7R6#+iDr3?=u&ug?ztaTsixl>ibu5of88_;T4j6MHIvp7j1aQm74m1d(wnBm+ zA$OgKp_=BG1C9$I0u;UHFugG+f zH{a|n_2dJ?Jl|~SmxlWlx|RP*y_U1B{H$w*M(ZMo0-F7m@!QOsa^6Ob)@tQ&(Y2i= zMpZObSkBph+0Ea#t^cys@7sC10u^bQ1c6h8wdCkP^}je@-J zAhVXw(ZmvUkqQh38l>MQh!*-juy)8un7G93is9_07?w~!ad>oV;& zWjk%NWGZi>{oj)3L)z~L?T_K*2E7HYb7uk->=0-)4LPTcXwI zInqKl32%3pZ$n^`HR6zw1%V7Z58nfu3tZVayjqGdQn3DGR3v#3jK=(Xj+PF#B8o8{ z)BBXH@2#juuSOOA25jg+7s?AbKf_~G%%(j;UcwIFRvz{&d;3CO-|xxPWC1Ta&`J9zKd@gdRna2+ zLy~H7HwVv&&`WF$$u$YgsTI1ADr{4r9z-m$n0h>~)?5?Ov|+9c-cTJUW+(je_p<); zZw}P|MaX{(^c|32|Mw$L$75c4#{ulkn_Gsrzpw0E-+98i6?6P<53A>^)OX=}_ZUK# zD;K(@MiHcP7Q(y8ZtWN|U=0*er>RLRsZMpugiStwmhpvbmR9ClhX)WXRrF5uBbRqfML4oxFaFI|;qat2SlZ)3V-{{dGW}eiQPyf^G--_4Y9GbUfmv2eQNP?Olen z->&w|`bVO6Mk;+S8A&0gA9lQ!V<;$ay`qg^2EE^IuRP6f4cNzQLHT?=uUO4_x?dz)IQVrPo@mKSYNyoJl{iT5q)2o96sKn1}#Q%6*JrYG{(j-`eh6R#HSUBPr@@U^F>)~#c&+@L> ze}nHJC;{^8A&)#ABfRu~ia*^m9QEMEpI*MsLJgdw{5U`!oHHPQ5jNyDbPyw?nOsy9 zm~;x*0|>LU9Z1}K5I$s_PBeO3TXeuN@J-}##=;~z44lE z<+bmzK#7&p*=93-5%e0|&P7YH=s`6}T?B3>;0)4s3Q(%4&=f$%tpneOT|7j}wPciY zmkRaAVj5yFaYD_}5c5;8c1+d6i0-FRgg=B1L@Z(+B89dP3;>D{>z}4qW5G2WbZTR5Guz)R-#%9O}1km+XJdy9fC7YmvVNbUVmzm+i>Y@h30sJ%Hau z^X6e`mjl^H^*c?cBkN#rS4WQ1!szZ{rW{?)tKh9x#6m_HlnAKa5?%w1R|2phz|}NS zbvz?c?n(?YJVO1!AJkFo<;r*&^sW1yw3i+ ztgm~#wEZZ#PV6{jm#9bob#*M2$X3+0~T8)@M{Ye@~sTwdnbsF3s6mf{fqNJ^NcdsJ?jQ^ga=t8 z^*E#yu6{}yrGZTewS|LgmQ>|b zW&R1=JWvJ5FIP44bkuw47s_AO)D2iH*Lo()!AJupos<$fM9~gWlwxfZeYngMeneiD z?bVI<&5Jizl=qO=K0w((e!1F_KLWH7M92R2yo+9ua@U?)hGl-;w_LtS?-SCbw-F}2 zy*#Ugmfr8C2JCvj=ccc5$+FkH&#hCmrE^pJn)l96FOcTF=A1f3nW!E18S~yMwVcd* zQv(LR2*W82d=aagegmK(-0nB>RXrnLb}nQ1DURO1$ok!lddr9_igL(@t;(^WlR$p` zu0{SV&;=km_U|`u_euU@+w;R-zn+PBI?{oTlMg%8dB)%G9)6!&t!U$CA3m#EQEIfY zuoMrec|{oyFBJ+;BCcWw4e6X`HXg0lLJZ%aqx%(E56Yf_b?G?d&jD=%Q9a<$gZ~XX za?nN)9rLc2>(8!@(r$d$Xld`TX^*Ujp2SPyd;h`wux9y5t5&RAyL{Dp82qp6>Ri8Z zRp$mES1js3sr90llQ?IS`ndWj2WHG!;xi{czsEiWTlA#6=n^Y?sl_hy@L2&Q*=?=; zi->==*RKB94)3);z}=#5%f7_YFNK8d0YtAY-IVY`cr~yWN(V5G_61?}p%PbRp*LvS zOMx(2V1{!u3*QEZF#rv?U4Ii1HQ%bS&r9g%!vX`spa_<)(TF<`Wg~^4X9O5Ih~^-s z8(EMjt}Y7aVd!SoXcOF3W&n^iLTmwaSsuYQYA|*xaOUi_z`SmWRwLl^2ZW-UF^Sis zKLas1{*0M`8O;QY0w8svBf#h#9fC}CELdq_mw|n|9SDUJF~F?3i0Fd_PB4wQmq1*i zQAlZFgAN&9X3!x=0^tNA-@;icgaL(^6a#`rs{%8Q#^y$68wE6_GYCwKJ zD*hC9^GciYBM=?U$4UIsjWA-a|?fIdcw>JH8i2D(Op8rR??9cC&t2RtOZT)ic zL>bbDir51~Hgq8N_b^h9HSBG6aI z{Eb(?!^0P<1zPzuVWNL^{>_NP3maQeps^L+LB+e!0pVfN(!+3-h|8n4L2OD>( z7gq4Mb@h*WHw?Qw%D)@UKS<~IGXOST9o3(TCr(#G*7;0NPPv*{-(~vWnE6kdsayCY zUae=Xgjs2oKmbiazq8t@uyhIn3$~OWWtRo&_(f#@)C9`{Ag>3_IyH~T1i(#zy?h{9 zkQtLM$c@X^7LIF5q^gq$-pFh1$ra1XtE(tp13Yrrp&FE(aE)3B4;Yv{0evd3)kUIE z%~m#zZK<0fewQn0EE9kCbnKMK)srx2m++wbZ5HaFQyBi-$)XbviJTaXw;mEY)Si$( zRD@1Cyds=ExfEO)l)lG}fJxO4_{nLo8__jCV5)7dPXM<~QGUQ-0fBW)w_xM-6bHnG z>6F_gfkyWe#8M32phgz+F=8>>ttZOk6H+)$S7*ZMF}VfVEo$N7f`-CC!KDD9;?;wK z8Ah=brAwX%NQc?%kx^4zjYvhNQCD0m()w}u!vVE^1kNfD=wn2l!SuTptEGz305v%j zV%U#WKn@~yWDw1f5ZiY&${Gy&G`Uv;go(Wjk>^bqHPJ!}92evPB?s|0jXBt!ay?#$ zr)A_0PlfZeJ|EcUge+bw{sL@N;3tt!!FefKlEUAN=J0%Yp{I1Jdc2E+s1UTD6njeG zal(MVC_?T}2+l_e47fsZ#08+gAf6J376b9%;dC&7t4d2eESGdUg-DcDh{==060cR` zH%a;a@bkcamX$*1U8LzbxKp9Q4TOC!0FZMc2lYQ(00OvUWdWBY%h?FWES?@=*)aVg zi4dcBGx$p>45<yjzmS6)C?8!?{65il;VAbElZzxIb1D1s;(P}}J4N^aj5$5Tlp?7^sJXLQnWtlwti^N+hf`vn!!EhK_8kGd(4a3ho-Z~{3@*E zn>72Jd1u?_1kaAb9>ziYo1E>nDn5oC?-(`Z)aa3qEa$(iPRLh;RI~}RO%4zo7C)RP zfkcqvHQ`7si2!j444W8~ftYhz`8>3EkR60Lv=;*>SA{U4i8Itc8Bx{3lH8y^uevO4 z!6ne8_+1Xnmk|#p8cd{supSXGEffPR8;Jw(4!Fl*Eg~i~QLo$f%Jyj0+xqPmzKQ%b zpxZ%yd%TH!%0L@|=;%6LwnOumWO}#P9=q1a^C4>wfy23E`AM=#cAza_ny>>cLrpT} zLvx{M5_gZ;`Jp*^j|m)`O;|0WoSnF^(>~GdG;&7P#DKAK%~>Z0`BoLe@)(`*aL&o< ziGX@kSWgIx-zLnlNqz>l9)w=t@FfTxl;Gpz(U`7<5iK(in-DEP^i+W^F$HQxo4c$N z{<-**XcU+qz#5JKVNJCTQBMt=8(M(86VOx{=z!gz9J~qLNF-bxv36*{1EMYzibgg3 z5zTP}2`p|9<OrQ3U? z{(Se3Wh!psHOK)`&`JyW?(I}@J!SVH4)a7qbv z3A(P%8ZcC%1OEHnUiluud;8_fS#3%ss21dxZzS?`9OR{6VEJaQUMGOK_ATEX&>$|M za{T);MwD*x-Z$XA{qpTWUb8U=g8cHukf)>6OTWPKApksDFWr13TJKWUMB|Lmp`cQL zvK5mOVHJu-WUJ*VHRC)qBg|N#^wb%d;do(Tl{}N>y$a><%ljts{{(#m^2@6_vb-@b z{Q}Fobk*k;xaU7Aa5Im#|oZ9000K_TEIlY9SXBsCAx(O<^+s!Kpx9HRCff%pC-iv zT?2tlgSBu7evD+e2%~m5Q$}G}45(y8^Rmn|^)xz~HCeyAQE$!ik}@;UrmO(11bO{Q z|1$D)T;-*agsjJ2&wj!CsS@$*i}K6=WB;ZDNLFBJ-slSj2=wz85=Ht#ndGk}Na<1n zlm3JIBUPCQ>jFTVhOt-DE`tBE>Y1!mV=Zc6BeXQ)?1~gx%{J1C5ZW}Mun8A7q40$A zjv}*yQl131s7-=lL|6snrgZpBLfcsErHYJif=r zfgSqtFJG~uvkNsa^iMv1`HE9c>!Ou<(L&T~ej)Y6=8w&?z2-#aub9f?;W9)5fp_Dm z=vZOgQ3Q??2ri6C2-jwyJ;nfvoFz;i>U6pawpK(A$eXf$yHRicy#EgJ?}PpY^6NJg zX;ZSG3ee}(Z~GTizlTa2k3~lVX2`FEN@XuqLTOnUc)4i>2Z_af9N6yyGW?*zt0;VQ zpzwJVJ|uaWt$z7YF2DSLM*eNkdmz93MpTxn!s;muPw$W&AcKDw)iczj`W(Wu(Q z-e!aXIRhw=e{i4X%HzBgA;d3ZU}pe31Mk@pa<(ak_h2~;3nO+cPzG){9EJgmwAc`_ zS}~ayVB#Um3j(VbUvwlo01WF`SQTGa6kGO-8&F=~?&nkF-5BN}kY6uV$kQ>(OYiph zSKoe4+{8zR=a)Y8qhr135$X1?Bg_$keNgq>$CQ^L)Ea~G*npCRVnT(tmSlp8VO>$B zPnLBe6cw12bUO%{BG`TiZFF(7$1DFfDz8@vEs6OB)B^I#uU~@vZJ<679lKwZeERB_ zW!gSg>Z@+>>|)!8di_HGnA!=@+0KJI&l0v`IF3ePsQ({MbwbB&ONq_G;I{c7=<6rYXa^CsM&bz{}XX8B(8F|NFi z5dxd5Z>Z|mVcEj3=^&*LOC84bfT z5^rJ}f(HWQ<*>&Ny6I3fSPvl}gV$3^b5$0*ltqhZ0@K+vOj?lbLKtSkn-}n#NW-84 z?^*#*X#qV8l>pfYljAi+IQX96q~svp>dJX-b828*Pe`{Z^FW7y{BiwLZ>yZ|JBDFg4}A~sXV#VrbW|*+q-V-)f-A|VjBVmQ2+Bj9Co|A*;<+|uBxn-I z?>F0!e*qLOko~6j1KDqObJsUC$?+acezeslq>j`VL4QeEqT_wkp=`w6j#tNfW2K7b7sI1pk6UEuB}S)uiLL!}f$C5ab_ zn)?kStyF~_hbs6ir8g?a%NrO65z*5XWlAArpP&UGZ@g&7Bfkc88iJFB~yay4X1<>DWElm{Q@DY;)gnHDixx(FzO<>jIz zo!+GD8tJ*{oN$4~;zX?{j_#PO52a|JK7NM$qo5~2{`|3|xJ|hT^ji=e?H+zp50mr9 zlD%^NC_Gx$%hq9-KfD?ldIqSgv-1?xG<-pSstGU92boA7fWt66L*2{3mH)y0lcn6G zH9<7bUSsO3%t*2AEc7s<^Z`~1rtU_7eavf~Hl)rQKO_i1%L>1kvvP)ENsriOl z7-Z*)J6MqZ#o0f&^#Lz=fVs~ycD{;72NEA}wu^lxA-HIma5}ubi!x4P?rl=4bK3{4+gk!p2S5FU~Wb~Q$uT44Uj-i!GOAk*(`7& zbBjV(0(BaYK_!B-N%2ISr9#OynN!n+DObW_TL2R!vnq{@q5MV6354Y$=Ez0N2<$)l zIKpcNftU}5XYj&S$)ix>2cr9pRal+Vvn#|5Q4P0D(gvGqEeVX}Y!Qhv2NDJ0AE5~) zm*|hXQ?eiTlnm^bCzrM<$AHcN`Q!RIL1^-oEJKF|r@mpCRr0hQ705 z(ON6v-4}PBdRph&A?4|@&WJ_vglQ|6uV20bp#MX-h{1FWk^6@64=mrf6agmiH|Alx zvwpbdJ^@TncxyV^=|K1!TJ0c$jCjdm1v z9s#VJ0M;ONEY?ZYGzy?jtb{Yl3Wgm9yg3m}8wstRs%wTSgR#(w7>$VM2kl)TI#$l- z6ccwc#I-a6lY>T}9Y!!K02AsMfeRq<&T=i9L}W58inY_h-JGLaabhvOaDV{Kurncm z4Z(9GjU5nz0mApnbFS*m%5h|s4~(O=$X^KB3i8L%tH|3GZAux4j%IKC)Oc|_x4j|t z5RXri>%s7hqtAAi-R$q+_z~RZRheu?LOX}E{T@;(dI%H!2636bL*R_uU}PR#iIzhI z1>uNmqYVJ^4vBC*1$|5gb9Mp%yQ- z1KPceyIN9j1v+5Ri0iJCqus;VB0ys);-E02Tt5qQaLzi}te}omhH0)D%|p6Ocm@KR zH{?da{#Yh}+(g5T!~%|;CiEe3Y+fTk+tPxW5NuJAdMr``Hr~1$28)F5jlU<4jzZa< zyUlk$I=!B0&6UuM%MX3f7$OXTbM8npA50OVB{GD{GIK98YM#>Z6G)~MChoc&O} zm;FF6vB41gKo9&AoCy279(WHXOm*;6N|hJZWnrOIu1$;9>vgWaM=yU@5AN3Wf9Q28 z&T8J(Eu4L-*Ox_E3jZ=JQ;yEm!i&{3APq9m@MHy5=ux8y+6o(zq7qi39cqqtYV37^ z0&p<}z^z3bZ3H|C@O-!l*C#q-u({8t*O2(OztA<93Dgk=-1-6O_$ar^%^=j6O%RWR z1%nb(78ie?}N-%-&MdE}pTzphQ01)`(Zi|g2Tr<_kL z=8dlva$F5rpRcJKJdey=wOZ_*dfDUZQxwhlDjC%IX(TkOe4X=$82m?%WOFY9G|QOX zR`^}3aktf>+z)xnXf%74e+zcKB}w!{9sRHb+waDFt|WwL_i=QaXjRsza$&4i%}&ek zB6#({YMOI6>~A?=Q(ZXI^px2hWE_$-_0NGclEG$VCt=2!uS2|T=30<|7wW&9@IyCvkLknkA!4T3f79P)Er>zf(MS2Wxwpg`cFQxkWn? zffND)AUB7uKM|nG)#*g4EeTvN0A41*TmcNztqqMV7gww1fMIGvw+kdsNfa?Bn$L_& zkIGfUh8w@Bv#cB-su~c&bPXoWWI@XHo?THrDm&I4lT9s6rduQ9GOhNwEGXHUDGelp zsjB2v%nG(-<)5pqtsgl>Jdoz)xj<+76Vu=_q_=@zZ?Mv6K?kR98|KEtLSurLaN$tY z28W`{wZs!FUX`%pYGO(JH!OwkrQ2YQO@+mp0R9@2Dy(fWBFPRG7-nKjk{xT1XFQ8m zAO?Y7^qr2X9NiXnzcAQK#7MVk1&aZYhTSYo_G}h`LjZRBPLYlM0X-A>QjAVm!rFB1 zKSww(5u3R0b0C=rX)cXmSR6|wM3ED;<4(fX@m6FX_JW!?56)WZy2f< zASXaV*UKCP_7rJQl%*Vh!2%H+AI(X!{FK7E3h!^)s-BHNR1PD5;4Ft>w5p343Z{wa z7;NwdEq6&dLy=5Dt5UCmybl1$|L1C;riOiKvz)Jbo7$9ix`3mxxlNe@nhEmPtD}*p z;|wp&uk!fbp(Xwiq*g2+U2| z)gzUj0^vD^==^z1BZvT|PE+A+lTQ1FO6 z9j=fh5ba?El&$*l_w`iqW3_H6DR1LtBjCQT&d^Y!| z>ZI>$3nPVEvD~%IfGHv(Yif;Zvr*xe0QxwK^YP^V{u+bf+9VZ^LNym+tddP{27zI- z;M~f25Mw~VwFuB=Af6buCAg9kYcfD|puMO00{S7EE5)&Cl&tqNTcq7| z5Afh0LH;?=8z8^lPaf5#ya;*+L`TJ?QZ6;`a+z-PR^x!?(gQ~0Sa_?sB8OAp|Yz5CNWi$CWK3-$z46Gtx+|RbOA`K2Vfbg|Ju~@L_ z7+9DgvMVh3##8|&fkhK)d|6d4zLXa@j$!a%lU^K)9T|-gXR0ral!g(J0t$#^2+-)L z@^G-FIM|@ao?yp@JQhBB1}x?w6$P9eqIKBm061K*T3JDeL<%?3HW(b91-(Zy9!y{r zvr{owYhy9YFH7O7ngNz;mT)XGuBa+M zfdz_!#nGa*R*Ht;-HboO*k%O7WO)+I5>uW63IwTtg$E0mbrI^p2-;~FzYL!5vK~hk za47~IvHG?J{}V{1h+<)^(Ygj?gHmm_6@^b)(9sPjpYba){LUH~BW4E~#T+3wRYLK~ z8$|{oddOiWh$MW?XNbb-%)XKhoZ8qU*EjVq>@g#-iKp^`W5Xc;i zoCbZiaU*+&W~&Jo!q*9bWt5GGXMP)-{d3qaaP|ntR5jsvfasXFQ`MGg$3yOy#_ZGt zhr={)j2FdU_0FOvwbZipPiKqdoJK~H|@hJlq82Fwg zzK1aPuzm~$iy~-rJMK4V*F@Q#`Edj5=nKfd4f-d@Z_i*W_5q+e5FI`9z4gIcPdmJM zYSSEfy<-^L^UN+p0$YgqOhc)`?Qc}FC!GW1Tx!y7?1xOi8?_U>(Jr@1pJHrb%B9#t zhPEM?wS6mWKy+RQv?I}6gt=!RmIG`Z0Yq8H+bKkH6Q9EHBeEoc<`s?{SULdpjNxoU zQXElp1X_g6!9GjKrb)70wxPa#ywGqPd~84kAg^7tO62Ki_R@Ke%JtgUV~U&j=<==) z*}5?>zF^EDTBP#?R9PI52DEr|GvzuMM;^xk(n3BDMd;h3XhMa-B>E{L(BM-Wh(HrL zNS1di$`SEidN1;U@oh>J)L&lY>6qxHt3CZr-jiE;KUH?THso?le?D0cH3?W1>L1;# z`7*}3**AfHM*ZVYU`)_AGQjJ0fpn}d+pC{PP;S3|$|hjW1vP;DaXJ=xI;MH4Uq93Ls~_J^ za??Pt?5rbwdnmYy!|O~kn#KAeColLd zdagcQlfC|ra`92v*9r z<%DsqoG_|yg&b<9yO@pT9m+QJiIJSm89SGPTjmhOAW3+trEov4frKc|lGGa(^RcXh zuF|wlw$fxq2Jtr-D)^y7i=(L}{pBGlEbiV66ykUEXeN<-$4F$&_f_P zUiqrzBextTqj!HlQ{g6KK`oqB4>TPQG8at2q5O2?tSW8 z=KL#p(*@3g^PRv2&JyJjpq0!+G#w7-WG8Yk_Ro6YVfH+m4`p31D>Pc3VSxu&xn526 zM_(-gms$oj9U;n%#Y_`{d0;JXEQsa`wU(kl@!SG@@jjK$=S}JYsA`rFTM4l!O}J37r)ChJMuVt_9VRrwA7cCGpkMr$y(L(w3!Lf72N+7D zFof6z?zo3+;-cPwUvjaqlL1g$GXbF zm+W+Z1|us7Tc)9WF|9&&n{v2H#jyA$sJoCu5GDh$AOVN~xKa@vqIFCWy6rnHQu)04 zSTuED{=EbF2SM9Getq;JPsbm<^g#8|*Eg)|(?ETY_BGvg3MwQgDg=H~+fX5McotD} zMfm{_32dd$sR|SQW3)GeZJH_j!=h;e{o!`x9|Ua&`Q`sT@^rlHrPn+s%Xy9GmmqH9 zaNej@4(-k;5;hX(C?b`Z2n|SE zW7#vbq$zH8%#!u6Z2CYyxF7l7f*uF?_3&rp>3G*mndJ*K;%R9)^@qw5APjTRfsa`NXB$^U7FbAV=1Oer{)7_~2 z4fA6IgtBohWD8C;&L<6yEI-v_SCw9`yd5(K`~|lo|9j9*kYC=vB2ULZy!1fj9cF&j zTgUw}Z({RF9$gM6ubu9tOt}EQ+Av8mLV%5jL<`UnX!;`XtxIGEyeO8+VsNG*4I#*& zD_2!pw0y@Luia-2jEAz>ZAu$xKFF&F{Z!<;K|cY}(R|Xrd`*XEpW(}gdX5`bzVsx& z{fDf79lvhfY8bRie&%aZkbN5$d`&>IHMelV)_~ou73{8~Y*9iQv?5!)6qEI3@hm)uuV)z$#yUbyJ=V^(d{D;(58?d!I(yDPm@^-+XQdi zQkx|ZcPE5jL$v_oq72Bud4M6X1F=IG#{=w;ka~M!BeLd%J_}M_@mG{Z2Yd7XoPqIu z2l5Ys9tQdS{rAYz@w}HFsK5LB(IKnjPDzezY}yX$S?1c$kXwxmma9RU(EO(T;@$|0gdqrF~%XDdE6W0 zVF;4<8RLiTKgJ=d+GmVY`8wu#?SJq<``?TFqo5~2eto=*JRNU&>4EBF$nESu)BcM{ z9DKr{8j)O32t6S#IH7G!c?|<_BS$@wmFxlHf(_Hiq7z2bJy7qXB0Y@O_8X9@Gl z?{X4l?{q(sdoN5=tyf2*SxH5$U|21vz~1 z^i%>CB%&FjlQ=XacYF1)8|7>E>S6IB$W%ZVfc)|JW8{AedKN^-{`|*iPe0XsvmBp& z!_I#U)CB|}mr91ANbn1Pk|!S9u(y9iHh3fQ5sXNf<6yH|r4?)JM$2Owex)@$qy=t6 z{7Q_$Q3wT;gP1A_lQ3c%s*Fak4FR8R_%#z^k|w>uABl3VOJF3HA+jkMDE~WgNffqj zgZYDPhsgeT<{<;)ujx?uWq=L?`R%X)`HMluef}jC%?`Q@4N^; zLBJag85;uZphK6hJ*jir%FY$!gOu)ND}}*gh4}1+y&_GsOJK4WgKthw>t&cT|B4oE z#vIF@&~i^|u_rY5F)jC7-20Vm%=wU4xWcjlXoaLTG?&t-Sb|G2ppNBuuS8<<7ObzL z@d!l+dP0(SAtwT0U?WFp$ z&u_n0PyXJ1sBF)z!`pt|yy8Jr^|AFYGSIcw-RITAHk7YflvGiohqoz>ps65#+?{~@*FaZ*=-7Y#>e_Gp zQifX3w=aK<{j*;eSiQa@7p%h1S-sBh-}L&cR}V(uDA+yF>Qw}nF4J4R?$sOa(E~S1 zwr~`0$7q9d@aL~ykN=z1t5PdhoBxli7wq2-_vXK41LN;KE26UY8>OBhc-j&ug!F`>j{X@bZ1$dL`S8!%q7Yv0#13`~@oxLY)#`kfws zT&K-f=C`{3h|YhlKh1h%1uw!v)w2IW6^9=6^A{;tm3e#n|6q|q1#Uf3*88%f2FA&~ z$p0GjD9E3;pGBUIJ}*7cygmHu6xH?TEL2;tp(RQ0zm)IM}1KUt`@dG)aDn1OZbUgVzzy#?~eTku${U7&+N zbnL%Q-L&62l^^zXs=qG&uM5@P#y$(xy@t0?-DWiW+z9*-HhyB8^~Ek!UB}4&xC`~` z+sTYS4*M+7T#(-%4?~`gPA~27aAEe>KMlVet{?L<-n9r~jv^s@yO=3E(Gy2u_!X15 znsg0$c$GLzC}jyf(3iYHDa*37)tASyviyB0m(M59?7$uqbOOllhhIVd3eZ*%9sAo+ z?AgzbqHlQDX>Z=|uZw?c^YDh~c(8f+w%6q*Ja2rFHV;%^UB}6KZeKny-mgXeM$jD~ zzn?vV{2xItgT(LtDdk9hKilE$=ZC@1c(6Sd`~w9x0#x0{p_4U=PFDSpTJkIPWMz|C z%8mclNtK*GqZ@_(aeVAUYNuF89OTp8f1}um5d1rB~b^GX8B}K3&$! zp`9neWE0YelHL3<^aFmdH=DTi9)QSwzcE<+zpsz{ zhpxV_*KyRv(X&=@Rv60b=dzD=-{Cg8hZvEj&-J(+2Lr9e2v-dRb#*aoG*2Xr)i`n@ z9tkgw5gOyO^amL~k%o8E|Hf_Bfcq=t9~K15aZ3m(wUo6|Lz0i|qc=mIfE2SOXu(sQx z^_?fKI+NP1oA*lWnmdtDyFJK1H3OThE7_-}waIcmHA^>HX^{_qYU-P;la$-2H7|im z*LQd=;Vs?949-RcM#G;gl+jlhde9kZwLn18RyrOY%-)&PrvFI~!BbE;#%`g7PBw2) zI8>+LP@OVL;ZR)%`{p!4jAU3V8w332CH670fq%u=OejsRWU#Pv;FUno&lpJTnEe|% z==n!WmsWCxApd9^9v%U(DcAv;nSe0XLoj&^UJW*N7>Q&k8IB?Z1{{LYCMghr%R_nY z1jQS`PqkCFw{qe@d!LN_*`SL+etYkr{7Km3f#~S#+IO5j;%h9f*_%STH@6bJPi&_9m&59N!fMytw zXgb;uZ5pCBC2M(AcjDBlIxln(631&-oKd^VpdsBWWxMV|dqqTxK{m9qO&JH80P@>) zGV*jx_0j{`;|=rvV_xT44Br9_*aGEm2tTgje~1OqKfQ8n#rx&On<~mD$eXKR0}t}c zkwKo0N-y>CAp@Qry!TV3=SQ;N4%2)Db4_7DBpoEkerP*WKES%#!l(0cu@l8^N~aUw z`hbk5;;?3h*OY8-Jprf(Sdj=`Zqq8+j$2W#MP4EHB42Pa>I3AL|77Ipc*sj%X_n*g zx+A1rv-eZwjX%rtVJbiDsL+mZ`MC&sQlQbiqlx4q2}<*AT%Gbw2TEM}~JA4aSmnWNSOF}dpHl|qlo z595dE8F(AQL`^L+ih}jlC<7>yp*R4zMu~f~tu*YN^YLg3${IKA26DB)`uep(;eSp7gWoY8E=I0kB8APUPkEnT0(${Njv!cL$dSZvtA zc#-yRevRlwB32O#<2BQv0MLoNb(!?GS{~1aO-XFvdYSlZR&llMPH0O9Vd8cvxl3Szd();zrXnYG5O(@_n_bO z@em?zQ1BVfK>B{3t&B$0w;No@^gKU(uZWTGC!C+6U- z>tucOp`7hrq1xAAEP}|^`fjD;LndkejR8d$nPgtAWz4=UV4Y;hr8@pIlqXT_}Fq8UTOm#M5_gT4edJcq#!2WoEVNr+{^Ob4+7voPFE$xF+M=}}5`k>+_A z2!avZ17HDU@#u{>F9b{u@bBrb($T$M*7wSF1LN{H$UgvSXUbN)h#yabilh)@xbWZ-@e5EDRfu#)11`To zmUCGb<{MEGMfoN2FM(bI`Tc6ysj{5cduh!DPm6E2e_5v9PZcXK`&q~E_A61|0n7N3 zKK19uiz@3=>&53o=xjLoHWNwni=xL}5>W22n~b`U4TUt2Z5kc*LY3RI+y&PBqPglU zi$&(@a}u1QQZJh1-pQc6pfbLIcO=uP44;uaJ3|0XL7van7aoks zlD>oc_E891nCC|n1T%E6GUJlR4?!~*V>=Ku9sKva!Twm3}yS2>sQ zC0Y?NA|!o*vpVnKvs^F%JVQQmO}GS;d$gYy5J;FWP(&#kw(8g-uz*QX?KE%=n7Cr0 zBp`C6A-^bp*Oz2{DH{jmgDa5V06G)o*Viq`KM#5xL`OxDte4G?%ldl5lUwchzP#Rd z%&^)cOF7NV)7GvK)uukBJ*Bcuqqr92BhhjhRs2n5(U)a=-Ei8# zdTpMLJg5ldwU@RAc{;B2Qsr&gzkBZ8m#^!6YgqRI(>qspiUkA`nJ4Au+?UAQtSgV8 zktX0@l8*y>jc5Tt2eq9fkGL8E=O8$YsGswSaI)8f`UTQKB|d7 zMxk=^Y7oo5jr&uq$yy=80qRCIX24ST98cn|_~w3Ijr;mIl30Z}{V53Af=G}d;8M9$ z0)!}$<-oqf2Ajm3y4Z53@FbYCnDqTpL{xC8AAzxw?X>KSfqCdIvfWSIZV*%MnFr%WFs+ukVqyqeW z#;2Ggw19CAKhhn6m2fPhFrE=D%Syxf$mDP^5!8!87sCU=I%xf$_T5;+WcsExs3$yM@wK_aD0%vZmh{YC}?UU^JRduGtlQM9pvzdX1c&@ z|FZ_h>0QYG2J}0S-~P`bPsgiX+Vw}t&n@cNcbqo!Uh%z6!^{7y@XYYwf&4rZzQ;M~ zdweZdy4@yz2CxD1MgcVjg_ORQ!Eu!GqG3L71p-e*)eJ}t2XTR8svkeB<7={h&iv8< zfA}o&uY=wO`StVP$kP!!Tc#Ty^VVla)`z%>j}A?qZynzHkqDr)=5+IaN|5yNmx%@Y zd9M7>ZPIeq;|#o-sFNHfwt7rQ3*cs*=Mgo+3xxDgBfQ&`W}^2|AX;cjG{=S}4{JIm z`XIrn`PHQKTqx`5DwMy=E9{%dC(Z$m7s#LQcOhT?W#~0QbXbPumv?WF_0k%Z_=C+y z$a!VR=8u6I=~G{pyz(Ch;VB_3KP+2uFC%u_6c-9kZ-RK_p?t0aS%}Io4Dl4eoGTo_51MF1x~-fq?TpZp(vi z_zri1%RVvb!VPZAPu%d^u32unUbx$8zJ&p(^ac%$>>}!UL13P~&^q3PUp23eCg9ax zZHFV1w7R&LPep?00>&h(F74kHI0tvzd@65ITdqZo>Pk7`RD^4#DW_F0LSz@yhM1Ds2{UdNhDs87 z7o4_LK#|1h9@&k_d(px7LY6)Hz<0GIF-(`retqUw2KK>^BL5=j6_7vv|A{;uk*|8G zCg;V77k5G2#D{M`);HAl5df$MAUj4pLQt-~mV!<$6rbIQLrLr6ZmwJ!DAmBR@I~q( ztD8yWiee~Afu#m`A(29O(4Yz%WRg_@z5+xr3AsUefU03#8?bu)j13o+wd*ojZ#SSm zn!Un*f_!ijY(YW(d{B=(9h1D&`nz0LdiL`x-jtH{Idt=ZsIR3PPlUAvK^43zZ5_=A zMQvTmmFrMjIm3b7Ry(S}LEI?$~%OV&pZ%IVif;#|Z-1l5B4ezXjEI?nLYc0-oCJG$>W+hz5N?<7bjN|#$_1q5)y&ib?XIrPSM@|L z?nUXGp&ICPha>pKD1>sd*d*Y4))=TcA+?6EK|`-Y+)g+X83@vmv{ZXMr}6G}G3*En zc?_Sxz6bt2q4p8TQXF{*yr9rW7sY%l>v`L^Wj*K58`vkFiu`v$*Ma|h$L&ZanTa1B&b87P-2$I{#naU!}hV99||ShL3C*fqFCY) z=(-fOxkLv7~?27LhX`)&M!Hf20$ zHi(Y=1G2w1|H13O9`58;k00t8>iG{rFB(t8K6@nf+uiJ5sm~erE@^ctNR9KPdo%kB z;g2-!wd+5&1AFbGlowb#uQ5W#xSfPK*|dYzKg|NYtX}sNH5A)rJWvFRtVXlSful{t z<)zVpW(FcyuRz2n-Ao9SO)#28ka<+FL1GTzgFypZ15j7tifa?-BwzvmA9G&5WB!NIe*pi4LqJT&gRLY{Z5;OveKv`U>wTQT~MG!@+vTAWh zOY5#^-Rf4{TDK}vt7vV-wbWYu|IRrx*@XA{`hx#A$#>_>c4p3Zw(oqal>rFvP|~eT z)Io|1u?b?7xh`eGS1Nq(7Pyp{gpaHX>wU)q9sqdwzV9OVNWB>TN&sTpexst7*59Vq zU(4QkRi4jGRdnd0+uxDLJvM%N_^t)MOSbEuv4;@=OTUH4-F;l{zQmCTD?V{KPp{x} z)bIV4{(xoOZw-6ET0vIw@xqxh*gr-aU$~N6ZCqQ)lWqJLgx8rxd^Cv9sCha2lXUC+ zwKd_NR_JT%(B+)1;MWkjvwfeEA)MS!i`PatCHJJm7x&}8rit4?eUZE9*cI;CC;J5M z1d%_4rx3isSz_xK*wzwz*ah}aDq;qCH*1B-H*kPZ@J}PMGRLX)jb(ji@!R`rH}!{z z8fr2N_h#wWhWS~!_IWw~r=fjqIG>d>tor8lB5P^ERmdFv;VNi&4N2#*+sWuPgkDLa zmlJXgExj5lsr?ICNh#by9h;2Tvx?Gk+UK}1QvFN&(VF9Iq=uZiN;+&_OD9}KL)Yrr zJ7{P#lwkaA5%zfO@FBQmE6v_O`Bus;>zWAror=QEpx~6&55g1x$p{+-K}?DkI6Rae4hQ2{|EIu1&E{46Zy=!E%HeUoCYTAtv9Ajj$o;@zHZU|9 zfY*o^oHWBMtvX&C&MTzl1tFf*igg5A^k)zQC2kH@E(3&4kOe0zBJ!8X$BHy!i%mo1 zYAZM_umWC_X&Hq75mDbd{AR`$BId9e(V`H4P$zOB$uCHonYx0a%;*A|i58He(!#&$ zS@?6#O(+Savt}rtN5C+&TEH&`%NHaIqBCN#4Ne!jk?2&k7H+zb29w6pOJHK4yg@-; zt(Rj|(_xy0pc_aD6DeCCfLS`BNk5r5AA)1iASnpN!x5OV>W!yf@x{1~yD2(&bDo?n$cgW)f?)>>|LLK+`xHC|ZZMP~{40R6^L@kX8 z;_Z2-b~*32LQI&CqM=8Yh59WGRT(G2e}Z6ZBDTF=uW4}irJ0f!m!n5R)L2GGl7#8! zHgF-9ThO9MQ$wwZG=yiOp@D)?Qz%9Ua9uE6qOyd8H?bZL!DTC)v`YVfLZ&OMz~I!` z&_L$+!74@8KzkU?4GbpRhQCOe5~>seVO!TLyuS*3a*08oZ}?K^{sP7UJiH%=wAfB^ z_k-Mc$xn5Q|FZs3HShKq-n;4_3c2s7SuNAsr`*`oRJ!kA1<}b6flOpV2aZM*p5Gn(_`C z8-Enwb)SFRmMzX5m~;Far7NQ>uD zx=GdBkH021Nw;dJ8HD0^YPpVr5AKShw2<;EWS$+pNmj)YehXYmwdrxDnu$^CqOl zw$9Yan0=#nl z3~8}l;_mln&(yVCJ=s1xmFi$os>wcmvM7~B`*wDR(OZ>myIZck_})7C5Kb*@xMf!}m?(GRQ>KD4Y4 zEc-)izz0_LLu>R0R^UVHVj>Uh53KsGmq*CUlPHVRFZ0fvh8amzGEHi6uKa)-1USAeI_-U~}8i<_{oo*e&Dp?sD3yvV%-m^v{ zs5$gVHdi|lj**Y1Ba*%O^h5D!(fB$F!DW=Wk^$YxMh$&^_9@`s6-B@ zdKokulVk=#RuZYxhSENP%842oSu?6}WUw(=n!t57i1jg&(L-599-Q?jCnX$X5G&)E z=oEGs*y*R&%x*kAIAg%0R0Qyu(KtPn&zd6{w;+ZA1~WTJo6N>AQaFQ8NAQl`D4;k$ zU-PqOEsoVCqMull1nPoV+Xn|h(n>BSHJ6aai%D=98HiwD2u285;Y28vFpZp3b8h1~ z!3Bw#7=Z-V@>vl6VC@%}GQe(NgchIF^BlbP>aFE<~1h+iPrp@bYp%{GoeTzz28?0UyLBSR}rY7 zL4$xEg*XY7V47r6e2m-BEEpQFV7`-7oPTKUq{AsKYSw5Zez?>5zJn1-E71KuM}}%c zbS>ZuggFnTv>*a+2l-%#+@b4(R6j(!FvNs=U!1cRolC*T;^H&!?p17_XaLi+J= z_8@ff>PR$M9_VG2L}NVS=2TK2S?1;f@kHi3mUGFk=4XX+dY7_e#lw8n5n9 z^VOa!JLL1Du7aOzKr29u>)7;jkX{T}4iKA12YUO-yLZU*YajiO`I+Ax_h!zA670;A zN3_g?UzC=4Vy0@U9!{FZ3>V|tgpVyoDT(i~=*L!ikLCAmfhYN)eb}9ZZX@x&v?dL0 z6hV&AIbt_~7Qp{Tn)t<;Lr@386OHGpb*GDmy(pizKDg^@*y{ow26%Y*0O`*Gk!utl zy3gB9A1eOXT9+>Ck@3HxkC+CUTh9_%kjJT?UJvEXK*0$o!8m|hyOi~ z2NkTl=kuL8efFGrLeQm$Pr{NU?t9BQ*S7?Xg%rY+ZwRYNoCH-f2x~ORsr7sk04sz> zN{wmkG&&3GE%somrM;Zef+hN# zd1toF6Y(7M@TowS31pptuor$9c#%q=>y*yOGGYQrjzSWnM~Ol+1VZ!qN(G|8*MkBR zxST)`LS9G|F@#&RNFQ~lj#E2b{H#a0J$mgcq@8PlFMx-iQl!N;!rkw5{f6$WSL-5q z5kJ|ZKeyRn1WR z>KjZ3ayDW}I|0mvj$m&f-Y2vqIH}YNprRVZGzP7mNMAjvcSQVOD;7vXA&l^rqI+1smkR7!c_{02#75Fr~Kjs zYG;jRjclwL3^s^9Lhqw=7VFE?G-*{D!$I-}5s}@3h`3x!*ikF3PjmMR-FQzk4YgqlQ5xq!7Zy6O$!IY;<#dP(EW(^=#$YH` zF3^Qqo&)NglNUu$2dIY=D9i{lBnMe^fSduP&T_*~53y1RJXUHXg~n^FZ#d!PYn4&x ziHoT1)Nck5)WeB5P?t9hL}rE8$^^8>(#8>;(mK)^K;KU11o`XT>!u+%6b3<2EeA@q zodUc^jSqX#@4fNi_>J|xPXNhH?c)R6u({qh>jvmn+^EKfxdYTVI(3lR$ID-nqsyQP zt~~JM|5)$&zoAnwP8@Sa%dCYx)wjEJ!&BzWnl;cyE*b;nL60#?p%4t$@2G{PU$mc8nRUJ26b8ePLpTG z$=`XMt{%S)4rCPeeq)P}Jgt0SYRdpFV-y;|#Qy4t^yZZ<)p*dEGXrq^Sm-@JuM*lba zq3(4t?usmjbUVg*jKe9bSU^ROKFtAWUD(ZB-adhGqizRAMsWMgj6YM7X`Mv5pB0 z#9~-Y87VCd8_CW`ek!8fD50+qt_hP2;Z}KI&(Ra#O`h5`79KPAk)An=4yUU#bQ(7@J3=m%p1cdvncZbLafeKW_#FU<=dFf2& zyKOLQpd6IF|K+*4{^J$y^Yym}kb4*`Ay@aS&mrg~pB;CO)8w(U~%wnumG zjVpcSs)+}X?rv^9Wx=5f=gm5M#5_qeizN#pqzhx)N8KgM70kCs%TaQvhJkUT#_p$G z2)c_j@;C;^BvkJvdxPU%I^{K5oMV!pW2dnnnL%@#T*%O0q93wqy$;G5QFFL4tes4w zuq_P=Re=(8La}s~#1@v$bLrLSh|UyS^aRln(W$`WbJZm^tegVy3xiHTb*s=WfayyT z-r4n7wLbxKdR1LfP)@_!X)CJ}ZAAs|PF379s@{AzchuV{NS_Hf7vR;~V@U4?#BbSm zz3onX5A}A;%;_`!jf(qPRNNX-akp#i$*vW*N+U0Huec@Jls|W`xb6SPD{lRBs^0EF zeS~FC^7&%7LjM&|3GnJ|9MZD@ivj!UZ=bt-6JC7)``ckH(iRN8>@zBR*%r5#J*fLG z(cyIJjqX*lLYwljs*pBLbbLoT~1^rs%S}5Vi0?m%<1tx(Mb8(M6(g zrKU%!?F8%6MZ%adLYOhaRwBT${0M;`t~v+!FTYcG&feC6=W~!=2DlvH;rU*q{{Z+a zU|)EC*HHYa1B&Mf^TaAajAoaq(agj1%erqB@SI1<`*dN~QR^CQ%0E3!zpF64e4nG0 zLUlb9Va3SQ4b>2y#{O5xZhBGS`I6f^@cb^)UjV)Wcz7g3 zd{rY?Y2C=qr?n}!s2Ttt(Iq=CQZ?~^nC$eusp{*jZ5{RXGSYtrdj8@a z`>L(U%%I;+}*vtR{fu^uk~-K z`l|VLM}57Hw0U>EF9&eziyd-Lz3&D<^S!FRnyyp)(nYRcsh3ZAP1fVyhZNtm=|J*L zr3z6GF&~kaE0ZtYO55~1DA`JvP`Uet$ldSN(T8ex5l#xO;0*9M20)~+*+4Y84F)VT z94s0~`rgv34eK^7eY<8r{U5~Xa~i*0gY9)>Cv~!Rp%ulSPS$C`^_o?w_m3HqDY;We zGdrcQvq1JsjohXsu+aI1W^K{frMdxO0)0%sl-T5a7>f2K$9oIZje6?^x|BE^fI zH-cd15U`X6K<;>U5UX%7(;&VMka!}-;#Q2o37th~=rWRo|ASOsYf{QTEWdMPzPMYi z*wbfZ+n+2BmdGb^V=_`kQXtrJ?tR)>y}kRQko+Rw@-Z-y5sQ1xa_l}L_(>egeE6_8 z{btV7?!n_BEcn6N14n2Y6uRJ6frP9$xL_e6FBV>QAo=0c2pM7KfH?s7Jje=ni%r;phqqeB;w z3gk5%j-+BW$5fM=vT89BTtR#{BK*neqELmjSSv6>tW1!mg;IGd#0p>tE>Gb5cev$U zi*k7M%vVS|58xQ!m3K1I=K{6>#MYgkw&?qyX9Pb@u+mOb-XHfx)re>&nv8oF*ZHWvy^naO|20QH!R68C2V28iK2atXV@MnNmZ#O;! zzi)uy5373H@wIBFi(LEUxT}9qaf;HnJs|D087koOT4pIR-68WmaUCsQPoHD!C|OUB zmA|jTi>+wEOW9JpW|>{P)DAAQw@}}+tllt|!v~cVOPv5|*mTb~DE;`U#qiqx^+EFgCaDtTIW~j?0mfTQ(IB^U@g%GCnBT0PhEM59;9ga9zV)%v} zg_!W{d>*E0A!8|pzUq;}U#UOmKq&x>Tn$|EIMhki)Is7kvD!F{Qk{c2Jhs7Sk#Nm` z0h5)BJ*|L$BN4U)13x(JFr^c-Ul^J(It&rhey;&(Q z1Cxu90*F2GpyrDElEsMLohYeP$am}hkT0oX@G>=oJROQdQKGZtXQU?`v;83$O6!o0C-}UvN^4fm`Xtyz~vbjNQ-{?-1D==le$ z2y%M?aOBEOJ)eS-EJ^A@JSgK95kd1I*O9j-AdLzBb=h$ zWw1$BHQq?cJMykzXJv*x&?ch(A2^oZhO06x7$~{gNM8dx!jM5e-e0auO!A;v^N?Bl zp!jV23WEjvBKqW{3kh3HCOl)-K5N!KV}=fs>md0FKfp)cvcK%w45%-ptU{|)s4?Kq z8}@gn%&P@=tlQrmFB`b};Qp@SO~Z^rs}R59J$LW#KKY*MxZ~<>cR)hE!nA%)*oB5{ zIZqf^jZ*T6ysZmncYGJK|6u8_uyz1uf7dPB_WF9)AlI2S*PFH1$p-N`b1~b>rcJoT zti9E&y`>9Y$Kf0A++Sw1tj!D`Dr;fAN$xdr4;hhriE|$*deG1wLq{=1hj7{n30b-m zH<+Sm>_)TZSGurS*=g3kZHC@5<9KKZ7b<7=H=z^)jFySBQY1$(mxRxpkT5MkfnrvLpw+fn425$ z-*TGKI}n$|M}l)qz?X@oFT;S}Y*$&$b{kBh!^~_aP{Kp3GEx^Tw0ik#V(Ph&(saNm z&fTXGRjxgo_H*rtPVeAkrFJ_a?@9$+OMFi!8 z_7XgGApw_o@u9JS$?`()i9tA9qh~wORlkP28)z-NQ{ZVXVO7A>Sd*8+CxRfi#Clxl zNn^Dfh(vRdykwzJou;LUaB@7cV@7_yScFqNoo8mm6H=X}fRv@~fQ_Xd|(v$R~Q2ImlD+Yw4J)oaO+^x$}1x7+GTW6i;} zjgZ|B-bI>fhu1cRU|$1`$dHz69?|XQLr*)r+nI9QbyT-=<3>;DcIF4uj_Y=&9?wnn z&RHi0r%9}|#7@Dvk=o(%i(A){S?SZ_v%TBgg3TcdYUbB202O-LE^pvMO0$j?q(j3qltdp@bTh`^=9#iaHU61teg zabrM&^;4Fr$U7)5>D`zG2W67p6?<9{$8Xe}2a0!+nUr*Iqx_9PZK%i`j9&x&X0TZZ z6{38h^#Hm!=*`}G4P&eYF2*(lFCI~9KzflVpCD5YC1d3x>NjJmy8JHH90oG9zmUwXHjNmQ- zST6-xKGGoX@?1}8cusgqOUOGdOS~lXz;_Y;I)s{%aG?$8`1DE9Sg8^@Y~#J0k$2h z9P+p+7hsQ>tv8r*0d|c!=50fN*1#O>#{%pn0}HUnR5+%+|HB2?>frzG6Tbz^nglNPh}A`UO@0zL=7~Y?-t}wuidG%5Hn}v;(*fpU^UGmS?}c zmENp`C0o?)Lsu^HzU_MoO@O>3XtS?OzS``<6WnQ%tIWc+Q1K-nNb0Q%(fOW9ZZPM< zWME*&+Wb|s^mR6{Of8}0bWtK5h~|GYp_&{2Ei&Q=&Us;pT(pL52JXW zd^YT)10YGkslw=|I73Zg)gJ3!>}Zc0k$xEP7{F_f*S=Km`xtQc%U#>!q9av%JluXw zw#$!>J%H_T%6gA)7woJAa|OHyG(YAY29kFI9V<4?b2@BIQbpgt*`@X zZz_Ke+ga9qCi^*8s~PC%qYaC8KFO2f)oBlz><{vZ=^vS7oqS7&*MH9_>d#B6S@h&{>tW=hh9Ci+O!%#&Js7*pVuH$o2516qHmG$Tx& zW{Y_n{sa*YLl+veutB1wdQ_;5N50ecJ#|3cZ@KD#YFWh$8~(wNQ$X||xce=#OPx#* z;*fTTk`VOj>1S{Xh*B{(Ap2#BtYZF^Gnr%PVx z=udw|+WvjLF9h)V(}PI!Kh*o?0mQbWT#fH@8&rSdQ`PuB?3nMTKeczIt4!H@ZqPb) zr9rAIz3=$0w9u8_G1I$D@DT#&98Y#@wpfzi%rO}xcA4}I(|XgS4|2(QcpltM@`>9C z+8MDoa&rH7yW%~Z{M}S$cJ1BkX5PA#ODaK43(Yc}uk8lqjt=qd^LwTo}r*maDXpdb4n+QxQ6zBdgt80xfR`pi#dPlwe6zN5PB>=D9u0dLC*SUMoUxv4r z7xCjA_lO+G^_y`xEF~At7K*tOz^I?#dmiIF9G5^ZS^e5V5kp+W|5mp=d-0uN_oK$W zQSUnjFcILD=QyOr_Ct5?eYdxFA3Y%D8F$ixmRW9zvM5p3_okKgQTe~a{r-FKUEcSH z->mn=0C@oK`wNg3Taml>zT4X$$nPI9b9T$Tv)uxeqX6Z;cdc?CmH*z0v+lfy@AJy> zXQT)HvEDZm;Fg2c?yUEH23WdFl_wrj^WF9lO0KkM^XoFl$!?s8sRvT7bkxGrr?m?A zERZL?rG!OerI2Wgk`=uIkqJabuPOo3CAvI<4XQZ#w30t9QjguPb{lX_2$%keDd013 zunZFa)Vh;=BFsnApcP($ROd6x#QD5Wt*!PaR{p0}Db9Zq@qK93QtMZ|@IG!G6U~^v zu<}2&^pIX{H_?M3Bl^}71Zx)}^lOX!(n@c$#HcmgxRV%g9&?3d^$yeKUd@+V=~Di> z#lrrj76dA{TWqC`@JXk!E9~Z=eZQq`x5#o^Ab)qS zw;R0PYBP0x`XameU^YU3+{#z@iKN*loK3PfS}aZ8kXY_A_D^)BYI`~P7=A3;4R-f% z<9y5IdVIsl7wy+3apOx)*I0au#X_xr=M|sw)=zlFIdUOzhBOV{%*iG$jBKOVbNxC# z=0-Tg&}~E|e1r34mer5kBEO@HEN+WMZu{=nZMJONrrP^F@Fmwn zSA?)JPdhNSquJ1%B%F4*76~GFh9lg|+t37=2&ZO>^pndYkbcQLBc8#C~%fu&Jd&L|VaqogoP?cN4*roBul+VB=lIMX*$ zGnYPymDRx3T4CRN>HuqqGWe}$b<*H>=nqQr4PIW5Wd*Px9wzdX1SyXmN=8Uq;zNwX z^GB0WLI=he2_jcJbyUU3))5t8^eV%1cv8GTTn}lf&X6sQoC04Nvt=;O0PheCR06B7%rn#kXs9~x(=qvoyqFMJF8p5 zb1}$jBhcl!j34XDVqwy3X;no~&Mb7fF=6;PD|Fh8c60dZ7_GqC6sufthZ-}*&{{1B z=pkiXohi~o#RyGWgyR5YHfTv*Cd!f`J;U}w5kHe{U z3UTkm0gUJ|_2Go3fx2blr~$ZC}DpLRY6%oTBJeANom8v4hrgsPvg$EqtcG zr2RIQj;*khO5ktT0L;51#BQD%apab;MLRHNQ-T^yYF64@*;kAzR;uf zG+|zA>#?(D3P)lXiYCg=iU5$#BI5f=A+!n+bVCnWatx}VgEW~C<<3Jft3@|%bIUjW z!;bQ8Li#Si-2ktAzeQSXue+>L(hI5s zh`$9pi?j8RIb6tHa`Z&hx<%^&Lqx5sniecvVVTkoB3`kt#9nwBDO44`b*QT6$$#m< z!wpDp1KbPn@bC=MVtd)$?+*_Lpq|CB)pVk)VlgHQ46Gx*8zlx1;X>3j7HqP>1L&b0 zCC{R+8$FKR_&Qb2rjI)GLa#x3Bj8qmSI+y8eiHCJKx`lVQPry#*ZlMM)p~wWzaAW) zPimPpYaipp+#ARoQQGoNylOLF;Cl>3Hg*N7-U*y4ij~9k+6sa(E;zyE=;81=l>-S0 z_c{QC#zJ?tpo|4FiN>Ka9=AdsHsD{eUg2Z>UpwMuZ9)1Wz;6H^K3+juY`fh3-jBNC zLtezs)P^3!M@65JGD;h~s;Y!&0&V1S=zbw=Rz&{BRwB03F6T7@XH_}G=w(=ZA~JQthp$25W9r{J`oTj;KLU6h;NjyL zq{a54yWje}!bf*M|2^t&w-Y{&UN~n#>ya&UA7qiJNUv^JNzdjr3YXPqV-14y#KB@QJ3D^S=+wM}ukE^>?>326TQGPVH zB-Qz*5j*95JwjJ>s=w0}A%LnY-l{ETcW7|v(;|P*lE2RoxhuK@aN*R|P`R@%|O5%wH0_duev3Pe}#)~E`N z_2<3;nl{LyY(zx6LUgD7MZ21ppzwJzXeTj@Lj1mTJr~F~6ZKpM%fc^vX zXKh*bwUPd(!M`$`<>l~le!f<>Setad7QHpWo{O8;3;M7cK@ijWk!Hq@&>A$(DQKqw zbjy6C{q!&hH~Yh&lws)!#VVHNerGUj0xO$9;Z-VL*R0I(2 zvR;$l#YCWUZaE0n6oqn|SfmMiL;+C9;z8J*Ai@uDhJ_zoe+w%G29NMi&xT4+AtDNu zvJ^%aF7IM2i#(u02NOun;zlS4zhQ}d1D=JQv>kwA0#YUs_u7d7+>0Y;#>DcRi{~`( zZlG?3&)nXq#-qKTcEp1l`+2=@4&Wky*RFRWedHJLhXD{<>Zi(o%hcmszp$>~oXKap z?fRr1_5avDPD{^^6XpoItcScb&Tc)k2Xm|FBQir65n=k*L!G)k$MG!-W}ruxZ0GM9 z4|B4e&y>H9se``q;6?H<7ZcVAbQD=^(-GtuLMMRdE+({s3<>4I#3C!$EX7gXKPZOVqBLEQ!^2t8H&x;E5!y4v zn84h^fnkams&Ia%t4_iLP6|^oC!^5qdI3@hYtCdGHPLBAbT(lpCeCuF7(IzQr-4bQ z8wpUbh-U`KpkpG&Dk3R!;uj1&GtEMF+)By&ID_7iR_dlRMiLqoB^&|SL>I={s0HOr z_bqW)sDU$z+*Qs9b)Af*!#HD$vw#%N@Pw|FAuaM1=fu+>DWKJ==Yu&5POA7Ghl$v3 zBB%ZU^*wP7(F+ho9%jcFBoJc^#2JLJxKG@RMO>04!kUV?DLe3J)$ezIS?`-HPxyRC z{Jq{c70?Rs=Ifs#Ew-!NecO48E^V9Jm5;FG9Cf~jn*6@{ySGfqUqqMb-x9KjHp*Y~ zTMT5ooWJY7EA=vppok;suS6?7NE^h5BP0acOBr23;Hc?Dauh2DySR|R93CU3xB`0u zfoXXCl^D&rVb`Py8L&AJ5C%p?Yk&%anWK!`z^n|*1~UhcdO_QY`5}MFD>jM|6OTcK z!1gT~qwst9-g@777r(b4{RrR*fQR3=kQUol?tbSb`^N9K*#{KAUDkn!>Ap^1Nl6=> zEPu_Fm}GZ3H!l66unO%c&yf!Pf-Z276?8A2%g5WFxkk`a&YDg6pE|&gW{-Y zr2htr(}suuoDa9GJTGgm$llcsCa&IKv@bsnzLYtqie zDY`a=oUcyPYt#196kCzff1ak-r=684wkoAxm!|8}&gv8kuYgD4BX82GKhkUeqWfRg z$?5sjnKjJD8^7Y@Iluo!Ka3;k3OoEQKV-3`FSlu%?Z3dHFKO&e|L6-X!F(e(+YL9_ zYl!xfyeoof)pQpDv0DmH;^=!=j8|Ee+<@kv zLBj&HV5e(B_R&{f4|&&(fgpiFAk$%if#I@r#1FggfFF(m5tEn}z`<)AX0|Hl0r0IJ z2YG!gya#7M=oY{%xLRC;YE(I#l7wkirt;!La5fMtlt;qhUKV%uj+d*mmOooai(nIx zjFpOKv~$HedI}v%pkGGt4|zJU2n&Lo zfEf;sgpmqI@FNrIbKDfh5i($qKNu2$pmEJfX?|UJ*MM@}0Z*xSO%N3B)8bqN04pI0Aa>xpBn)b!>-jtsJq^#xG55Iy zj`wj7wc%rhYwCINUcm@v2>#vqxia7(jBik$SU{lQK75Y}vW7{vPg@q+TE`|+NE12cB5aORQ#2lJ-cpE zr27wMcPz(a>&a>BBunX1;#&p(CndB=@DdC46u3q)bl$k2OA0}t2$>dGN&pcg2*H!LCG zE~@G-o!zNxcj>u1b@Nu`KP7?1aurGF`M`ZI3NO+^O?4PfRqIt4b2QL~($@fXV0q`G zeZuA&ZCFR26lQNWg|HgN2x&xP%Oh#Ass=x7imIo>X@jpqoWQmo={o@103QAK7}8>U z&D~Faci()^?76DmdWgP0to5WhC%1y{sS*OAQ-6p6yA6Oag6!^co+iG%EQfHHVCd=x znPJ86u7uB6oB;WoCUKY@p{!tg!kQ2!8PF+0+-L+vVvu8sfWi9DfVkd{4|W;S4+Fjei0z{@72UgNuG(+@gYs|pz;)`_*R%9lJ6;xc>asA5cn(%N zaB%jb@?|zd9!SFok9XE@rCrlzm#?&gZT8en{CJ3Qp^QX~&3xe|Zf)k;CLWN#xy^jq z2F^A@!{;*i+{kSUDbCqnD{Kq}3i1>_`?Kwg9yQf%# z?{L|I;ML4%@J#|N0(j$N&}{H+0Q?ppHveJDAB*p1MgLE|ShcgwcfX)=NxmcZJ>CE0 zI$+eiIj1Wg)cghWX3m~Izdtx!GZ)MPi;I@*rZ44# zmhnG<^ge1c{{&R|F_MQX+unMR-6fm(d(^kZ0OyC7)Y$#}qXr&26HB;eFnxkpsZ}o1 z2EmOfL>pO3wWQq_G^7Qt$oW{}Sz-Nd(mOSp)sn@TqrNSeskhP}$*X1eWF&*Pq&tJx zYm`sxErCotHQM0(J}!&^gHTa5SU}dN3A^Sz6;1 z1&dMtNqso22PM-=0(oT_p)=s8g9UlnH%qe>VB1s&NCTcfq7P^|xGfr@W6ck}#xQL< zG(IXqTJ%8ZASUl?bPkOi<~PD3hXOZ;QE8eU+ZSJv6=dgUIt&&5#Pp-IPq18~)$L4Q zG;eD?!LV0o0+BA4DF^bc5Gx@{xHc5LgAhhR;p{Dg<|x{KHLmvpag&1f4|9sK%;3&c zsO%Nsx+HCIEic#$cM0B7Di99(oshqnIp9<2W)%zy1Xm(Y?h~3FWboG!jDWmyuT+Zn z5gk_$+kx)>*}GIft$D61 zUB_G0JaIt#t;d-HoO6BG)1qoY`W)#IZP6h*cs&e*&xE zJo*LS5A7aSjW!L6@fHHeLU2XFRRn(b%ux8<3A}lHzmZOZ?+1Y603LqNKw4~9xcmL# z*MF|U`vJpmSI*RW`hvDjIAW_^ClP$R?zvR2cD4Eb*2-P2qXGzoDJ~ zcL&nP1{!=%2W7$>NYj+3|jNL%x7(z@(*?EI)!K7al7RC1BP!` zfvaR|hba0#9xY7=_!3AH}Cj>>*regcztV^xBjBr6aD4432q*~hjjV6gTMQA=l=U&SJ}?hL*D;&S@vCu*Smdb zcE3oC;IqLHL;+v}NQQ2K`1z{N6%+Xgt1g3d;C1@`FqiA{juuIAZ|U|Om*739<6mL- z1=$QD{MV)+jA~Mq#>ngRV{g(1KV>#PX@(v%uP5n@j7NYpmY@7KravD;&?X4}wDANKk zvK|gTkXc>98&~ttHT>M=CjT@x`UVdN&l&8k4jjB-u$Mg?ykf9dJsiAdu-*BE8{&8^ zd%}D4C4;@&@#r56_PY1z8zNH|eQz5AaetH_aS3m{n1@zyYgs46tt?^vUm+JW(NOQ= zjd$|UwH%0?|8F7kJlRT~?~0yBb+V1M^P&y#qVHwo61e7$={Lsox5LJ+FhR&Uzn;4~ zPQS#8>r8e%{NjlZ*uoos!6Q${SxkQ?Y&;1Ukg?IP87>$5LB_5&Ik?!X5~-K+MX~-a zAKJ(pH}KF#ZtczQXzX9)*l=*V2mf2eXiDf~Ugc=#{#Okf)qlUt_dT=m&t~W&^JmQ3 z)(K(1EMXCJ%raJaC0QFNeaR@j(kxwWjQX6Fe#T0FCkX#qA#{fKEG#W5>CiwtoJY$e zp*UD^Rs)!F*}zCjqPQ9u67EyrUKRTOMqlr0KCUK)r23S8=UM*`3p2eVW;GmCPjJF{ zeS7z%&AH05q1Eo4wf=%KD~Egv{K3L>(UFCjL6O9u6o>9Kom_wihTwq#m4k*3cOOWW zs@qv_r?L*r{eDGi?=kV=;|os>!&5_tH1rwieXg7N;gQPfssLR@`r)R-anqqgM)f(` zy{Y*`GOjPqABFQ{hBWt?+@4DLs7~xg_%XTY0$}>&S=F=i=dp`e9n;b`dmuf+m;dk z!s1RyADfr2s*-&{1nch~1oY%!tr5z5Td0Ag*~mlYYHB0tH2Oo%PJ(#L9ZEr1A4V3_ z6t1Ql^F!(71S~MA5)>-Vbi1#373nS78u*F5NEHDit++3NcQu_HQoWfBLKcG?hlB>7 zSZ#`~^7zw~uXX4vp=9 zl>1uKKaxzy97`sOm)8AYGdT{o9N&0C==gIdII0kjuu)OK6hK76 zCh{XZc4Fhy(23SC_d^bTolL{YlNwJBos@q{w{M!cip+JtU=BG$$Yt^ulAnlgaP+#L zUPTvSejj{3Xu3tzRFCw7}iFJzm%IO7{ARb_snpjF& zR$-d;uO?f_mExhRNaI=(x{6$aKliaq$*;&yO10ABQc@ZyO(4}*4g*3MR15YlJe6tn z@EC&_|Z(LS zZ7#X5G7SUvGXFu<5@(-J%pE^x=4`m;2Rj@rwwsA$v3-V};ITcW`Cf!$svlwatQfIA|vfd*rQ6_AGG)O=bX1g+JQ$tG0u1j`fh2IOOFS(buI z7Ym5tU0Aa~L)Qk&O$>rT8)K-)dW&N?g;Jqb;~{qHDuvgkq6S}^iQ0@lUa!4ptkcMPZKt(P zs)3)lftPONWCOR8gO~BhQl6Ky!6kUyvOZ7`v))4 zBNym-@A*sL;E^|Z!#kYYjnM1- zXAq`A9TmE0@N)$Kr(JJyTAYLZ0f&769VYWF4*B{Yxo$Xy_990LtZV3_Iq=kM5l9iF zhISBlWY6{X4O}GRR`+hVg z`lC!2bV_4tMc>x7m>m!JgWwXo&&Bl|hEPiz3Sowr(1u`{+Y26%lOQA};#lMv(=$-< zH8r7*k$`fPjwLWCRKyy9uQWuFh8GeZKsxL&^ax&{NWev8Z|DxTGHUly5mx>(gxoUz-WLs-nSxs24FEjY-O(fcjiN-m$2nY zH9k!}xd+Fkne&fpoi|4)A+&+gmu6SHu@j^FO<>d=w3#2VNyssW`_{v|RHI=SLoMLg zAYZbBzFxTawvMpG_6X=8E+!=AaaCWq79dd3efXni16(PIjpSL zhKN1Rl>&q=hYm=KZUXgI2Q4P82XV&MTq{POZ|b!Qj}>Jd`Zqs8x(%=y;Np=zjPx6T z4*+7Dx=`V($<^bS?BX%(+GDS8?Lm8qQ|8P&y=B43dGqFoDHHnAFHxx}UDsJ(`UP-C zkB}OgWl}@4(RZI!Mh6*ZpKlxioyA+NvRf?w7C2FnEvSrMKwt@4f(f|$^{ldE$x*x)&w+K!gMKz&H@F%no#W@iX zEd&Z)=mb`YG|tC_I|5Kdm>G%Gz1zOdZU5yBKJM1bBBU<{ECqP=awXDY+vM*5J3kUl z2e4i`Ig;27M-ol{6F(9)>s5JE6%FnFxGF0feD#1vfLGobNM8zA2N2ti1**MmKVR*+ z+uz5(>z?mfy(K}}dF`-e{``ffLv^G_+F;ivKD~9pggK|R&ORWS&uwizP0Rs%$d5iI zWDi+GKgLk7+gYRej>}Ov{)zEGvJB4R3!npKq+oHtCc{e#gU=x-kY-qcDO_CVpopBo zVkt=bfb!^#zoFJZ#E_zT0G2bj0ZLX-HA%vc$PHA7#~~F+C;QBS>_K|WnW)DsAdpVf zCkA4J?f$HvStYCGP#9#!v|=p^W@?hhv}%>o+s}ZALcA?8YnOx2yivo@BQP!>21gH- zQz=l6Q$qp5ZBG;|+N2&c!mwp*KSrdn_B6D*J68(uyK|GOm)*d3SYq7gYp%kY7qAZC z_2*0aHTVMk8+@k##CCW}(LFnEQuZPrx%y!btWkE5z5_RY$@&>RZ_dKG(s&t_RI*3E zG5E1g_UKEEkDqR5cgf-BB z`fY^vTTk+^{5a%F+PIQV(vwM=D1%UdC0Q&53nJ!U3B5f(&ZI75flJ}!i~AX&+Sg=- zIt(OP=s1ZCz2%Jt!q`AI)-zb# z!l@S&>@kH8fQ5kUIkgzZV737|tpHjox>F+5aWP~CVl*BS*avAQRJYW?#RL7N!jPYU zCWHD=De}}EalHtd=wbNCHF%WpXgC%~CemrJ5Ou<_c7Zo`mdf}Oy&$O4iz7u)0kwE6 zPQw^i#j03$GKi(hVm9@=>PR-8ih&UWtArxGFq{ok8hr*)JI8}Mo)gBRAzjbv^eB8g ze7wP(S7>0FKNU(~(Zgw;l?RCkEFUesZ@Ov>P4K`#U9QGBEzbs`Y^Vq*B6_`W)}9{5 zLHFpxGc{rL1j1AJ;rGrd(ZYd)(@<0cHG{8A$74pcu)i)XEofM<9f^mR@;K}UF{(u3 z3C9^?4i00*>Rro#^^L*a4iHnU{j^|Ehru<1tcani>2`PAujv?Heu4BofCmBI_%eC` z^nd^l1H`uAr!UC;wJu++?L#%L?6^~nH#>XY&z46obc`<;S`Z@eQsZF}BJgGest`lV zA8p@S%&Fui0tGex43WdaW~ZW_LGUqw-)eMU zM$adpQtRP1TJ+&jq(*PXT3AQhDW;QSQA{ZbFr|m2n)3oF7V2d>`3FTp(a8|%HpLF= z=!^Nm0^|q|p-T^Veevhene)1q;dZQQmp;fxV~v2ohVL~Rgle=ObG~E?6h^XoS|`CG zFe604N@-b0;|08kLroNPM44F{EaRn_B3_`EA>tXDAR`qBWhn{~O7X(>JJFP+2RA&K zM-dmO#4NOmLOId2hd_9X##^3-_c?!Qpp5y$F-`($rxw&mbpZ`P&omV7cw?nHLmY_7 z!ePCD!B1Qe`9gaYu^7w%_#G6E09?u?2n4VHrE0%?U`P9%f%Msc^8jA^{S@h=2Q~O+ z0>qa6T(#e=^Hh7Sap~Q*iR!qiXZ5E$)4Q_$9x{La%;}&@g}aM~l)H<+8^XE8Zs%>k z?`hG1-yj(5`M*>Hei_T2sNM@>(abUysDZ&$ijJd${QdmXM3Z$=e3Wj(DP=M=39+{F z$Ruq7W${qLb~HcB_0pqRt&|1TwPT!-Ryf4|E}H3A#9TwoFI7{mrVVJ5KLX2)K}rcd zWPApv#h6}ntfTv(p}>b7t<1?5Tb3%V%paVNW_lMS^C$VoJC*4`)S=U?QZ$es7mY8R zNrJNN26_j}yR_Ta9XSb@SX#>-qA1x27-7Q17UowVRxwbT@bMK$qoKiI%+?ZyKkScS zMhb_AL-zs0I0ju#Mqt&sRm9mQlP27 zlLwylhTl>_mxIaWFM$ZwG7&3?Qa>WdDnd`RVY%I>+VN9^JNRAwhhWVHmD)&0A=6bFC zIxVodj z)C&YEv-c}JhKF|G@oc0o1#AF#czhV?9e{TL`@&=PK;Usk>siY6bPu5NA%V*O$K00y zMpa$?zx%d%@6EntW|B-YlN|_22p||h!cGto1r(QR0tBHVL>8B7Yh0^-inwE0ic1x( zU}~+RbxEzZwzY~@TeoUds@S^FN~>SB`v0AK@5_WJ+D`}hUpVicx6I2scRBaobI&tKBswscj8s5>c8Sh@J5_BuW# zX<0gb+59#VeDRK;U87#6u{GKzooBlZo;@SZM(`7HJb~k5`EfPl*#?bgqxrFkAID$D z2Zj40uUhOiYb-ymW;{EWJ!=pCqrFR0{)ooF-c;F6)w)RI6P_M0ZXcwhnQNGRB~;1v zVrY$x){D+%_K<@|MpeDg_Tryf1E#)0pE!(6TvzB#_3}Jn6ick!s1w+@BgbFGmYCKC zY$(CbyEVgq8HSR}g^Y%V75eC9Bejtp_?Li<0Q{;)V*d!!!QR&){AI)p%r zVZ^J3zqo2`JoD?6pBkDFS1}gyKdDw=)?Snekg7E4)gjoTUP)aRCS^N8!^#S+_cNOQrvk{q4VNELEL^!U&D>a`I zXtdh%zJeyr?c{@b#230&0ikX?CV!YfIT+p=Q9vXf3~%jYZm>{jejd(8J#wo6^B zzsJ{-4cZvJQ}bl4D-fRw^Tac(>s75@KLbLj6R|T|1%r4n-ao*uwEhJh6TB?@y3NF{o%b2C2ZL2xCAL!OD-6(+|;6P*8FlN0c z&x?#e#XsQ}3O?Q5)z0`-UL9flMvLs$j5oD2c4|f?yNACK?!I5vS&M&~4hQqYuvw)a ztloq78xP`kxD0U-ehGvR3-`keF9QA*_!FzYQWJlAgePRYLXWT4wK7v3_A38lFEZl^ z1|M#*VNdb%lrhp6W&BQe9@CBI^1J(5AtL7gKF?lOPx)obh{xpd9yWpnNnB@Iv2EzQoNKrN#VLPLMVtvGVGDj`%f%j<6ecD85>Onn=T)m(HCMSD0`t?>A9G zwo#Ze%F40`9*g$|bhC_h$n89dqoS3KDtnqu{7GHj2q7Y#U-S1681mK4=!Vs3% z;h-+IG&#T6^n~C)i^k{Xf4>I)XFzH~j{k%vHYpbaJ_b4hOcYO{5=%CpOjTP$O<6~4ua zZ?+=0Sn6i0R$I^X48Qv;JcPSt{5W2D4dEqyFGwT!%Ljy1|2jikYhYrc`p2?$Mq<5T zG)I_!lusR^hp?#`FjEi8$3Lj?!*htOjzb4!KQ~J5GvFv4K4?SGP+_+kk~`dB7>^p@ z4mTOY3al3m>m|d1({aNXRxHmFIJ?&f+zt7$A3SGHN!B6$s)dkWsXH>^jmW-2^#OjNOOPDv#3fHq#2Kqyx^slh%ra=}Rgq#mur8oq^nGc~%IIWmcrT`Fm zfl||hc_sWnp=aSL`V4v`+^Rv$f}UnYL)g7m11a=o{7IT8j8fxpX_GJ+g5o47QXb_IT!J=RdhTDtwy0bM=i8Uz!*@bzK1TlqJilXjy5Gb;?0=vbSN{pD zi_6pzo>utjiIHWwhf9Hw`_ZmUISL>k~xdb}qpcXR#GGPEfKC-5O)6K%Ry+nrB2DyO%uW$8*(RJ3&>d>5sTCo)e{ zeg&RfYX-HH2+3fm2Y@oTb|S}Gv^@j<4K42=bPRNctr+Mw;TEOP3!;8EVNK}jomtbH zloCKW!0k^50H<`Q%!j=r=zT=iC%=h9Pmj2+EEM{EpmH;TZ{mRW7+Rtvg^nE+E+YTwaX`mfrzyax678_kUA~n*a(ITxL zM;W%fA;w8DP?^SP?ZNB{TDx?IQnxIJ=RluZ4g+R1DZ>C$0d6@g1%3+PA^;_qemC!w z`&xM}2ZZXJxEN*1$AobxgK4}Bs(Z^|yexwsV1fyaOiQ0){Di59R5&?-fN~VmGs@Hn zsfic|g%;E~oK2Tub5qwL=F?Mf9iocCHH5;ME(@pQCDA^1f!-viSW%`N+N4Ya%mBFM zau{$*vt^$A#pn0$ypEHuGi{eIqjZwW4sTLvO)5J6!#|e%WMz${V;jCNBQLhj1djro z1#szD3;Y(qT>wh0+XWr2zE!jIi?>PoVarQ9cj=hgwjxiGmOgKkPQk%f$~a#+lNibl z@2E?yrqvdMN&ISSw6ch1U_qVzTWk7X4aeYnTDcvhJtBSsjbs{YB)&3AZDJH1u3Sse zy+ZIx(k34SMoI3C2DtsH_0OW+I4DQgzg^8?O-emrD8Mc6Cg7AN$b88k_AGCH69>25 zsL_sT%Pf3Xw&B&K%hc_uvKoTJTzEKC9 z(nOiJP8RcH<7^tx!Z>G@zo|IJ|95|6)F3p8$#gstpKzf1Nf%izv3mvNh z!S+)60ivdwUy=MD^t<&`HmgZ#1dIl_^)v%`8(1I)1NvVg}^SU_CYrmL6 z&hlww9Lihpc^Da~2~WS&YFTYfQZ`{=M0f+8J*>6-LL23_TAv!znAw7T1RjfJI`%Lo ziS|q?n+613!svD&R1?u~u*d8=(FA>&9#JkkL2m=67z^Xs(DwtJ2yn~gr@$%gka@!~ zqFlPhi(LLxsa^XNNAq1Sx!(OGDSU5YX?~o|k70g1fFJ8cnf+N;?nH43AF}~fgM@u3 zLaWz!NcLG!b-b0(V4w@VB~3t48haW>LbD8C#43&!X_1UoX&B{Vj!}gf{wl~H3YbSf z0*n6yHgXcs#4W;)BYK4fJqYa4IF^qk#B8M$lSmI%`WiO+HNwfdB1kU2^k5avY#ky$ zvjFz~0JQdEinO zx>-ph6^HY6gk*x6AdHSgO?18{>a}}LuDur?(WDFn3I{l|e?+1?*{ zdEd16K0_MX{V-mIZo5B3w)@?@-Dh?7uG;dB+S~54;MOf{6xGlnxi)Vj0*Ywwm0-81r}UQ0N6Pq1HT~wZZ?D`(?OfVA9H>m8o2SNz&eWz!l`40c|&0kc>ntw6Im`iSMNoRD8A* zEPzbC6#6)a0?rWK00u{uYQ&(WM1^2YxlRy<$|Uas-XQ*}?(fqDd>$}(5{U8p32~n` zz@QD|F^j3$`-AXo86uymw!bLJI|8&iBS}3`l=MN)rn90X*|b?+tguZZfKCFbn&Y)t zMF1+DFkA9Ch8La0hu_N%()osH4?S~p>zf0Q!dd{(0&v^Ik-#Y}lzAqw=Xk(x;&7hy zo1AaHH?e(T+o~mEVK)N{yY%riB3uj^3CudNn`p+g5|S*X!52!f7INT@mY<3#LJFGU zWECi!CgVFpZwk7f13k_1SE%-)nEyy(p9+c z#M%&%7BQPcpJfrznq|pwsn}+Hwqh00NE&xaILz;Ab4$q^t!{%4`t& ze2X@Te4CsvU#N-wiM+N0ln3#HJ<9~K61I!z2-n*b;$Vk&onN^SyNClo9F2I;7#5?R zHN;ym)k+UC2PYT81%5PvZ67E<7DgI;TH1(2%_U|cZ6t>eAM6-bWS}-G5nz9TcIV(7 z>fLamsFl608avb(udAUQss{WD%^G#6!Jfh+jZdq`Lw7z3P@hs$S7_cTBm$PZTPc{i zaU*jy%q4ILUtkXPSdK54ia^|{j)~6*#PRw#zZQ=K!_h#-A5Z!c@uU}lq>97C;g=UW zgIXcnXdqfiI$2y^6fTbHq@*~gJYMBVM?C48iQXW%f?tn=Wfa2|k5hu>@t|bgxye`ULGeSQ27JSP#F|aIQcjt*UET?3`fS7Na(4 zNI2xoUrU+EX864JK|KTeh6oTEMwD{hG2jEyZ_FqlRY0`kOX(LgYpg#T1C6)dz7mve1(dUKUC0Fkmn8dMVX zuo1Ds?%N`Do`e;ztZ{<=s8k%>^seX^H@=_qE3X{aq}TvI!0i_a;FQW_e&&mUPq^_L z`Ar;h>zXy}h|3tQY))2sw6r<_y_c_PqUg{mPoL!t`OS~H@~F&v;(ONM?=;Joz61ON z06RYSJwf0lfJy+R{(P(X8{k`{N`P>BVk&>{9(?OW&%ujj_k{|%Ak4L%e7$q z_4!<@CdaiPKo;fkPt=b)pV-t)qj)z2n2|A)MOzNh>f^)u70 zpET;HxNrS5@XwL*!cO@;4XrsodO7eL0Ji|#?`dpnQhot=89=E&A6@ee@zGoz<@o58 zl8;{MS1!=M3LkCbe6+DIAAKF$G=pE$1Rs4>GhWkXysCv>(=^~~bk0Yg#3PN{wO&5@ zq?THv=ZB9L5*Kak<)Tg~^7Xmst^Yr8Q7`ABh;Xt87j+NyII|E?Fjp=Z794oub?yCB&=3d10#YP2H% zi5_`S=dLsAX;&YTeM_B!H9`Y41X2#<+sG5X6g;$Bmx#u6+nxUx+ap;I^v-a7r1OAKOo_pWnp6 z9iLnCX}>vrS=)l~r>|^>v{y}ZY-Gz=M-UN~cX+omWv$VuR)sJTLsSQll+~xH$A~R* zGM*s0744&92ZPJ_Dka%U=3_zkTF~Rl@!kUdAwWB!mu@`;ycRGFKxxhMdyacOavl(S zOI**(e4Xe$yuA(f3qSa6PNv+2U@YeIdhrX;{e?4qy-ZD! zJvOah4nXURX=S)9gG?7Q{D9x0y*emBV?VqMId<&~zNXtH%cBc)y7K^M5oDNvQvhx| zxC{7^iy_wo@bY+Au47-9x!lj`d{UhEDSbS2)lJ+ComaJ-@u&jOge4)~w=w>H9 z#8@{%ity|hemsyL-(Wl&&yQQg$qz&}hF`l;oZKq1W_~U85L(IG-YeC!Epq7b182Z> zj_(J~JGL?{tB%pDwUZmtkErC-W8r{y-@KW@rlKt@Ha4o(jILhc8|7V)9Gy@rMwBlO zjS8-?;7&5rRLaBH;MXW|Ka9{yu%bx<>Jj*(lzf1M;Uz-N+P+Y=C#J^DFddC)*iD`S zfaniCv(Uu(RgVv{4BR~uS7VwPitw{>@;U6m>Xt7cpA`8adpy~Kvjia6`;>Su|HLa* z?t5eae2;)$w3s32MYLBj0J&E)dE{FQ7Fb|22zL;Irik(RPDtR{o!pQ_u!KOAP^>-> z;t?9fc$3W2X38J|4ec6JJYC12Em-IfVrv;5PJA%Ng=Mp<`{eVD?(d-IY(hX$(feB{ z$k=fDBT8vo5M}5#Fu>bZ9{!28_idA)}y!ZA$?NYZ`Wm~QPHF#FL#hNJZ4cuxC*<#giwSLXESjnvxjv^`x|5?oz zt6-~TZLx-IwHlT4SYyDxxXk{NfZ5l=-uWO5_qI7y9~kg>LvX`Y;EUU%5j8SU_Nl)N zcaFpuI|D&Er?)yp3)5*FWh$o28A?ajOH#O9O0mz}X$;AH4Thz<*QCHD!oN6uW$Y zbxm2$*YmXljKe$~#lq!kHDUsVq3=i0x(|U>NR{?&a~m^!-b%y^9%Tm+gD?|LLI_f1 z4@K{-(2fj|!@fjxc7b2Lm6eC8!fXT#YrS52uq0Do9Z%xnR0>A&-}8nBhSP_60|+|o z^`xv(G|Y~|Ad+(!3sX2_m+C9?zM}>P`(IH*Wx?8r2@8}kv|H9)MpI&%D{@MQQV1N;d< zX{S%f9j%MRdSTcOp%*>#4}vdsPVC{&<%R#OlyS$^vMvN5zC&kS`i&x+z)yN~o*l}M z>olGnamSvF196$QTKX2t+G=^XSZu3x6hCg%_@&vLlY9ieVsNfevDHd%u?BM-eB_w3 zt(n)VjX!W2uXBPwaO^GCAUvSF4DTKG{n@>-5H}>#!J5h54N!o9@lFl>Mz?uECkP;l}HtTTPx589b-&q_xUUC zg;T*o58LJ+e2*W;#BGed8aQSGK4@eK3Hnek{zso#F)iS0wx|6@a9@VT^9PZ2(y=pInZql>vjqr{fO&C zH4<%eR)9MYz~aoXNd%k1lp24h#K^`f&^goPT4gL6OvX%8Ptha=R??7nlc_KLhLk$8 zY9-u!kTVZ5mm;yP#j2pXZ6k=MT@uK~%D7vMH2hrq4A|v)Y;;@GA&mA}ley`%;Q>cnJ297IW(< zXgK$}QiE5#^UO~vinxd3hrjFHVti!J`Pfc>WP3iwMoLwMn$)p0)(=oMI8laEO=wt{ zNe7Dh*ncaBYk+bXe3WaL5Nn1X^`(|$aamzXZv8z7{11Rv z0F?UIUva&}1ukz)FPU2O~VS#8ldv2@f^{{K_8HKatnZ9XL@Z}y!E85-b0fLm{y zPHR#+PH$3f2T;n~B*w?9o)vKpSN=xEIou(}$;|P2oTroZ5MT9*YCF8WV|n`u>=u#TB`*G5WFLxb4u9ekadLsk&K226erx3` z(1m>0+hyKiQ7}zRrkL4f>33LGm-Pa>!z$~t9x*?%+dsB9s^{{Nb-mNL&Izt}>^rPf zm-U24GJ~5~qnUwGg2x#>P*o4m52&vS6{$=0rExP<6fCars@qtlc97@pET2{v?JX$c z$=Z1K93M~TI$G8$D7K425O!I`e#9hf-s~^?k$)=Y@smPY&_GP+BeX$n&bQ-OaUZEy z>EmHsUPB)3JgGpt&aP+eH?TqaeJpEK4ZDPovm4dM4QgH7!O_84Q#3TwK@ z(Wh(k3K40X>ECCi)x(w!HAa??IT+54BOasFQ^-f*4E6yJ!e*NR(PI(puZxTfmX^n1 zR4&pc@M9KH5KZ%BtU@qS8%0Je5XMx(LPWdWjK#y1P}GU42N`}?!DJA?aVbn0O5ikf zG&`GNfNC#2gumrtMj7VOQ_BZb4ROb5SR}^Gm>e? zWBI*m{wYO90aW3V6*E+8kROYGZgX@SY743vVMtkNBA*-XUtpN!KVnAO!yDBY#`Jh& zK`>5ZdQ5x5gHe^21s6*~PYT)|m~dc@>Q&)G*n?eW0C&3X_nP`>5#8D|9eDsS-GVb| z7(Nwa$^nZ-u}cXaZfP*+hYy$}{QMLlghZIt`U()^(g^zC(pO_;uyEErWwbWHFbrNF zGvSLW1{n(dwps23`#MkCmxGolialJN=$KNS&|EBl#@k< zV4ev7D?x0<8lFK`oYAhYok4U5hjuya41%whIq85NfsR-Jt{KJOKgjYI#!Ddw;lF~z z*^HA87T9U3r6|48G&7;flP$PMV%TZrV;=ZmYqj8?JI`oRT8S|t9dsu49{_&^xcu|@ z?}4YD1^X-jrO>;AZ|V;S`NqWOg#V4$lQM4X9eL!Ru0F`A%NMVNyaPhjvd+Mh{!jf_ z>R0pQ4>X=_GWuNGEw0@qvd2w+>-##-PUXk9Ri33jg@62az5n)HZws&5-K$<}m9Moz*ILF}>n`Rp#S!bA*m~z8i$8OJ-)DC8dnTydhdx=UR_cfP;CcY= z9g=q38}`MW20Mh@@+NSy;pw3X ze(a~16DN+!#K$0U-mUrW(B7dx1C2#rO)zwyR(^*T>e7sdw7Zx_%bKm)h%H*|HtgPvj{B{-0Y3~u zjfL7WW0KQk9T;xX4vZpCV5{H6m$s<3m8uANbn|cYr?I&*qs^R;vLY;`%&&Bm>Nh$8Z(HQoGY-iRGb68d#uO5YnQffo= zET|^)p9L)E1p8aQ``&5WEZGmxEveIDEj++Ui4N6(O~{GT7*#K7*dj zz;9Q_VeUB~Qs`aQB?5D(AuRh)fwYYV z9hgcdX(s~|a0gBYBlI*jwW8!t*SDz~F&+v-nocsK>YZbUQXMT46s zD)8e{TZ1x3S!ueV#Gkg|&sF1JMtV94`rQGZu{M;3!&+!Elop53D3ipPLQpZ)nqo|| zTFA@G-o9!$boYkBvY)<;Vyg1-4Brp{9>EwSsi^T(2N3#p2B;~i@xbC=uP((%gr1HP z&FXbp67L|-9~s>bc~t?gLoa?s+VTjk%qc9uxrH(bp*zY&FvcsI4uMhjEn7A1o#BohS>$WWErcM z6N;XLB>m^*jZa7wqxeCpr#+?VAyacGeCF?o?!y7P!5d*>0+?d&^b z%=@l)EjDCfSaUMbK}xg}5qXHCv;hs_vL4q+slIcppf7ZOZr}Mt;AaD_0J!ws3H*0} z7XXxYEfMmZhBlG+Nc|?|qdeBHOCPp``pO6rJ?x+C6~=m4BR_gx0U_@~dH5syxR33* za!vQJPUcN4*aW}7a4GXU&9P=bq7Bt5AJRPAXj?1`ZzLu>($Wejt_3g?C=~GyM#Dxb zrXQ!xMQ5VtFhbb4OPa@!*+Aho${5^{dello14ndlCCm73CG0_)MR~Sfkh8b@8Swi7 z-2k^de+!(_A7tL&FF3!6!#>f!?v=JgTZbQSq3C8R&!MfrsgqDy1mfCbVUYu|sYhuT zC+KSae$Kw~D&QLdHv%MG#$SL_8hN3}&y;bklQ#?b1iy*HT&pfH_9Q-ByA9K;K;`E<3Bm3lLwDEy-NEgGV05-Df0QwQnfzq(d! z4ulmn%}fWWu`u(73kK4h#28>UARKzRRqGj~!<##eY<{C*ptsUjW#XHBl_2?Z|3E&?0{mIP3jnwM&%GFW9DoM^l+KfO<4dGI%MQ8z+WwN@ zFL~mZB)OX2ej0`ISkiu)RF91*qSN*4E{7W;Q)hbiQyPENi7CdUoOZ}yW zi}P6Tz4}_Yn(kr^cQDq)K45o%f*s!L*yT?B6;A!-j{gcryWCN)aGI4LK%;4hT4dH< zYSgbb>Mu3?s}1c^LtSkYYlULgkcPkl-UlFuDo4LW4cU!OF^WD+gY9)pt%v=mAN)jR z%`}o=@P%j}<%ap92NE6#hv038RN-udhzfI~AuZU5X(ru|Qw7QbZV~0%Ez6C{E_Nw= z761kVT>g6!a7sUux$B>y>rqj@{3Z_WxYC_ZeW=At7q6^a3}?6Bfu~#QPn~RsMS&&m zQ_pe`?CCY;+-}>A%H)ffdeo4E)p4KuZ;U#Zh0&Tn_g`a-!EHqrF1JQvvt$xr1Yq$0 z2|{@O8I`+S!PX-fD~g#m))BhP6XQk=v>35rZiRE5+%98U4L1_*eRSj;j=Nuaz3(%7 z!}s>iy*)3lld~B2djw6QhP!8o_Of%eXb*IC=wXif_7YPReKK%LhsoUagW%@; zCJyd-UidJz6KWoit+UX|pjQdp$rK%+l&W47`wD9FeNg=U&O-$~+wh$s`B9NIO-d19 zAi$+(IPfOGBmkxUehhZKA@r79z0kbSQ!~&t_Z$FkCEVLH$n!(pj)h8|_l z?e#oG?VFmlWw$ZUJ)#w4u|ML+GGmaU)M7E31^K*nz%Q{Lg=#hT;p2%y_W>#j zJZ+NY@f_%M%cK5E#Qy^v2yn||G;m6jWZu7j@S8Ze;{z$s)zvL(Td}AvFI|Nf3_3@2 z=Fx{*N??_uuOfdgRq7zI^gtbh^Om{hQA*};QO{lYUY9Q8D)0b64B*n01WqX{^Ul5K zgJ+Hx{X)>yesaF4I_yw3v+7Vs30w`12Ef|eQWw%(fshi+vP@41;it;vu-+}{TZ8X* z`P%Ei{|V5q&e0bIUIrKppfpj^w^_;)7Rh$3ROfNtM8Uz}M3$Hu=ht2A6h3LnV9wM< z9edW(-rA?U!Kb~cr@YmQKI;)y`%4!56-zzJs;QHcCLMWZDxnTOORdG)A|>t=VFbmd z66Q`&_}1W|n%p#LQHJMuS~E-3`)1JVmdmHWt!tVTFTkz$0B}lineVMV=b7L4mW#{m zqs?Q-TFpTvuvpO-D@qln80fK8I@~r>*M(ypK~E>X({0Cp1pXG_6M&@0NL&j!6JRWW zQfE}uXV-4QpU#x^yhi%9$>i5wM$(mI=DS$OdpuYhdyhH0SV{>T{j@jsl(+C{Z{#Vj z`m}e|Q{H+-Kl&L=Vo{ebvcf;I$g@m+jjei>)l(Y?!~M3Q7b5ry89pSIZId)Sy@hh0etZh=#fDFKG7v;by z)yjNt{>t(?ui>TFX9f^$9wQpX35tFKS_2kxRlHfKgG8gix=GTr2H)wni?@L90=y4! z>G>CMN}tMnZ|!_v@$E@m)oS@?Id@te=5p>NIQJmQxf_lU^|a`^99<6q|1IDNfJ@iY zz$v{d^V|0#H{LGeD(07O_oZqYICm{^?yJDL0T`7Ev3$dB1aw(B|Hdo?HHa`&h!t22 zpZbO$+bD1eikr%IN$=brDmCC((N+u?{9_Q#G&Ia`(pg5bCjTa z7wB>6K6qo3G7E4dz@_^b;FK1~d~fx+`7dG|&i}kvs?^cCc;-5GC>F&JfN%f^KMqV5 zT!!RFpdYGAG;z|gn@9|o*pJd9>3j~~@6tKshwuRgXa=}+P6SSAj?DK~zmI#xIyt}m zwpVeGQ~5pA@bOf`pMp>T2yIdi<~8hP)kK$D$Iv~;HnF3Yp_VIsx|h1E7xAp%dJ32W z4%~CJsORTEm&GYml%`Es8v`Z*T>4vpQ#xGc?!3^IlgXbdJx}F%J=j<7%)>muY24t2 zC((e~FtFZ&ta+017@VPD*omk?KBSs(riDo|CO_CWJVwyB4d3n3S8zS%J%B90rLPh= zr8=4K7y6D^ws=8*+Wtk(+diK*`rb}S-&%aPOWy~;KLMyWxg&<$|udjvS8-^+Zz(DylA@8vJ7J&@M^mbNGIj&XJoTM*&O#xO7ed zPHCph_Y0juywblOuh{$Oj}Jahj{o>>m%h?lu@?Xs2yp4E15Rm#%=Zg@)1lV9yiFSQ z^e6K?^9!1*GE>sI3E%J1`6+PowkE{^xO4`9Q%cBuztG8JYxSq^i7y;UHc9$A@!c+c zF9ZJz;4Oel-#fr5{Y&Qig}&L#SAB-tT=9kEDZ33ae=r9a7h zztA_iZOMwy5V-LR32Z)I^uy-cbM$QheiL9bz@_hY;FNwQ^Zi0!%hHAYTjyneP|+T9&R@yg&qX97plhK4;zW#upCykSj}i zyFiCaZ}KNiN-3Zm;L=+SoKl0#_cy(tL+UkORIiyf(Qen``&~N!4V>NCq!<8~P8&F- zh|Ir1I(hJ7C=T*yTC-NRE#G5twG;B2&b`YxIwXCk;k#Y>UIG3F;I9CezITCB`atIU zi@qt#m#ymHjka(1BqF!&ok)Clx1_W6r#U(w2L2ns?*T5IPXVX&g3R|To&8B%yLU-P zXr3JZ@5<44BkXGGO-IFVaO5nACdVpIFjle05lKI~1`6{_@+hP{!XzY(BXK zf$*SEZonrRAz06oQ-6GLw4Qb-Lha&vXKu@V?+L({0!{|F-@6hxrSHo8|5A=ahkR?r z%H@lfLWKa0{mV*_{~4uIe%DU?J+~bH1KhqBey#!TcZGpdDwO%&%5m2v{mZfMS0!4{ z?kz!Al{2d@{`?Z;%4=j}iP)gSq#BgcyinFVz9S?^P(A?u2|&G1d@n8=Uf`6HGT&v0 z{?}R~a()vBm*2K76LHzTg7Vsmj)g;p)}OMtqkVZ@$HFCTCkU4p?JMh!SiEBK%5h7U z@cL*$i{9m3po~nzG8tjg(Xe%BvS4#LWzz|K#8dD#5x1b%?{}A^_d?L&()%*-R{?(k zQ2ik3JAqUBo6PstZd`ivMrR#@SxrFfwiDVHfXo0$3@Eb$ijMyX8Krc~@1OefT>DxJ zd>!D20QdWE08Z%^nfKSf)$xT?A-=Aps~g{&;a?8f z--Fou1XKYeT}B;nN@HZ+{YSBnJ5}19%AYDB8UL+$XINBJ6*@U(g?O5lw zW2w7x@hQR??pF$eC)n-$wiTEyEE5uPVa1ndU5wFr*71(=5AQjwEjq77nUPhe1X4D8 zghhYJ;u<_id$^rURvn1$oq{_OxO+iBO^Rma&=7MDgI-|^4eJ!`8HJ5u+yX~{*$oV_ zVAO?pO0dd-8!&`afiG2fXr#d({bR8x_mSN>KD`F`4*)j-+;;aE@J|8OFGRU_TqVlc zN0HMe+FZEck zH&4R55d5jbNw^QL(u{;k>KynizcH{7)>JUIqhDa;Y+fSj??cp!yY6mz82UeeV*zgcT>^Xy;Aa3z(?^N=+tnuO?{>G}d`n!< zf>vw2WahK_B$$4$cC9okwwIR-U$d1IkwW!5fbCF#R_F%+gCOd~E z&k7}tQX^xQj-X~+ub-(7hL<@y2paVS;0T%SrOhN1A$58Z#->5oA8{OaVz4V57=W`nqrxJOgD`M| zgPstA&S)^NFY}Ni^zBPUJ#_vu$G;MfKyC-P2;kO(@hEh50A~Xz?f6jesWX2e`c3i0 zf8^IYt`XNeTYC8U*W_bu^HxwKqQwhO{~EkYOchtHXkR{c*-7ma7cU3@FWs*GO?y&h z+tm?$ju+`q!u;$X-e0nHR&2dhw9fLax9lq|=J8qTRhH*!3kK#ac8z6UZ8_IicdF}P zpbMwe>#e8pi}LlBv(Cav1^?Zwb=IKumc_3mm2GG&SHjWEuZ-BEhGj(`G<*+0MT-5D zv7M&xO%pL?VHXMAnaL z+>>>R?4*<7VE6`m9rbnw@3)P{(fR;wq#hvqh+i_W>>~L2hOxd1$DM`;EUs2ZpH*wdDfvHVO@lSOvIDmT?w4&>HK3<~bU? z0UIJ1@Jk?eQ>+&7sX1Mv^J!?!Ljf5SHd)oBk=yt`6TzA^*xUF$6=?nly4dGFe2TIJ zqRbULmWSUVm$~RUL;2FCb%kj69ly%OW4j0V?*Xp@+;Lm`HTngh9zdz}WYNC6=Zjo< zM)09aWSpC?+1}evTfBk`PcT1`J~L{#=Zq=jIpZJR6Mkf~Y=IP-ybs31JNmh!gdz*TZk7!Nm~u@2RIkbCD%^KrGK;JpSx0`U42dZg)AKQzAZ~-K#Z^a zLOJu}rbb`+C4vR7Xj@2LVa4?OHzKa;4akV)R}H~mLvIbz&fjLy_IS!oVQqD z{AjMThOW1cQ65AUnzuU@w>tW5j&Y-dSqwRf@xtHVM#tFTgafu7yu_({&o=DXTdeSH zrdiG*K2@KnPQbKshIX)Tdg5SpI-$y5OT0x(%)r}eoO>w~+$3!254loj?` z{XQoKrGa*lr#L$?S6B?cbIBZ7ehFdN}LQ~m_jfP6qApB{i%fQQNnN8o7P2}dK2 zAE7J0_z7w|GJQwX&xa`YjJ$N%@0*lk0IdL7KgJ^9luniTm#v#K`CK<2(zblXqP8V_ zSvl{fmGkniymA&qZ+FW<(nnW+_e7KO9N=|;+fD~OiLwDK0Z?+~$*z2-MvlYEO?ly; z++za9v#;6QXS5?E=vRIRxaIO?b$G|2D<*Td4b9hUV_EY{Y^f2Ka68~MrD6f<8OmGmi7KCfqkpzC-A1^uy7ZagHcw{`!9gySonv+=RygVhJGVy zRvBRgC!hcY{UMHPag6`}V)Tmv>MXc7S*^lP-tVOJgeF}!mK_O9$&&DY!q@ch$b^N9 zKg?|-5G@&kzP%me{B9gxRK=fAI=(CVNoISlpL`ei_W_px+J>A^`iPkzx{ZFuxDugt zd#71S!}mlv)I60dhf9H93s?_u%i%}BDcvRWFDr*lc`t{<+fQ1yvVG?AWv4*LV)+-9 z$Ae#^Ja)&ljr*x0ZzpOl3^HUz85Wc)gZ2zi7&~=t*4lM(LHXpxOWJ2FTRC~zs-+A1 zHH7W#84Uei@Ued}Wd};Z{909?AX=LB6onLi`@i#tD)Kh0M^su_3$?fVX>J9MdFF=8tel@txt!i!5Z z=s`z1TDc9eLCM`$ly>Bb;F%ub>G~khr3a=0rT1js{Wrl6 zeDCflw{Yj7UwN`8R>-~d9oe>W{vtsl5!ZS;lpuC{uVu>Ja0m(i3~KF}Snr-od@qf? z6Zo4`lfsWEO}QKdts;pUaY+*1V|pPuWWzb4y)Jq_C$D%2_-_GE09?AC15W96neVM$ zUH@hIq8k?Dxv_&+>u^+Sh*xW?@(2O}I>NC5A+|AyS8EPc)=2uMzL2ADBk)@RTL3P7 z_W-B#u*|aXU-+`9fe z;8y{z1Gx142sov?WxiSNv$o!{XS;R%Qsk@tPHJC%Li>@6S1#&HC4`yR3J1W$NsPJM z`yR%8`0z`rrY)IN#fUp@p*S)JZ3GtUMhBfr<`;>ag;O5mFfq z?LINSdz8?5qCP*w_cib@Rg|fJ#y%KeF2JQ@A#h5k%e+|bllQOBnfZ}J_tJ4f`$|DT zqID^DdxvAUcenRZrd(lW)iC^PA7~E{Lec_wMU6t3?}NwQB7O-=xdM0+qWM|?PQiU} zw28{peI#R5dL-SuK#waoo%%9#;Q@yNT)Jlgr!-gQ`&b{Mm+l-BnzMpy+9W}DQn}4c zD$oRg!ipaanbP^9{<`sfE**(inv`llEkM#?j0a9>p3HX@i1}u>x#v85$=dDwxy+Kh z=s)z*Gj4%gpvpN-=^C~6GL@}S@6|5DT7Eb7G?lx|dicv7h+QRw$hwa~jLD;9VXFw6 zhLz~8Ga=*D3%ym=P~8U~`(XrsL|uye7JQpKP?JbNf(GBEG(m@;fBo0r{jqSg ztpH&-!&%Y8ph^mV;WM!JON^2n&trvT@)Z(-;)>lf!9>t2LT za8h19fXYaE5a}bO24lXIzu5G6qixubg!_I-pb^GE&L2817WLBgD)^Hu-0*Agfd;4s zxb-p_IHm8&{KAx|myuVC_AP(fTQ9BouNTaAS1oV^bon$=z6XtB` zQ#;25zod42;ZzJY6t9Y*hT{H$aQs}Bq)4fGs3O$<-JfF0T0%43tX_nfZVXHX`dQc{F*H*A?Ur;;-I3eZT?hO@ zz+(WH?ze$^{(`v!fYSDF3HoNr`O*FFh<19{V3FsG?iGCVLn=^pf=iGa-plzhOlXu2 z94kGGieQsEKe_;N_Loo&0c)IU>Om*to9Bga^;IMKnz1ktNyRde!5P6rD%ImL4iAI^ zVl5_AS-3;@VW%FYwMm8G7w^GlQvh4MJT?l73|>s&s71%KjS#MFu@N3}ZK^FA+ z(Dk94jwcK_cqxLEQp47KkYy3Ag?wMq;zDkOcCQibtsCVzl9#BWl)nMpM!+f>HBdY}0%ZK$27jf{gb1eNuJDm2~h zXX*gdLxL_{M*3KI8}5-t7pwzVl+SDfP)(rm5!!BuNp>JbK_cQ1gH-^hUrL5O^GZ=KbKlI>%e}y#1Uv(9>*cS& zDSayQowEP;pI`3!c7E$+G1u>zwWw{uvQyikFE8)f28a}V1|!TWHQNFsh44#!n^ZIGLfjdR zMqA>_8LkoKxEC>}Aos9lJ# zufmjK=Cz_cdO&ALmdDt?!RI$%GQcg5>A)!+Ci8D3)wteWH+5b1nDYb?aK} znD4o6?U3|r!*|w5dR}}Ra?f{~l*0j%9^-M~74PC2fKpddj;kdi-#kLZL)~qP^X@#) z1E;jZL+)1|yru5T_+`tWwDNV|GI7;%8Hn}kzG?PiZbE@I+$P2saa&ZLE#${V{Pnun0kPx+AM>_XozVB)euAwh$L%+FUbjOtwlq^PIFj! zk;^~K(6ARTo-XPA+lZ1X--UT$CY&%pl;DA<+j*JlI&J>YEs zrCpB;{@n3fk>7rqjNAE+I9E=}uRLScs(G~1?q<*Ge6*|L#}a;gj6H-=$kmW|Tm7k3 zaFdbY8GyCj4e*V^PZeeMFB#ea=nTjVg}MzuL4nVJu#?)r9KxtXijAi_j=iI z7W2j6E^biSG{lh!c?!@(4@cW7P#^m*^)Czu8gOAmGyeh|3|BV; zS{q!GEe22bW+)vbtt`+C1(1jq)(b**us{=^MGfG3(Qdl`o*NIM|7cPQ0c8Mpd}{zc z3NRi(slQx$+uLFs$oGB<#sOiwf>smln77PA`9{c$e>G_ z_nB+=9lc`I!rsx5h$TkUMi<1DZA9$`Z*-$KAdJL`jSHVw;?_@1<;=>g>iQLk(9 z{TU(vX(#aa03QHcI*r{;N&pZCQ0hsZvL~ zWWw!x-zqKPWOhnAJMsM)PJyDN{s|mV190g)0QgwIWB{f9be_3S=^Wbl^`{{yE_w~x z#SyZ=B4`)esleWGBJVoA?V?E(SfqcuDCPxrqi7dhD2EI$3B2-Ouww><0d9Gf0-=E8I^4sb(=+2i^Fen|IXF(-M}9J zJPL5>{sZur0e=B}9^H@cyL#?xTf1jPuO*_-cB1FxMzg_)b|8oCe&ZQUOF3)f-=Dcz z)c4$va&#LXHz__q4B*mT27EAJ7~u2h?)e7jb|+|GcX`}fknRin^_!chIDg|rfBSzg zPGyrU&&?>O3@<4~IsQNJPXJg7aLe;d;NJ(V27F$5?*7KgQ+A|07iw?!+=C-^edUtP z+#=ek@=2~-=K?<-a00+B*Hys32RI))aJ$>cM0J}nSwk_()}UmnaL?qlo_8Q_5)x(z@>XRa7yRP{P7#b zesVmZl!3UCU#Hj8#(DWjBTNz*aF z7Xy|8-10aRIHgNvKJyY$4x9dG&+@qGt$kD;R2ZEMM*4iej#|RAOnDbYaVAP4VMc`N zaunrI!gnMFxVp?_UrEuMX~(iebrmGQv-P0HW5;s3*4!$}A;d=Y&coV)uL67r;FiO6 zz$x7)^H8UtzxBdB%c0>|asD;ih16q~@j!a@6CsCrSL{8s3DL{nHRS?-)`yVy+6yp` zhZu#(_M4Gl*r$09;W}TCbqt1Nt^i?i3t+c0*eLM%ypg~tH4a}+;V&X zIHkvB{^6hYoX_%`IJ8Q=&#zsM6efl*PR2s5s)=iNA~gJFe;O({aFU^qqB2VBkZz*2 zq*#o&2`yWp+zAXLtI58NM zBgr}s>Vm>NoVrd{Y&`9fDfqTenJ(#c87Ah~H-p7koTAb@ZVs0md6k?Yh0j|ZQu62v3=Nco&7tR2FF5vqB zm%ht@Q(749e);yp1z~}1N0r?u0jilLhgf04h!TO zfa?;#m4KYO_DDKIX0AOi0=^P(I>4p#BH)xZ$-H}!ptE`Kp6&UWH}X3U5S>(we4k7h z=lzJmIBy8I&HIokonU0MoJzD*zs=b?xwxq?il8kJQhnZVAmSgwxg0_mQ=8`e4F>2% zCdHP~;UdRpgfTSohoCRHRo1&_RIh%;S-`IW+y;>4Vf-5SPQbqalv?i<<@I0C6heWdqO$Ex(YaM;P(J}Sre80~0l zS?HPa$0>4elt_9zWp`Fk6yh_DsQ=O-NSAZ z@qHf<*_2oKF38Y}tg(Fx`dn4HFOWs_NA{^R7G-=}AbV@T*A=MNBWB2)jZ*Rj9kUF+ zJ&dp{$R_No@p9G=w8(P$z+f1);EU86@ScG1)#_MT@OU>^b_69m7;TtL*Y_w@s2XY> z9s0q=zL3`mke(>)rLjMSlBd6GI#8{_o|@@cLDy2c^-fX#Nhik#76RA3-~#}+{O9`7 zF9M^KZUCj*e-)|%cmeH%joo0iY_t|`umR6~NhwiXT@3O6*Y1V%X;}gTcvCB^0YuEhCu>NTn|Bt;dkFTOS`=4{>%-p&6&fWLi zEH?{e0g@1Q0vZ(%WR*>=+7ciL6#-eawN~R&_XT&fC;>N6RJ3ZXTXCzlR;BLMTBEJj zzFJLN+uFMH_kGTp$xT8~YcIaRslrh@K()wWZ zwZWq6g1xGBNvP=3(C1d`KHjTZ_j7hL@2=K%@R71w*IQ*bS=P-wU#%Og#BElktd{RO zYqx4asU2p97nMRl15_%Jz04QA)VJ`@%oFiM0bRsuHSjYSmUs&gz5}}EQ<&HE-Nu>E zECUaB7@I4q8RnR%4M-!JUNy7XBr%i~i8xfJ$%q*(k66)z*+UE(_kdOHY4A0A1Li0_ zfcZNhh5-_6q&LQf+s)o-J_Q#uGbXCNYZ0_)JWBg}4~ z0-x(ciK4faTS0l;3$ED;lFuwUe+ zAr7-duWkyTg-92Mz+%*b={N5EqTf6O8$|aRhOU8Fgwb*rpH^Wc)v9V%$W}wUa?DDEuIlI#C)4wYA)_#3s1AE zE;WryOrs>a#X3lPIot%Mm2C^o*dAnO2idO~3m_ijzOK|IYt|F0z0Qi|*UvAZ{9C}A0GHo-A7$G9>FnE`y!WnMgFK0U ztDHEeh2poStbwH>tt}n7^BS!yTmqY!QY@Wl%`AllLu3()OSlW7_JUP)>o<2f^;;Tm z?)LkA5aovej{)5JJ&7`HPdocP*A5Ih4!8>7*5d}0X}itY@5#@#(Eg8TCDZ^ywF<>#s&hLd@||0tAK09FIs`kja}ZD%`sdk=oDh3<#5+m1q{zP8o-Enn8EL^-We zlyjoi5h;O*B33$XZ;bIu6@9$BKcY{PViH$qJDqxJseC;TL3t_Q7=Tkx<8G8``^edE zzhA9mtbNq{C{N;FpsqZ+^f9>y<&=Eeqo8PmgJ7e|!TO3xtQ zCCpoAU&8!#!thi4_N?KxWy%(g!cJC-5ghc2cp-SY zB;m!_{R!y?*s~1swyY1FKBM2c?3M$RGi}tk<2re<6DA7heJC z1o(&l`YGT*fJ|8N=~mbZ!7+?ks2S~v%Zu?EUkD@uxBwu6ENoKoPI(VFNyt?#_yomq zZCTigAgwc=Q6>`7X&3!#{jb!x+>y!mS60-lMF2^F+h1!@rfrh5zjTc1m&4yt{Z^jD zznr6&=qPx9ZC$QZR%IRh9DNgK9lT+aw0Qo#uDyefI+L3S#QPNEGeskbmK*ptWaya+ zm=+H+%HbVSiB1(}IU>a9O}*NsSaQ({r^JgEgWkjI6*wlB2q?H5oYHcX+CzD<=TJtp zV5)oja|(}Lz)y}2VB0_2tW5#T0J!tpH&CXn&DrmX&aQX-PYOn7o%k9wZLeA*HJukR z?XyUU7%UojP%0wOGQc5KV#8joc#IwM#?q_Fpb?}qOZ`ccqd zXAPthoX`+S8hQabnvp9EnvbZbg$=~+RsC$%iwggTmgMn&J<4|ho&vb|{}|pa}xbx&y zC_e)D6@a#Je^&kdJ3m+Ro zNe+Czz%{orbalK9!->chsY|eWR>1`@tzzXP(gqD2ihdIoLA?w^0m~>M<4)^&B3H~I ztniZdJ&rX{&<_t{X5vZSU@DS`hH1LSFC#!#goMviBC2r3btqp7*bJa;$HA(-bBCyXqto8;sj9s@3#^}+ zPVrfKHu!q}J2mAEk`v!t`M*s027SOk^-liGJMB}iEnE8XSOYwY-Ii9(%>Ejl{9$<7 zU&HqM;heX-X$L_Bc%0sBj`BuC*c!}p0Xvvu_547Z5kKI3G9%aI9_>kON|XbwMkEtB zhByjV5-8_e)HdNUqgu`idc(NhYo|gHgoh;}izoO)B7l~%;}+Z%)SYN4gp(vul;xq8 zQd`$=RePaEwfAT9}7HEQm0<5WAAz1ySR`(UHAL+?!Gc6u>B)iNmnz24TSHfD##OFX5o$ zb*KK7`T9SG^0R=K0B-%?LYcOYoPFbLr@t;xdwG)nW!3LO%}cVM<`K}&TFKC6gf#g5 z32cslf*@Rg<3hy`!m>XNel1SRf89ylVn|y7X=(!3@ z%JX5nP<|EA32^c7Ap`{ZTKMPCbS4%YfGaZvEdy znYNGIz2m3bSKd=-dB`EFk+ZzJAH-IT#XxA3?C9A{`y^I^W+!Wzp^71;q+TTuO#%nX zRwmBKuP!L9C#c(NJDmD19hk50Ln!|e@GF2@-`7#5?LBAz(brVpISBguxpiI-wZ?x~ zXR1fbo2s1`ROiS0k5PUQ@G!uw_b*VU?FDBa@9clRE41B6k2>!s6FNH*fVU8SKl1Bcf?6WXYny+GUhAxN2im7 zNE{ZceJDmrGO8|*8=GVNVHk)+jh4+3GB){Ty!y$w9UgvDygaR^KqjE*m_Y1jgBZ@{ zV_BQxqbQ<(AQG+)*)U_c7>P6VoSF1jnmObFf*DFGI5f~0uFA+OqT?g!s1<>arddr2 z#eXwC9d;7cP;kBn(E}gnF-&gE^}%YzUv1m^a1W{j?v~{E#MvtD)`IaPMfWKNgeAvG zMsK8kmWC@7_`?^(C*dA1_#Q+8DuX(zj5h?W5E!peIroJ_#Qj7quh&D%!whjq@|j`S zoCd)gQQW;EJU>8uFKC1^j2Q?%3+z_!=UZM_a6p)bYcilAX^J={jcOcjxSPLfc}Mlr zmj~th=@WySH8uqO65#gJ`|6vua~qnqPXV-boS^!rcC_lBgP&CK0p5u^{kFjCpLMQ% zGcjBwrTz*7;F#8{OpP z#iyU@yNJt2+0r4!kcWzfjH&;TI*co0TTOAJsc$t$y`sNwp5iM$73N*-iKD=kREkzR z=ojOnoNa?8KpA>^PC8wW=!g#x?1gyl*|;UxX|chay~b=`%xm~`_~x?Esj&g4#H_Po z?4>{>Kk&uCEIvlCcf$w19~OTK``!-+{}c|qA0|0KfR7jLERadYkvAz8S;(wYV*05u zaLTlL(5+2zy(4aHibrG+e1yOMD8@F&hi!?A&2fE8yqPZyjj}C&Bv}cAig<2&+`c&; z+a5P=j_cdwMZb!Vc{YyFqvkli&{&uiJj>Y?@!WK_cgWfpmotPKrMAC>^aroAc zo76mLT(~(>ldKjzRRf=L@M{QOaMTE+e&HZ%piw=HUN_EyBX0B?5E}h1UVL60Ge#3E z1}y`cW{BCQ^WuOB6&{D_lxf%bQ;3P0h6{E^0!F?+f_Qv!n_(_GoyCfyUNIDlgL$4( zUojs8PIxKu#uf8{IF^G9D!>N~O%!L+K+%ZU=z*AIawD!}V;Ntk%OBOSk7%;Tn`2A) zADKGDS{58*aqLn3>VNVAYJ0P_g*9q&Dd*$4WC?ein}o&RAS%KRMGHwItA7*eHR zQ6IR7hjSqt5mSw@9x95CiTsGib1@c=VY=7(sKonN%GI)b#+aRyif z?;#lhc^+iVa@edOm<_VGnKHYhN?Z^|;({LT@$yc~B#TXmc0+NC%-MAya3r1+56~C- zl18?;*vq{cF9hpAt{IPeVlWRdDoi_Vr^?buL;}uSl#oczTV!Q|MV`#C(kc@{A~G>E zW?()i8w`9M1bNKDo+6$@t!@ZhZ2(}#fnUfgCo<3|SHYAq)-AU8L1~}XuOvnBFjy$j zLK+9>GDY|Z5CGB|&`bK>nZ`og)ey*6;j>Mj z-|+MBK;2uK(hc{WakCuCWu;3{S0=rdZ-h~VcUR&~Q8Nxy)7A8@kZFjZ7lIqx@0U3V z<#*dSY1UdMRWu$Qu|!4#GxZ0A0P`5dccn^KJMCL`5ADq1@jU{W-KL zZ+9?%7;L}+F92NnbNg`U6Gt>_n*g-cJfq}pyPUjsYaP3T^R83J7Zg}e;ds|b_V=q% zpI+pGNCt=yVz47Q@+4XKN;GIy+w$dYAY-c=j#@c{vYyw^UES6;Y4yru)GD-Wr@oW_ zRA)Q&)*k;)(R=*3O7!^gQO_USd;ZwLek#?6T>>;@admyolV-_NtTa>-EG;TIr1WVc zG%gHF1@q4=6c4wvP;uC&{XNkDDMxX#G9eaZc|9i7MON0pbUeL^*F2UO^Rq+0)r17bilOaRIwmRqbb7v znHb9b|4JZt-rpkLk0L|pTmF`a|0Q8Wt(Z|}4H}I*GXUe-L~(~Q_(B{Tgz_x+nAT|w z`p>MIdDVaYYG&nliD#0K)3I|f=`q2TnelYYjMu^(H_S(~i6YI5W7B$GXO+fMxo}xJ z=Pk_3~P$ zzJ6%rFi&Fgii1XGkR(eQRQZ!230XVl?=|puo0jO#I09xu!VxM00YUK05Lti(b-IsC zH$%1wV!P&_hj7nJru3oTO25pt3`rCA|LLD{)=?&tW*Qi51+!2Kva|{ttTiukaGY;as$~B{<g}2lH*c)#x=PSH*7AF4<;jJ5M5`n!?*U9gN z=z~!Ad#+uTLjGq$-N~Ya#F%cT=h^6Ouq6!D#eq5EW*a^ibI7CWM1cm^NT%n&p3615 zSVP`ykHXuk<~-hhf%5Z!Ujtmc{Q+gUjZ=HKzioK2H{PymbL2+_#T$86?T)owd=thc zVeRK!yGdg0M82#y(k5ZeRL`t0-`${9M`uLjRGRx}?1msQMu$W;Yp1J8G;~-BZ(D&6 zS5E#Hl==8(Eemk*b`Q!2?*o5j0BxfuJSX?h->KvnEgw8Df447J$F+wFB6pK%7trC> zkfdOj=keq-9=6Lf`WevU5B<-XKe94+S`qnwlmACn@J{QGLVGmTBsv(W^Z3n78o!*z z!04wD+)LM?EsD?KX0-HnEL|w}*$+}!YN_IxsQ~vS0%@-p$13l34k{l!z!*_*@= zJj+Hh+oM>UKVwHAC}?11p#yy?jZjTx;I9V3=l#HywymjQ5-QGHR z@tb0!cL){!C)5!g2QO)q3-z$QM}&r-y_$QjKtY|L=5%@xJyV3v+Dh$(m>lw%@I zT!fy0!89_1LQdxi1#!06y&K0VcQ=gj@dUbFO4pP`5a$fY^?W#=fFy6QFCphg9EC%) zAp{$QE4<-4q|Hnw)V;xYkgIQlv6pVeEhJ2~(A5)oHi42fdf=IF8RbQoJHS_e!JW90 zm; z-$jEo1-XBOo+_VSB9G<5zL1?HM+t94J{xyn9W8PKi}o0`Ktb>=!X*F1du?|w3HhwJ znjdzyBuC?{M-T?`=IAi8p&DrNcZCYZ(5hGGEdjEBNpi zR5oaei!foz^&guP?p;PYX84hKP13f+PY#z8)Z|@x8yIrsG=|=y2+WfMGNfe;Yb{~|$X-b9<+xsuRQTEeJTyv-Xxg7q{tTc` z%;PJDGHo@^K3u2x$-e&fJ4UPH1;kgMUXQ3GN0Y6@Y-uae$+QoFq!v`UMAY*E#F~@! z2vPmGUT@marfre4|GLIkKX}0ef)Tc%dxQ~#jRajc0VlhSELy-(P!4xoRk+ys!cnD`yIPln zpLbAicRU?18FrC?c>otbZ79=rg0ug+#*@U)7mcWgftmu3s9hP=Z>%YKJEX%n2{YOiFl zh!qFHcK$%fLmKcm+$`b;f@cdOk9~sg1Jwe|;`t0wQ-(f7YutJ^3y=XEFB-7YC22tk z4A#=D5`xQ2)F;M4L{Ot-qK?c!O-SJD1YAiC2G-vM_e$;^2FfH==yL^GJ@tFE=Y4xB z<4)Lx(i6Z_OWvLqh=8C;nsS7b@Qvgmk%=Q%0=a`AUv|uw3e}*mhf7p@zI;%=pAVnf ztQ`cH3vk=>29#d|ybYi&K1;RRoqtj5>~_ZW_%~7)Dwjh3k!|F9O9M^@j?GPHROSbd)~G#~@}G z$LbLz{y|Cwgz+2;>7*AD)^y}Ro(!kqzEMR+UVqZjTku7Yyp2FAtgvMH$?4IRyn&K2 z3&IdDqOy~x529Zqb`tr%M7?oe1r{pEm4YP$dA*=Rc|#l?(OAg%ywaCL_=27YP4;k< zmPerYLvD;Tw@p7jA9jTB$TkoGK3(j|;K`^O*_-L=>!>{!Y_f0Bv1PT(=1~sdnG$^nC217!}8f+rByVLBp1 zXipb4m{Z|(PTmS5`3V0I9)3459h!{r{vuaSjfmze=NB@~*hlZmZB;?Sf zY2Y3OSqV< zUA967d@AeWFS8Fg>*DY759FA-4A>p#8eVv>wv1~m<7&&g#`-JM{)KTC5l4VmGxTUt zE)}rD*Cxl^kQCP^eK#b%*C&k|lE(E(>xQHTKRam+s9P-D*qwLwaP7Km7Cf_;$w10kP^#|Cvu?3vfU4I{ ze6L%t)WOYK1)v(>)@uaHv`ujKedAZkllZq6>ZR6GGg@WtkXU#I>Q{o{`Jo?{w0EF_ zK4=;nSeWKj`r(C!((;TV^I_*F2A}*%-?+=E?+(<%t*>Wxvlay;0d9SBDAP8`+3(5! zc(2u$vf9Y@?3qXSXR^A($wyb!ZMQtajRRGCuE%$~_4@Z8$%e)7` z&>+?eDDW(YP1m$)r~asy>$mp@l>Y+w2f(d=WUi|JU}wK$4{;M43mliUyZ)1wEvNQP zEf|BkFOu~}EWwXZZ#!6pnBaz)ggBc++lx4oq@KnJ$gyFbLfLAJ0Ju^=2$fm`i#VK+ z!2@tFg3;iF9dJDbb~^ajih8>E_zdOHJgn^i4nB-kC|?iQ37~D`4T^rhbJKJ3ch~z$ z{y%P>I=aI1{|x~VAW|C6gTlpD4yD->`&<-@26pga1Hw)UD=fme~|WdrOWhWIP1NJ z{W(44FLd%U_SbaXhv^&%7nTlI79#B-RX@fx_>|r6gZo$1juE>Nj2lpt_q@Z7BBYex@E+Lf8n_f7stL?K zKKH4xHx@R8NlJ!-Xgl~41WN*Cr7uA?YuWr-`w%s*y5{Hm(d0v#wL<|%0^ELdJj%3f zaQ63Tr)MnI0Fn?@rQ)eiq|O}+~tP0y|@8kNua2qz*q>q zp-1hDxG_kne+Tn9>@YD!AB@Hvgm6p^U_Sgjha`nrsRoA5O~7+nszSipNt5U9)`i9f zJ;=*V9)+QJ2JJmXQtnosr^xA`rVn@yD~>^B_US>2G&f3@tLU)GiMsZteKu+zDeFj zdy>CA7~+%IP#T`C$o$+SX6a4lEThSq<*D^e_tx6e{k6gAfg;J*%Sbe&t@03;F7+dn zFA&Z6WzJBO^?%Q9XQXr%fvbAH2kE8po;{r*Lkt6v;1DAUNldBBkdSk*(=|GWsebXD zZ{+*M3n>2v&aHszto{y{j7|Oo`SVwf% z)3^ZTX94d4XxredlXf&cCx3@sd&uvranZ4$u>D`^an!`4YFkhBMR>)37_U=!#eb@h zh!?A!M};@M5rm8VR+PRb;v1|>^ox8&7yCMy+!h%B-}M!F%hf;xRmA7kVenZZiX5llZlI_Y*bjucJvqvf^-%~iku+kg4G!87 zqyVQCASz*56cHrj4Pj|#TZUiGueh^ZhpjH0sZ*>J_rr#q)dXP?$sz4Z!q_f018=Cn z(ZR4Rw`Cq-H7`?yunGj_mY*%VkJdF>^~0_s)p~tjrfE~ZiP))t69Dc!d@ss>1DM}Z z{czTUYW{7xPwl_sReaQWHL4%x3M>!Vtslx>$bY0fmhM!}ObB5^5|W3(Qla~$UlZV^ z-c8Y4g>Yq%?tX|e;YGu@7$_|Pb#eZrdK@UHQf_1 z6ecH2T_ge^KqDF7gc^P5$HL>(;4rYcag0thLpgX7I3%+ejP@-*nX|!B4Tnw8A($}) zA;U%(Q*RJ}0cK(@0czzXT9<>DbZZ_jr=xrU;2MBCPVPkc5x~;`+FBg?v(&LG_`M@H zY-~{Dq_e=|MCwcSpl8ctYX^HCDRl`&m7jXUpLv(d5E4FZJrpVYnPm9I23ZOHow zA6?^B|2lM`!Vew08s%+(TL6T|xTcBQo%0Vk`zM?@>F%EHqs{&OU+O8Btys1eGfFC) zg%oBp3;DI+>xl3M(8{=9_roxYs@t=y-oI-fRiBzgdAYCeo-(#UMDkzQk~6Oz4EwaaHp%SpSWW2s+Dj@KxG5#*^x4ncTx*Zf7|bS z%U`F7>F?>jclA0j=!lPnoTVbJCpB$4h><*23DK}Yrx)z2>YZDhulGqPp98oA;MRL1 z%G&@t0R7e5eqW7)yt5`vjEF09*)g>%9Tx>jB#V z{nb17b=BKxdDY%W^k{FdYVY6c-rwcxF5LF^=G$A)=~XSNy~9iL^*$cu(*WlI+dd!Q44D5 zp+P+mA)QGdmu2|T?$oaf-|fm*r!8&P4g(wsaO>BKGHuJ9{nu2#=_={be^W#G*_yV$ zYR8xH{cb&*mqFhFmZz4tDl?T3@>J)>??Q>+8w)tNyb z&xGcY?8VGbI4UAV09e)|ezi}_9iZBGC+g+azx?QCZ8%^bfKz{CGRofq90j1Q@mOPN zOI}o0j^pL5Qd=-V;q4>f!^PX2<;~g>z)FCNx9^~QCg1`9Z7v@(+2Lb;D5~p+IpFBMRjAseQ!R`$+X7x5g=|Kg>EdFF)9Z@*RNt04{zWM)`5T z(*WA~_J_$1|6DNsF)!J!t)JYwhK$&cYNHf70p#XjVa%n2-}H+&{FRy*JWI^1)U;AD zLemC=y2x^nRnvE_ck0);I^X`Mp?n_TGJspZjVNCa*bbnrFaLOiQ@?`g=X=)Av9$<< zM|aoE^M=0`HT#C=uv)4aBK;FLJQxBr`8x=PLl`J_IrR&#$=C1OC?5|v1K`&0B9u1* zZUppKzg2s){iK~vCpgh z3ULfukv`^2*Iv`YQ=R&+%a7l0qkKHz1b|!r@1soH8P0xB_C$MO{6aHT+pU_S^t3`yL#QCwd+>5)vJuBlUJ@hdJ=SS zaa*})Y8)Da~!JR44EJep<4E4&~2-MpR2Hk5w?co5*=-S`E{wEfB1 zZ~UgxuPxrEw?9E=t6G<~AM%ygrF%r!w3Q?=gMmqnv@f|te+E_myZU| zVtnsTQHub-*#*l|MMe%t(BvsMh425|BCD9XPF7$+)x zwhveMY8PILcZ=oQY$2Ob>t?HAixt~!WwuxYH(Q=9*3!+EvBi1?7vV=*o8Q1Ea?kM8 z2x!jF6LZfNzH>zM6gb2pff(FRT4sJ!`&FT#otw? z=Mr;T{>U{lnUZk=pmRT)l^!jxjWq=Sf|>}_`XN7roCKX#(s z!*V2P+6CXo8U%1X!0jIop!_1>4FGMO`>1}gW3bvE@w%GVT|Ts9@AnUS~7wqLG!UhaQ?&Z}}ixanoNfBp=0yyMqz z$lrSrl`hem(6*#?-SV|)zIAP~4fi{$b=itFYv+J(Ii|H>t+`^QeE96PHLF0)+NQ6; zBweuD;i;&CTmee?$eNj}4{2S!Lb*v4=q>pfab4Slm2GPv-j+22-7jQidcJ1L+O}iX z?8SGjZaa3}vej*iv2b>JfvgFyXwUwBz`u)Fdp7y+A{tajZQ`PX-)i%dk$D-pb?5NM z8I=P1yk5T!>Gi9Hu6l!A#LbKO4Eg_0Lc57IA?t4p_6h-$-Rl!S@tuG%6&6#(1z5ZJ z*qN+iJi@&oB&9!(+`e=HJNRW(NnKc#5+d_{rDv zl`x_*1|7iJ9SE=${;?3_t?yYU8sjX{^e{f;A-<9ye5VLJDduwaC|&Y%SlE(dih<}A zO|RgRU(+Q&6M@&ne9m5^OI{TMi8v8?Erd(n#wBmjB`=G>pN(WYtNRE?{=wJk`_m<} zt%E_7PPFf5=6z5z!~3P;@2vQ4X5PiV$vGbp)FqCPz}HB_ul z4g?EBfjBGpIB&f@)n5e)Q#{}&tfrq6q2dAevC;jUC@UT?GLno|OwPK`npr=4>cO>< znaKdcB@ROTknlHCm{yPABiSlM-JE9Dt!!s&;SaPfNfY8xSbqPTiwgaGuX(bulUWH5 z1ufav_c-(7SHLsRPWa~pA7_D`3~|K{2`55xqK~u4P8JUMlX_kJaTa@nCCx-QU6Cp- zGBZz!bTUP#5@Z)-!Pbqe5Ccd&C__CV&=bO<0QHFPXqUk@4RIgIZ4#!R$T<~_hDu?7 zZ6#v*zR7gN#8jS%=6tzWvCs0AL_CN$sqVyGWb>9GTO?Qwr(yUB>wZ{U!wM}L^HIP| z1pM&vTKNs0w2?vrQh$n~NUAp#heF7hn1Tx_LZ^`1Vk#Db4t|x%q>+&|OJ1iQxWK`@yw5E|Al47#afmSo9)TjM6!S!lry5C7z?Zm>u1$Loiv>9u zxNnfp@X7eM0dVo58V?X*RoZaEph_Y73Qr>sH{!K?!4qrnE$-9Hc_4}B`{eUOK0MK= zq^u9sb|6r|ci5IsL`5ZBUJ<$zxfG%vS^iJnQZB-2Ps$5lKg1VA4G8UhYGNdlR$VOP zDY2yS*?)qQa(yQ9VS?8~)>+JN24X$HGncxgZBx8g!yBd!fiF-UqQq%AY4nDc1D`?N zLzl+<_%dJL&Vk_K=%&ax*^W64p;zT-lH^|tAEo$fNw?q67jWnkI*lEZ?GhDUG{qS?>kYzsV7 zjT;e|dm#+_t^_^0npbS$$!It{ln;K9ouR+L)`n(rb|mj!aUq)%6O!fqO zi9Jr&u9w$dz|&-Y+XV6z#)13k@J4CS!Jj_?&oV`*jgE%lXTN@qeKQwkS#qU4yp z@P8;o60jV{eS^#EtEN`gn#bn`;~WJPOZTMp4bQNqeolmn8%CB)TtE(LY2Ej&%#r|% zNfU@;<1h<|bvu<2gHg_Wi_@+6(#shZKNssDE;^7vfdI-Y%zpr1_37W4&sUF+KR*==Lb6h$3x7&Y2+_JTvl=wHlo2$5L7P$ zHx3IljttV({Jz^h=})9+6)p|e$#~t0D0+u)Rg@O*1f?Zv(u>j}ju~Bn!6Nkn5u zhr+gVjiO^4&d?IVEi!aNt>viaJBdM{4_=r`ouhgB>y=Tezp{bhd?`#@6~5VF1sUSH#2KfVbN7Dk}~r5Y#n*fPHm# z?M7}PEC<$X#d;&$0c5m~CVo7>g<)FjRO_U=zzJr;m;aeK!Q4MuhFCHIURpA!xKd=X zQfl_B^X0tb;pmsHtu`wMjvUa=YI4L>hJ~aCtxn;g#B*kR6ka@R)u>#wGE{7$G#(vM8-SAnK>dmY7XC0*!uO zW)qW&6^n5zP7x1JkZi1+CJXpXM7NIlv49~K*@zG0(U=)U2uQAHV#XkFxHLh-2Ny{V ztYRyRz};Dz2H_zhCtn|qQONGyzn>hZ(t5RgLYVGWci|{G?Ab_}fSPCJov44$6<7lA z`%mtuK)`UU%&`Xo{NVNz9$So7)Uj}^Hx`OI!$7wX{c$aR+Hz~>mhgtNDV zwq8b<@?$axnnAPFDlxJxm+*a$HQq+3AOw$kjYZ)o2X4hso>vLvOeuwSDXlXE6^vl2 zA|P#39r&>^;KL@f+U&gC_>$sWs;r(}&#F?D&7_>`ekGI+ay)^BLJxxQD98mehEu=H zz|oLoAyg*WhuT9a#d9{r4?;9zgfPzcRgiA-y#hN!%VqdeQQM-8qhM{&Kf=^w(c+jp zkp77#S;Q)GMBq?@6#D{EFkUzwfvh9yjiUPGCk=KD_j&wLEadZ7*ZKlvL^SJc)n7JT zme+fIhI0IJ_(ucWb?p5p{|4|WfVRGRuk`)B^LWru^X+-R%_smmS?NA^hV3r3cZ*7k%ksBulKq@%sp55&J)qo z`qO(|U^bjjdarZL%w@gxUK>r%Wj*y?9j1XR`q6uBrwjk@>%DfIr~1b|SLF35XKa8@ zA8<9m?H_lc{50U#0NVQMy*BjGdvz9C@3njXaFqZB6F$_`?f#N4(tCYIdao@#^&TTuV07s`nBi^Zf@W+7&q@BJL%H&W>IRo$GoibS~#7UzS(sY#~+5jik^ypIH|$snU59 zs+Tu7ge=#Iz5{ue;3-n+{ERMnvZqSt3{>|AI*D~e;IBsV z0@mPaakew_X42yPfLENwi*I1&^}V$?7xLtB7+HJJ;`q9?IB{rku2))|yLxGH7VM_Q zp=b50#p&mS(&F@ULTYg)<~266`)F(ywX>yI@+|At*!+PsHm7_gjm`A984D*X62)mV z^^`~^DN@{jt*cSuojqu3AOPw|QxgK8{?#-!@jhyoFQKVP_qpZ2)zrjFu!j3wJ&mi~ z_#DYm6JiOI7AWKci{D#I^W~r4bLmn8)=w@ez#2ji^aVPag1p0+__b(REStj0^wqTF zHYs{Gx+AY=xo->dI0G`*=IPmMDF5iXX3cxOqGw0ks`M<=W-2{P<1l5%vGh|%&r)dl zRDPa!?XvpNv%R2a$-i@5+t;J3*!_+DsSpYz2XkJwX8N*Y+F;Z%$Mr`lq`Jp_$05ts zE?v3Kv8~w)FObs7Jt{{2o}j*`55wDvMoFfk&s7n2I+3aDV(M2v5Q3g$Lmai^<- z`59C&k0}+*b);k2=Bi-+4*kmCNM~|`9(X`MhO@ir^nE>5FsDNQa|)63dvv1J+o6Jq zr328a%;4pN#h?dRH0Ni(gzn`@wibD9QTQoaJAnOxSG>okQt)9s@CSHcAOs!Fi#YuP zy{}z9tRt_Zi6Izmz|qh&A{>g;&}8;4_GL50|BZ&`**$7#vJ<1RX@}vZHq5?TAQ#9% zCj%OdBi)*sNPT>2tk&A?$UJZwCxy!vR*?1w<{w7AHPut)gGOh_$Rm?0(no_NZzO%r z5BI3gS@GPIbb2ULDE}p z!5AeFM9X1#LO5AwZSZ7E$}Ui?R*KLneRVkV{K`f{2e3g46$nSQx@s-+&v z3cxoSw$mX5vk5{3)mO{*<(}1te=%H5)UMkUozHE}>!AYM;9m|H32@~M_n>_EP0iX0 z0B!4!SL@dEwyJgOQb!MExq7JW|10a(y{m`HQ(>3a=>16&*D%DqYcgk-VQ~x_%(Koj6!+L3oELT%xk*3IV7e}V6-E>69 zK-yZ0WY(BeT|H6c1Yb`*QRW0+x1OkcP_CDbhx9~4s(t^Fp6I|qlX^X)IpMALNj=dR z7C8udqA8>&8dFtV+pQ=1MCyrNB|Q=Fwnse?B)~fK#2#g{mPC{^GA@b=kEb79k*iSe zsVjmpS07!GjIGss;HUSjD=OGCzp}0f-wRWUysoIv_kZoWBD~+7@Z9}Z))i&SZ8WZ) zgI4DYbwyu*hw(`4_GNWNRU&{zA6#D0wf3kh3Wbo7wSQd^?w8h%J#|G7srh#OEqOgr z>{iUTfChj&-yVVT2EY~oZGH7b+xzH=b{1MswEJAwXI-T@Yck0GB0bS(&=cvGZ~;Bh zy}Rp)l9%wr|JM`kQBU-k>M!@)miKSW?m!MGKpnv8FJc7Bw6!?Kgu&TNK<@o#0&g82|0|;abZVh4`1>zr(5T4%EYq10K7*St|il0NnA>h%#*xoqhNv z<>xcFPafmWP3pMT)G4no&=R?(Znt{xw`$e$Wo>Jer`^TyvGZ%~_Wimxxq;8GiNoL> zOAstR8pPocqgFz+S&R6k&3rrs0H%CCP&Y!hv(i^E@O}z*i8dt7GbFW-}T-)rnCCXx} ztb>n(p=<|#4iXZdcB*}(XDUohE@jqgZApU}FmpPzBUA4Z{=3Dc>_=j$@_xlK5cUWG zlWY-cz!_)wU>H2@&jwO%=p$hm>PNhOwwgvOg>H3MfsTOzhP3o|rC3a8E!Vh!a@a-D znq)m0l6If6MY|107CfoibHiQv`A*yoogrW#z@6V`qr47q3V^l_Cob=fk;<>}6Q@1T za{P)5){d)M*DiIN5$^iSRv|PUQk%b8fa~ZnwNQTb}LK zZMxRZ8lsgZdsd(ME8Y97?s)+s=Lk1p;FUlMn^o{}nXRugJi;LFmImNH%D)R($PDq@1+_c#-g9WSP3DmmzXDjet>nYVPjX%!k7u$gHHo(0A zw_U_N;M)Mr0NQ4aQtff+K5GAtJI7G_ z`UkR2=DTeY*lxWhwCh-d7%13-`pgG(?}H>|3K+a=H9h02@r;8@aF!nf z=|vQVc@)gJ9@}|%ulKKB>(+XGTRn&m6y)wf$X85)& z-<}me%&;T;+M_AG*abGE_8Q_uDB3w+kqcD%zD=ll42pV(~k8|?iy z*{NsCjZe(v$ENWw)BAdjai^U-FO)kin0tukvvMS~%b0$CF7wn{XVSluJe9BmOs}-cB$z4pNXHim z$3wAr+y}3L{bFQmm&6c8a`ku)*;8be822lJY(I>06OvHyGG@SAYnq51Wa4rYovm1& zqcU#bEx<3$57aXQ{2X_no*Up7 zxC8YN8M3E((2CVKeiu)>ejI7VvI-XEz+Hn!JD zjUiuG(u{r1Ck{YM8cIL7?Z= zTitEAEDB1KL295%aA)I3F$1I={l@aS$z*&jvC-<2=rDJn{zLs8G+7^vrc z;XqBXmEP6j!618p2I}*D2kNVK`ek>ZzHaj_yPKl^&gO614n_TgZTyezP}FyAIiz-} zfogVB)R&4zzv2$mSBv=b?m&ILh<6orQ`FxT8E+Rk6!i~9#{U#K6!qOANl~B857d|Z z;aA*&`l_FI`uF>_KXqP@fqG?)@xI@os2|%sDC(s|On*%OzW?RNX}SkRH6%riM@ILc zs6g1<22i2thp3bQOq1`#<{)})q`U$MNRj(_sddLNglNwuQ>egqs`g^bx1n~ z<&yxX0bIKJYm{jl`-SdCveM;$*R(EyIqIs` z6^q;8bBq&fCdm-!6+4Qqv2QD4JBrTax4~ZXRQuVWb|=<{a|l@oIW-yU{J7=ySkMCa zAs!1O%EDs!Q6ZH}gs*3w;&7e0g&`SxI2}4E{0cK`YCU0}=LUwP^Q5Bn(tUu7B&GsBr+;|oB+Sds`QApACG0m1&f2pY`hf9Q~4K$7i)@7Lqd{jF&yR! zHN0}f;^C7-&8Q>Ne!hQ35y>JF9x$jG`A8SQLZ*|$P=gG##+ zDUOOn**LS&1x0mVw|4LeGd2y+%I*UQ?pND$no|JSSi@2vibO7QU=*zX`vo z`r%nWLoPn&;Cm?RkHhBy;P%6bD4z&83qae>`KrGyeN)+wt#{;;Cw^P4uUm$7%IgZa zuI|wfVP#H|CD{dOP2I_F6f(@$J525dQJAk&?PWjY)<&NGAr~9@%ZBzoZ!i%N38+Bw zo`;$B2&@RaoE<0D4fn-hDa4QBwPI1mTQrLgi49Wn-!iZ!E5PQDM^?x%a=aT54#y#a zf=mfLsR~_u0FYbdhYcbfNev>@E<-z^SLk@BBY31fKmoTRA}fVZXanT&OTm$80QwO` z%u?td+}@7qzH@FdpW0NQ5VpxS%K zLdTBqj2Gnb^Suoa!g?c#NVbsB#TypHaAs{J7IT*fR_1X|NrkrQS%oN#^=;%OrD*OPcnP}VfzM9u2Kb5zax)bGJ z0A2++^P2b+<=oTF+F$@}HIvl*HQC9(agRgCivOzQi3OuyAXze=oXbkJNj3^95_uFl z5)vxz!XSBuv0bcE{;zok5|~r%$&!ruBpKVrwdeJ6c(ITr4f}?57+foD;U8+n#ByFK zssc46%`FG5iXgbU4=$TXge|F6)ByW{5f%;95RICQ7V?3v;DJskLF#2bSVpLxh~N<{ zS;35ERyFOKN-SEfGzEibN$1!`kJ>2%e967&r^|IC#Yu8YVbg&gN)7`O@ z>F!kfO!ka5XqPop`$R9d_6b%S>=Av?&-9Vd0UMOvw;T$`Vc-pm;Qiffgos~7+_XV# zraF~?Yz}FgS%8f*qd;uXh$Gi#2<@@z&kA4GuDm_L(I_7WI04||>jx;)w%*zA$)3P^ zSmCc={deWUZ?`SllRW`Nu(v}V?R0y-HaE-5APY>`f9(* z>(>^cyasSOz~w`(NBMrhF95W;_5^octN6~P&UkHacjW(t){E~}?;iF99Z+3Mh2|{M zXP#~!^oW&w)H+*-yq)CfM>JU3-yoAEyC)OAtiFkN!PG!U03hc5ZQOV(j=s?#vTU-b zfYCuE_{tG{d_X3mKL{&}uzt2q1Cq2jq}DW%Bzyp^GYo++YX$^D#ppmZR!IeoywEs9 z>lK5-zQ~Zil*xT6janS35*VO_zg>S-{cP2cD(FeZPj($Lh=pgi5Kzr`ARt0iu+j9aaXnYIFc zK>yOm{zDfZ>Bc|wvlxv+gq=nlCMwnQu^>+d!@eV^912=L zwC%&ebb0weFV>O38rUAvmQ%-y@fiMxAtXsMKc%CWxTP*x1ft9{|n)xOm-+GHs7K`#s_H<(RV$`FijwQAv2+zm4)BNHh~> zce0wFQnask^`A<_-X*m2;OtxmytZIaH}cCF8{#`r(dYz_yC0to+@;_fA`$Ev;-Z@L zw_tf$SRvIxcM%XvNF)R!FR_Dq2r#&p^2L+UN`NSK7H0FFKpyGkm_f2U={893bJV6C zAF1{@>&1L~yod5X03QR~dBO9NGaoqnj+YgkS#YD;%f`Y#H;>NVqd%)wx5+LJw8vTw zK)Cs`eTe{lU)#<~;9-*HWd_I&6@!KkStV0-oj7X6>f{+HyB2x!foBzAAt3_?`M4Ua9O0c6JqbeZ1Rv z-;4HIWG3Xy!D=D7wzXjEZ>)^5CPtF?mB+U&-Wvf75v8D~$5wfkajO? z;%N~VC1%1Z5v69)an~|F#r~!rX~lKqF~Yz!%{uW<#>XRwkP&aQ&ShlNmbP|1=H#mDNlNb)71b{5z%a&VUcwPf((+M@BXDTc2)SW1!te5CMdX zDaARIS}KPGRwuE%zZFF~6mVrAv38X0Lkn|UCj*3)`b$zEE3`5IPAYyG0f^M=0b8CmAAb#|{V<{XL zz99{;t1=OMl^=b`6A`ft50%=L0W%oYqk-B`5K#&72zp>~Bw!*zI}F?qFAHH3sfyl8 zqsppG8GEWCg(7yt;ii0{Ks7!$gJYG3Kj}#byx!1T+(y9jdRD%yNMtCQ(dRcpNQ}XP zumaq>g-BuDh@xi-%M?|fN@Csd6>&RkRmT1wdv6{fM^&{C_r154+uc>&)%!BtGu^ZA zTUIh1G6?~)KuFjEf|8I75G9$A1Oyd{Y_bT67!(!F00M$6Q2`NIBKit~LfFHi#06el ziGrel@IB{N)$}C9?fr)Q^{biFb!)G>>$zun4n%RNn|mlSS?gkDkpxI@h`L{dELV6( zV+t)QrV(~80#t^BWPBH)3gH$xB3Hst1u`L$90OMgM+g~gZ1#u!Z^fOf6)uaaDOoQl zh*;K62-S?PQ@GctbcWU%Zpn;($-&&JHIrHk;3Dya-JjU4wNo{MRznvgGo#!e^9B~~ z%!4UoTDT!Yl?~7ID;wrUtr{2MV8ofh2jv97ZbIZ?vOfO~_*$^_bcb*=`ef*GLRLs5 zeCX*h-Y`I;a-laz(WoddG#IzpyMi~DwJro%kgSyi09t5jXuyhxpy0Amq3P>-P=aB= zL_@TR2B5S@yR4NSK$TLc5H8!3vy&_>D^j8V(^Z%QQm7BtAX#xCkQ2l=snkh3s`CEl zk$wsETaeGslz-v!F(35SpZJtJzs_o|-Hvy=zz_F-!cC61e&;>>3=Hp-{W+W#2;10a zKxpjVYTYXDgJbx))(bN5ThSl-s1~o)$^Ztf)yq+p9)=j^SnX-1wes1)48(;iYvDf1 z+6n5heoBWLvQp6G90df?W~`fe%S4PQit4R22CHRf+AZ&e zzZ?ii>^UBE6Vl%S-3{{j_=l0E<#BKQ;B_wl?yuEB{P=OG#)*%I6AA+Ju3NF{)S*LG zDVy`Pihn;A{CgD9FweIxVu6K4sAwHznxm^oCq=%DzOP8AZK{6LpfJ(>y<@j z%UechLmAVR-7PY|$d-@P^S6!ISK7o^+w`{#>rF%davSoj%qPHrF$8|56BD2$Pnrnq zBV!~BnhJ>sG7+`XH(p$h_*&pOFhPPS*p&e^VTP2GAp}yu4$MKPkYji-2P;;~mAr4w zy7|8q`Rb^gg{bc(*vNx=L4JMP7wNg6g&u z+H%w&Tpb83$-DLCZ^*wA?ZC3=m4U#qpc6oTeOZU}S)lVlwCrAAHhJx4=K{AM8@G1j zWiR{&PhPPMv9fq(^~s~Hre9_2k%2pqt+AbU{j2stDyOu0FtSmtrXO>hBT0farqvLC z63p$|a-14B9|FIr_8&(heJp4R$j^u6NYiqnx87YItq$U6+}q7)KFo#D)9J{EC@NVr za6gL%H2fpYI=8`YqZ%s2k*e$84l&Im}ys=2dUJdBI()gZSAx+wBj> ztvsP=RFS6+9$IsvD$e!ndUjSAAM;}t_$A6QPt3MV@aYI-$F(Gxzo6#x2DTp*?@{XQ zDfnPadBtHKrX$V@=9W+mf@{%Zu!sSAFZ@Bg57_DD$98X+-G!^7*`5pLW?bgk`cRfx59OULvEy#wfS z2UVB*6&5%jYG&h2KyzE~YTa*Z`M0#t+nV_gP1PC#49bZV^3x);6sXG3eI{5p&#T#; zItMYQkmHD#0M;%D_9AFo7V2YAosIn5;*~@1AFBPtMx?I?-30Q=L4N{iT3Y|;u21rC zPYyrawOdjL@iTj!JHHw1+o5)id%aSlY_%u=L1KJIY&O`4@kLXu@Jr*>dEvlDSdnFA zCqcs>3ahTLnRXE4vnHCi^cRJ=K-k&1sUQpa42AjB13kh3pJ}GeVmuqGNwz>#)r38H zGGMDq!ayuqh#K>B04m@J8D$jV$DC+Ob*6Y*R}9B%S`SENYZ1GPrZN(`MhgE);uRgX zCTTb^PYE7`$%+PDwLn&0jJuI*G+DSPX$J31Yc(mF%J}!hl`&jdW9Ss12-g)^-Dr0b7_4{OVehNe z^51~;b)av6{PKSsXaLZZS&*ewdLHvAegS$Tv{e{{!?&VM8#@OQDravGa z)!8=v_l8=TkAe|+JN!y0aEB`X9)1UdJa*UO|FIB%;??4xg$iJ!D0}&Orla&>EL#&V z@kwj|_E{(Kwwzn`hwE`s;wAVpt8#BhHKW{HRJqq55XN7V(5M{~Q>g?y%{>H=b;K?Dg0z#O6k zxc3-S8({AW@TA>q1FrRI14)CbwP8z(R}cPF_5XYY>A!>C0r~y$#6J%NhCru)XxXm0 z?{wrymg>|&YZI9dit6lLyL#r@w!KwOL*9hT0tY|#{fgX4n zMG`a88hcx0-x7%PYRocP^yQJPU5D&GNgN5Wz7(mrOzCH9+NTg-v_w;#9)1M6;Tm)# z2Xn_BK=o>~W`ylX#I}sNx*bo&EQ4_AV2v%Z=TT2a~D``ubniA6{t(;vjOqsB1?Hoye;rE+&>gxm z@LQ~?d@eEq8--UskBclkuYpFe02-K&c;&N7oTbVKu=Oc@yU?ByqvdlHPe4I@0#Ae| z+;G5Au3QdB}l)t)Z|^tCYp2H zvVpJ|cE)xY%@F02O&6V7nL_!*$CeJ{DP3;)JcxXERL%zipZyDPazNLE{PIctbs%sw zXa$HC?F6?RI=}Fw+AewJ(|D&VXB@Y7(xL#@%%~BB{hcY#;HNOls^uwf`z(GM+&J4| zRB<$TCz@`?^j^D#kzyvq(X8?7?#(0muZ)YB{uSs@5a!@g8cPw|OJuaK1Iz+aj2`H> z_Oa&}R;c1__wxO7GviilVSZN5$+zUJLZs%yks0vy@3EnMh#o+!TfaiX$gtOgTm=j7 zhjJ-{NU0=IPr@*f)GAsy2~%MQrtMjF3Db&PtC^FAejOni9hlf4ei~|A)69}px3CqH z!lqm(8jsdF5j}20(G_p7>LcY3cjHJ09kJ@{WWH8#XkKy_^j7p5&IGr)O>3uX`P4HP&LS`K93JmH*h@xMV;pthA=t|{AkIb_(=h!hx9nbEN!Pfr7Xd|&V`bPLdQ-Bw=r#cq2T>vl zqt>0Gfzd{zhDg~8QlW6oPC9mwtQ;V{a!A7ja79FeEGPBo=!9)>qMM%={H>awzeW1b zpf^B%em4Cb{V!+^XixdMZ7=0#HEQxMIr>9CM}Nc2KQi_Q%F$QG=ICo~j=uSR=jiH5 zZhme@K9y8X1p*V_90=?Wng{ap^CF~axyM`Yc-WmEI`_J3@6y1?^7pAfoVk4YXx*&a z$}eK~A(SCtL+(Q(dprDFE$}j+!Fs@$XN)-Pv2)2vLO??+k_!_u=_Kr=Wv9?1l=)1S zg$fg)hLZ3phZ~+AtcSM|I*cClX*Mql!fQ*4tSHGDrX|sw^?G5-daw;pzVM8m7QOIV zQoc#bLb1FPGN0-Euj`TmQ3i*}3lhE0-~K z93^wHTQYZhCG#gOaFOnpOhT2+bgyI7=~UvAxm>|GUzOjg}60 zzFkVk9xa{le^fe4rn%)J|54>1RwDgL&`Th{T<&=X@}qYL0$&2ra?(34|8V%(ZaLic zaaUh?+k*G0Ts|^1wEEDYlZQ@&g?P2$>=b{~UKMPocwD{;PWtWec6P0l*U3M+tIPSd za^iK8eO6BS0-tqmTFm-p+7zOOs? z>*D*me!rf*iM9S!mw(ZFu40HaX*S)o>%}*l>|%BC9r_?*Fj%+i@(z8`?YeV^E^gQL zJM`3@tU=vi;x$aq=-)CUKP5?H4}3fw%p-arK8KWD76FVcVQ|v}iF+d^rajRlJ~oxl z=DL#>`$VXvCL2#^b*V@?k}_+-A_wECEP|=_Ms41zTLR}4S{kx4!Rqt~LeiOVo}5^Y z!w5#!_m<;yPHTkpW!o9Jmp@W$tjpoK3d0PV$<#m)HHA+O9|0z7k>!MirH8Y!6~}bZ zE_x!P=h-Zd^Ad-m7hHtCQ6%+5%7M~=hwOF+`xzY?efeg}FLT{~u+adY!a__|$k6Z2^AdlsBk&CjpnoxcIP736={4nqYbwGdo?)iTSi_dD=@z8>U@8uASEBar_cZy}x5D}inh zErXu_K<{dg5B#2MN4(^7?)JEUhc`v}|7+Jfq~U>bgYY@zB0JheP6sI8L(|iru)v$h{g7es zMOstP^9gAJ*KQ#*q3GcgRbFcu7Nk&}K?}|z*zFnSY@F@p%XU29*N09pD}jZeBS8Lp z-hnhNwbETL|FkQgt$fy9`|r7Whs)=UTfMK!QQ^=vv}!qOCPb;!M3eowYu-*KHXfq+ecfi>|U=F{@7K$v)RH&(w|s=wHD& z2rkPhyP_Q`63#*4R)j+>XcM@l+bA5{48tyQG8iPBlj)0J#rSb7#uvJq$uK)m&NM@| z38;!e4VK;zDbjN=>q?mhwDZcWn0S$(dLlG3tw6Yd1+?uLjnEEc;Q&N&WXnz}Q8CEn zM?)a)Mm^!B%e+R0bQ^pZ!u_TS5eRo}*x<&k3}z8=A?y^uEhN||zAwW|kC4!ao?k!M+>1`ojE9j zET%hJs;Vzqa*$j9mISNy?+&CN2mJ=*)j#-OVoV0j1<~Rh==QI@lil@E_qhG;HqZZb z$>MRf3tNVMa>dDjNIen$z|=X8uxni3wzkcTjj*}uw?uw!7g+7*Sh;hphSx;n>*7{+ zjukuCiUum=>l8u0|;N2xa@9lwCU$UPa>EMRu(&@+Ve2!oJHS$AiY z>8TFX&={;CW2oK0*+717J=iUWSCGH{_%|zD2^F;j8v?S@4 z!xGOA*tY{18Q*eP30E!}vvw(qjqF_4O>Vk!mMf93oL>r8`T73=E~p{LVIdwhdnD{Bs=19OyN8^P0BA@jortpg2O=>#5XxV8)Q!pC zZ42D|onyItQWEamS0a5g=pm4wzs#-#IzfXVT8{mo+rKWE;Lel3=EVuoE_3$}PTZl+ z8>jwu8A-uMYdHcIU!bXg#qdKEVPxt$RkbI*CUUQf9sD&BeO=5_6}&01rUwyy>aKMG!6n5@cGhW! zhhuM|E}h{`nYf$-%i45Y#R6Q1DnAL#zzz=kgjpzzCh8$g#3Od?O>4$9fTDN`;=;1QA`6PP_Rs9Z5f!wn*DdIFFJvIA*9F=YgP1J0`>owvHL4v^b8%-3lis1Y1) zitOEMRNv@9Y+J>+kRl*>MBw^FEm1h8mFq$+P>SJ+q&1m<#Mk)h=7$>0S`b~ zqQAf2v>R^y`KPF;EY(3-vSRcpz3aIZWGBk9WFReR-8ySXZiTTyucK5lh~zr$%O zmJcoWFnhLWPseZ7*cJfSs?{~@R!j>nvOdeM7n8m&zF*)`$mqT!Qqu*qp%W z{T!ZAp?0Rjr6*XiIg1qR@N^mZJS;I6Sd%BMMvm*+FwAr9`n2( z!jTz3R)UUA`95P0awlOyKIWg>ug;~ji#+}e|2|J<6VI}z!8Qsee#XVm!J-0-56mHi zmCtkWg1=4kzh}94&fk{86wh$6-QNatE}r7zX@A=iVetePPx{*kGbSG6;&Ff55mE6d z7u)=8s8GdExp>6gM(QU>38tTtL^qCi1E|1u`v66S}H6~tnkGb#tCno;v zZ_|6f%EV508-96s&)+fed;d7S=Wm$!t-nq0`M*rO;%+1LGE#UJxjZp(2^W{TZ%F>8 zy10;wi~KL39QiaC7x>%sr1Q8q-`}Puox{bs?lw|qBZWIpOy17LZEo6q|8H{fE&nQd z%B@^%akpWqpCFL{0CzSBl6|KZE z^e3ETA`wekiC8+3ilrlbY9^MoKw+2iwYgZn8DxPHFn5U6#0t$dPQk)D4GMddtBKX_ z1G5LK7=x3eOF3_ieWh4ktkhiRK$#t@Z!Qx#^%mA)kIG}xw2zK~8v7b@&B3M|eB*NM z;kI;VxFg*i?n?KDd(!>kzWBt{1o8)aF{E|(Iz2`32=n?2e2O@^51;&5My-p5*|XfZ zp6O+I7c?=UD;OL_|A@Vj4QSrZg)GYAFYws6w0I~c;>CYM2^@D=E$jvoAf#*&Dei$1 z*ayEHh{21yQ3BfzOTrmB4=REZEM*E90#*qMJqT%tQ`jTWcmWL)=hdUPL zhsmJ?!f5ns1ae|QY%O>bo4{dmthnJMm?qexz$76%hCIPJlcJJTX6NWV%uL9MM;Yz{ zk-Fw2Z4_hzg+~P^8Hy8AU~t(mIi%xoEeyvj3lw%KB4s)i!;Hth-b@DFYir>K!@~_u z2{2Sm{&A?=3qkCIyJABOXP7vnT4jJhK+h}bQp?bsorL_mUg1|R?@U$M=snTvg=EVf zpMtxU_k3ius+PT~>ffEJvAQeXLxc@i*#Q4Fq32*^k_(Y1oBNwq>G%G|Ln)w~XT^&l zBglXO1$l+RlT3uU1&-O&un+j2!GaME$*7NYhT(vPF*v~6lAPsK&=hc}JD0lrZ6H^j zA1*_B6=)5}mlJ&wX<9Dy)_V>2=snEm*f>f)?$JfSJ-QnJ8~+~oXyNhh_wK}Z_;Rts z@|D1mpbvoj?_Gj4Ez7)h;D_#fc&F#5rw-!hit)yIde8S(@s3j9H&THIA!C4`J{3Th zi&o*i$ZGGqw&8tC-oAg-;2R5-z{f%UJoJowjSroS9X5Dou`y~wyXVr z^YA9upEJ((x$pTtk7a~U#5he@JT{JSVc_d{8UnJ6Gniy+yKl?}V2(Z6{R7=X`=#-s z#&&3b*464;LalCgS4-4J|BH%)yovo-<{pw)>fq`&GW>k#U9)SwJn+Xd^^k1+vE&ay z{h9!?aT#N)aX9y`*|=UFJa*UBxP|_Z9N~6DZP;V<>M#<|SvKLQ!a_#^)Ix_%Ne}-96S*XNMOeRrRpSHz z6tUk6>n)+?+H>8fSl{c6Ly;LgH^Hw@*qU=KOMH#VYXJ6i9fByc z5zYDvBFeC18;@~tT}>FL+|ClWG5KwratEEVQL`@5>Y?(T7wo$;p+BEk%Rj?7A~x?} z4bK3O0N4RRc-V)tB8dnnfI>)`%p^RYeqILbZVW12;7Dq9q5;%poXVksj>LI0o2=#d z{xGghfK3?)PPYihB5Ma(d%P5bdu96Y)Gnpm39IC)|*St`{vg1gGr%q?WgjipEtuXPi{DC3ALb)YG3#M_%63Uvh! zglU*%w^}@0#9%L-%UEBzkmSp-emRb#F>1q=7jqrR!4sNTi({l{|pgGv{ zV1NwGj6f%nv}qlUI5x1#A|&nA5)lk74Us5Wq)HKnfdM2W@QG*AN%K6k-CCpx zu`h5Yx)HsY!T6BoS>Pi}MP?nR`_^pl~8FGB`RSOq54EL0FON(K4{3qk;iZ3_<7 z3D~tk_g#m*O&E{JJ~0RYQYQp;I6UHoS2(5`s4jtefMJG5|bw`5GYhmb64hX`04L2H*1wI5xMiP9Wz^p@d6wg-U!94q*a9a3D#{$HSPzX3=!#BE%yr zOiXp*FidiGJ?vlI880X5FVb?^d@(2Tzv6Xkf+Gy5Ea>Swoeo|1Hzvj>R5vQ|0S}SB z0|vV(cwj*j!)v1*k(I!8a}pJ+5Sor78DKUMP*E*nHLuiWbEm0NTL=w$M<@_-?Szhg zbKurSS;@?K*VlE(}Q-S%~qN#s)nB zh8a&FeVU~`)hm{Q_Qfb&>iVm13{i}O) zjot%shyKYuTK~;G{P$?aSRYGsoDKf7G1ii8wOVqm*-`3K>6(@T)*Y=;90y^(a*o*b z^Rl6u#aZ~M!K6HwEN0NHB<;*Dd$O6`x5*EWmTjMK`;o0pRX)D8xe}NPnhWyz-4l`i zB4Y8Xym9M)_uQXUnR+O_Uv&M4x=7D`sWtDXGX02rfd5qLkHE$d z;plkHmpl~HC%O_YifQYWN&PE6f@#|>2&P?B*<1wE2RP~*b=atCE`q6nS^s~IUOLr7 zFHQRBrSLQPq?_+kTdMPni`puIFN1yq^7H+K4$M0`VPgZLWp>4#U#t(g{n@6!x%!Z) zS3aqZm);%cdB&deecUG-q`35NddRAi&p2e&&|zwTRdVBTszoO)T|0C35LrnKty*@* zc;1;_AMk(v7mWLxkIf!n47yn}uBiLFJYn5ILrd4L+qDdM{l@st+=e*Y7=P8;5T_>g zl8B|_>SqgM4>10ih{fYiv7gG^Bk~$Sd!7(5=-h}s<|A@aEEG?(vjABK7BmanjtKiQ z;}7WAwUY(5V75iDbNG|3MhwO$4j7*$e5!URXIE-5L%&Khk~KA@_1t+DK>R^1xQ#+z zv^g;ydQ44p!-Q&jVyZOc1YJnoyYgv)E1wrevcFz_0tUqem=%8x(H^CpvLL5@fc*rM zrP$fb8SXG*P;NRPb*aYAMXXl+LIKkhZFaPf&LeX>~68L;aEqJ+kaZGMlHa3~h z(t;r%mO2p4UBw?@SMzlVX*`B*qrm>gtv?|&%6`BMPg%zm87$Dn1GLJH@Uv(^m5qD3OJo`KR{bm+-KLFRM_8`xg=r8^9v1IY$A}f(<+vHK8XIK1F&PI) zDWMLQu&xBVt@+_b7E8(4T%MY&uGpuyLU(K$Xc{cd7-TbNm-jp5fFr^FP6K1xZ5*a& zwFWT7>iTeZWWL?zWH8yR@LXnjzLaY#&}0*lZ19)lZ9F@?cFn%0bg!GgcKK;-^vp9T z-N!>8D;?IxBZp5uYyt}&UOKFg6+QqQrj=!8uPL3w8XbF`yE;wcefMSE+I-Q-@8TT3|viZ9A7Bpsii+*Dbr= zd%yN{CvRl&OuE5 zNSkc$?0V00_xK%s?p(E3_Dt7OaX90!JkmjGh=W9G_u|2E3SL``qF zPr*p`%f6hZ_e%qaT~rG67E@eI!rdXw>Ujgc&2=22T%z|Y;OSWiqw8>I;`9NTuinYQ zGv1qzQN%2uxjdl+7PNS$=mC-+VGlsPNcY<93vlKhO8}y&w40x}Pdj&?MJy)qE`{F4 z9{(Bm)^sQv>LQguI4!f_o0*xhyRFeP3Wg1r1OI&5qTJroH|!}dG2c(au_*)NKv+d1 zurkV(kPdgj^($TG@j<=SdF%+%-vHeT^5=DTAx+Ewc(ayF?7Tx;{mPN zm7l}ZT`gO@?{oUAeC?+vR03ZG)l3}yK0QCF68JReA0S!=fA8A!IIG=x`PO4y`T1>= zTz+@!c*ld=^LP3T+_(wR4_>i~5H!|~-wl_ZKE5|xO3?bVhlkes@YV37RB@x0o~$0^ z8E%YdU$ZxBkUXystChJKQumG4(T~Z#$EAEs!e|gZg~p7>MxHh z4+8uFMk5J+FXvO!dayYJ8+k;;bNJUe-~a4L{ih-)LK7%i9ayi#r10b*Y*7ESpDbYljdYi6)hE?gux{2TiAG)A#9#!8Pu2B0 zF;Sl&3&ExjL4!Dxvs)tdH%FH1!Fh6Sn*W&1X>URZzMJY1&Ds2Mn|P?r{#}FES&(lV zz(bV4L;OKow$UUXuYO)Z)N}Ht>IBcU8s^eBGOY$|(17_h#s}Hi3<^!!x|oHAgYQC9 zN%D923|OKZpKf&PZL&MDB-x#~oh9cdzQNKX9AbT3pbwO5VgC}=TiR_qi!lKYI~u+S zy%?Ti&yKDQE#?2D|>UW1VioDaPB9K=4PF&i#vZ9d!734S-nXJYUuNC{z9 z8MfI{)Jh#uXyB{QDP$ZC;{?b#-{AjfKC9ZYP90f0Cj9Gb)tg6{Fe@puIcP$3Pj zE)a@icqaiqu(F7GY9JV8I-j1?hG#aEf_2cTV^H_+nfn*_l!l!q+%4~JePiziPXvh= zL;}#0_{bp4FUP)hfu&@N7HK7qV5=i#z($^1J>jqk#Q}-%iK!rjvM|0k%Awtc3P%mk zcvpn%scsVsA?@~HUlR8Rbo6dVQj>$z=}1Z-PtcDy@)UAr3@b$UlP#u+>5kdyeMus! zzJ$!)DVH1mP5$?xw*Bk;FH2+4nqR94X$uY|LJL5yeW)a7v&$DOoLU_x|B7^EpGu$? zG-WOR!Ajj|VHKfe>E zY_Br5ll{Y8eFm#gV3XBxGY{UvKgBZPZ2zN(PPdJhALY4i9JXFFw()_$hfu-J7r|%w z(H$+EeGMkOETLbH&>SgIvx%MP`W#)(%7Ctbxe9Eb4C`_xKF{EDbbQ}O`Upv@3`Im< zPiYn^X&!0`M1#}X$ptAELjy}%<#2nX&&Dh(5a>XAIa;*BeM2|fUQu+YLOSfu0tqwbmwQ%F#l)list)XpHU!>^|7@LlY*T3D{ga58S{(uAuL z%#G7LsjJ7LoY!CF){oPtx%Fc)CRvjPDuLyo3qfA}&@+`v;3Ci+AX;wwgv)2#w9wTL zP3>{zXFIoh`lGLpv;1tAl5OiAcLu}L($5}VcIwKZRqNc*8i7O~hB%b%;M+oKHBtRe z9rK%0>BC+`F>bPMWVuTII(9SHZs9j#6}yGMDKn95hewyQz~|Y4T2ZTD5JU*X%1e-% z0O|@L2LM^n?&B>88Zn>eF&OjM_j#{1EwWsT%eh2wU&EhVWW+;td{L;(7if!&MOwNk z_>O>hBdMK((JRY%P4G*a+TQGLhlAI-+uv}vW9ecVhMCd!S~48#(Ux&(8hD-Qd_J3o zDR>M(Lb=E?c+44y*jnNLiCOg{~Ej7u8e zOBy9~;pEJHBSX}O>&SxeMrOqHHzmMJVA5oEAV@XV;SNL(!a9n~f~1)6#mFS98CqKC zm~{g-MqXD-d#V~*bf^6?6po=0X*g4d`I37jI(9D>P8w)skOQeZh4JVJyq9zU{gPEb zF;9rQ3YiitN@4U$^Kp1*P$!LR5RVXV@vpXNMmP5Of4kjA^L@N`^&Y+SPUv06?jzmr zzuNBS%&_$snz+8(T4QO^Xu!W8Uu%)5%3YS+;I;pKtA5GX&Okc{JqhyLzcE+|bb$^4 z(Q?z@y>`C8+x|=EdGm{>-Tmvw8%J-q_J5j(2EPD~q$^jiI|HcjC#mqi6clXyW(h;P z+4;sh`7S#XKQY2@X?tL2Zg4 zUOC!E6KZ3IeD=r{j6lM1tOOeiGe{B}n3Pk?!hQrcgjELG5Didx)oOH8K*++<++=MA z1qDN3i!sOAu)lFn*HG=xK?ND7&Q;UU=^8@vFA0hF2Z2YQ-r4 z)vw;&n}2SUpVv1?wox9u0ouGx*4sSyJ(ho#1zzA3)%R%VrqRKMP={c`uCZy~WBUvl z#ROagMO4$t+=8ZyI%YU^tWKK?3HCbl(e->#?*@)fGy3o>-zSlz2)=J~{yoNU>rt_7 z30+(UGrSD=a8wnTAR!ilP;OGx*?~wM58*8MVi6Jm9i({&gpM@dAj2M1AWz_@<{f*k zP}w+eVna%>86y`e0S`R9j#_ry>eic+_N&&LYiFas1HB0H>&=JuuLPa|{R2eH#@Vhs z<)E{kQ`^7y_?^a$?*72D?=Qdeo_gcQzZl>CZnbXGmf8W(I22gGE?4OuQ$m}0MUHwcv% z(;}$unBQVHcn+*XjIwwpp!5>DO4Lb(NonhlwmUl377{-5DZ8n%G2V9%pS=wK< zi57Ilt9UyY^==Tgj%OKLW>8`tqzUK1W{|IADHvN97{YzPd1fEpS=U`Zzuac#O43U3 z*-;zQ#1d;v)MYVAbFC5snSN}|#6uV0oxiKW7+nR{G5-V?Tds!< zn3a8lJ9n_?c_MxXiy?Qs_NUD7RL2b^jvJ!{lLBc{n}fR|5StP_is&RV*324U??JJg z$N`%okRToj1vr9f1gQpej4-Z%J)TBz(P#ql2b*WJT~MIZcvsTZH18jKhAa%!L>(=X zvKyihYNLf)u!1*vq^VR$TQRP6#qxy|X4HxqLU|O-8duIhQiLdafe4rb>}kvhazg3xTYGPZ?%;8p~CP_trr3lHARL$`3QX2=`e$;{ytWtxYU%Vojk zp`|<<%xqu=i)*oY)X|p##unxcLAXgk3e$kmAp>OClmwO`&k%4tl$q$&Q9S`ZwGp9f z^~33+2$O zPRq?mKMZ;n%dhWr<>Ctsw?E(M<^Srhy5%tF?4ADHwLsXdGw1c| zYp)US7TNmRS2eZTZm5;{E=+hgStEw(1%uh&$-u7>?x<<9)5kSwp>6d$eGOV4hHyta zjZd+FPZ7$(;x!wb$v=l7{T+sW?>Ef2j0ZmpkNt~Tun<`&mWkOgheBuO9A;!;1>jN! zF=7n)!C9hb;(h4yB*F8+^jY!) z^d<7pV2-Z{V?M*Ph@G@wI29?0`OpO(3ya(~7(g%M{nHm$!Vpbn*<@zdAW}Rmf6eK5 z+=u~zDWogV{^4Us83}rN2+RYjl?;(FC+0LzI-|p}FmKakA_(m}s+<*q01-_W25kT& z3!(X0NRMai5w2=&YWs%NQQd`Ls_ver0EiBUEQ1${2&a@ zvnUrXrk1B1U>@u>h=014z8>ZJdbRF3+rg2E%y*oeM@!Q5DBDkWeD*H4vbIs0KoM7ck9k1KE!okq%77lByYt3>pQK85-pah!I5ONb(=+GMChA^Ga~K{Zx&Itfn84u@36ZEhwo&8D|Ac+P>&EL z;BiBH%$S>IztA$jgiR`YLURn3a(<0EKjl^S5VQirDG2bfKer9nWPSkiI2?ac3(5>n zH)j#cJQ>Mqn;2)C_1uVF-hjaoCyXFGe9N``A$Y^D`?792=0&>xMcw%lSmBrrxyhnK zD*OWWfuFNnmd(bb0uxyFNxlOCea&#}OMnc+d}0QwE-|&x9sENx9r=i+|4fU#08xsS zkMbQHR?2#L%8Pi*9gq?0kI^~zYWhz#2WOgteC`RQVb%K}x;;Ywei-nbHRwa&lkb^~ z4MvKXj%4|y)LG7A*^22#mLI9lgT(IG+Lt<{BtKkc*d6s!t zs1$4~I_;7l4pyv;x&B1lpp};vEnj%Zq{OskhfT=mbBE`H(V>GT&&TM0(Eju1EGQj3 z6QgePLOf)C^;OzfGM&nF9+fQ5#VD6uhW9=ez0N#1oHiK1yD}?)xelJstz5VTzEMu} zY97zU%CLiTQoY%SSY}ww`z*^im%0LlQd zk|`p(8-g|p%dHmHABJX=BmP8K3g4y)(+r1{aWd*n1u%ix(-dQ>6*Y4fx~3Ft>j1@H z$i{eGQ9^eMzo(#dic#o^c`}uShyqoo9^6G!g4f}TWlN#9r5H}vr$XsW(rhD_w$Ulh zfAs7!Pt>NgSVJK#gY{Xub3-@k5AH9U!%Z2Qnkg=Wz60VDCtpjJR^UAluo-Hfh7eRh zIwIRfwPHP86-}D(s?zEqa%o7w(thX z)(je;{0T+rId}ZH;0RzNdGm>H9a#zd81%m&fBdLjTnVfMT?C@#?ps~`*ZOOpRNJ?C zeAVGcx$?#xNAI2S!<|pO52MI?JN9uJK0L*ndSx%Rt0$`5624fwHO#hz8`bX){njuI zBDb&$g}6v0bI-B-1~>f>&t1#&UuA)f23SEpUnYM?&>0C1JcQ@ia~v`oU~Bx9ai?V0 z@OF7WAQGP9*YcSh--XzmJ3|*j&IZP6SPP8g{LC1q$E46<%mgqnjog(#&(OjWJ z+2}T?PPWq0-9EpqEs668f#Mdjzp){nVcK&{Y@n@&xN$Al@rt8t8u5{&fvV*;^i%mD zK@CH11DkBAlc|O3lYDU}j+G5!jYvlB`6S{z(g$T>af4qNhtyyX+=mz}9hr=gy(_V4 zMZaa^Xg>&omsIsR{_{%edBhZwKdUbic~3ux>jCXuZ7)k+blc0FM`0eKYJMQ_^3j#R z8=%Aos_kV9()^f8pa`Pn!9!iW(cMS5>sAlXbnr%(58Jwz<{_hcqlFZm17gW>vqo4w zs*xIAM=Y49;~A$`vuao|b)=CRb8~X^{tZ*!+;0WRoqLmY2`3)u9iFoh#N({|?|Ckq zpPke5-GRG}e&9@(Ap*>6mKBW3ybfQt1PJ~$mX7VL$-XHbV&4)lp`Rf04k|2g{9_Q{ zVY1Z7j|8}-+P7KQTLh*UL16sX*^RKI+RV=y;luR^x~<7Pf}-OpTkBOXzN8jg{sidy7EIDtADqbQBP4Y=k>yw& zT$X`A$)YfE*f-`Kg}rYh33BTbrF195;70QQOE@?-_72Cp&(h8kzvmbQW<$T)?KjC< z+!E%&YLebyq=4j>jWDHwkkB^#6E=Y)hLB5nO;TwkXr>pBV-IArMbak2Mhopt6=wzc5N8$aT1UgB>7K0AIZhg9D^VZRx7l|M_-Qu?kyXcJpxy z^2hNqh`JhVT_5LBuKy@+{1>(gaN8O7iRhq*SG& zyOHFOx>FF1^XO24lTWG@+!NL(7*F=cfI$Iz6y(>(;Bx56Knp-)>*LN9 z9^Sz2^>MHFk5wJ@cz2N1JO9^p@=dCfmuSYN=&kn9OTyk1z2rICY3FLHmjpWA|LY}H z^>SYK_@AL_z5E%{e*pahN5+3-LghX(8h?S>YIu zM_}?34Urz03=;m%;OB{FjuFMV#$x0)r-nUDI7q*1!&C?X!7xMv$}kZUA*i}kutM-* z6a=^kQ^;n;k0rAZH02Tn*eO7tkO)qVk@S~F|foDK( zgZ%QmX$Ab^K3oY*1JRQGpgZrpVyCMIJ1OG!H;vzO%X9GDy*2JBsr>S)z0J6BVV+XQL698iJoYY7PY*p;JD<_!XVmW|2zs;M8|NN16v7F-IQA=a{BBBQ^-H zaIC4qL&bcR{v5knAD#w@{7jv*rx-i-(2wy{D9nu%hU4A9-cZ#c+S0xn9FX9ei@#}{1sg0i1y*wVeUir~rV1yo z*BK;k#6ARr-Q=V7AA z57p0S@;PRHhJ~JE!A($}hmm`u@+z`V&KlrniT_lFL+An!!P7G(3X{7~BWNIJ??SV_z9DlOcQH)bZH+paML#{#Xc)t0{Q%_#E zV)e;Gvxb+$etpf-mE(EyLsgmB|4XD?m16#X{}-`|S?{ zmOmo>xMGU2b%)n)Dcn8n)&j|u&Spwu{YDVZHRo!rG|0?4SNj>K#JqF0H`xxau@q1JBUv-*aMs$JMZ_*2%TYk{Hb8fn6M2V zXBV>##&c|=G2HlNrrpj?U^kf0u^Y{G3HCeaJbsU0?g)> z5?|P#Jw#8Ecb$MD8ru!UBeRS3qd?~Uh_BQe?9f@PTXd~z#K9ijT>Ks5a(<_=5#pkT zkADvL*<_rdr=AKnJ{{B_4Q6%ym%&-a6|7CP+sQCss6ST2&NDW!^Nn>;eJd+HL&74G zOZS6qT?>oHq$g}baX?!HlN$j35AKG41I{OKPD(#x}~wK4DQEO$4~ zZ)npSJ87GUbp4e{-BagJY1F$0XAbOdcEh1LIlG<=jSuXeH-By$YhSSM!QBhzAF?c! zJL$mP>;)P|0t zDzMS#f0}h)#O7bf+QQ}jL;7Y+RSbxF|F-_n3H?Ln33BK<*4LZaXI}861HQ>R<~4qJ z-xb{_&;Ll<41Eh~L>8_rfdIS@H1-Ctv;k+&_$>Wr7{&R#;G4{v9p1zu&oO(eaGqn) zQ{&h2*d-ix0Yos|{-cI9w{ZV4C>0Agm;u znsyGET~^dJI8Ywc)xel34|9jcxQu6FgUKA4FpQmhBe1NPmYWgFi1aOJN@HY%F}!IV;kZDaSO9mG zXWhQckgg%F&3ohef3iQrjgT-?D1e~o_^0Qj;29)=z>l`+vSgv?L@0E8{UMJ1Gm~nP zXU36(apWXnsaD?~7622?KC@fvlHGAUKRyt`eV~Djg?K{&reig`@sjU(CfGpB4DZTI z5^`hpJ^lBE&J*wJ?Do!ky1u|m6YU6s+3ydXLN~(1>P>YF8dlddIfT16@+cs$2vJr! z$>WP)mx4EsR?LA2-rm3KSi1zoE1QO+2#PxD)`BbiGe;Fa$g9qHPd*2$(CD-b%2VPR z{~Mqu{tw=NVqE5nJ&6T!F1;7!er{TajY&hw$=evK><%hH|4rx|8*kDTk55BAU1USA z9ZsdwG6qku0XU<^a!y0Vo{xaSF-G5j=7yPpo*naE{`>vwJRX}H6Y!2^n`sUa0~DQq6x9!s(1dUwcd#(_Hhj&Nj{Hvpn8{a%tQyeA*w;UmeihV zH$^KLwI&G!wiGT`@`mjntV&g7c1>aN^We(6^H(0wf5YMsHj_jXV|-H&=WkuiGKMtiLGO4zYp1 zhos^bz}aCX;$+Xu9hZNE<<{oc1a1uXzzgmxum*m^kbg6dWa$w5Hi8MmR``C* z@TQ@6XWx*=-6WT3c|@nrrV5+o+7WpYiNAWl8te~axdyNTO)xg=(bMc8E5*B^cA6#1 zv3wR1fm~MhBqt?0(z8;^)e;yklC9JbFc`LZ$C;0?(AwY{-_epZlo*ioh?arpM2o0^ zhsweb5LFtqFQ(o=R)M>79wzVPA5nxHLb+QaUDj+e7lAM@iq6Q>XNo-FQ?fLT$5cB+ zY9|<|d)I(FgNr5wi)K-TpYg9L(|{bq|0h)jAvJLN@OjRk0myMSfk*W^s?-OX~e|v1cd#}CR*d@ zl41Q$@>z1iD7l=WLXK}MPa(L8$0gsu8D40V_aVDH*D;fHkxEYq44*PC2S1{hB#D>+ z2ppaQAbR-wqC$~JMLY+e5hb=ouWZBsG9+~kmVpHbiPO{%a7p=Pj60WDPi& zMPY-a#z!0HHXAmayp+K=te((E;~scmopRPfbvO0;JnFhBa~9r=o+EXPyWYB_?&o;- zRN7PZ{8XdaFopxbHD#ebeM_@jkC&WT?T>$o^fu6wAg>;4&mm3Ai{AR5#pfOWcpJO= zYazM_f<~-cu?oJtZpdVk_eW5xB7w_bLBa?&EJ#0S;dtMz-uKP}%_GVZ`RHI$;<> z3ksD%<{jJESJ|VCZDWha{BGcCW3KuwsNWv-`%(3KnEIWees6WJUZOT;tKX~LUG7;M z#@^lC^$~TJ`#g8gIb*NbJa%L31J|nSUUd(9t6i@A!q_XX6OW=-{k*l4KO^U1K90u4 zjP3F{?HL(|bE*tKBkQ-zBcG9-+vR%pjO^PkUrz_-l;shPgALiE1{Y^5g9G9u^Yt=& z$FOk=Mb*C|n0LpJkJ#NdN)?ig$@PUuB&r3fZ=p{SNLw82a$53|BH zt=Ztc!NFpvHw2W}GW$-P-5RxCDQg?*jEi~rF1!A__K{bYJFhD1b}u|sqQ%L-F9TXD zr?9lbe`?iFY)K9#k`o6f)SRFX^=gA6J2*Haxp43hf$he^U`=-R;C{)&2M?p|%GALr zNjYfJxr4_J9+O-$cpUBToilh~(i#lY{>E%?W&+ly_YU^Zv134US_fOyv4aNZCp!l_ zGT2vf2BXQ+U>)tJbC!YTgZ2Z-FR|LIX#6U}ill}&381m!*MLCTQmHyo2!%0U)A@cp zAI7mzh<-7w#u2_J6`D$0GNg{Bu%}6O!TP?{=!E-B9!MmuI-QlmSt%_HP@b&WqV7wQ z0eTMC=BSkaT<$%$bB}vx?{@7`qjz!NcIs}&E7(qnT0G@!=<~c=FFqI=eK(60j!sL=~-B} zdFlD^KQzF`=R(S2D~J&2n8P|EPr5=-6u_8>1qN3wQ*;1k%M9maR12Cw_Z@ww<}v9; zgfBMrNn`fx`o?tBf8%}sqqB}2bJlyGL{JulbMN2NeZIdnZ_JTBUrT59;jE~7?}L#7 z(wevB--X_@x|hC$@YyQ#Adi9-O3Csc=2J*+@3z5DH z^dN|qiSKyh?E@}8D`#5l^&f)igYy7-5?)+=UTj9H>pOQbSBY@PLipn$EnBtO;-t zLxcdBzBi&TYKCTWfKQJGQD=G#05b~{NFy2T0ED80UpUnsH+H~w63fx$V1X%iKpH)^ z4S*6tmPrE<3l$qDkS(5#Kzp!L2G2*_BcxH72H7}kDj*6`DJcYcuudW#BBAI~nnGWU zNrP(@u(DU#9B>BQa=hZxRUFngk?y<&P*bZ&9y?VUHc^Pa(P zyLJYfPI^)uUw_j$>+yE0zY16g@G@i^veo>aai7VyniJLUcP+L00aL3Rg<2h_e*Yxz zgYEU_t%cAQw?8FwPs_>A$YT_P0z^_UC_HfkLnPKza`+i}1ai&XF2S?F)8T0uc}BAB za{e z;2r+RvVUNy*V%kI+b9)HM5Zx;K)xL~g*PCiZuTE^ED;RCE2G2~1P9}G3PT_4Q3Vvu z@YFS^p&(vVXkiHRB@7E;R9TQ11fYT~5}3g2Z2#NB+9e^rF=XE!*6#|>{cbqL`tV+u zwLvH_N`ExiOS15?ocsnx`qH$Yl^kj|@03RQJN=E8h#5ZLWB8mmjo|+#LpLP!m&2te zH1i9-xqdD9fyvtBV8J3N)dslHlz6RO=QJZo&+#afC7p`SM(EJcD_Ih_*GD$y%f?f&6-nZoVlXuiLMCHov|3`C z0Ay5*G_r>I%@J(1xBWuzEO%VayKi7!+3r-=7e((4tS8%>>iM2h5X0`fR2Z>iB~FjAUsr+wi9o(Yp_n2t;+?Hlf_ zt7}X()B>)5k~TM;U{;DSi=|;9=$-mv1l526cEf-9y|57>Y*v$Xz|x0uQer9~8Q|i* zd@bUeNwiM+YsJ-*P?%9*-spAz<+G5t(Dbo#_1+MSh+;(Sn@we=;9G*40Sy(rPQne@ zQp$gWdaWH`AZ{tcX|yYhw+&|Pnl|l#&UBq#iu%-%;BZhjBP@#PoraiM)X|g*HcFl| zvo2@YwLowIjIm~zcFssq5FTKQm{Bc*v0sg9utPt{9WS?DTJ;C(_-rLm0nG&YeBR@i z!6*N7mB2e7S{5Gej+gT1F5mMt4{x?`kGnli{0`!aDMv$ZcpQeLb)4?p+P;GD$wzMt zkp>J5R-HJy<9&S639$26>IcnvU%zS9sVk2kTC+F4X)WOKhW5sTmJP35IlOAjlXzx? z{oLBj*a-WkxfwP43hSH6004n+WL92Z%9l!ZDRUG{nSz|3My3+l2td~%u5xq)y8-BL z6R-a=W9yu#4cD)fa?a198zgGx9jCA(5g9Y0+jN9(5W?UH%<#k5GzY*1x}g1&4*}RZ z;EVI|+eS6#^DeK>nXIcV^#avkUq&_`k_{_w3A@ zdFS?X&pkyqaXW4|iHBvR&$WID1F#xG50wB8=2P)xbtay!&b4Q8s1C$J$Y%3}&U~IF zJ6Dw_CVV?k0un$BkZaAviLWD0d^=DAVj&RzyE;+Im-9r8ZwE>>`MMEAjBl>3CPI8Q zVYaKWoUd+6wibpbhZRPmIMGpP|5;4r?pNCS28B)VH<0$7Aq(m|5~clnDt?(w2yHtd zk>INL7OXG1jT9Isiw|R1~qd`yi+Oik#mVyk*>K{3tcyb}^{0&_AvS z1X$iV_beoHxMssTUnleVs(7(lfRj%-4~XYr4k&9CWsMnV$kykZ+*;Xl1@{y2=Da*# zpaxQ`^bxd~rhu!A;Qwy#;gPC2KtZ+`<^pNkzI5bgI40$&AO z1xWhv3uc{KJ;j`Ny&9g^cAOmU+c$OGje)C8IDyHAkI<>Bor`SMW8a{HEPfFup68{y z{@~X>;Xmip$7wmQq3sX8`-JS{iRjmQJ4gJokN?ZK8V1n=ggmfQ2mr--rmLDb*xbsl zu5Qdu(_3qGr5pdTn|;^eO!QBVryDM>a(`)J|Fx>^oet~-B>2G`za7Q3&*Su*Q%@W< zkA{71RO4gyURey=gsGN5#Lp2q09#|EiSagmitFOk7Ix8Tu>*H}OsB3+c}`5?1lD@u zb4wU130rA)_-S_f4F~{Jx&{556jKLAwQjZJ=Nx31ZaN+t&y%gZTw)EyylUJc$#E#W z6D(8CP7*DvZ@=IDdDH$Yzh9A4y$b#p;5{JXU+nWtyJy0DC^?nCspGMKW#00|2W`9I znl*SFo%4vJb2+QZrw5^@|E>?qeKh5X#A1a>C>Gy47`P|^; zu86Dlp@Z*Zt=6rqI2}F#>G!edwPFw*NQ4L^9Hg!TO#3eSK}DYP2>5HjUg!6f(@kG6 z!`c_P4v^IFQ!~DEE6n&l_E>X1w)gx{o-?sG_}(VtCI>HX|53iizTf$!_=^6M3bLQ! zGCD~uEPB$npYqGWU{5^hcd-{kM?iT``Axx{V@j8*>N3IA#y#n`J>~E4q@R1rzg9iz z`%n3e!6#2~$$rw01)p5^f-7$Dd?J`PMp}0w?rYNZueaN;wG*HEL!4yD4DySys7S19 ziRU<)itGAFpz^PH`Y&<++VN2+nJN}6UwxRiKfv-eU46iN>QeQ-D!-@7Z>n)mr`rCQ z8XI>}y-z>Y;&;dV*V^4wLp<%2^meh}aw5I9#ecY^vA5lSwjIIW^XBOF}U}#~A zgrX+RGL}M0QBHkDjd2^R8xT6C^+MI=_@z3|9a@~W>IM-EEP_2DG8rz6#5E;R`fzej zbxT;6coPv?jwxI!vVn4bTvc0f2SgG+OcJx3Y}XSG&M%cMD-?fua^BC|63kU2MM|3D zh`ox=YddA+qgA;)GLalkHt}8~hw_L4vKS1P8eBrwu>g|?3vu|jcmyz}%5FolHO<~v z_UGl14pCVMe2A#Xsjq6t)MxSOR!!M*PCC}m(WaeI5=J?L3qo8DLT_6KG&dGnJgtZM z#g?hIaRx^@YR}2}S_S#zix%Nxkex7A`fRo=1K#{u?)WzPsn2f9x6x01c6+{!e(E#Z z^lkJ@gYNonNC&&V%j0I(_ffU=S9D#Q^B?kts18m{zlje=PaeJ zRJoX#0!e%^Q~Zy$X_z$ z#Oww3!th?gj^p@}y<+f9w4Ci=zZm?LvC}qtM&3RxwuSp;_KfoW@!|VVRrYBtFu^-z z-xuy9gTLji;a;-uz2CG~ny)K-xTWo2dl}qhy0qD1@-q#wM)&{NV#?3Vs=7tt)-Tu= zGWqZWzfkt|D&=^MF?>%3#rT=Be~v;Bm4K61Hk%hK`x5hnaxPMKPxSN!%Dyl-(dM~e zLrP>N?6n-TA(dY{1B)|i7NB%oFgw%6Mb2S`a8H#;AbO{T`nI4=9^0y5>si%r>**)U z!S-`xI*)=>ne`-}NdbKrn=9nmijK_ZP&F+Vs=<9A1{8rNHe&T` zM@JTOqGVfD4eo~^c$RHyo-OIfQVt@@)of48jciMsYpMzO*?&t~2)3l9Vd;^D5tk$4 zwea|_pO)?Dj}-gStLe!8_gOU(R|WggCibF@KuxeGZGzcu90UrSL=a2YN%rHz9? zfpZEDD7?xZwSe$5JLq1unL5s?LtyRq3b(9ICf4LS);8g9;Fj;>cOum*Rg>VcX@0hfrecF4QrjPJg<+ke9Top=|xU=iqfChJi zI&b3~TPNG|$d~hNF@U8qBe>*6-r(kti0b5+PkT0cCMnOd>^t)82EPjBPCOg@Dm{a{ z3RlGO)Ua?fOX=Cnrf_LE$Y&wAUO@Pfb_%v>VauBPRkJ?te_4g!y&e29;8h^n&yM)< z3~LTB7m##bjoG(0yl>80}Zv1lxI>q}LT z#m}Vwo|l^c2fz9W{|;TBY-kTRv*&a8T&L?VLDVkH=#yg#PAz8iK^f<;M-{ey{$$Kb8`vTElXG+%bL$K zIr|RgJQPLRd96Gex)dr1FULqo`snPib9Hb$n&u=hV92t&utWsAP)^9j3|^F1@RA-J zv%p8nNt#J>4>j%PUtVdqdAV{ISy!&?3PEUt?)v>pl zzc*2P!B++9wEe`Uo9N9Qqc?o;_Wxu8^DA!``zW zw-j+$yN6Qth^IQtUefPd5r<`XszCN0Ff_vbR5&c*sVW?nus#uoH7}IMM;sLf@249U z$uK-8EBln_Z+Yjpm3@Nwn}c26+MmOc_x9tkgr|x)tm8uQ{j93nlznT&6A4FkgR*Zl zqI$zm1sqmTz$Dz%kClD7`L=Q{RrX~Dcby+9`$y4r!&$*LMVwW@IGv$*oQsBw>c>yH zE&OcAL6tZ)jyS0P!g~?m3v>b{pbBUOaG{*3f|Ke5gsT#Pbslc2Gba{cq&nfSO5_59AuQPQXOvH@ut6*}|p`%lG9`^N8$2&SWH~>0ozgoIYyg&6OsN&Tizp@;vX% zJMzrG^NYN>CI6o?QCZtGato1d=+pxAZZ{UHFp3X zWo>G?;lOEmLpJKdq1mXL`?FDRIRP8>5TO`_jXH630e_gd1nOg>##Gp-(+H%HI07!} z&Yb&LPFNuXufj#mhl}d`G%o7qPvxR&`nV``ltrxd?{HCTk1_4F({&X&{&nED0(Sxt z|8zgNq{qYje=Ely7#_aA*69SaPVqPno4c=drNog!E|;okouXzFX`Kq%`E^s?X{#&p z`-{LY0WJrk@~#G#^oub6-^%X?mbW6lKag@BX#L!4b+Sf$f1nZHH_+fHbVlNPt2-=b z$ImL`up9h#ApP^ca=K4~Z}W>8*7<;>?mrv;*E+=LnRHAvdYPw(@!M8zYX7By{C;40 zHyDiebbC2H&+F|VdqM@-={m?x;V;?fOncJ*BF!I)@jp+HuMxm^k=d7@@>5Ux ziKqOroakMzjcC7A9S@OQn^zy9?Oyeh{=}#JthL6QpyN+91S0ytdSq~w$#WeWvxY`Y z)r$|h$%ou{g2?T^b(8mlB~nS$KE?ZQ22Tg-TEBdapSsphT;q>DjB~-`2`OIo8*0+} zt1xhZfnjo&DmRYPTKv*^m#P!I^0&Rx-#Lm?@3~0+-ST^GX?)wO=uY59ILYNVxcsJD ze#0#_wPoD<&`5O4@rN4vloFG#3=5A715GnE1xv~AEB%}zLdjQ%k(@{t6BG1!eDe26 z^^pdoh;CcTHKoF9t?B4mVv5&P6Pr=}m{KWTzEste%cXc*y1wpG!a>xP(wuUpF+~q;C$chK1_jXD z;e$yc!vz+0nlpN_v?EV)?mwA{S1jXdp}|WzNDh7R(X5Nb1QYEPpOsm@3n1B%f5TAs z!+bCiCvu~Z_umje?W?9OkQc`bKCWgcG+{te)GAez^{3ohvgVg5gx z#|P}>hCYhD6Kj-Dp2LOy?y$W6jg@))5b)!HlYxlOxC&g-BVm5*93!t;bg(%;32yQ+ z>kH=k%1OP!rA@X=->BS`xx9Ie{YN`ElDw89Ne(EtlUTOrrQY|fdt(#y45pN#bArOL z1!rLms9(EwIrpa0<@|Q${QpoC2++%1yf*T&K(ZD@< zK831~n~U*n5$A}441%}txgB{Q4#D#H+oncyCz}3w^G%iY==PguSPueIZmG0a;#T6( z0bAc@+O6{>vktW!X8aCb_MSOUwr();h1%Jd9WS^HTRY^{IwuRDGf0*wRl_^=xL_k?u}jLDst2CE}sD zB~QX)-YZ`@QJL@5^PQce?=%v)vZ?Z&y7?Y?;hopTGB1) zrlYjFN2l)7<;HtZhy4d`>)pR<&pAS?v;3c^RsQU={POw!$nW8gynPknZPW$+rRqX| z_62^;`F`wsUg>O4f6sGYbmj3U-|Kzvx#0f(%&go zNL;GovpK$q`K1`XO=I^e#0e*=%uiH$cBVc(GPiTKAgA-Q3yoN=$Nf?k_5SR=s;W>t zPS)?))%B&h<)5gU+2yhv^-l@~yfS|T+VF$qd6wvEl$AI$#|B@*x65LTOK;*3H^RR4 zIq9jY%cqH{DrWE%2vm|N%*gN!HnI+9&^I)qWPs;~DrjNJmw)kAaRpR`&(vt)?N6ti zHi)ZnsPU4?bVs>8H8Ry2(bH<<(5B7h5K`Whn&?d`)yMO-{oWO-2r`cvtG@p4Dh+s7 z$%~C`8kZ53Ep+Q`O3wsazi};8%796zDZ`dEpYvxDer5172y?=HqENRbM{QgNg1@%K z>w@~2oFZ^njsAo(40zYTGSqvq%!urNRt8usVmZXO6gLV4S??>u26gwTzbkEOH$?Ah z?bikyv}gF9A=^_1Mv#_$&#X^fcUJhPUx42U+yzAZ(?j5ro(%J$_@_;7cR4^yenb8# zvb;PG%gf8+|BmJ5+OWJk{j$P8{S^Ez;5R_TKlOr3imfsE+Hae4t`#f8ePVEz_@l>} z>vK1?|AURnUE!bVR_dqp$4af#KQP&LAH!>$m->@yT^%2;XLv`U)poe9jg?b>R=Si9 z*deYXPp=1d!a{C(Qf$vr7YeSxHR-8_YeM~i5h-eqA;-gCk>O;0pW&oz3Mw4WmdF>e z0D^zQLMXZ6b1C_zhYAzioJ4TvZGD{5cKju-xP(($eXi+;Pf*`2VcmZ3SH$B5J_e$G zc;a37kNGur!GNS=w>JE2)t3!l)EoL~o^r3@pEeQi(lL6Y_Soe7QRFFeufQ%u^mNzj zi`Cm&t=FgOAiL3IzcAV5Ci|<&CcGUSd3J|e{BrgDa9>|RrXv#wI3Se!a*ZBrPpIhE zYTXrQmx-h;ktnCq@-NX4+fA!;;+Lv(>IFTKL`SN-xUe)(0u zV268kLhrJ}oWUtigW938H!r18fKS0Hl>P0nj7T_rOhR*Xr{sU3vO{mLT;0uUY6y9e z3DMQEzrEhaX&fG2-@Na-S0m@Q-I{}BHV0)yl$>akosvBtnS@(L$T{6l8s4FtDC1A* zM3uT!q03QDw#rVOpzknASlXo$j47sjOjd>eAZVRV6th?c#IY2JSG%P^8IN4HAA!`8 z;X!;5*;hA|>H}pwcIC40p@yIntyR@EakTP2;ps$mB9m;7o-WCr9#z2L`S}0C^OJJT zafz9X6?HQHNxwUQ>M8LFTL>q5Y5|(duLdm0~Q04<{xkNw}*b$Bqj&EK>3+oXPLj3=qUgiHo- zum0G5Rul>9`+d%MmXW$DHSMubX2;RcI$u5J`|JE0$R@1w@3J5BC$2*fcRs53@s({u z3F0C*F5gk=`YaAvIQbyjTP<2pHtcSP-h5?d!bj;$VmnTlz7Q98)S}~1g{!DSqTue6 zXsBuHZmS5)&KT8SV1^2;i}C#lN{_e8$&rLcoFc)no$WbU5r3pLx+|ZI)%s--!)z$~ z5|<#zqIE2NgF=((E`D`man@d3MA4ow-9?3Yy=vx+7q6DtTCQOf4Vi@g!c1f&x;+v^ zyVfT}6H$u&l%ra(TTR4<;h{E9p(G0Mo*RpXg7%+#vFSIRzad^@a0Tz7;H!Y|1JSzj zV{l2=hxwYn8U6INmzz9%)T&yyN%hv*6VF+&$fy z%sF>vtFV((Egs}riH0x-t>0SR5&Y?JoJs|>B9dt11Us;RpfWlF(L+FT*Ck>3@9S57 z@KwO~fxhyCOS(SH|5xRocl0Ng|Iz=p{If1K<)8Lj{D=f4w5(IWF9NOxqIu&t;O_z- z0+PDs7``HPq~Z5ELq8i`R~deC;S~|nRkI*~Z z^LXb?+qw|N`f)n$sS{kn5IpOm5NR)UAII6KEJ0u9UIY4%b;z}A+_GvQ3LHC0SUr5e zF`(oR!4r}hO%-@IqZie+;;Bp{phd02>56rMe0g_gZ zF!S`)dzpM%ugSZHg?#tEn{@u(HFUYY`@;WLOts+f!#*%Auv7)V6twr+D@{Ln zmG++&Tp|A2gEOoz0Ly`>pWF)m8t_j*(%GXo>?d;u^plmJRX>@%WQEM#>zTWQ_A3RS z&zr_P#5CrcYU9StTQ}2~c`p;k9|IiT5~n&@by;6y9nsQ)ZcTC zW6`ST;|Hyp*%{tN8Z1`uhCAczk@z~QL7o~X3TwO;AK-Yr416XWZ}TIJzIxRdG!!$t zNC9#E9xVKF`Y=&O9XhDdh?HrY5r|J(*DVJ3BoHAZk)62Mo;Lsl(vC~N^LR?0MFm?s z`83ARG8$!{k1MyJ{=2RY@+(T}noqzb|eHP0&-?Z-xr;Z+Vq8(^K9vysMsDkVs zlXZz=HrWBy*z0slJxUv9WRScS5rcS>_*f3TsO$HJqm23F2wPEz;(h- z)8pm(FuUYT+TfdMyYE!J9iF1%Y!JIS_gaa?tBj*xt(#%J1pEt##?h+BXIM`IEx#Xp z9KAST9L?IqUR#FRS>v zrph>aa>OT(qZSVaZ4-{6d7F9&P2FU}##(!W88`1U9%cnAi)CH?hZ)xWzzaY$ZgzQM zhV^aWdO*^$oy@w^6|O(~XU+PPbItXhO+0S;_6?uK(CK@*89m~F=C?ZN*THXsQBH=`!(!*@@`f5mFl`nmHcsf|NL0}1t)%9 zzfSwZ5$;VYcB9!L^eq7UFcB8;9A0I&Gcrm}E7&Mqh?Sfcu(4plMDN8!(zo$ce}TeC z&P(Nzg;ZDaD*Wt)Q@YFSAFxw{PwTtlIS}8Q;e?%)BM3Gr#@1h^^ISN^kLowYXTxug zPuz+WO#mif;FXgnZOT`&Hf&lNdEus|P{#D8B~jkEiD)!Uy$MM) zFAQ5nx2<>XjlJ!t_0H;4ko{S`jsDK6)RvKO9KRIn{4>;Z_L%4Gqn@)zKX2crukd&M zzMilq(f-RsYE9y475u&Jn#2=)E%ChF7<_i~N6Yhe?m2tH^Y$?jzWMX^0m1E3@Ohhg zw(nh?&)E&n+nWWSnUKf6-kqf5FE>_rgTa+yPqX0-G8sGLXY|Am^qAFlB0dR)_zta} zg}aEqg_dLru0OFSoaD8i=%rSAPpik}?`===ymUN^t%6sm#{UlU7uuXQ0y;ew zzfCE&d0I{Wqm%fnlfyBgTfv%{L-7LUWO5!MPFq$wi6TyKzvYb9?zK*QB5shde-KBE zBAyw|fttF>Zn+s(Nq9lL#~!WIcXRT_(JkgSTfJc?E^%_3xh9_=flB>4cf?uhjDY5w z-S(T@)YWe1rMjVqfFhj_>xTPyH8e}}vd+z#C$|mXHb1g`1czzP7M$X3QQ1`x8E=5D?ingI zCV5n5bow@(+f`4r~*kE z)gR`fbX%=EaP}&Tms!9hjF#x~h~RZ3i4nUu|!ZFGzf=~mug-bApa@C`#f zJ)%09#g$h{OE4##dU<&V|5qB(UYjphb9ui|jXNgs$6T*>^V-}7*UL1q{X)3M-YKU> z;9fSVP&RX_)1H^`Thbm5MAN~&7G0!E$NXx9#`1=Cy#uPo{V64E6BG_b9cs)(#Ff&C zuW?_sAxkm2xT_77gELMt5Of9WY0KSaz3zN&hUJIr^$)nJDDPNPE^JrI8gWxClD!pdP*>}KF(XWF ziP0i%?~``UsiQj<#Wp>K0Y&(C8(Ja#?}}PcmV2mciN1MSf@+g;_nLa`ejYvu(=tg1 zy)eT%3^)pi`0~@he*xSMNV@&e$Af(CH;i0wT^R4@^u>k`S~QyS&yQc-b6pSeCc5e0wb#hgwSg_rdPyJT?5@iq&lL~m$lE#O!y#G#qcND;LXX$ma2i%Z zxDnS|H1ov;Jg0aG=QlVMRv8Q^nHRMe&tMebA`dC{h!#|YnxXS8Hilx|oP8dBoW zHJ(hQvY4a0fj6{?Tn}*mo?_Zs8l>w!)7~pzti;866?{GLHy~tCjVTYW23|P%H>e-|Dn+km~EH zvK3*$rsi?@fnbymrdM$lT*cDb6xPXaO?{jamQ(8J8SvMEzW~v^V!v$aqa5bZd=lmI zoTL+eW9nlQbwUIqE5rWLxVmVuf3! znxxSC5p82)06FsDR7N~QiuZh3YBG3rt_oajY>emnU9TMHSZnS#^|U%Hzm)YO@c1j( zV*yf6RhH%C!6h|@c~n199^B+3`g;@BlT=Tx9&5T)Dx0)2Yn9~yRx^=HlH$6D?$94M zlyv_tY=7u2hs3=I{s!^Il^*|pr(<K&x499HZjC8X#yc$_6vA{1s|^BpkH zc5sE@Xb&5IwnN2IwNt`>xsS4HjpUg31bITFN8$ zF3kV;{bGX!FPQ4T32&IWm`(vuL)+*nQKyjFkxoI--f$V4`>-iz*PE4cUI%_Fa3>Iz z^Db~nkB9lyj}G1+=GPiNZd3P%jZ1k5onflo3q!;ysGGo1H|6SFYwBVDKUeDE7vQ%7cK}g6tO1ww+b|!hy+6D8 zoVb!*hc8_w)A_7DwqiOz)N&4$>AbNro#U|9Oy^clSgy{uD&;yA{A}PnAS%~|;F5kC z=0lD5WwSq<_N|nvhWO*EYa40V>u6bkmaPj%IU0`q8IJL|W?Zu^VO-`@3>%n z-AmTjC6=>98e~h{n92GIH_xPGcgp&@CZuZ(zZdZhPl3M-ybeTky#+4my)Yje#hZH%9|tk04`#!&wM>UMvS0udyjKmiNXp#U z5X_L~(=471!B~f? z*3c8QjIO`fmIF{FtCZe5m^icQ#(>{7Bg|zJnxQ{r@RRE&GA=H82^+-UGVV|^HtOXb zo(1VMHMPMfvnughF`Cs*eHlDa#l2>^ny+>wXzPHrcFp6aKG#xD(Ri5rml@WUz*az1 zpWA{<+BMAo_x)>tfo#yX-d57L&Z2JtROD^{LEkbgS?}+|@>8y;{1g9*4m+?75S4!i za7mvJ^P&1v*G->Ie;Tax4^;ZnyYwZ1DnJrz7_#E0_NAJLH$#DfIlM?eD%F(@CsrgV z0RI|;K2+_*+?t>dMf_UI@NX4TxCbDZuGKRFB=@lFkqF|9w9)k!&~g z{1J4f$AZrEH)d#nn!IR;&a~ka6>|2yPlo0Hd!_u}0RIkfCJ>eXd*G6O9Ogsyqq`S> zHvMSG(qAK;>GuJ1|6@86KouO@*OyKiFfTD9c^Sf51T&J%MP^o#d8fkV2fV)Yn<7ec z+^GqAQ`CnNPEqC~(}%kMXzFkO_bT;w8~Cq*-vCkl{SI8x<6-{)L;o2VHV6svr+1wV zJ596;sBDD0pAO6aex>}kfZq$;4@BjE2wYNcm=D!|uH1D1U$Tj$83WAlf`M~~be)@m zu5&J32cYX9+=@1aUyC+|!rJ6e1v8z-bRmz9lu#alNIg53anf~wbPFu2gM1teri*!Y z*iky4G4-_aAC-D~3H(jqZ6KyB#-R3u z<(vD@O8I^b{xI+u5S8x_;F5a7{6FDOKdaLHH;nGwXT$#gL8aVxfZq-L28haiKe(jF z!u&sJ*J)q+tV;gr?YcHB-?R@a<+}j<3gD+eRKDxLCEXn6|9-oEcBT7o+O@mav}@-_ zm2->T!1n<50i@g{XMb=>UkLM|+V$068@b29ODC+5lO0a*j7i7RC8Nd%S~rX5GthF@ z`Kg>WJ!d)mM>u8mgmkRo{nLV9vaF}T-vHJFAsuf1Uo))nz*Im|F0?Q2U2Wv34_Ibh z{^C=Hj#+2-2H)$WC!%J2pBZsYuR32pt5mOgNj=L{cz)_)$LeZDM5b!vbsoou*C>gd ziMoKV8&IXLhhXey` z&;>*;SuB9+#2tj1I^_MDP%A4qtPF}_t$p6KS1;wynM>B+!T$k#1VrtnJ~s8^gn4u> z5ar>cmGgqAy{Mml?UbQ5GS+I9v2^g?>J5K?F7J)_@uR@M4txWMe*buINhgQ-ir)<` z4;!Sv?6COI1*69AHt#So0xCm5*?LBmEho*%po8BIL;4G*9$w}BQ9XPNuC1At2Sjuv zz$K-_{6FZohK_CKEf+elHBDu$S5?+>_#fzS1nw z|Bva|i=(POI^Nxgj+T&)_j!LrN0pjs)dS5yM8`OANz=o8%^Rj&QlZ^JaFdTnKG!#H zI!2rNn6r4vf^C-`5m@yUXYGlA?fleXg!OLZJT}9>s#qY>Nd|wk1%F^Jfe1xpj`aIR zk@8?d9@2XybVT&t1^x)|dmy6sEpSOOZStY$?d%Tq4x)Y>(Yy8h`9d;PhgRr{Kq>T_ zq6T_?>Ku(Bdn;s*z)K&JaQBOWp?NtF`{2xF2Kw`5d$NvWpjC_|J#!;0Od5kACkE@I zis%P8v09xaoNzjU_YveoE@#H&z&LyLi>9A;L%)>sHQ;LS+ksyJQ8`}#m-N>#UlX1u zTo#U-;3gmI|FzNlYT9Mj1&1HJAS!9sv%>O?1GYtyaenGuZCyoCvtBK#L(RGE;qr30 z&vBI|f?q7#6gRRi#E7lx{|Fpb;~XHTLp*^_Lp+EhCTB#5y_{`yqnlDyoTW=-s2V`5 z^HWhSlb@u{mrc1(v1j(h!@3mw=fF)sRPKktCA}EtQ(iRXYk1w{!A(9QyO@poBQ8Is z)WIQc=k60!=YBwLf|UA6W%UxzDo(MgbT(1Yqv(`bJ68&dwmDH`9byd^;sxBz=fsvz zzB}H|Vsw}B?iEv>{hgUsOGwml;Aa4_i@m7|DmlD?BQNx%2p1B9^yq3x5D@*a`onR zF6G7&9%u6C{3Hqu7`0?{+RjPfrs4V_{KV;^F2xI}`eabJ;TXSWux6*Nm4oqNJ)wsa z31t7M;g{S(hWPMNEii6hHT5vpof*vk7gC^O!A}Ry0-}1j0$kGdVLnuUzU;Lj`m;3Z zUMuDuzCuQB*DC4HSzt!cpI2&YHOhI?pGWE{uPK&u`ugxN`f$WMs^;R6o$t;TRw6Si07?YccX6_7r_;o|)tNeavaKW-tv6)sQ&;~?wZV4{w zi($U{5Yz8+`wZxhtA^;0A)VVUJ@kmfmW0$|`uCBs`MaJ>hT3Dc^&tj+4a}xjplr!x z`hUT^Fy2h28JwqdGNI;@WAGo^nwYFpNdf^Slb-nk212qz_)gv)hOXsU2g@YFFppsb z7VXvq{nBQF^;5)rmFd-IdUfp4^6uU@Og*fpd=Wq5`7^CNPy(WQXa$!vI?RV!e-}M8 zM1O=Yl6LBx!1U5IAx4=OS!dHgIqVsm%rS;bkjG&069)~*nccX_6i}X1i%ftRgut? z;RGIbt+gSYv*Hyx4+sB0U?mXI`Cae}fJ*>L+lBfK>%x3&$cGO}r&+2tn$9EkTnf;u zj(8S!@BGyFlyxWc*PO0ezN0pi!O9;n-%ToTM>7Ql->u9wR|PiM*th)I)ORjX8ONi+ zCj--fupI6za7nv_dBk6|yu0E06P3d{A+)ED_>AQX<{f^}A}Ngwj$j$;R>z$g(0!4z z?nSqGg;3mz1#(%BG&={0)G2XKTKguR+*^j;n}t5;X+gyK2>7eOpMj{}+mnXgt;2k^ zXU6UN)Q01^<(47F^ASsy%{%B2s<)!cyt&>i zPLQ7QxlwKK4^?_9$3Izo6XS6wfgfM5VHg@;L z>ol2CH*PQ)7jzsZqCjBMF%BxS?qo*wBrwia>}n$Ub^60%d7=_EFl9$dWwh&hQ%}8= zf0i^H=>u>(HPiBesGh39B{hfn{2}J&^P>2oQF}&wc1579v7m^RJ5W9U4E-=7swVp*4i-w50WM0EZRT+&lve%}kG z-_0GMC-h145)KoVE`eV#jf&4}Y1Agun)fMdwL2X(k2-IflZZ71%Ocj*6Lo7m;hR5k zeNm^T*$F?Iv1DEi>EDm>E&Wl_PU)G}9>6|8ME{q-B`pf`)#3a()H`sO4hn> zTKD6Zd3%|78u8oGh;e?1x@uOm(#?I>)Z<#-AMF!f2mc%3W-4?vf{zBa03;2ZH)ndn$laP4c}t>jYa(ME?=@=gVmEgg-k;;T>QcAR zL-4MU=#gR#D}M|_lL|9lQMfi`^H6keq_5+cTJ8s_H!Rnc&@1aVUCX)${Au7hAgbSC zSyP_f!@RR>#`W5euMA&jz4*hm0Xkqp4a&t5E_(#&9zE(@V@v(4v51>twnFP%T*r@N zS1_8+9d{ZD$5z0%m8-snXCZiE4h_nv3&qvKbh&5~;=`^=i|%ZUm`*B3(C#Kt5@|)D z2EVZqjAUzu?pU3Q=M&|4(Vy(ZS?=+k7T?FqI&;iyAX^4erIw9F3$JE&V1rm=f^Yb7 zPAo*JGV7G$`Ba9J))E%@d17!DtJrVhT{ByV*QCp^1Mx(b*9Py}cq_8zZ>Im`a+Urw z4tyH08xYm=k>K9}egsIW3in;n{%h~B|MdK2Q2rpOXWUvHj?%i+bJtPus#^!V>a<%D z_N@so=tu_y9SLU$__nS2wr8IPgQHINa;G6df?=n;n=AbtuW%BNue5gnXjymJAm&F>R^V`w`#t zI=C*(w2DB~etUo)0h|a(>RxEZ$(pT9z9?+JmTd=J7lZa&7!Hz^>K^q?wNmXaAG73R z+&6{EZNDW^b!*}d9W-LSbqeHrS9n!ddt(xlbd6KU;oiUGdU3`O&Qo<&ZM-^_z>{5E z{Fh)JA9t_t3RilGR4gx}MfWJK7j;9tCKV?}M>bZ%93&HyjT|8%mH}%<4tkmap z@a=)wKvbXmfJ^#Hm=86t4NA{linE3@pVkHQ>F2FGV~x1B&DwQl-lYGsW>)@C zxTozuQFi?!Y=7vO6;Ol@jnGuZ{0~I*7QrR8h53sAY#j~gjd;(#rF3erk{)E3x!aZX z`xq-JJL5*ZW4MmG3H&rP5aT##&|wmN7%lLGy<^1K<^E~t?}n~u9laL(Cg3(8qW{<6 zk{$~4q3S#0LkFAZBl?+u`meHY#XfbFWxRxRPAgUBgI&S*1r7irIu8ezbWE5JTxWxu zd~C#589o`qMwtej+}D_}Wr01;`Y@KN&X(NjG((8K8e{773Q5+<6kN-}lDT>>RU5uI z_kpR;UVgtNy!KD%-8&mQo5AXHPa+@7WZt9R zBMd6GdZU8Rn5>x>rtWvG@uGOwffv3!9>>@RmRfSTbUag+c5pl{EJBAKjuwug z_!8gDcHESNgYq%k#)y%boPcAju{M$%SKLCwBG^9P^Y}YP*r=pk5Z^S-2x;O@0sm0g zj~Uc^?-iLo59?j+J;7hcGr5{#k}-pgw8)eTOXP@oB&ZcJCf z3VTldCCVctMzZA8+jz@S)znY#M`6FOskGBi!EXcB0AV}1?}JMkS2p?jr_K3I`OtMy z69su{Pjh|E!1cxO>%sWl@9@RJ>WkIv`^IXPPid;FeQV()uShd>>Q=(V#v8EmscF|W zi5>L3cpE#(l%9+8AJ3hi*jw$KiWA+o2IoH_D4e9lq2Phc>C>dt<)O2Os z)Hca0~wE z68=e?9g6r;;*-m=(Hu=fR!*NA)ML4}GVf0S{~WLz5RIF!f*%2_1SCb{IMS=^4cF1$ zMFZB+y@S)f%As11+9Mb(N6KjVQR=I2_ziFRyT0Ma-o$U`qqz1eGu~aC9H?{bhI8#* z&#_}?+XTjuMQ#eq-jPE3SD9OPrCeFLij|EhM7ixac*DLX#(pJM#90lY;)SCOlWodr z)m8YtdhljoI1rU{CvZt~!aO<`i}LVo8=sGva&{fQ;GhNb7c4nQxIMP{KT7d&8euTR zUp@aEIVnu#JsCx;aQrP-RVw(hJkS%;d1d(f@_V;{-vitaM07qC-hU;`Bl@B|qO;|g z0qqf3II*+9pzBn%R4vOam1ej_Syv;GKzI08R9~s*KR($p}IelN;{n|$ORAF$sUAn)q48+3A$ z!zFzyLP{WxOX(G}&<`-Y$| z*l+ZsO&sA1yFnnJ7zfiS&B%yo3s{R;Azjm&%bFh(uGQA1$*0MmmZ zOU`i=OD^_okw~qc|0(9GyMT~`moLkJLfs^M$;E` zQnqVhiW|B++bZ+XZ16pSeSnDW{lO)DDa?ne-$C|gbm0D~PwCt^W&pat9+tC*Wi>fW zlTA)ibp-F98`86e--+hOKY_mt{0)fcafZ#b;y@K3X&^nvhJ4x}^aLxbP*hn;(#%LI zS7&9$cBj&3rn22BeP*iKa>l;wq+fEfFFX1rr&`F|#s3QI5~-H$ryN1W`Vj(+4*=x#}b?LWLi_io_( z0SkeM?jyjz4x9)KM)zg^2HpKwh#?7o+DZS>$v*AqKYlXdD?_?pg`TLsy%FHR=0HUE zBJd@^slZ@#-~6d`Z@}uNbGy?~PE=NAN_VRM%v7d3l|3`%b*I|TOzG}aGWg^QcSToN3hnbwE@Pjo^|x!h9%wv_a>=xI~Gv^MGSqXcHsut{Ir(Ps_s;RpP`RPr!rnDl)JQuZ2j4QmvXyb10U=B&^YzYcdCrixT zxcO1jrKppcG!qB|2s%QLF%Eyp>tu)9nK9*B4ZX7hiY@Cw@MnM*fUsQ7dT>ekQ6}%+ z&8&}Ip*%Z$)SC6@zI|X+o{rH$iRLU`&KVbHK^qk6TFRE7R3B(-&sKe&Vw-oZF(pAL z;j-6G#cC6^sB1JOIK@F{!&B+x9HT5HVkEZXfwyvE+0txIx+xVyaf8zt&VEvbKo`#T z8t(mgmR$rr4uEsub|AD zls`;b8`5zz?>C$PIw0WB051R$9j|~(`fHdEMaSw18})+<9eW)$ZyAIXgUP%$EA4-h zvgQNqL9)8p9ZN(iI;Z@BH~`s~H0@aAhJAd~+?;90MPn-ZN8bkT0e%cb^xh9H>7_95 zTwv&$8=lVuH~Dz~z&<(bVD+{Hf`b_2?-98o@nDX zw_xaO8CMy9v%xwr%}LwQ~Mn?M&dafi`prN{hy#;y49w>%NQgQ9F?;$VnFA66l2T z_0f7k5IP~pY4z63uA@!J7b692LD*Xtv||eI@w8W7qAcVRIf4n`^MX*$^bBeYosFPV zuP>T%~0{T+*dszUHf8fBu$PSHfzsmigv-&k*a2%*K6dO!HcO zt9n?gwfZL}8~t!FOWa~xx2p+Go;_l>a;{Rb;GAg!G3k;x4Qy~)+&n?Vw?=_x7mfXE?c+(uAt(T+EL-ZdQ^F6WQ>zQZd`HpIJU6D*SdL`~{7%@m z_A2yqYhAR)g+X+OV~L3;G4q!m5%%jnh*+L*zJx*qYP(7tA&!N$90l)N5<_#kKCzj{ zskpLH(k;3(eDrf!hhwV2V0aB|Adm&uz>2!;*&O^=agKljii-wHcosaX9Jc$!%DLnm z@Gk*h1)~0bG5Gz!?*U0iTc)4)ykq+J(Jz?s-}_`ZFKpc3`_<=cBLu5itNx_|dC18c zfe2OF9&`Lr_%8gNZT%f*OCEpby&A2C`NJm>uZJ*cDBI)Ek~-%|8%4TgZJzTLEfQ>d zjWWlt9E`a+Z?u~ygl(&jo>n};ImnEZEMnCtv~|Sykzvw~FSt>hwDDWaBZ_Gv7Q;Iz zyAjcmNciz|o^bT7x$&H#WN3?|J%a(ru@=2F#Q>t|STn@2q)TuZ4s*~d7CWAl460>y zre0T0s_+v(1iuEj1Bm+P3*hep?qpN1);nfAb%gTPp0Hkf-ZR$+@1F~VRh16ftA3B| z5++Pd&j$6mS*+Tx0gj9{`3dWC*izWDHx=4;@2HwfY`lipt5x=5`yeVa@v3TiM`*{t znVzmtWY80(o;JgIWDPPj8-0W$(Y2Is;QVl+J%s|da?(VMKB_?aRG@bwUqH?umY;G( z`<+X{uLm9kqVgX&g}pTJ13=Q6Q2%(%Nv0p&7nc8ose`O9edAM>#%-4#c9_wUZ|>IL zbRkJpMC#ha%j%lMsB05ru1WaUCO%Ns^?0eT@)Kxku)Nh*^>DX27h^pakY~HPQ>J~fBLFqJacUY2v@sy-WEeS>4XHnFn5`+Y^~cVw_MGoEtVV z{!2`w?XWe+aps&u;fFpC=aMF7k(+NpY1&uCbW;@p0~4Ok)JSx?tZsL6g<`%9h||;( z7@~-#S}AD9WzD7?yEd!vcSnL>46FsB`QeDEGp(zDb%3Om;kn?IrkpWA zo%@ON!x78G>u01)OUG{RvHxISWUC(g78PWV>ma+%T+9Z4?0XUO;w7n@2|Dbz#OnR) z)USQTWTNl(ceuwNcdwuQoj>dWKk+-?eZYT0F(kIJ?zSheXHPqu6S^yfHdb75PM>M2 zb?YWFD`)g&O6LlqMRg%aqH&DVQ&Ew#iLVdz1@jw+(|5AiKq3jhjn7DcHg7DvoW_7HwL+MZWc#! z$rxrvbcqr=00SyXBh%veNKXi|vsCcq}_sg^Mp?#p5^%qRXK;ieMk z1T@*(GOUN;W7(DnXH1Gsgb?&qEi8twKBu;Ea$eHS+mq48$J+@8C`DW*;#@eHL;B&{ zA`X#*L)LaRsqfv7&GI56YW+n7-iX(K+z{ADzlfQuF=-5%x`0L+&`I$inV&7 zGyO&Sd}UT(R~;k=4Q>s^3#{j@wIdDvM?+VR^1KIJ0Dcp2I}p+TFK|g!TbO((`j`Fo zlji+}il{@L@=#bb305u^-zAPCrLMeuL0HpQ9Zo{{&zr4H}w?l ztE0Re$}J=PgnsS3c=?yWkb#c~cM0Ja|l4d>hhJ@G8xplQCaSE<3HY$f z+qQd-Lhw<1%hs>iwXYK*lrhw*PYa|VhoT#!nG`wt6YqgI{sm;m&@#%DV-fU4a_5uE5%g4wQ4ESP6%D#eQahaKyO(Nx8KEkCeWqXA?We74 z-9|m?0>ba;q<6ln&v9$dbv@yh8})vY;rKf!MOv;*qXgx?{a{a6j?OJB>-E0i^MS=c zRF31oC7mATL&;BD#+Z4&Uwic9|75+MjoQSD#S0gk23o0Z54QBJ0cZWOvTmeNGN?>2 zg?UG~bzZ0j`#C*NSK+5Fm=;@|Qqa@tIa_wnys={q%xWT6Gn+Z+>=|v^$DdJYpRK{? z0DAyYxsC!q9ykY(G-Zt$cTxM?7s?9Ho_)T|HTc+-Mr_%o zS+$I5mcDqlvYw&M5FykgaO%VS?08k#JS>Lq<*+q}SMXAC>4>x!O1yzL!byxI2en_q zH_@6oRg{BS!UyYN#4-!~T0;MXtZOnSzZFMp>OJzpbtvpjgjjliRJL=$JixLMDIJp{6 z&R&g^Z_2hL@+od(RpP{d05k15-g(IX3#nYH7>oOfm`;wqKm}EFwsOzH2RfD1O`zntzEZcCwE6(OeWm2SaG_$7VP*}5?^qSSF!Jz;r(@e6#Z!!;-8lk zPS<&tB0^DGbuc>iHNEU3n*i5er=pqU)P-8O-w}Kftu8uRfpbO&nG0Pnk&QP7YI9|- z=2cB%D&*vuBS(U>qN7xo!sT=71LMl%u#^do_t`!qFm{zrkM7*B&R0M3f38o#_ z(moL%{VsUjR_HPTVLQ5afIkVm0Z5AMEW5(?ygqElK7R;uXiEklICjX~$-;*74D)x7kYjBX$73@-?Dz0}& z|47H{{HCfs+zyngy$SME7WGIS9~oS&injzg{ixvDG$l=FB=i4NY?{Y7yV+Yh^I`qw z*axDl7_3QuR#1J5bOIOnJ{8;Q;7w_S-in4E=(!<*++LLW9M(0tALDx^nq9Wwt+F_9 z#UUuQsQiwPdwkls-1CUY>is4Y z3yJV~(przO#g3tV=c9OD>rQdUY1ba>j&hvnURG1ysGmOy{ygvs5Y9&MfCS1J<9ub36>-UNh|9 z1T$UTs;xVHVvfSD`v_=)8lfMG^T)D(OwBOuR>wvJ1wU9Xpxn$Ah8+|Y&lcg6RZ)!E z)D*`K%H2p$X_onhak*L8{?I>7E|9JUzZtj#h|2i~a7nL*`Tj%Ltqmd{mNUR*+wLiB zPuHKsUb=*01Z$19UiVRpaN1HH{n^E|XOF~a5r!MaZoJ-~p)^@`ex@|A2aL_FzcT|1QWbHwd?V*npIhsuHrkEvm){P8Z zrX0PCTSYe=>*d`zN~O|dv!olaEi~9}Zc( zY`;ZlIxfdJQ|8`c%g!(hPP1@)i>IZKxwa>Oz!1Q!!e>yO37#5aP^za)a}`zpxZiG56IFG+FEz=?32_~r%wUn>9HA%ArU)1pBS!nuX6sR@?P$7FY$YJnz284@uxihNw4q} zjG5Pvs`rMY`My$l-?Y~%?_p(6LQ!jf=`*=pQP%nZcCeE9)212$EiWe@oEG1}gyGxII&->JMW5Xrj8 za|_)IRkgXK)dzaO6I<(FD*I5qwL8i_6lDW>ptJr_Md)kyb>$utUnS4FZ>lY-<+V>M z?~lrULV1tF%4GhfxQ2Cx-r951a#f>gKj8iC`q!KcY^~!xJfYqj`19N2u+`?RY{=qT z{czyZ&DxpRK(L&9RQ>ZplmA7%g*(-~DxmXtEu?kSKNZ|LlGq?x{bt|~9HEO_X#W(I z;;Xy4*P90wm%bra+!3ef^cCl6SbnF@3bic>^GE$$WIVo&Z`ynzN%?iLt4E%^lD6(o7Z=Cxb#l^9N0b(D8 z7z6ulAcG9HfiHE1U)%=HFvD)Zg;gwv*En0jwO0+->!G;F^8Y!0f>TUhJ*5xJ!VH=p zo5%_y-_H`EOLFtgtlApJ3kD;|M{xQzj$MfB&yB^f&Ymap%`QC1P7!flfnyV=!~PnP zsm02pgj*u9kRO?7kAE$Zjvt9fmrHe~n9dWZ`g)ZsX7jmt_RkstZyv*-L#m3!d{w;I zSzROuR=o7FDi>?=<#^2lx^8l9u1?oZPc*qrehgV(P;+8Uf?*IlwwOB$e7YX4i13R_ zRxO*?80Es9JPhvy-HPZ?V%LkpR?(MJTEUZ^?^Meoz<2r`neYZ8TDcO(s+AM=DtA~S zp7p#OlIf(2{4@B~BJyaC{F0eOR^>Ti&m^dX80`?gy+%z>V9pxL@R`CYHp^$C?`~Eh zj8rKsZiwQoYxoxT`DJ0+BN zhFAK%XA5YJL6e~%_>1qAd9o0EpR?ycjwGih#2SZfoWNYu=ZS->a!1@NRnAqc9n3oO z#GHyeL+uK00;GUwoooP?G%U>j-`2@~^2I(S`eMtpW}hWsFKeBH+<_SZ*E%{OmU@i{ zrGuqW=LOO(|AAny5TmcBZ2-Tdc!uvObd7s>6fFJkhdOz991{(D{ibnl6 zE$5q&8vPDJh|#DQv^S)uyjz8T-3)viU=JXoXD;|5z>$EYfp(bl!~Jw`s0ZGUo(=RK zqNDEZ;ln$2PjsOwIAc{Repae#RjT={RGa0@cvQt7QB_Z<=0B)5CMu_yiKxTI8es;5 zy-GKmtJvS6rVuBTTZW_C$PCh2xufY1uR>?EZ;I`XJ}^)QqVhC=OKK1Eq4@DZ`Mf@j zp;3LR3dOnmBVvwyIX0IPor)?S0PT~YJyd@z(Q}#UjQXRM+sV+`&F@EY(rdtP1a1K$ zI&TM;^s6xckNRytI*p3e&^p%3LV8-dD(ADG1K$%k28ign3jBWHB|uW|nP$Je_D3c^ zI_w8WPkk)7KU6=Mv%sh>b+dgrQ~Yw=N0#WOb~4+oN-a1mm06WaoRxA{rKX&f(yLOr z;B%+oO5<6ncFWmrVO5~hG~sKRg)konyUXf08Mlwp$ELM?oIYOd#0LHFP`_zGyJd~1 zP1x1A7|bz)5y2x3xbdBsXPWI6T=nP$ELuFErv!3Dt#<-%RKcUeBkd4r8YlHwMYlu+YGF6YP9@SO&>Ly zQT5@FS{>3oZO_Vh+86vF;7}l0bTRAo7`h{WMg;tI5qppSmTR z5QBi}t5W*~O+J0@eqW|FI-IF!;$@`Grt8gEj%uZiI#5R7NS^iy)bjFU9Yp2UvRzEQ zzYkr}d{EkJrquv60}=gg;F89K`9S)En|wri&>PwdMIx1;AhPTG)CeoRAzj`4UPRYV z!EXd^1tPlc1ef$+m=9$aVm)i>wNKBu-@uEgs_9xxXV^o`LY`)Z0yw;>)5`+0kc8R7 ziGs0MXbye>jYvb>H%^XvoJMCSe`ylWmfv*D*-QNJ0bVis*c0wzMwiAjf zG3>{cxfT6|OH`o05JP>TTi05dH=!S}X5jsF7G^>%m=%k9iu}vi&5h-XQAaY)@A6^o`Pf84HatF zgmkRr{Sh7C2R|S95fIUF3Am&mhxva_hdKK!Ku5tkO%*JM|9-F~m-qIDbol#L=ok(@ z4wwi;bZi0sIbeH0(m*;se1C0lz2ADjL4E9a_|hYmMU~>@#xR;=khHmVp=uUSIbvow zMgrv7D!`@RiTF4g3oW~uc3aKwNA>jp_~XEnKt$(r;4cGz1_q<^)qjspQ)y0a^N`MM zQN3(0#tfaCi*8h`LT4JbBVss~g>>$}UuE4q1N>azd?2FpTJSr7`v6G;`KPfTnELE@ zZY%W}$S(H|59s?#!WiCifARAE7x5nl7i7i1GJLRfZL>Rse-Y9#tJu1s?GB>&~%*`d7vA%j&Z}kS1R~XfFwjFy- zc0A&vg1k!a$`QXe${l@7tLIds30BJ4^=^Y#uK~AIe?SZsYsAXUsIjC2m5E72W!=GT z_Q$9_{y+AS%5$w37a6BfPiQbqky7fO@tsQLJFv$ZH-nf zR;zJeYL!~G)T*Se6s@LKEp4r)N)>msYOO!3(YjEz`aSPi=1yiZ8u)$xecyp+&O0-i z`#$GA=bn4k_h3<8D=@}P`Th2Ms}Sdk>TD(^J1=ACgT>%53zG$UG8T##T7f`e)WTYW zX>g6P#3(aHQw(73`;0jsdwDx#x*F^^JI(p-@Y1&c9tQV|GXm4yX+Im71h zx~O-dxWBuO@$T>KkRJp72&nt!MaZuM{{$#x*F*DUxyon{iF$}1Unwh~bRpw&?5b80 zJ}ZYbIVeyaS}#^kV=dr0rg63zF^38V&GV@HHX0d?z0uh0i@{B}62X*csqD>RoOY2& z$KqqXbespd3%CMM>9`g09l$-nK+Dg}_j@lX-=d_9L=MWNV1)pd!KRbaEz^-&;-zDM$a8@fK&4|n;U!08ZsZN!tZsQDmpZUDkf0c61lc;z}>`wUAm{eNc06WDQsjZWhMWXWHQ zNK;WW*4c!_`PAk{D*7XkF);lj}-Z&9p|O51advl z45;+YfqW>i5Ev+ZtzVl@B7G`PD1C7bO5ZS~uT8s*mVW)68E+tcA-x7Ef&()uT+1jL zh7@6;L)K$w1%u=9#5%)K=Jro z>i<&4-^4>U@Se?9*edn49`EVf0QpSdEI{e|0b~m2%lMo0rEmG!t5&V-Sho^erZW@1 zE1O4$Y(EB&r{WQW?iG;t0l}`KNJ+eiltv_u6imuDNYqx|Ts+1FQp7 zy3T@3;d~iqr;C4ymjchvx3~|{pXeYLt61%e>Rs44(L9k?BlM(NuDt?pn=!r8Oo(UH zOfker^NFT4N-=F&EbhZT=vVglpMWt@APOj+1&}Ee$v7X+9Q)&_`u5eicj7x)1)){) z*g$%@Cd>&#{t0j+pm_WoGKJe@JZK&Z+E=wN#VJLZR1(c&`BQzq_O3mjGIxZqQPg{I zcS~N;r5>;0keh*VfZ{a~GKB+VJZN4AuU^)^VPI144Mgf_kzbpkN7?B&kb8hf0mWwr zWC~Boc+hcBz@$DL zfE4s>mb`XApR&_#$o~NT2T;7;hfLuU84sG*fo-c+4b14Hff)5kK8xEuJ{^$P0jC3s z&zX=Zd|$?c=0m>zGx>-ChEK9?Gi*c`bA8T zbBXN9A`+E6R^a-I$2pKM0DcT8dt3^c!Zk7;G>@4pvx#_j`)32?5LctMN?zKD9l%#JqVe?!!jN; zuNiCCwr$LOB8md^WmdlRNFJ#b9*;?orvfto#bY*P3Ug&VXdYOzbn4RexkNgB{hDsQ zlE)9x9#Hn!0$q0l4*-hCQ;?qpUIr*+^LSLY)75heZvThk87jI+L(zzxrk#U{PQPdf zV9L^uC7EaeRG0^fhJeAQ(Yr8j0La66plABA;y#44&KCS(fVm+_!^9Jr!wbuN+1vWav^9=maUWsgrGe+GOBC?5LB zf`=vJLGwuWJ4Ej;f~HtRyULe+?p3Gcu>#juJiZ6H6F3)8JT^h5aG{I`%|i}h2o_?L z_Zpu!%DY+We;e0T`n6S4wEz$Sl>Rcv6l!FgPk&DP)a!?+ZtniLuadmIb&_@+?x{H1 zriJ2Onj_j>G@)Qx{2cS>5^?{Wf^iVVZxc9N2wVavewRyLSIIaZKXw1;!W6e=n1ZLT zS?b$^>nMHor%crvfF?lc+aK~2;6Q*vw!ZGH`Xqh7ru!k>9O;i|u3EG7ifri#0dDO4=c+7x23z!Qi9`hhmI84Ta=8@5F$Ru%lCJ9`(OY-Q( z^_4xIfczBj44`BJ@O@Kl+kBdI*<)7!+qkq3aP!V}_r_W9L3j5^{oYe5EVBB8v zn!Cp1)dqPPumVuLRzaq)M#kB^qel1~@(DEr(7`Paa`fa3ET$P{{HJZL_d{e)~n4-PU+3|f z1^HXRVSwVb05XMRWISkI{rd^o%pS_etV8nZfj(ug=OOO~-T)M@w;@w_U&e#xmC;Yg zCel%#J_wn@?`52iXU_92s~@4rDiikRF=4OdRezet z>j21efI|SqYd&NOi)1`#Ug>^?Vx+3Arw1ryxF1_Zer|&vWv5=q&jBw2iqET%DZC}) zLG$tY7uke%4n(L!@|k$Lw~lKep$o3-vzTE=%_-+A*s!f6X%5<-*Wb z#7jwCyHsXm?3{#T&fzjfXrDm;%T!`1E=Gg&dWy zL*-_vZ&QZ8TOe-%Zr>Mu-uy(4zBiz+Tk6}Bp|4;g{9*!Sz+R^>-Tu!}_ZC^SN9tRF zYb(D@7eKxU=-L;3{oC<5O5YaQsP#&{yEF8D37MUNJvhK#r!%A7o}=^~sT3F8E%h#j z4wc@GkiQFb?u*|3?erYg?@HBuQg3gD-uEDX0DQbJdNbPLIZEI2(yO(J`f2W&UV4{9 zUJ0B6?6sXU+TA&N`#il-skbLX@82Q61-!E_db8WvIm$oe%2QJB#P53PT?BbCumsra z^m^^-9E~4AW3$w^B}3n1kaqx2?2A6H-JGNE6X=^R^%Z~5OW%Hw_Xnl|d!4?Fc5#lv zJzjpcNWEPddbdKp3%GAz^k%kya}f4>6PwzzC5BPz-PG?qoGDqq8BB|X{?_%gs>0A%_ zbl}W=(VK2B=4jkR8hfO^9U1!Gg#0$}?!M^r+JiX?e*}fSQs3OOz4eesLtX}~1XO!; zHDn5B%J|&hJ;~pz^Md#rykxc8=eM8E8)&qKytxG(i|Qs??|2E*u5<7LwRIMk-{txu3wX~l@w$H(OXF%~A19>tq2cVGMUM`mFQPp~P z*u#7jP2s8-;T3q~FbK4Z1*4mRAGIC&thSL20mlZ((b zx+I@n(4*}1KI9L9PXNW|GsqPFE8{`i3H=i>jGejM=ej_@NjqG3v*giwuE%2oh*yE)_C+uK7G)m?BYKU>tBEJ8bJStiQM2GYwlY1-wGuL7hHK>5`n`D}(BWv6YB9|nF8C_aCHOyNlx51P+{_SOB2K1V~Q&?@6W^Er6+QWWWdEp+QZjJO&t+Ahk|4(L;MdL8n=fDZu0>to0i zzL0S~UODS@G1k8F#MS+IO~r%A$CuC@uWbn&Pc`FYQ8UuEjkuMr9Wj3-`K{RG@%ujH zvw`yf#qR>h6fTl+K7Kj%<3VdOxrv+Zw(Oe@?L5h&57$?A@?U`aABX~qM*(CCMKT^V zk6G=@+xr!8LFM)=DqWJt2GYwlY1(CwuLQ0I6px=mrm$JYgXVEW`}$MY_RB9p~tBeQDhxQK+ls^yl=Mt4XdT@PZmlq(v47>&? z9&bXX@V1Nx%|nc{<>t>r{duG$kGU6nJdTHa0)p9HSk zEP3?e`pO>vg#0eh2PhsNL8kDjj0er*h_=-yw&yZ=B#X&($z$;)9*;GU*8-;jipLp{ zDSS`HgXWQLe~ak}vF_;cK=!($7Rh5buCMH|2l7{d(dF^*L8cIv@t}El?QbwPZ$QJ=!fU?UqkSY8`#)IaQ(f$^MQs^k9v?l^^P-O-+6WiPa*s|Fp zdF;XU6_3QF81Dfp0mY*RGKJwX9yE`B?QdloHK+A#V1TK3t|xk;s8_n6Px0CUc`I-? zpm^O6nZiRd9yBkn{jEr;{Mt28ezi(IsmnY*6Cob}90({r2SKJVU&e#x?is#=U_W_>*6ta2l%(w47vz;z^PH%)W@OnP-wO0EGJh6H7RnxZ{n@5N9bqx5R z2wow}i8E~>J%A6`@kN~}cuy(9;8>^R9XZA0-Fg+q#efq5#rtH)6jsYPn>YUwFRI@s z*L8NnnE^R6;A<4=Z#GMPy||9D(_4@~06qqkKI>}q`G5pKAxEDaSIJrDs@m@=FKLx) zDPQHWMmr}cR=Hv?xf>BHJ^1$8BVe0CvW-~qS_<0~%7Me^Ng`i6!9(%A4)QI)F9F5( zUdR+4lyMGU{_OzeFSDJmI8!~M%HPGD^EZ~iF3Ge08jt5p$g_ci0mbuh$P0mE0SehX zH|HC#%4~ZJo}x~bWdcYB~;*)M+GR4oaV0E%Zdh(HpH2Cm59$6xCYjrVZi8=R4jEjyOY$lHiN|L&y&yoW$67mF1x8^8) znk(&+`u1e#E4m5eAwVUt*Xhh`cjoBanNH|tskZ| z^nMEYGvLd8(VN-6%hCH%TJLVDx8-Ipy{jOv0oDO~ZRd15E=TDrq_j`!>&ejf3gp*- zH}^$fMmsG>Dh-aT{*XHo#o82>Mn$eNcdEP|rPodPmZQ~=GyY?H2 zRs0|+-TZO?OldcNT8HF$4fHFX-H`7F?gtdl-$8y9_%kpN&wKKymuxf8p_&33)bfFrfGx1^F1D4H$?|K|Vg2`71gEB7dJo z{vv08ZTs#bR>;{Bu{#te0>SgQSlxy8y5zS5dX>FigZvTjA3*VoZ9)GINC5-!dub5) zD*G$Vi!h8(0g#U|A7795XY5W0RqJs(WEVYS`*z|`&PuDv6-V`&oB3&gM}ht+Q z`=U4FzRXekMOrO3rV9IOw|VKUfSdyAfW1zyXYU-fUqWqE>g&X{ReoO$`8wbRK;`#M zkSW|E<3Z;)`nlBgRF$Tfs|FfMsWfDnnS9`({Rs;NBz!6q> z*mFMV32T=x@|+L8u%7mDw^w|156*)|y_n$)E0N(0t4s24x!vP`BIJ{R)qvu^7BYoX zWt`2Qe~Fiz`!}7R;`SAG+?`{`&63A1TwmGoeaK$|_8lINQpnXnJwPFw$1XXZl=GZR z=clSh=AsrPuYO`d6nXVqpuHZ3SHHVM#yuh3ZZ;Ao{C(0e@X<72PCoq>&^z+!7q`ZV z0pV1KtpC7A@!kUYZs2}E+3$~#dx7VGfp}k^k2kFk7x}Md-KgODEve!nmJ()pO9?_AQ?E%imWdg&VlxfvJ->~;D)`{yV;9}0U^{^Qyz z|8Iu;3*c9P%Kxp9DcmLF>~br4<=#JYR<25~_z^eH6OoKcs8^-8+tXhMxd|8tDE)IF z9||l4C}itjpSS#R{i^KIOoW&{>15iI5iu2J{nqh4C3LSWRTC%{4o9K3LMgoO z#p#Y|`Hr|>dcZ^3>p93T0IvXw@9U5$yeZ=c9~SHG)xJyqC0^9~bbFztZRyEvC#FqC zYua6{FXC!gSdag$QvdW{d-{)pd<^hyK-@4bFuGNJ#&wEhm2eq2|je<$QO z0smc|{(B)O@5b0QKw-*tf8}w<8Nx4X*Y$tn?{_W}?`8VwxB$^&A*Y`;yRA>mS1q>N zddqzkjy-P;zGDT-f=hwb0e_HW3#UcBZbCSR;pIuDrN-#>sc<+RDxkxJ!kxN4)((wt zXmm#5Y*y@ljz*o3Q%>jg#G*zhSzMzxUEwRc+&4iVd6}>5QeTs<^P{<4qtpz&WE)r8 z_CeO`cG;`8wcFOu_R$$yA=|JlcB1cpnB$BpZgfIP-3Z3<(Mn_7?Y^>K`OaZHnr1pf ziibLmg+H)@p@0?ihujKlB&ub@SBussxZ;#&2d5EL>NwLfrmymqpex z$qHQm9Xb$cDNfQ{jpK+cc!9QT-Fn@0%D~Vq^TS+l)f~hYiBUL0wE*WqhA=mbL;B2e z__&==kid~@IBn2`W7|YYd9tdcCR9;gfP-919Gv@!O&_&-ozJY(YpNW7w5FoW&l+&v z)FD7!y)*38N~gkKZw{m5gu?Z~hVo)7fpffYLXtDAazuF|RA}mjLR*EIXzHh}Ku^^; zdT~`z*vCU)NNm&`mhvRQUdR0}(3>UgpNzp~=+$iqT758}OzTF7< zKHvdB-6!uuw(o`iHGo3zE^(jsyd>hjJ)(TJuI=UD%W}GO&8k&x9qX`3T7IyScb8k* z*00F=Xnxx%w3Ql%S-vC=7%Aq*jJ!d|jG#b&ZfG~b^|>>8s_r(k(aACH=q5b7Q+OJd zSgabIXxk}O@i5!6W{sZHjGV33Pr|VvIEq)V$C<4s8Ds4^K72e}KZr3C2Su9Wjf3q% zi#dh94zrfkl2xj821m=dB&xJ9PKVM>1MkB)Lrr{A2O<_r>P2wNP6s#pL%ygPsSeu# zI||pvth~UEIB;r=Q;`6EusGr%H+bin!rr@K$LZWsa0w3Cy$@rxfV8)D^!@OW2n^jO z?7eO5GyJco@7l%VE2cchu!E1-^;BVqvgRDFFXOl{uLZ23O)Ke0Gz8Q^2+c-~_xL?=}Wf!FzN@N5cB_n6{mbafZ3W z^u_vemJE)%$}YRoo}i~p2WOAPbv8RO$C%CL;G8TccCgig^E(s1WvO%Qva{{|U8l%F zLB_#^KC5`KeYACiTclT`X}hdD(7Sy>lZBN^yqg}INhBEZ48*0 z#n?49Qg1SX(PDm^#-enxmxB|mf{_uZY8=3a$}6N7nSOs1*Y@kP!#6W$dI{>Go0;Ckruag^ z$skpRgOI*$26R+D$5tfEk130!CbM8gurgfXD{rZjsZ@EUzOfZ8wQG?b5+5RX??xMjr$>cjM4St*M{`w)FYd0@QbD;`(R&ST@jrqe)< zZZH#Yug{D!+z-rVy3dzFZFZ9pOz384Yakkk)W^$W8>59N&Q|0eoKzg}VMAAp660VL zz`~n^nFKAE7%routQ=W4D%cnp0>dAo7X+zJq&)@vXf(4h88B*55Eh0Vy(WTeE-*t) zp@yInD8i>lqJoc>$8qFK7^fLj!0|qg!7y7Usw&UX*HHNnPbceNwZ|6<0h(+>Qszr1g|8kGo1tD z(}JUhj*Q_r)c`n0$Cv2N#Da(s^x>#7zfQSe_XH4+V^v$5+WQAO_U}j{7gOm)z zb?Y;(>-g$tIR}+b^bIouCBZ~vT(2lJ4^QF*fO_zl1l^TRd`xnGVu6F>j))2g)ZmeNCVW%X3(+!-!B-obhTO{NCc=e$5{7}>ndw%1cPZ8aYIZvPrQ1x*QWD28X zyyb0C54Zk8#QaOVl6P7&?ww!#dj6xZwI4(-v3jGqJDI(htS)F=5)Bh!0S-EPaYUhH@OF z{gpJ9h3Xlg@?`}gIIyljM}r8T$j_3IVqaMdWr6mGBTJN{nRcc1HOE1Gch&xtr2qd{-if5%wLnXWV2by`BrA*)!%jm} zWg(gjmY%|GFyB9e%?KZZLqftaA5|7u++yj+@G~grM|@Li92TPX2bD-0MP49K7|<5N`6P@E<_beKu7JFt!z55C(_i5VR@fH`nCjWb%e~2D7eZlGoJ!o8L7!D!$q?ElWpk(gz#^%j|=!Npvu+Ahp_$t z_ya)Ujk`qo*>k$^KmO>e&+^YZP7(Q$E?0-0a1#7at6`_AZvEH#R-JY0W&CwEf34!L zH;FHn^EZEEJbFt+XYe;QTT#fi1b?j~(Z{2rtpI*PZExSy5p%CP!I~mAd=3Y5c=1Zfcv>fP>pZCVSR2{)Q)~i@m#~%YDHNK4+F3Fm%6y z@z#Eox_`H6ylNIts2rLcVhzRb`%L3~vtn2U-BL~FP@H^jJ2nsnLMVP!tP+*>6kKYF zTj3ArlQO?|8^!mL6uwW!Yhy$7WAXiHpa#t%7wu;^If7N;M4N)r+L95LZ3ls5d2QK2 zr0~}`v78-`*^vr7%7239fNvR2FL;LGFp{H#!N6HzBeWrEL}n2+9Gr@O(@?0eS2AQr z?T8)5=`j&I>Nn6=K#Px`_m)T%;KujiBsn%A=vswQJ7MA6QoyvLW}=`l;5TqQxQ!~C z3VQCfP;>{lRvE69WORj6B(*H4u2Fz%B%{8FKVW0Q7Y_4@_(OKs#IdDl_Y|^{%kY5H~0~D`!AyfER#(VPg|2u->c_De7-nQyw zz9XDYz`)ZX(b|fq*ljpQX=oMhvEi(oKgsk%QSj-JhKB$RQJ}J-$E{H=K8D^t$#cc; zJf7c!d_Hg?pm<&dnZnOxT>Pl8lNtx*U*aXTHHRmy0FpF|I@wL^tN@5U%Cs@n`UKS0 zqGUGmdhVnXdYobDvO#J&ZW|U^Pm!_SY02nR{7p@xybj_BOdSZkf#9$0*d#1 z$P|v2@m}y=fCXp+@t*d-;oWtG;JpicRJr&UUG@jT`zL=AacZe}{+LnGZ<9aO9G`ejO}}_I|45eW zqfo9`nz{5&y>`1E{fFu7Hr-dv_+!kui80zY5A~wutD--6(-?Du5wl|$c&XjS=nrl;_%E$_ zZj_D~x8_Bo0mL^N2G@4d6S$z?uGM1~^FMzH*W*{Rs>BceVtnfweSv=TlODsvao*K% z{b)UG`yU~4R{dzJ38mliSE2J}6^+?q28n<^S&uc-_uI|U_zLvYMSp3Q?KZ7f%`NO2 z{OMGE9xFTqe;B&XtePJ^81$|+1-;aDFvg50$QUz%)zXwjfiYj=XtIU+M1(&jEJ*Z}?Zq=i==+^J_8Jvl;g)Qu%KUsf` zQQJ$G6+e!=%@*oMe@Tfy?M}*=ZQh0BKSG!9=$Gib6}!wu=t!1FAs>F3zTjEUTJE3p z;WyCR<9j*jiF*8EdTYIeX5TzA+h6s{d-U3Syq|pM4Sl#i?HuoeP#;^khu&_)LB2RU ztmN)fGnc5(DW+Yldg(_in{V9MXtC7ikD>*N5LpZ)aVEhw$)cDRrTX zMY;H~QL|ZJu*3V~U$J*V6S>#NZTpelulW2++Bmg*fj+sDGXKy=O$S*$qa3pJxXH8m zF|+0-w(xP!QcIs;wby%Z-PVPh=(mgS<7E{Yc{5k`kjO|?R_`~)e2LOot1r=Gt#tVx zsdDs{(KxS0pL`u%M5OUt99O>J9WNR2(-z<^3E81HNUe1~n{V+#!e8BulX_UlUU(CI z7kY&8Z+^!rUuU)Fdo0TX(f7=V&BV{;CG7FVr{P4oP~n7qR$ zL*+-8q}3sfG|FSwA6t!-2^y8h)>eSQd^Q8W9*3*cVK9zswwBjZqbZmxAwM-M?# z$U5q(jmHj4U$t)7aQgN**v=ezJ!=4ATv+@m8TnXcWNS3Ofvv{f#71GD+nC>YWK&K~ z_{QL;`1yW~O>-1)&aOqIhw`U!!f0iW$sVUkqsDr_AXSu`)6CGAW#dDPtkI8*?@)Xq z?L2Mh1mx+sB@;puSB{o;o^tH|uqfHEKNVM) z^awiu$(eIGJAmi)^eHn$&ggST%)s}ufWR!=w*5FxJDVMtBty-bcVKAN(X%N*E6vc% zg|jI^Sw+|vH=^?sdfn{BG$=a;?MDYE#L*ds34IlB89Qj%`}HI}UeK$zjD($ZLO#=~ zbTHal==1wsC#e^j{-}Y8UAqtk+qGOf$#4nR#OR$HvTPTfOlsMq|3W1Pze2G|>Oou+ z?Q^uO@b?Zns!lurpFO@L&Z5*~I1dqRZ5-@~U*d}CE5rM{x|$uv;1Rk31@wEgD>E5H z?U3wGPzq>_(uv}n#)<+vh#s6%im^^+RTbD6Xye^&%L+REuYi-O)BNaaUV80#urL&> z^k?wLA$t9^J0UCQ6XtXMNiQXs-|>@u9M~s-J`8ow$wtH$=}GI(WZ0ik|98CiWT2~9 zj6P4)DYEOV7>tr-KN=|PXHVut-ADo)MDL6ATN&1}Qf94L>?`skFH{~_DSy=n&u)6K z&`DbO8w-Dfv+dH%qqf^G4@xppX!L$uaPCV6&9683saqERrsf zc407FTIQ4&AZuL(x0ZS9yjIvnV}JO$t=C!bcb88 zbGBu2%4Fs}PJoe5(>PbP`eOx;Rg}r-=KPRBQ*i1Tcs+CErSIgr(-TbvY<`JlT@VuxqDzcv+ zGB0pv16#~Z)A>~D6x0k*F8igUf4x;03S~a!O7UKC;m_QRRPx#?>p7CY z*7r(`9!K-r;Li!P6Z&xxr3R&(>Ytzy%&IxR;qJ^+N7m%tbwho%UXAJ6p;XrUI;um{ z>23@q2B;;o+b6KpH{H8VAnF7R2c-j5poO+8oLIui0`6O?qr_}B<{2Ls<04yjdgD1g zkpB!k1*q|y7a>!4TgJQJA9%j1`I&y>k1JQx>Qo#T*?8ni9I{CxebW!c?)MmWzuy)- z0}D4Q^g2vF$N2(2jGJMSLKlZY(~uvA`)DSP<~FcMfKOiiLGWGtH*dW3e8{%|w*iXp z%xB^M6nF@rkdpIib*G5=oSv#@`R4`w*X5+=-5ZxTf8H4d~Vq)ci_E!CuR_) zVN7tS-E<4hYtejm>KFJL(oIP6emIaAf2&v8BX7j_p&MA;jr8peZ2HwKaSaRd*8-ym zW6CbGj0h0Ekj>f5d|O%V7Uuf}tG$)^?q#)iGT$An_IBo@vC1Y4TYgucXH3KFT7z*l zWBci74d}JLgW1MlMZkyQ;DWHLI}ukeh+29i7G@ta`r(lnstW1jSOeAu#m#2p7t9`l zr$D9edgfO9>w<-W>A^%G=qCKjgIJ2;_c^sbpIvMD%vziaU&}Br-DI1X2BY~qRPJWT zkKu9Gj3lD5fQiRS0E>j^^LSEy9>OG55cALe$f&66cks8RW{_2uTNos!26i1QbZCaq zKYUbuk!}tz#oC^_p%o>Vktq%61!Xuu-o!&*0o8yims26n1dakI zsC98Fp8lVm{PWa({l=mDm&-9IfoAkL4CE(K)?iqirx(-1aPI2U`fvjk{f&ha#ycz` z<1pf9#TY+ECu=c4Z5Wts(G6eN#%c)u4MwZO$QZO?F@YFzAR+(E0QN=j&?(c`D|yq0 zFGGGCco(4b6=0uqpZxxF8LM=um|qMp>b)E{UAbCR4$*QX>c~hy3t!4K6VOm07y)w; zSvf=0QhyQlZhhXf_nDB-0nP&ypG}Y{Tq@)2^_2WeyePlB>*21fv2jJ)x)qI*ns?JD zT8=r)(ZZ){=BYF#F%)+XpKeFhWcrO7UOjD=y!Jq!npcm#FjXrDssP2S1~P>P8F%gw z^=7ue+SKu)90*?R-x-M2RCoohJj|zsPt(lPX#U^P53x8i^l?xeY+uwh{iU2=>Pca@ zYoJ&0y9@FIz@Grc?|I0t1OEajtk3eNJ4Mcqcl^6weP2I9&NvPCrkq02Zy{4FwD8F5 zf~D666W0ZO*9PHQcjQBQ>2LMKL%Q#`dZDIOn)Rr8D#+tWDb_S`&mNU%_h6zK)rIA2 z<~%k_{)=Dq_^*Y02Jn4A@jnMLg$rezFWGmX}yM}9&;Jzed281!8KlQZWJMk5d??TAO z0^bG{-!{k;PLgpxd*-j#)WI#(Ci~`!ZL{Rn3w_Ft??C<-_z$3X{TDI?`&AL|ZN1iy z)j=?24Vm(XFeSikx0q~2Ml48IZI$WUO>2He*lz>$E1p+Ez8=^ND4sV%rf`Rh^Vu(d z{g6HYfgA8NDw9`$CV(8DDQXCGhtf5Ks1~0W$%`Zw_P%i)5UyJnlGN zv}d#HgG_csEsJ2tIb_J+f+2vrrcPA|;@(kZk}3jT1z>^_w|pdt_LG(1RRAxeT|0$+ zcY&9(?`WH+)bp zHTu`J6{@av+yJHGS;2q$>mL6lke33>0mXkMWD09#oX^hr>j8BD!{F+HPRVN*^eMZ3 z2>HJN`@6@>f=nSQ<5jX>nBBhF{r7?E(+pNcEyuyCm1NbQ!m0qQT94-cR4S455XRa- z1HB6DXMjY{uRt^iD~IG7dE$|JPS~>xd=&57A>R$$2Pk{~1~P?5WW4wGR0nVk&Yqhk zulhGUUNa#d3bX)<*8<2CmdH3?z1s7qf$iCk)z>!|>GsdGAzG5K-!5UlUg%f$`xoSo zfKLI%^E1d4*qb8GXFs*>Cb!*{b}+;ZIE`A|M{DNMROgRZ?QPF}U#H}?0{RrMA3#1I zxByVRE`m(qQW@v7pYltWU7u#M8lr`VXeRzUdIh~;&ccfDt7BiAZjZ*OJeL-W{i5L8{IGe~x*Mta5AK3fvE}t6q$DLIdv#bA2r@%kmGss{B6+`6=KTK=FGHGKIHfoUfhG z{qVr`Zx*`&ItiuvXl{C+=p?9iLez&1!K%Xvjn|C)wpY`rc9^JXWEZUa6`BA4SgU4Xr(4+xeO)yC@R@6qe=u&zf6(!ON0#*B|B|kjFDqaF3eoQTfC@8 zoCwt|)asRuG3>*5RivXA{8Tyl0P-H-b3mozOUM+gcSW4f-ua(@{SN-(MfvNVfqjzK z3g}b3ehB$u;8H;Gx&ktVpUOC2d#pb%Z@ej&)l_;iFV@V(^knwy4PwLzjWG<>4^7`- zExTp@|I6c754i~#3n+dQAXAtw<9v3@UrsX*!sBMk-z8HeHDjQrPx9=Ber3leAwLhi z3@DzjL8j0r<9y{b+BI-F&0;xV*Q``l!n`J+9s{O4F~%Lu>M@iQz|=G*xL3&)Eo00*cL-iHr073;e!f2lJ5@iQ03z9klz8`0~Fs6 zAyfEV#`)}-zx>LB_r9U%s_{lubX)%}?75=P<99aXi-0ab@w);tg`dkfU%MgSc!I}n zz#_YkqY3C&ydn74f8g<-4S62W0x13qAyYU`#(Qty^ntpt@ZiS~dnLae(3{SG$nOCk z0*c=!kSSOnia1}rpj|s~dCg=u*fB)R*cdiSEk+S_+8mcTj@a?0uxlsyDBeGXd<*bP zK=Hl!F%Gr zJ>Cl-w*t!m#d`&03L9mduRQlWFtEM*v%a31!d<*a@+8{A0I08*Ervv9k3*v*9H>#3=>31tSr;AyEed{#@? zwoI@4r=EGelJ|;_J>KU+z7V(sP`odPOyPPN=d)}6`dK;V{e}uUt8LNoPhnT*6OUgF zZr7&3*gWV{dd zUA1y)d%6X`hu0(5;bsJIGd_?}k0=v+^+@LY8+EJG!y8)5{|Nq@KK1zj9C9~s51{yO zgG}MiGR|lJ;E4mb>(a-F^IGuNRG)0;^~sM7%>pFMPGyOebzqy}zyp};e z8CVS{Uf+RC;S3q?ZT~Kd)i-wTHcMW+p-USY@-ie#M6USCu1rVp~? zx7ODTK=f~4h+3faeR=;wzv6i__#XlJ7~tE0;(r2U3Mb2WAMN|Us#8dR^GAa3Ztzg{#;MI( z0EhsJZvrxfIvMA)cfNXs+q*y8|EqON>SK|PE#Rlp@fhSMfTsYJj;A40cu~gr?4G~f zuxNGL+Kq#5IBb@@rZbP%v5=PoCjpArYRD8$m+{`V8~U^Qx=|upaMFKjltze}KN0qO z8~W9LctfA2MS&7P@vMP77MKK3=p8BUug!}@Y<@1LHWVBDB5)rQgk!*vzeLma$KGiExr;_7T%}}d_siCceJe`^54~_Rp^Up#Jj?*h9|)i;fxmbAB>IGI+kunScx1F@0GlZ z&1u?1$$K*71A)1K;(Zuo3QJ_%V~BFndux9?=jDAwd&jD_rR_6TtxEg;NOZE3;k@GZ z;027FMV&wcoJ6?*Ue5~r{EbH%wKIrg^9~;d)mrxmd-sA*iZeqQfV>AVEsu8sayc*r zppe}T-LhNwO~}jpP%?3va#fdpDZ4}`(sQncC$uB3H*2){O?uG_Hd}JUy}n{%*JK`` zA4uaYbKv;z2&0BRabSHP+?hITE>A$}KZ1W3c&U2sCdhXHcLB=oe}GKk1sNC1@_p{> z{q6ps=Vyh=_3HN1=kbC~+M! z#_*)`stWStWQKh)$8SVX-u-ZEEWKLcc`f<3*dG6tkUN2`fZ|{8o2E?wjshrT*VB8X z{in|s_3f*dw$E!{O^uJu>_6;A#x}Dsf4vf8c>(Rt;En8Ix4y@9 zA9hQ6-2M3L=!f0X9yju^YxcNj@mG_-R%$iXCR_&6=Ho=T0K3Dmvc6D{V#Af?u*Y@# zue!ZcFaLw?a#`Q0$NqrXW!x`Tl3j8c?f*wjb{~b@)HsF0NJzeb5V|V!M>`#e+%*_z~_LQ)otcRie&fq7ywy@f+4Pwz~l6>Km+BQ}| z>DWL|9@A)}44g#-u|*qRe2su*mc#>C$v3;2TjEouk0)PMqCJ*?%MR3|Fky+EVBgY< ztP<>zDzz=z!`<;;k-lxmN6n7yAPA~lq_f6SNBWb zf{m-!bgWwmx0WiwYgV6zuEyb~u36uXPxYc+_JIBrW4)|^zYc$jC;u(>oD<%K?UIeG z={cunmlM-|1TUV;kVzK9>>9I5ShCDYeeR!kXl zjWOo0`k0@xF%Q`%>nHEDN8&Fh4CddklE!cN+lrF9u)3Nr3BS3C+QLzV&)8t`TRV0G zi#@H!t~O$m+bUwLjBd?VqrfCg1}Zaf6lB6M{Rzh^F^8GIv3(_`-+qbtA7y5nQNtZ9 zagTS+-tjX_Q@j2Q${QG_}mTSSm7xwm`HiC0l{6+33xMrE|;%|f} zy#y~}$auQN;JM@fzo%R78|-0}{J&^L0~G^~L*MI?gAzu2&Unc(9%ZhKWRHwLyOW0~xFRRx0Kf!Haq?t7Ewjt0-EA zEj#VB59{aX+5=jZ9>6}VWmMs1h+2>2^EULTc9kBPrul&op!mcfQz(^jcDsasiI;)L z0jY^4Iu7)R_?itMYB(xA5Y-V9_Syu!ir;3)zXG-bir?LkDLf+MeEsz9Yec=gp6?SA z>tnLm(Hih^G%9j0Ob4L8D}@&;P=o7XdLE;U7_?_mALcJ{;c6jh2CxZ4%xE=-1>cEL zFMm&ld>U{jp!og>^0mOt00rd-P_?Ur{}uho#nR8W%wMnnb;7ADS1lX0947`1{1rEJ z84x8OoB!q%J?p%zKj!)#hZomz)fm9~F1&%-VYu5K+0bB(G#YALHo1Aq z_{rg#ra~4j3e8R?@f5S*&c3$txJn;70TS3-geT1^iApSDPa2gzcxKY8;X$Mo zz4KCIGG3EtY|v{h++^4DPkq$A*^cF;*cNQCT5P@@Z-$L#c(s06NBy8Qz%w>I4^d_K zY@1x#zzG$kAo)tR;f~67ZJ(aRT_w+ z62j73_%1APUH>pNIbCBIx+~af3||O1enq#Ur3tY}1{oKPi*maM`9}GB8OnVqF-;o| zGy*bzt$C0sw8?n)(_%l{MIVU!ihqfh&KuMIXaiaYUJ`h47+hr(ZS2#&f> zjd4R3p*n^?6F5qBFz5gu*m{|dJi%kw1do3>fA*oe#-?N%OfhjX1D6pu@ZVW%7XFqt zIMW{cXo0YcQ!q`N&QqdkHISQu@qjA#iy%{2CF9DMN3NzU<|_+Ov@kTZLNq^h}j7^g7RBPatRwAEs7)z{^!KMBPq)P(&5kt2*t^1 zS}iaPQ0W~DnZgtq=X)OX$bPq%|6Y2Ru3EFMo%@+aQAk9a@W={Bd`R+Qtp_c*D(;mS z!!l)N#2Q9!MBy?PYv~M>X1o!hSMu!!55@OyklzG81ys46Sctj`SPoD~%@_HTnkeGA zuZeMu4QGkC)f@Mc^-~sazCcZp$1uk^<|S|$6{7|NUR|~Bk2@&>Dtri zl9YnGpC4i{BnAVk=VS9qW+Z~eDAv&g{6#Zg$VVN! zCX7Oa^+WXi{e{jPbCj{jmk8H{8pB~)QG6Y_*Bye|Wd@2o)L{T6g5CIVC#;A4em(BO zaReS;F5enPMH_A5q6i$d7ux<(r=+mdG@PPvX$UorRbrL;NZlwP7?zhY5N>WijnEg~zl<&aMU?gW(G8;jAd0qz1QbUz^Ki#Hw+emOg9pXHxV z?~w03KixTYr-OmoXxz~&Ol^Fki+|F#ZhhnY_S3PE7Nx1C+x)e=)nwh~$y?#$Z+q~k zEOtPA1u})jX2Iva6CYP)q-u~k*XmW1QvYJHb66ZsVB*a{MJyIKV#)ZaS|1yOt$_CV zmi}>^7{<~zF-WvTgGjAs4*XvJqsNgn{OPNe9}7k zLV9G3L0{k1C-@5Cr?~{Efoq&Y{P5V!M(O47AX1M-Ocf|O<6^CPdwduijz`f;o?bGR zg(?rKet^}TT#c)ofwAHW^8jN7dO*ycWtE|njDwfA8a&;v)q|4)|6=wzXu*O>Gf)9T z82Hnuelk@qaMOa3l&BfNm`fQ(TP##Ma3&Nii4;bIkrJQ=n+)M`0Zu3!v?+M$Dv1PR z5qJ!z8>B7P$&+Aq!5it_3eMX!EXw*ses9ND&( z9O0rYR&CZFGj7z`X8k7fMqWES!D5r+uTT|{j7^Nsik-%bUM(+nRvhcyuhW~{5;z_% zC^V7|Jdoj34Hhl561HwXZQ9RZ@GNoWz+<_^j+HE_E3Gw#F8T?BN6h5& zY~l+{hxZJ)zbbS5Rvek|DjFY$q98`dqsh|@p3ytu55!0sh44poR;-g5XIWRU2?-}? zIpH!?7ejq_nJ2$SJ~Es1HoXodaV%<|0$)Y20uBIcG3-1v7A+{yr@;kZ30!6c;&HvH zWP^P$3%jnlHi94C$x!x+F;MUdLy1b-6RlbHX}qM>%2KvMl(HtALxFQHSUKt_8b>wY z_9ITEE#!~;V*Y|;QDG@BSvtI}m*Wb0!0%7g7C4E*f<(ebY!>(u2{_S$AALONX{rZ* zUx9(2f>2QbMh$~zw7}2I0_u>N32ZpR`0R#8b2$GkJ{vjGs1Eo`aFsB?OHlze8_Yzy z6rr6|Bg#>6xi`Kx5%RG>JD|$Zosgdg{s~ZM{;_z@Out0Ln_d^snMXes_2EF}X#Lua zN3^e7v+6Y7RO(@`Fg~KVj=x?m-uU^OwKT}MJ$M_#6KAWTy`@*2UX2(im7Uo{P;Xbqnv0#Y>OWYAUEd2l*Zqz%df2=as2mg4NnI~UK`Cg541sYM| zHR;m=^-cm~+m&`CROyU$g77hbLt;YXZJ%>8J%bKGMjvA~7~6G`p}3u4JU@s8@bIBA zPat5R-EE;R6^|kq7p{#WX2@3$Uyi;=%ncO4@0V^?SEhWXS%u?9DuY9!Lk;?!->JY6 zEBt^1_>?e;hgw7MP@@boybRi0C-SGK!pooCko$mGWjcSX{UI*_)&mq?`kuJI*B>tK z>vL}q=lXPS68Y6R^fmr>1Laf4+Lf!2=MaY6SIN;d9%obx3?z4H$M06|; z^jA}B09mUKv(7}#Scu%F*$Hw&hC6}GhibuxZlOapFCQYMy3=;~cbMO|{NwOGj21Th zIAQyk`i+ILbtOA&vZ!ghh6(#muk!4FIOJo2RzS52RzarlJsC$GVP`EWWB#qCsq-bL zpPinElN@le12FZ2OxuAoicZ7SX@s7h)hKcWFi|z!b46%^jK+o&DEK%w z14ow#w^W#iu*y;Kh)IH$dcj{ydF{zCnrQ)rg)EIB{WBlk&5`swpuT66fH zO7jGXj%ApG+#Wnjd)BA`t=YOO_TdEeIwsxIP#=$zzk>Fcj*^kQV*@&htcSz zGX4g`kx4Fa4=W3mx0m_LZ^Cg!<*xR+(d3pF&&T5{mMk@+%i>G@COav<(vNePf}s#w zA6ncDXC-54(+**fxYSO3b6>$B#jhRD?qktK9Bc3)X|0pVDZ!kTMwrt$E zhuI;k-9`a6ZlV@2{gRG^Gm3FCSVds8nKa3l<3aG<=muyk4uu#E1XP14=rkN$jzV3C zVdVawR+^}8a5*}tiVA)l-bL{)<9F5c%;k3KZ4l+9zQ!A$ng@9auo6(ugP%d}0eS%n zJ#rlC-IGQA-y!=S9X}NLGLZe3u35eA)Kl6$helPs`iuHgI_uTTp5pm1vubW?Qk9e1 z$+U~iCOgqsbP-Ej$SOzG>4hVm1~k)X2?WX!+WQ5T^(~Bbj=)?Kj%=bqp_uGwOhw0` zNUyaHb_(=T_^kHB5=oh$?+H z1S9o)fP*Jn>lh{MwYb)+AI^q+8SryJ+3RD-noiW4Yaq*Nelp zZ6u6v#I_P8=w$DQRx`?(J|k>}e9jboCdww=o$II}g|4y{;5j3?>&%kJO zHW_c6Tce%%KJ5JoC-u>Rm@_PpG>3*Gu~5N~gs*U-9x1}nYE~##8=M@jL&Ls0)<8C& zjcPxEeUHts`2(h1fj4#5I$Rd@x`}#yE!^(f=ft$EejF%O1MZh&5{y5QW~j>rVQFj6>y4b9h23ua~Y0!6y>~Sw8*#U z5U;)&0eLcT450GuQOMR%jEw*k7T+uK=Zf9pd1}5U`g=Q@MSU|+Ij4GtGOEwsVZCp& zKKpt7eVo3qJ@_+LH9xgq)hgsxD76r|HW9gYHiK|K(>^oD;JFw?Mv%`ezgg%64lU)G zQ9XaZLq}c2iZ5it<~JW2n(x&6F!fr_;$h2*u1WE~8P+jzjnkpq)2bWw#3K3Gkq6kL zF-~Mz@st&^8hkK6uVlthOBF7yikzi74Gx!EvmMIbWFXA;kIv;;U2M6@X--w)BK|IE zxfRnY<3+B8H5oX?gyB~SRt?vEA-E+iX2YyzRAmcYp3nY?=nb9C!u(ALNkc|cnu7i! z8|NZAIAhpX&AyG}+(xr=7#y(2;aHDabEYxO_g!NeJXw?1%m_U4p>)JH8q;iaqp%g0 z>*m>_Z5}W3b2suSB|g$Vha4X^O{)V`ejW_@G~hyj!t|*k-wOIfzFs5it(^_|^Rs>J z+BIwWbHn(Raf!jYjK>&{Dlg$Jq=i*wscu$snO#fA4?u*Z+>wLs?7o#E5?Lj<#)uEt%BV^84Pdm~c8>usD$qF1nun~0jP9*7czw(%eeJVq8w!V)#*6$Ysvvn$AK6PZ8;I8oYYH9`aaVBB0WB1Y`>BGR~JjYF%Oe{8`X`%1TO9%XCa$ zoq@@#?ZKCrw#}}FduVvx))VFky)>rVBj~(P8e$+{Sm>tU<8t!SDzd7MRxi_lx15&c z_bUpZcrP;zd^@L#^t}z<^*jYwBsp@LRtBU1mA)yEDa?~`zICeF&-3S7+j?rcwTS}w zE{YyX;8Ok?+sgYd=Nj4z$hSfqST^3?pvSElD2QlY1mg+#QK6Jx#n22MXB=VH@%|0c zoMZ`%?icu6jLC)3S1ZASB4nX|INg_Y$2rJ)T%?Zj8{-!Ti1hA4I->Le!pD%UQCJ@Y zsPqnnOkuo?M?NOXshX$cU*aXhUvSQNZQHWb+OQmrXXdrEqpAQ%z|k6Y7_?2kYSiDu zqZoETHxfRa13(h{xGANzdIwGc84c$A$gNr$JAjK+)Vr_K$jSZnY{x~?Hu=LWGF zW4EG9N{hk5dJ!8<2?o634XszE?;7w{`L_-7qre{lmA)4tQ|Oa%v0Rs2{|}Lm{7by_ z49#C&d4?*-h(#SYGaLZA{~Ai)S4_LpL49e4F`D3azGKwV9)N1Jz~D|-Z@{#1#9wIF z@|2nllqxu`c5#BQ&xdLSbIuW?&_rWKHZH-VcZSHfjwbOOorPA<6_9TM{ttO?0w-5l z<$u>*>)u=YUe!x=Rd=Vm)7d)vLJ|_P5caUhA|MG6Oe7>Bi!zGZAOf-mL^e^Pz=*gI z2U&zDK~WYF0;1x`j8PF0nK6o^jDr5Z=Xvh!?zF_rJMa7Xyzl4p-u|3=p1O6b`rcL>xuP^>+l&W6M*@|+55%O5&yU-&?|4%P zKEBK>F!pXX+-%|`RF{F1)erSfha^?3mj@Xn!Sz#=Cz5PX^J^knE3 zJUIg^0cTF1l9(JQ8c9=92&%kC>r!Lo0z8^3m`Pq~FZj8vp0o12dlu>T**c)tDG7>l z5A{c(C!nZ(eo0*pcd{;*hq&(1?X&Zy{j`rD{iEjDZhYTT>(qBxw3MR7iM^_t=Tbwp z&+F1YYeu%uO@@sic?QroMQ;8|%K->4AFxPvqW`LMO3^MTnKw3=S7 zE9>}@$yC~@83c)}l})k)h=BmBNYf1BO809f(c6w{x$R4JyFE^OG*rvPV(}^9`k*!_ zYPaRo&w$oLa_s8Y^I}i0F5e9KvlSoN&wM$2^(NhHZ@0s39I4JF^0)v*Gg^21B{Oz0 zCJ>eY1O{NkK~VIY@y^86uCoXyO@3g(0vY2*}ND4ec$L|fpKa2fuRAm`(WKpdwBkaYJpfRKNX!9REMH= znn+!a*^VjGs}`@WO=k@fyG=rQU)f?kB8`+kGE9R4(2zP1lM@1ELz`d1u! zWW`_cj?;`4pEP(m^)$Kr-v-gD>B`Z$RU%om`CPDEE!W+>dz)f6xuMgdBaZ2 zLQ!N7%MJ4>aALwJ`zA{Rc|+o44hM<{!zmz;;laJ<5dGZScpiD~|AxLr{rk`hQ1sk? zre2s1KLg3J;$;1N%O~lwJKX1%cl{5Z`^c5&sAu2sTiFU0L#L{q`>GXtLp^(%xdROz?{W$(Vb{bH&fl|X8cGmE0%+^$rrj!d5P;5akz+|p{H$m zW)Wp&nSewwO-cJ$POB%|N{Qs&Qig5BC&O(d&%6DwaQ^fB(oPdtH(#Uv7G%yCZl~$g zxUJ4R+Pom~C!~`C*_s+BD2;F|(%wd0* zan$ER3!!M7eSo?g+ro0W8Mfajeg5j0wtKzZx^T|QvsaBwDvOx5O>@Z~RUqjHlaE=k zCj;U4Ntb|TKa26)Oy_c5xwB#wQ#sOwc}Jvze9@|6#x_$yFahC*92BT<)Yd%F91qt> zXb())okUeX)-PhFuRGP`Oe15Z^wus?D%l#8Z38=G3JEGjZXB!A%4TJ1rV?36D@;-} zlIWPZw1siInoTEUL6wBVg=7X7Egc0mw(}_6e#>U*@pmW<_Ce~`K{r8B`;DDFKXwK5 z1xSvI{-pIQXZ}u?uY`J*-N$MD=i9ZPT345@S+({|ZFwHP=FC+aSDnSG)v??9hWk^? z*lpbtR|T)a&)t@ey&4=q5(UhIfgiuYFw4m*Mnhm?u5n=^`>{m!GM>--NTODsm8zwA zJ{#S@!KU#AZ^Cx3hY4yKGd|~8cY2-FDv6UM2ZoK^SwS6?b~!T-S0Ky1FyUN~@Ob@b zVv0GtVRbl_RC3|?)HtVhA=nJGVC5Gakl;>l-G+vM$;Ruzu&1Y?3d4Jb;=oQ&DI zTC5goWxq70nyKVkfWDyntC&5_ON?x{*_TV@b4Ci4^?R%{QRWXCZ8dXxdp=(4Yc*## zOUBV{?H&A!mrb#&<38{w6GY8A#>^+h7eN3D-=kwDu@6gHb&w0JI(ZBZo>B3t+?AK% zoe5YFem5;@wm1`+TzF+a884Zstm~)Z)nb{Z@CssX_KQxXTCG-UZGP(*kPGpSTpbI9 zTHVOzXQVsObn$DF)E(TKbqVq8n4y_$XFk!39=+(9DZ+*MK-cI6L-@ot>O%6q%zGlZ zVd}6*|CKR(-b)02`329<Y zA+{j4=XgDSvj=E-V>|2gQtBr_r$gcRb+%G}1o|!{$D?QHal89^t*6h1`^=6THQ%}5 zAK6m{AviLi0RuTi_e6lJ&h74JoV#6PyL*Lkw=4Vabp`;2{9|_P`NVt%avO_;@%hA{ z@#REoOSP6GHA}phZ1XzZQ~Y|+)2jxW%=anw=_IY`FgolC$;=lUeyS~>HD@@;)b3<+ zZYAI1*Ya)k)*koha=FGAt}}=PV(^d9>N7sjKYG?In!Z9gk!A)gLmVLws24*SdDXKD zY4$JEE)gw>hPI2C5{kG=riy%*{7GhpWlYKrSZ0=LJSut!;;k0skfBW(<*-YZzfe2upL2KA?)XQ604`6YEZ{v4L)h5T5gZ&V-hGWh0x__XEgF>bHg7_mKrEXaaQ z+=L_IgUN53vCESEYCG$+&q$2e>StoT80Y7`640d~hKEVSBa=iD(p$O6g5Xc0$CU}O z_x`i(Wc|FC&Ku@S@1*`P^e7ZP?<>^f^Jx=Ej={-#|Jk-smzRd)Z$;>bIlMLw<95JX zfZBr~xN+j;(moZxtl`oBRxhoW}+BXv2f19ds~G2Q>8^^f}< z7b99~#Ui-i51b~gv)hP0N-k%xAIYLGJaF2aEi9hoS1%f;*=<^F<>0WDL5~C9OP7n= zgjyx-6a%9om&69%rJrYz`yAl?3feK&gQDkIy8u2PG8XFRIs7Mj-PwME-Y4%2 z@mkfx_Oov;U%3(PmXRI`y`5X_&jnZ8##X|Ar~-heyt~{~Mf_@II(#M{``6?lW+{t* zB9oVGbGm)JxyoGX9%UM@`xE}?&v8*tRdbat@X6E7)%uewg9%%MIYGG~X)F(OtCt6< zi@|6XP3xn9cTphgx|1j;^rxlY`Ki~~N%{0QzW1uHKApADJj^ui2pV?=r(1ciY&A~0 z&`2##d+>iws=PXWHmx|tUTPjdgD)%52Z87tDpt zmHGA(|L>~~E|{-b?4{o}NI@$r<5vv!6Ty|-XSfaLb9CDj_URI$P~PY!%Pf0oO7>Eb zgvv-l1-(^ab*nQfIv5?k*@6Mn&(#3Cx3h|p85WKXMwNuIUOernos;Wj=d@7?^is+~ z;}glE3mB_pPy_sA z&#yBF?x21j^biz{{~uGA;}2ok2=#ee|EA})`jD3u!~VjGP27kpzpjj(sLG-7ze%Lq zoyM=VcH&M7S?Lk+cBLkOByKZnL58k9FFsCI@x)@>1w)#ou5v2~H=qw_4CU!nd4^fVN;#~$i(loso9 z@cd8?32_zbLtbtV^@eY^52*G4dADV)n4v3!#-$35f3)m-ljY@9wfS9P$Nn=Vn_t>P zN60QP9`W{coKtIsDe)0oVJnMZ6W5!rR7-YDCXbKC?4X8TccQfz{a2_o^l?*8+Xdj^ z;=G8Ys~Rcov?xZfq_)Y~b~~SlEL>AtK$6!{+huI|*}9z`;Q1Ro=OxgK)PDuN21V@@ zTcX=16P8zm{;MlOKOMfNj{UaNv1{JFZsq1JDjY;*`3F&fpQ<$cZyB-c(o@Ye0zs#p z9myIT#I`xsIxx8C2axD9AJr1T-H2=9X)aPxuK%d{|I9N&^!H6Z;ZrrNH`MW}Kep7B~{yWNvCH9N`|B z&Wf#i6PaCrGc}c8^lI5VWqBkO4PYcv73iViISKgznkz1irQFBWVwnQnE$2(t5fN7< zQF`{~s+dpfbUVI6`$#+foOVndjIIwF3x)0Ie3<&v(9a<`9)C;kuP3h7IF4B%j&<5C z`h0AEeEkutHm_cPW*CB~b1?pW>u;_x7=Ok7n_}ZX;|Lr7xEcFqTG;rEY!QfPZF%Fd zM0!`E&&t^!NAR?}91%Geim+Mp?CGZQne?D>dwRM#E1S>sX2nL7|60PkFCjh*4y_L} zuG#%Q{A1=AxDT5XQ`Kw=%z&RO7c+%axf26;SM8j(cGGLGHjE*$pe#cWm=xN6#1@t2x9=621Vmw z1@)_;n;$%oL~RIk3+4mqXUv7(fzkQTB5ty$lqkg{;YdWf0<{th^Bl3`qf3 z0dx=%S{YocHsZKium6E0Cz>lcJJROz; z;XXESpcJkp^p|_VH{YDGX~L zOK2aDj5LptOeb1LE!P2;qArq5My*K5cuK4l?PDm`$_U?kMcVm3-5whb)9vv)p6TP% zZ-+h)MeXrp>T>)sEcYeX?pKdLGC|Qc<5yb9`$gCw|6#?xqZ%ZMWeNtg8sHSOMFc)F zF_MSWZ8Ix`vkl@-$B1?PXpC3~hca&oac3$tLiQa`n*d9Yc2R?+Ps_dn>EgmR=5L-d zoU5Z-X!}3u_St&4UazGMzDoU7=(kYRK9i5o?XxZ{2l65R^QXP}!R`OOZ@C{iSgB!; z8j^(vjYZla5$2~yY7^yUhP>RP)Bz_-b-ujx=@;P{zvjgLoM|$22y&e^`|@MPCVJak zbFArh*@Qpot&0HN32(G?7Yjy*ouDE%?0Mz{8($O4g`a)oDGnVfD#q4TT$b+ zoqC^}F%M3N;Du=I_HjiwBv(RO)a(;>iq+GBMHd;{l^#&L?ypm+uZGq_QGZ=X{Tk>-NRADWzPwZS z+vZSj5&4C`9iKvfg;Tq*VGc%_{`KNS`Qg|D*>*S#+=1h0C~i#^ZcinB94FhQ>9DG? zBgos6khuzCUXwXnB;=CJ%%nu}l4DQ!9NtlypPa=yHIDiL&;lrWj(1R(V@+7@%Pv0{ z`dhx;bEtjc*v;o`9=1DwS@T<`YP0i~t=Q99Fb3XC^Fb`mBY7&|Yz^;VW>$8Xv&`{` zjxmMDDgd(d5)D@e1;N;kM=7x6w=sEa`;hLpH+T-=i^i}Y9*qfFP`&Rh>(S){A+G-XP!GD#=RIisng2A>qj6X)Tfbq|y3t;yH)$`^-KNCUQVu^0 z^MABpKwDryVLo2YiWa{OU4!xYOzIkA;k69;Q|`+2nz?&3nFlh){h7*xnKt`FU(YzV zXRO;Y-h&zIYgmNd|8b*vtx+*8Z1xXk^T;nD!!*f09HeU-Mm?C;)P&$*zZ9h1ezTA( z77r`r%e|#J!9gsGX@7-#bQX;UIZBZE&4tF<#w?dT4v3dd&RTcxWLM_3w4m?}vT~$+7z&-LEgs)aChM z|85KS;eGe-+Vy9gErWXBog68(iJkO&^BIYq^iAU#C3T;jtLJmMuKZs`#z-p}ZbAiOy!64@s=NFoJTX(w=&)jGu97O{d?Kw zg+}6EGuBVC&U4ujTh|hL7aT=mOd2P7vpwwFdTEt=WHu{(dJ;lN9i&wkedL3Y?Vww) z8PTnv3z{US6}M3(vItvH-&92DcN7Xir3TpWgu&Xn zbjawv)r#Gj8;iVGU;zb-!cv>G-k{B&{f@kke!p29lv< zIGD+}@~m|-EjWHViIUZ$joX|Z=HK_i1ueK(x67S8Z-eK$1A3CW@s9a17mC_tHTBOx z_ds&&{)&G7<-2sbB9!Bn-?g81IcmeIjVsqF`0*a&lg4iiV~=r{E-ur>aq8TA)$8~5 zDgEZ`-zp9Ie|fRzbK_a2P>iP2-Bp)h>Yq%w+Y$}jM!MLXPMCQ-jKO#d2sn#^#cGmH z1zFSW#iQ4FEZzH5n!M+EoKbVaKxFtv1}5V}6J*WG{vFut#p{I&J}}& zEzaPPZvhko1i-R6f(g;TDvB~{32b01c#Rjki9Y`Y z^*zvkLD9H~pPJuJ8Vm*xvc>ks#@2U@ijT)M*fS5{mtxR?tJ1&q1JjD0z;=8645 zf5ej0!jjYJwG0ZX)~^%w;8x=j^JP}Ff{?2vD~Vh(ok*b~!_6=~KlLtKP;x)P3V_;tTYY~o?W!wp{8;cj3ExpU^yLLvANkvUUT$?nCjn!GrmORm1)TG zV9R;OlBh}}&Pi`teo`Pn7-r}23QzyKE+_NcaNqb%(nDJd&9~eb>S?xZ((m`V|1Da%cI{Cc7pd@$oAgk} z-SBIUayNVhuS4NK|6p`jjUTwNM+=(mthgrpN@ttXnrO?mw%w7p{yFcqJJ7R26r^XS^^LUwlRS3-b^E9Rk&EgH%chnrM+i+mAIGA zFd*V7BDm6P(%-F4$%TQjrYq?@k4umf_fX;3EZjI5VR~|j@DUO|LQ0e%PQgf4Q?>tw z8+5-dJ4N@~k2t%U`UjvvDC)Pns6Pxn4#~0I4d-Df2hIxRz&*?NGarv%xps>J=?xm+ zQ=<9dB9O087K=}T(<{hQobFpTIX;chszEi~9XD>xRqxE13&m>T;5LC*oTy5h_Sr1a z5^J^9oZ=kqss);8n^lw~dZlg{5mL8^o)#;%Q)8c#Hey4ZuvD>PQiDA%M;f^c9@|@bZ~F;YLt{jl^;S z+2)~X0JkhCMRC1gFBc1@EZ})4>7WAJYZs50xm`Ew_So<)Jx>10b6rpUbI=!|s6D!<9RFgY7to*z+uBY#+;eVrdEu!YF%&O zF*H-mSHZ#7sZlfJ7#-S_mBt^^OP~Q)vuvh?{~_xi8K7(gwS8Oqw%?-L;k?uI{xzGS zb}RMm(7jO94lhub?ZfTokc=#+efju%V0jbL99~&dP%MGug_fJ|Q&;_$vm`y*KtcTwW4HArT?fQX}J{ zRW^6oG~f{@AqfECj+#fE-P;jh`=@pL+_*xwkF>%4)V~Ei4n^&gUa8yXg0S4)8n(}< z_~Scv?^_Re#_CmPoE=8|uWUFU$>;Zua{t&GkA1P!G~Y3;KD9b6m|BL+i8IajO&U+F zIfBMguZ8c&rt7J;5ub%9nRh5Ds0iEu9h&75m<%D2+Pl1jb*QD|)=B*7EN258_T_c> zeYbj#m1OU;K&XbV(ce+8N+rnTc8mjPf8n!RRY|lU+>H>qn4uEn+lBQK#~T4FiA$rr zSCAXGGyFz|Z@6Nc50y`m8hTCuWF<=`>;(v%O3dt3ni^oHVcfXGxQFy-tXAIx(A=Hn6j)9{4 zJ)OE7?+eR)-S75eM$g+d_*JN>8tOW~YjDrJTv{Gmbt{vKZbEMQq?qWJ4YWWqj=1qM zN{gj2WW?y!6O0w<6^8)ZK%|`<@)@9BD2JGxPTSCHV`u91SWXwH*P%`*dY%F5 zax4tX>z>f(;DZqI4>4ZJD77 z+S%wt^`cHFWwUy?0Qr%~B@%;P-39)Ax9j_Ufcp{tUygsH{%h!UD7x>KRr6y@pd%qU zMz0U2gnZ(_Yoq&NSV1|oJ`5WQHmqTl__nE5i8rx9m!CCaPnDbILDf1jnCez%P)P?V zLT_G>wJyx|nHK=$PX`s)U*RYYVjlCPjH$ZS#+)yyCl9P+)mng#gjufQ9lj}C9zV@@ zWHM(!H!&tr>H-2%H9f&_nP-F&xSvF9*v^5xXBpY(xjEa0EK!4or}hDOcXJ#1*nLOX z|7Yp`zk+|(LwzPR7mC{PIqJE06B`kdW5aaaUVFlL>f6IO6^$_O+3@@uZbzl}UcPb7 zIl~E7;88BL6qE8zS9_%W%8&hLS#3jZc}ih&ZX%W`B0emfZcZ_-DORs9=BC@-=%7lb zd*C>y&$y&my`q@wZ>iZ=ys2cfGVkibRI6DX&V+(LVyc`P+Ua0E5Tb~=LpX;9Edhn1o_p5@m-RSgx8Q+ zqGABk26ZI{57E`Mgki{0Hh7u%4147D0fM%KmXW}9MFQlN&|d4$v+A5+yf6fc8wHLR zg7;OT0KYGyK*Zf4N8hE#)AH5B<7qSXTcO*bXgt-{=y7yHSgtrR+_%rrr5>H2kUzE` z`E6uk90CPgX#G^etbT_;0TjR2#c}G*i~7x`pDLB}MM3Pv%6QnFvKb^5E8J*znKsOm zz_o)^8a%yW5fc(|)=P+G&cz^Vk1slzWY)I zv2%Hqpanj`Y`_ZU(9>Dv7AqBi;*Ne-kG|+S@Y>OJb_?Qr)f5x2z5}^ZLey(W1}5;K zEB6)_qY<+EZaqFWyhpFw_aoo`3-xb7KZBz2vEuCcv5!DshU9o-z8(jC%XPURv`d`% zmwm6>YP~sV&2T=aw_B7puRnYFMwP{ka8F-wRJf;?iTWgB|6@jLU)zgTYql-bIv!y^ z31wAzZtRUJ>K(5GS&2^QaQXv6;s}=B_+`=lg5`eEvhTIrN3G%>GS&o5V$ubo5Y1xJ zdx`McK%|Y=OZ|T?IjNriC}y88rhZgR+sT}Lxn*8!*&nyOKU5rk>2k~aeZ~1nG5cbX z*W@e35%#Jl3?hJ$Pl8CDMRR;EUu-Qb^#;;CnP-WiD7K7G%7jj!GVa3w=or6+yK%oSZqbHCIUTu_?f zN2UU+?hdkC=rv+5%ha}e!v0^Y*9VL!v8$=y4BZMv{eL%gId+8QnNPhvzp-C^ZN%5F zc-N2%r1ws-Gm9OFkSGW~`RDNn?0FoiYkMLUN9sInq8&Er`d zis}LIAr&c|*@>xN%7mkMk67bgecyYyAF=z&QCx@LB-DVS`yQY!#{psaf9JkOuuVgE z|K$Jb?%}_~`+tD@629+e?4kcgy|NxZXDGaX=P~MXEZLyTOaEKr_8z!EENa8YqhAj3 ze18|WZWP~g?3!~nti@YL44fvQ`RCZjfyuw+sNyk=mj9}T&_AM!Kj`9Dx@gl#`g;qp zKh~D8boAqhlTK#fJr*Tf>^vgWg;-?V*>TSv!wfR5V64@jBJmHAxKxdp%B1S{&3lai zoR(2!GcGwviQ7~tP9ZGDc&tn_*~htLaobe$GQh^(HHNv-oJS6D3l)}Sz|SnW+(@kE zl6g21%B6kgv&Ouc`IL`{aG+XUt~KHb6wTw}?_dp?VlOc7Gl+*;P4*{h1Z$rS=Q+j- zQj5F;%=VzSP%3wnO6V5HdpnHmRR1y~3Fp&VO;&NClT>tb%&Db`shM6p+vVrcK2A>+ zy)FanevfC)s7>TuHQUIKGxOt8<4fa8d_LeEjkcp!&&7IngcqSmU} zb#qo6m|>A1tuS=x=22}6X9HG*5?>{**C0gM@k;VrNhecntG3qKiljRR6|O>8IE56U zEF`p~*ugxb$C`=sCI7Kd^zf5%o2eH0r5;PCf*CsNdc~HU&Z42eS4?Jr<#-BYrtf|D z+LBWWe`UZUrZRDIvCVOx4Xgv~oY^?J1XExqol4|y55LZ9FE58{TaeOL7A(b~J+I7#W;p3$jyI)J%bMd5jgs`lI3iz7;I)@EETtqUh2hZ#N%97GFgC;t zCI%v1B!*@+ORfM}AF&tg)a~*H&nxTTzeBZ6;6b5@P_zy% zqb|p3VY&T{usuS3wfc~k{o2zGULURK^KkvfrOw~tn?dSo% zsoTTbJlr1Rsn3NLLQ#91OkIwRVfnvqkHxFbTD9>XG|A)t?>5PTM|FEtw`ly#i#+o@ z>PJGyLQ#8cqAtf3VYx4y=B|_Wx4*B#xnNz?AX|;+u(D!o{X}SNy^Ltbt%8U_5V1Q^ zp8EFMzgNw^172WWh|E-K*+^dvv(E<55T=j8Ap-=aUU?)I&|D)nysfgH=i2pc-42cS z>Tw~_4VO?q1zHJ3?QjEiIi3v5tyhKX#3+B1<)`ZX_w875&98&Hki?2=pGBbiu9n&^ z)^c53$A9~a9lN*h zhIXcHiiKF5UsF|JS$@1leo$Egh&fqo3!3Rp(Y&JbE(IBW+_JmlU4R^hreZ}c*Rkb~ z>-N6!eZz4G?xX$`^ehy%xAPn7a#YUK<#Fq^ToeoQ&8QD~8F)kY!{9$yuO%KqxKtwp zy=f^K=oIzZtp%Ywo!DJ%L@syhUYmR$|2lcQ;kR#~Yh;pXC!pK}6;YU0tNr0T z8#YJ}5mN&Ci?^NNN|c@&>7D&H-fkz2xZvgp|Ck435*V$zIb*T!>h|1CJ4Jdz>!0Sw ziclSj#_vVczXaU}$#LdF-JYA5=<@kcPdNA8nqS=K_&wyTWhD4nrQ$$tGw;;kfG+?Q z5P|Z36Fc&wPV8wKvrHuLgq^bkuPs|!5X=+x0baIknL^7zrGxOnueVx%XvKC(HbtCa zzzofcPl4TVGJVcW%+GE4yobw&)84QWdB>ULnEA_Yytla!A{Z&m7vF0;r8 z@H2p#3?D~9?dL06%`zDuJxAqBRUPq+?!RsC*X!_P^aYPl|1tC%DC)m?ADACI54sAH zCu+o1L^;#g1RiJFQMRKc@W2c7TeN zo7=2Uwma9hj}Y#UWcsxD6Wjxci8O`)6eV+@P$mvUYt_e9zg{~wJ4d)-@vTangCQ^pJ#o{X}!AVM^$|0FAA)^eEeHHKlAjlVJeH{`F-+7PV zUYSOk^$dNf1ox_Y0YTBSxI(Kl*xpECtf^LB1*nWX-hs9Uv@(-cDY}fbq!-p(dxoOp+wJW!55^zP!p!wg{-wb2W zyxIJlQk(wF0IFLAs(Y&$LUp$rvCq~A5NMM;IO;_NvPMhBCoIL4?aT*|yG4!M-P-P7 z(w@1r9pvuE+ACMJ-^&I0-EG#dWey~^wp-WKoeS$@-1eHxgM#cV-S&qNAk)OS2vTFR zBCPs_VtG<2Uu|U;wAQw`A2*5xaZr28VBFU+;%VS+Mge#4H9#W_19rL7ST_@45$$3%cJ<{P3{c^(pFKf$oE%etU&_YLIInIkx>o%NHv`|J0pfJe*goeUEEx;XL+z zYsg4_@RpSu0j&-X|B)YRJfEnMmR~7xD$~&UkfhFgF!>`hw!2OW+GGXLQcxs<8u(3@ z4Iq;O&CwAz%%Ig}bpXwpO<|%7RJg__{=Kf-B^F4$er&VfNZ3WTZo=6?ecFz-mSz2P z7J~*$N|uChWwB_9EsNDc7y&v3%N3w$v19h3X_Uw=Aey|mFWGL$Atk{E!4Jo|0n=^) zg&a>PD^}xQbvy5*{X~xY8x8wQ>WK^H$0k5gJ3mK#&V}T~g5>D4bbO`-mxcPEx1Lw$ zcfWVvahnu>s+&35BX(M^#~-$goz}gkD&Ew^b%uI(8-;B97YVGrk{g@f7UT}izc1ID zuYz$uj#9Ah=f*DU5M6ScY5b(UdVwK3!Ue`yuO~Ck&A0KZ^fzRl*yNH@C zF<&i@t=9ZHsAAl-a^@)+P`~DjhI^lxXq%V9_*d?C%c<7DH?FB?FE9>eW4ez1?PkoA z9^(@oy%!qU>+0SoI-LK+Z{Hj5OhT>XlvCETbv{b`d%N}1y7R;Oh)wAT{!Oo$N{mZy zr1?|k6^6OU=*Tt71#>oix28~Qshd5mwYuNlY)t4_+Eyle?*U!4p5z#Le>!g7U1p{$ z-|5?c?9_GbC2$S#uL5wX8sCWj7HGMY3e76}V2wSniGVG*#-%I=qWaNX zkHDhzUMYF3qH9hkvZL&c#TGL|Zzc!@3p^&g-@4PB8s4k?PTmFL*IKp~+xaYu3?R<3 zg?UHqw2{0pw1*D-JRJWY(frXK_J?0me-p}GG(7%yP;dJvIS(N@Hax2NqFcgvAp>Fj zkhN#;d!5mG9YXsK?GGK>t(Tm;En~a&B~KOUyIHo$1;cpHFy4QZ2*>z`V}I=sF3I?w z3`ItGMvd^yuDaSa5FKhT!eT7zGtXO^ig%m2+d4A0cQlFp(NVdp<00eo9i^A*#iiDg zw!};s!TF#U6z>%0WqzOqtHybn9u> zw`K4rcGazCJDevw7C%<^o~|?WkBd)=_c8(}+5L?4@#LReYQBefB49o9`5fWWy?JOf z89Pp#C}+FGjD+uxu5gpr@!QSF@5taVqrQr+oFshTr;YC&Rl`g|h~HaC+frso>1 z2}XFeTU`B)h7WHV8Af=mkHPS0F&X3JE*R%_ zGM;1`tGHce5{@lY87k8r<2+#bF6Gz&8HWb38*tr~vCOyezi9Y+Q!Aqi1p^8W;r#?I z_fnBUu|SG;;@+xX6^@R$dMUqHA-GqqAR|!}Otqj&K-enlJxWLnfL^MOr|9faze5HS z#}#K9oYV9@r7%7h_qu94TC3;+s z56f*&Yd$9ym1@)z*ZLFt8Q;gQ5`2HOzHc>mXc+)KjFRBqbYj16Xnw!juBw%|$}0S& zXca!nKEtY&My#3F8U!tEa~e2y%)o)Y$6Wxda$F{#ujeMYM<>f7ehs;YA>2xa3w%JV zgwbl{#XP_+36`?duobJQgKB~C03$ZEHVJD&R)nx$B(T<`XuTLx2ZucO;A^@)_s~wV zU(UcIJb&r@*nH@nP}H6?KL!pF`T-<|caq*0Z`q*t$+h8nvH70;=yR5?kFj8EMf>tq+2#wF$CrRC%$W$V)NIejPCR~deLFr6>V zSyS%8%?k@oOFc`>opRY*Tv!5%BZWf)Ym^z6E^mOoQn;g+XOg8?o~ zZJE(yjGevAUDi_`x70nl=ZvxZciDQ`ZH-3})(P=rId95(q@_rjo`L!{+btnF*uFwB z@;J39DZ7i>2FJ4e$mAD=JUKVDE}F7P1Curel|;@=m1Kz#`;Fu^LEJ1SQ+8JPPoQfg zYT^69BFkL>+|_T^_&yNqbQT%;OVGRXqE27&OYNg=8ViBDHo z6QstS@C{iyp|{(#)#e`kZnoSYIgMFn-4r)!QuPs2Gl7d}9{C|}2W~304Ao`RjGrWFZiRLkAs)%`S@w(+O5>LL-#__d_3w3JrB2r z<>udNIpOc(+=cm;h6RApcFa(-y4AQ&YnU(duU3-XBSCCOrNcXuD?B%XK`&eh7!%R=kEOr;!{jS+P&N=)j(?249xVePy zvX-qOE-6fZe-L+@c7MWY?@BBP%=U$B-DZ17VwyW4?bto8+0pCF=$M|E8<-vQoLTPl z!mRe$&PdVw12{6g*X%J)HYXY#ScO{HKC|RSDIy(qqR%a(&z)p;a_&d~HOnZwk@Gsy z;tqu&UI@@i;-tof5fEgALdXd=Le@@gPZ|zK9GJ(@;Uq&R@i}8xFcb_w(JagU)B@@E z`g=)_Y>Zq_=Zf1J9@xY<;GF`;s9_6ELYZXX>D)=|+oBiJp80^b!uKj}g8DDff791Q z|Eb1*$Z)L!U#aW%Hsi#${zZ?cU03SyBy0DZ)Kga>4?)p*I)nNa=u$|ID6iY%5TCF; z)R&$Ak{)Nn<7v$%Fyw2_Jmj1WWdDrCwyaxo#`-f?O*~}N!5dd@SiR;95ihqJ|Ex`Y ze+m^VTfWD9ca8GXLEkUDo|n97zwi<-dCvEO$xjDo#ddTx?TM(ljMqEe3GP7o_ni{M z!1z_O=jCRZTIQF{#4AnbKRPGB)|sKr#szuVHg(#&b77=jHVlUBJ|WIEi+X zQyg@`l8XROtzt2eP9I<#VYb_IaN>Nwl{O?MtwU&^cYCevOH4m-x}B+@a599E=M&Qf z@SJhtBO;m2K~p>)U-Stul+Eeg7st#B0B2)hvnvWv9?+1Ko66x;Z!AKTU~d`r^oH~ZW+A`kfKyqRnJo{>C}op!c8 z#?Lw%lUAbA+F}lXK1H=}r0|#SFb4=`>ogs7@5rZ?Q~1zu$b!X)OS8;F64i7bkS`&C zaM-D#X~^Zv=1Rga_K+7Z`6Gk;N0%G5k(CT>ealI^BheUPTX2kFA?i;-&q86pImX9zzx9OWo-c>o~I|-UJ@H#8{47HnuJ}|K3bJ=<>%8#}z^wz{qA-p}l@d>I z(!6nCCHy*JiD*$L=@;0aWF|QIGL}oL3eql~cXGDOJ8`9OQHU_F}U}9Sp9+htZN6aS{LPo-f8~MdDt{|nqRjb zRGNV#~|q2pv}*>#mW5XbX3XD zS8DjJb!)O+50I7VM!KccCFuvrQJ6`Qam`I(-U68`gWh$j9#C%vy>u z{}6T59`j23x2CbjypTf1{Z=D)c>WP5*R2Boof~^C>@~7!Ju>F-$H!DBI%CQt;H*{& z^j1F9I?fBKbwW67#1xw@EtaU~_MBQ(maSY>v^GzS>3(vI^~4zGfiWXwa6< z8IvpJ%#@sAVl7A}5=j;_6w`VoBnG-j5^bml)A5U8CAouutfTlj``FV6s>Zy8+rYH* zcikS_lhgfv=?!{b-b$Z-j{3KuC!wg{|4dzu(v7-otkdh-V`| zg?)|##wUzhB_+_Obum%Bk#jNtK555x^&k`kBqB3g>kFDVtFwo7!Gau_m_$(aR-a5( z{$gZ63)kV$pLQ}q>X%ptx#Nu$nCh9f)`}Y_5{E1v`vqjyGyJ(**Pkt}1(Z8i$xQQHYP}Gh`-b^f2 zsQZ(;9bfsgoh&!3 z`V6N;EqZ~e^rAiaU%4bOf50Jzv4uIUfnwtacwhFiBql*Gk_xhJPR8lF=oy#vq#}K3 z4;F#Tdg6BO%AWMKJ;BF%yj?y1lJwI2qTeC(+TI-Z898OmPS45DTsO;_x%!5l__iM7 z)}G2|d+c8~+}9fZZyN56&3xCw?tB+^X^Sv6e#%b%sp0;ik#e(N=pFaPUPL2W-+?oP z??bm52Waztr(wRs?$6Y-8JI~^sZ4;{Sin<3epptPez6>hVM2sYlqj<=F|5bNc(?ah zxAi10?s2Z{vG9O;uE%<|2YX=RvYw1>eYD5=nBiR1+nMT@^?@lU);K5EnOGd8{4x() ziT|bXhlMDltAaDag4CS+*w`{YFPd86V=ygE@XRGal4U!JluWFd!9! zu41dX#az@ZHKvh9)$eE*+hSL>$46(9M`w~5o9l0f@?%Tm+d-e!$31DViXT3{vw3u9 z=a{2=erbwM1W)^v($#Jc@;+ z?69>+GuJU$+OW|9q@;2Ka&5TmaYb%F02Fr&T3qX0)*eG){&k} zZ_M~kr(IoH_u6aS?PTXlj4h5g3Z1#4TZyOpNf&CmV{&Akiz6|!*iqUQryYC-@Fgbc z90FN6DbHR=&IYU9jd#|&8*-BO4@g^H=XTtaeR82*ZiW=;`Gc+B86`9Nl7#j z&m3-dsz(DVfv}zS;g(@J_;u>$ zr^tl|Mf}ck>gPh2LUJ^I6|Seh)@7p{+66Du?}yjZ<&wQ&DYJj#S!|(`MeH3kzF|ld zf~(CB2eAi|>njtg`HElduXI$~Gjp=*GTCfP>_Mccb{j#fm_KB~;rWE0B+(}L{0{Vv zEhg*koNdMcVL7^)UCymW_A(<3ojjMN6Ci=#=`}53od_<58o7jMrY=|yMmA4(^rHrA zcjq|k@Mdb!@-I3AX*vWwev)PuZGz1^A7vI%Q%x`4N!*B%;zLonDNus&lf+?>bIux4 zk85>RY(Yb}>%gan@oCGcuY}e?QM-PC`e&hkf#lc|`su8VYd-R#kWblgpngBxuETQG znssY74>c}Ogr6GTUckBrwggJH=RT( zLc+;4k!E3^l{C9tvM8Ql-ejN(I0H4!;i3TOc4<5rl2|c%+1+bNa^LV%HeXfgadD&d zN2JG9KN9QI?Xloiz3<4gollmlR8WcUpA>rrm4$BoGPGNHxS3CT<*zUjcw^zNn2G!B~S8d#+XUk2# z%$DU$mIsrU2eB8-Ltn9Pb~vK~KYbLSv)VDmpTaU~nXEdmTL*>4f#|#sxijRdq+m!_*&yz79qAyOX*cPlV;@{I=m&W7j>W$HQjS zJQF9bUb$)Y#FM9<%BYouOCk8Vu>9DgyjXf&%w8uW-~dweO8=|)U6wVV`hHh-$=D?%&^4WyOUOWiCySx%55EB#1TfJ!V}1 za%i_nz=Yli7Rf?82LhcM0mllHWSSuu_v?1t&3#1e_y%?JpTR&wa=#q*Sn6}3!yq|! z{ZY5qwz}qfR_C;QG|K-0_Dc=pTgL6i+~NV1xz}Pe*T(PDjpGQHbD*)rZb)>z!%f4y9p`Ji zV(~Ssj<}X0TX+hFimn=P5RRz?+CgRnh)ixfKaaH!B{`{~*`uYzDi9bA-3UC-^6|PI zUg7x$)Dx0Rl6vqt);%a{hxydySRaiMH~P#LdvxX4|`3+6Kt z-SmeP7}b)yoY<3Q)4krbJJXd^2Vr%l*yx9x40dLVSiKg>5T*32lPT-k1GR3Ih|cD^ zhnWL7E>!$-vQv7NP|(wIJpjLw#MWP6A8)m!fntUGAo89LSNYjkW0G#S#+`cIIEiz! zs4s$+K~cLMM_rCH!t#`T__;>$ouhVBNw>~gdB&V9{H_q&VxXsA0P{T=nh=UMBZ=zdS9 z{$1#KNRHz1S`Sb>Ntc@kbm`3yj~B+n(0E^T&Y5E;ZrXh28Wst&vd8$6^;?Mz`jRf% z)SE|jIM4?v#I9204(kD)j z-$}-I5-)3%I$*4p7Fdl59)|_x@=Rvgah=< zQYN0CWoE>H;|Kl`-a!~#I^tDTR^w^h4_a_lEG0I1omi4Qvn7))2bdGk__tx&(dQ)A z+;eeIo!mUDO%fRuhAWP<9kK(`Hc~_elSabyh><@2+LhR(CcEv_o@$h*>%q7buk(z>$eCyRM>Dd{Kbys+Snl3ZI-D3 zH})iEbTKY_49!U|i`SqTyAm%mw)ke_if6*|`1+iR6fS+TMu3!pR!znylPhZ@wGu|GJt&}l>Fn_vmzp_TmTRYPr z?M%OggF~X@ptgA49!rpUIX7U{f;Ov`sWdy)3=hx3J)6!LX6>xv)Jgp3xYflFVdI(D z8qL{xX*Y}gKE5FIn41^=VxL#%yQyHd`dlsV2(o&dZ2$7`e0Y}n3($*DG)`WjF30O( zx$_Y{Z=?Mu8YjC#`C-&JIb-emO{<27iO8#k6{nvjGx&qCUCiLAtix?OOjV~jLDbg5 zDT+$PXIB-&oH`X74DWZv-NXFXX6he?E`p-_-AY}KPle?hq5Kl*2crAED9mFx>VA*e zBD+yx!JGq)1>+8sJ%=pgf8;(%fnbl9-9l$Ws2W9?z)=zeVA2YBk_j7^xLWgc`&PFP z-|u^<-vZqWh4<^6@)hPL^g1NRjrZvJ*Vv)?#PhzU_s#Al+D^E0;AiT(QTKi9=9K~> z8FhB$#&^H>?@q2-_udgF&s=rpmJLhRamMW2Z9i}S)HZh8KX+AetEq|~TB}Gy&bizx% z7ro_l%;^)n9~-Xm8?*EpfPCX`W@*qe{$Th1&YpyRd;*te;_H%ra)P}C&~PVUaT3xd zgK}$O20)W?rq-HDPmrHkl9?8~ZjwZ)@K;#B#4pX}%NUqGDmks4t~y$OCnNvv(3J6n zGw`I-`-GGJGC4P=n==;252O30Ae%g85Ig%&wsaRFL~N{E)s~LhB-^RVKS(igYx!Dse0$2Ob)VL8mr?Hb8$rERz)qdE zPsib`5s(xr7JJrJaTrRLfv)!7PzTzDxL}z7Yz6~ zO9IbZxlE?b#rPT+0C{`@OytKD&G~sOC9pZALe;H0u)pH>i&n@}em-Jp3gT@Oef$yQ zO;978m+RMyCH^e8W3MY)po%~XhCOR4JOMg=of{wZ`bTe*G zp(9a`x3^&8tMyk1YHyFJ_jEYq9d^(@hR?#U@|_~gG> zU>1tS9m!*3e+Gj(Ni!=%8dB;I(B6VbC@OI{w)|jyf6Kl)e1E4>zZm)!6s;FW-b?-$ z=n+Vc;w4(|yW(_2T}Ys_RCr3@5DA%B9`L&n<<}n516&)$5hoRs1yd zCM}-gJCY~<#`j+%D#@>W=N11m#&3MX_D?Fj(|W}p)aOo7OF&aC0mg`W5W79zG)cov z3Wx019RES55BzY^?Z|_nV(wwwdB}AhcZ1fzJfOt^fj~yrDiA1gu@koK4#&93@PBAY zkX+Ywe_~lXUDG_)9ru{)e8cUifQI$3jF#{(6IbyHu*8IMLww-Ic=LvM`r5d0O?=?m zc=MWg`YO%qAI0X<4ftvi{C2NVM6`?B2cY6E<#NSlAz4lt6$=caRVlQ1oq47(XVW-} zs!}wiC$ckLCYdZggDHi53OpD}eajh?bEhN+5+F|!MtT7AIB5uk+3&?g20u6cp{N(K z7%V^l!BwOH%vBQ1VRnze?8Eb#xQs~R-Mp9hCz1s`*TVQNk3T%*s(4Xb1Oq2c(yZFS;N9UuY{NN3pKQ)sFwveEE4< zy)T`AiQcD1jjN-!Y~G;wbnM|A-ozY=OB)Wq7$hZV;3wk)x5S-K#;sf8 zO^oF!+rJz_){t1#}TNn>3`xm{ARp)AcKKs$P zm9tR4oW5q=sxycCQKjhomVqu|3sgEvI&rq@#PO;VSB&VySwrU=^kopc*#qdvGZ|NU z16O(Duk_N_da5^pz!gm6q4>a#xbsll+7Ykgr@^eb#2dKO8-IzHepmdT^>nR-J=aRl zwISK%$bpbb79HumqF+PHBb~sf5)&d8n@z8cr`J}5y*A4oaK^i7BE`u#AZFX>uFH(* zI-exR(tQ|X%>?^#g;ZWOJ*P%=Hs1(!I?}!ij?(?|2JIc`gYys0k4=Y;fuer-H1%IY zZ$WZ2?$_k(Z(9?q-PH|hB`YF-^HdXnX9HmFGLJB<%MY#2L@@8MWY@q{i;Qg6}^ zt7$e@^~6}!Lzg=v-UP94s!j<^<6dvzK5y*3Uiv{1#oQ)#^5YR@jujq(!M6dM9)@;+ zhE8xC>rN|dRcFe$+Z)*KjlJ7Tf6-G@t3`E?2aG6fPiATzlE^1ZiIUxAcH+vEGfRFv zJ>}siBk;#YtzfH`@o- z)an$y=D>KFZc23`=aWG5j2vjPhg6jXF|Ih92J|^tb#oycgcl)&xp^jR2#;UOs7l||_^2zd*DA;!-&yW29W93Y< zsr2i1pOImg(25XHUibnlgA0rsK`jY~DxAiOWA%OC$^As*^;^_mhODm--M77%`sL8A zkQ~cDuE**2>vg#&9Iq=L*w=VPUlR@3?Z*4>mRRxE=_mpB>Ed{GE`9fi0o$Vn?8CMi zu=)-90vOmV!S{@h`2&~vJsPXF0~h%{AMw+J zq6crHVbNnvHh^f9)`=Y)#<2ML64{h7?0h_vDvhPs1D4ewRJ#^$8q6# z6p>C3V3Se@=(xQ{r22ou`~2~`e=q&UaR1&${X5VvplChnet3TDZ0N(#+x73Z{q`?< zuK#EH_wlHIAMyuw_&pE#>7D!S-+TRm`~04J{q(>5|Ezyw@6`Rfdgm~1&o}8!X|ZsX!}Mg z65i&Tv(~J|>=12R=d4*r!d{jt^80*7$L{%OM^gIiNdC@?T@jGDU`p%cs*684fQpK1 zbhou9(V6oO<8~S4Z7M+of3_jKU5ysQ$&Ne7nu=|1iaXiw&Gb0tDsw8!p5O0`wfiz~ zXb1HIIXOKMUX$aS=a};*<8Cy|nQ70EE9SK$igrR1;sdlW&)oOL)`aeHW z3dT7#s}LOQ93Cu9mF#7(?FX5YWha_Nj?km*HtQp}l)^-i71YYupEBUf35c31+t`_6 zwp1t;$00+ziA18%qLlBYdKp2Hc=cZP$PzjOByWA)WK^ZZ%=QayP9ct&uU4&9Cd)sJ z4Zcf{lN-M|tl!%~{m0N-P_#cS`WCi!=tGb?!Z>4%TlF}3AhcI5UZ&-M*aM^G$+sB` z2mRCLRhy*qw_|?1+cdVDFWRb@s$S>Ztp>tFu>A9$44$Ew^km>EG2l2Q1*D${#t8rT zTrdd_orHOAJn#<2u$lUl=aVL*?M8AlcbN;IZ3~QYPWq)PVVYs-0cgUAR z=e#7~d&jM0FuQslfPFqe%iNn8hvUd%VLzad<8Pd<`|rd@hv)e^>K}$Kf};L=p1K_E z-_~XJX5CNA1~s3rKIG-1qqRO@@b2B}R5Vc|{of+O)zD*P)qcoQS+&1v-|fnDy~T@N zpO}K4_9U|v=l?XawoCk^R5?@1F^YY2u2bvmYfX_teVLoi1x43gVlL*>BOLwcXTji2FqdOr9cTOrumgD{3mO9TFhE_dE(fSqzj3hHPoE374O#V zx#F>5xpyP=tD*a#Xde8T`n1Q9xga?nJwVR`FN}BoVyH*o6~1qbTE`AwPyF(gn^()K zwafe~$O~had4hVqz*NO50b}e;&ib`C`Bks~7aqDFBmRaDD-CaE{3Tq4i$~ly>SpDAf8R7 ziJcp}%#tXRfkq@%W&Vf}rw~n~t>OJW&i~DZ|Kug=e}IA~hwpC+^+TW&Avtz6^?tcK zrORr#Z{D&|kHhHx`uZb#_L_A=cZa*`U0UaQhSs*u{82FQLeTuBAH3|(`K4ce**_xo zvNh54e{T%@4qai{HEKaijzA~HLb-(?E`U=DWKakL{(9zVcm{Tw4crd0Zae7=7!)&+ zubY_r=io+u1oI978eBYoEOqg~AgmhuA-qc>z#*qVf@IdJs0!Gm;pe z`7Ppyuhspyhv$#lsq$T7AwzSas2@+Hem3-eNRDN%==J9O7j(HG!b2Ub+ig@kjkYt7 zY_j+LR8muP>K2=-S}dVjjCM=D?3ZIZ?I}z@W8el_%s405fULDD`JUkakoF~jRaEEx z_ng_zojco|yWiX-H@Vr#MpzOSN!S+=qJW^N>=mm*D!3LaZk4K4uJ{h~W zDNG8YiWqeVA%`N!A&6%P%UbZ~4x_dDdwT@K`D3v{%!;0$bGsugC6F8`~~1|06qW&bSHlgTh4$X z03Nn%_sXs7+aBFBeSYHVVSal46WuMmhh0mzLbxBcAX~2%Q^60#hJr1{c89Id7PSeM z+imO<7|?|V%Uezo=dUt3*S?X&o`jVVWP1}d-8!HvtzzSDh(`JH7y2axlk1pb;Wjqq zBN8ezMsrwCBh``tJ$6jD_*_A9RM^ju!nh`WDAJW*?v>*fq%$q9ghGD?{ujWjfS^9V z51fZD{P~! zWiBKhBJh^OYoms3hBSswK5;<{_DKzG@#$av2ai5}{RZH70PX<<^#8=a|F9ni{b>*f z@9Voi-dE~8)_D}z!BP02+G3m=s(?%SVp=B+5Zm{dltJ4?6DJ*AUcRQc_0UxXd>~*5 zfYTL++~hF-{y0Al=n3M0uHd|PzKYpV4zr`VTuSz=1dkjM`FK9?^g?&|^xTW@ z1pU^pf&Uipdq6ibLU>&NbE%V);Q zGfr7{GDyjWtZYceKdi=ihxtAo+wuM&KlTED5AY!%pyLzZJbdBDhm{{Q&Rn!;$qK$= zP90D%;_Vn`e0t{pu_s^71AabWH6WnpV&FWi@#Cfc?e*8+EMLy$v>cczc<)A^j$L?v z&`)a5V{Qa60RbHja2^tVe7JPXTCw0{-hTQe2JheE({m2K6O_|Uz}Evd00MgM0M5gY z{rK?8>D(17mz+NHl+zF1qIdZ8uorshsRmvLXaEHCGy~^hh#wyoJ+oFUIpb@o!3WOp z`j;E=ouIrP1^zhT7l44CUjpah89zSs^6I@mv2^h%XY^lKd7qB_pL*7(BZ0RA#sC63 z#slYJiXYb>a=ZQt9j7nnJxo89ro*S>Uc5ip|JVxr*MQ#w0y=&VoQFU9@&3c3WBJ+3 z`ln;QPe=2gd+Nz#;8Ow90RbJy0Ow)0A0K)>>6IT74%*#@R{L~p#`}Z%@jUQ916~FM zbi4wbhu8f0(EHn7bokCg`ze;tMxTz37kl_!bAg`(SO5sqk7=@(}#}H zoJ-yhB`dsk+xb#Yek=q29l%OJK*!m@d06GgR~}A1<@w>Y+?tS86O!@INZvb$w?od` zr)LMg)8=23ULF-v0bxKuj{%&As2~6T(6em8>4J^iA5rstdb;qPW}lubfL{ez2MFl7 z7B~+#`SF~?sV_5@EIGCRQVOm0>DZ6=2XtirGAdLI$O8g83cz`&@#7N?d0g&QUuG;> zISxg28YDFO?^R&0+^1&^z7x>%0Pu$Zj{*XE9tY0DlYV@-^zf?lpJ?LW+3wSo|7#Cj z6M;_w90dsI>IBZiEI&S6y2O^%ArQ9Dr)x957mNqb1OGGNWk5jJE5Lbp&5sXjJizLm zxAxMIRT`4<57(mJ0rJ8tz4qSmN>4vL7x+nl1%QB##lU$u#g7kboSt#+vPB1}K+QfK z&*A++e!LBQ4`3f4pyLDJJnRqR!|8WsoV#KX+*^%ZzKoBO{bft2)2C<7-+JZ^X9GVE za6TZQXEkshF7@NXnm5cm0~QDt@U71NrVir$T|Pa#@SUI^l>a^|qycn5K#vKW2iK1e zYn<};UHcmzHu`jQ;r$)rOQFzJz}Eq;1q5{50Gx;QetcNtl%V5a1C{sj?LIxBS9{ub zIq*tA4IrRr0B|0f{dm{mjGKaa#Zc%0;6Dd!1_bmx0i1`e zetfX`RlpDFrS}@JAi6tfRGV1m@!-f=XNKf6IY*=lzSn#XGvuD7@_@^X^_)*%^Nt?+ zrUIW0mK3+{n!4eOMyDlSqB+D>mG1P0Fa4ebcN^Y zlG|8;$Q1TrWblU7h=a{B#Y|u?05&dy?=+v~loF}I_!|OG$b#DQ*Aj70qP`2xB)j9wInzRZS?6{jqi2v4Dn|*sF2h!y)N@A(SYT?{^AHLZLOl*8#2r1a#g6oQFI7c%$zh{?Pjs zfAJIRTDY8bp;lgr5(l7GqP&BSxEO{bUEY${`gF0kdg!VK-V7KF2yUpr-^*9_&z|uv z54;vo4+!XO0?xy5KVJP*|K(rtipSqMu$}vhsRM?)a_oM_gJS0vyPzTsi4xJ9qaX6= zyBFVW^J(4!{5OE#0RsBA0q5Z*KmO+P7k`oUb>mFW^d;2%Julxn-tNh_dBB$fP6Y&X zEd$QOxqf^Y`Sz7X*Eh_*&?cYGUHE>7pah$D?_ll+Z~y_FG2lGp{P>&CvwAJYVx5z` zsn!`G8T@6;9(txU(17-*fZ}`27kK%&2H%|{u7pCj1HT`z2@uftC~zL0_Tz6pUI&Y_ zemm}i4%pj$`f7IfjMrmz1NPe0UOsNe_k;fNUEuox zUjPC+Lwh_rBYr&pAN{xEgU@@ux|r*y%ZWkGv%4SXlb;gV#pK6p(D@5JI?wUH&-3gN z;7!81>sq3D});0=Mm|;5jZLtXKz%r{D z%d97js-0ow&G1Me!xIhto0U`fCyH{P(n^%umE>KDuntp9^HQZ+gzbNhbewM-@E`)fW&7)+kN`CgRX!Nwj20Ifc=1g{?CE)K=*m^!R%87^(?43-BJQDn$;~N z@E=!6;G10RFQDrp;8y^y0t9re1J1*ZetdXz31NX)^B`~Sc4A0Ak@vo3!P+es zjH;OT`E-Te>!B+JJP#-U0=lYz^U&bO-<&Q_c;G)})jpq|wfIi6_+lt@AMi&2j{yRD z{tGw{&-gJrM1Aj`^6Tb9ecedky`r3diC2C#@Au@>Sm09u(*Xfp#{lQyI6wa8`P3s+ za3}@1#iwfvz8B=zi@KfW8Z$K;350R)r-0{SX}^H3ke zhq(XKtDf~1KKM`7KNR}Dmv3wFy@0O!f&Uz^84%F*1aKan@#Ak^&w2?V{Aa2{^L@IS zKkAu(&j9{yz*zuJ7lN`5_okcRE-nEL#j`uAK`Oo$ASwK-~6nPu%uiFFKvekUnF4PIj`oH`%Qa%PW)1 zSe|xh$L*(eA3>Lr+kaK8`CNIS3@0{Jm1<~?LP1>Vgr4ktuB`kyfq5_dSUk}L13lbV zRy*{AT&_<7oO=t&V{EVDMycUuhO3L9V*oBofueWw8n4_sKkkvsTmk$}e*Q^M{_F;R z{(kIH0eDzD$J6g%$9j5QyZ-p1xc=x<&x^QYz-uDzn?E&mCofub^73(~oUx*|(Kk5? zC6H@vp#-uUN+4vD`X?$P?^^Gp#dSoUFaoB9sZc0-A0 zP77v%lG*|F^Nau7wwG*`9Lu~RM-cK{IOEBGeX`VknmSF)6`!{SW%{X;{5aTte5e#YP|_bNintQ~0DcYN_F4lRul*vT-EN=;wa{-tFQ%Hzf^VNzR3-4{ zOTfhV5rO*BEd*|vr{YQuk1U2N(lpux1MH(w4;RpELnc4V$u?zLat*_qkEQ7$ZL%|X z)Sw|!Iv;UHMHx&^#7o`!_5o&NtijGhgMNTp)m~{sC zF#&YKWlmMXflrZmmSvJTR#XY)EDL54VU|7(QCpIUxoNpF1MlOUiX`3!og3Iv=T8`L zvx>Xb8ScRvS1M?-0tUR)TvZNxKCrf4Bu8wdDjjZXbfR!l6qQpYX~iAVkmj02jjVxd zATj*Xk=(&rL5@Jrx6v46s_^k3nGvqXE%SQ}Hf`YON8B46p;C;M*{~V}pXV(t1B9D2 z1_vn;!A^)qU=cy6kQFx;H*m53G%Yqv*q!K*d-Rh+*LwZSrq6ozQ(p#7K8GDsK+yl5 z1biJ}1AvFczTc*M&-eP1^gq4+Ce-T9%U2&#|I*zVV+K&ZPrfevu1xmHDRFG^XETx@}yPpjI z34yV9c>=uve>1{%HXTkAC`sBp_9`KLfbj+?ylzVQpM9C=wj0Q|oIPXdB@z|;Qy-}-SN zXC1`+cRU2=ea8`h=!iL74!h09`q0}J^F*&(`Nn526zf)>uI7LB&~+^E69EeV0bPsz z`=|PG@ckh6sOr(1=u6iDU?b=Z((^3v=K=2k{B|#!Ut-=07y{to zUSD4)NY8rr1#!LkQ*YkYUwT$_op#Dfo}j6xtl;u4umv=412+P66$TleveviI73(Ck zi{&s0&?c*N7dtAn1L;htWGx>}_02SMHObvhFqlq$k6;KKE0lI%Ix+(bQG_0e93C=gX)(oE7Yj^+FovgH;pUp6DXd66=V zdca=?dGJx~r7|UiwR*{>q)GBi)0LZtm5rP8#BuJXG8G z)|ym-f_UcGgE{r3LK2iDAIoVn23J4|gM?|XK2<_fzy z`Ci8bPm5X%!)J{AT~1#v14;Z{F8P}r-^Cu0Lf0a}34O8!``qLqDZQ4GJ4oUospMfP zek+-*w$n2Cgm77`EWFSw(=`O@)s=7*G!#FC-!5rUIP9dL@L9&^NvpYDQyNu1j{03f z;tIatRdD1RUsjaKCKQ>#7DY8zah^x4V5wn2as%Fcg%@z{0WyYagCenEOASi!K&++UPM*4$VMcxx<3XXzqO}G30B*aY|oC~~i=+5t6wjJaiO$bO-5K>yMk;|8(&5Ebm&fj5`kEUCwH< zk|(H~A0~@b4fmay9#t*&W6fI97wMelJe^@Yy4<*|a+72H^pyp0>Q)sJixzkH`NbTuobHHl>jesEC zqk!`;(T@+-&j#`<{gvY>EBsVr>uD-aaQXs!EuF@b3YB1mL0B->>iR_idN@<+W7y z#=-vRK6!bUuVKHIZu9g%KcZX#bgQwC>|q!I??6_sB@MVA%fS~^T5;zb4_TzI#d;RT`v%Of{#9{a3gO|gMGZt}v z51I{39b764>jq!K;sGy+2Uutq@_V2Q3%aU{5dt$NxLAPuLB+(V5v7+AtZ*kNNux&T zf^Mp8Pifk&!anHM931-uTTa6|d*c|`^DKPd%M~4%vL7one?=Z$qYoZAw zLPse&Gi^JbvPVgdTdsV$oDW!Z4m-s0==Sdw!Em zQ>w;Hbjt-R9gV{Ywo+6BzJ_p>%JX!`eO~$O3b%LbnT2%BHvrWDzkHMlz~=!@1@I8q zU0mziVeItB#n1q+U)ys2tKzxt_Of`%w-%gv+RBO3J4er)#Cx_K zyZqJnd-<{-=?!XNS)@JG0vHbn>g`>?UjXa|@DTUwXK0#NPd{Am@hvZzf8FKHDtcr~FHMS0Ve94br=q7jHE#qMt_UKZ|T7>%zHf!cV|riae8+%48<2 zyv}kcIi^6PGZ5cE3N(B@5|f*TESrv9*f@BGH_5r1DJIV{=nXJq&;tbhqaZj(N1<5ycp0=x;L=RyTg<${E5Q!udMh?KJ+5MxNeySev6Ma+VVrA$^yFx*Yb zam$Rvz>|fKG*P%XbUy6W3&-qfFHOK(07C&my%-Lhha>#>VEfX6J(}*~uc`AH`nBNk z_jrvdNBNhB_N(O~8UNge0_rZ_zuKo~Bfirnz6jY5;Libm4+!Y_6L210_v60v691>6 z_&*Q6{`Fioc{8opMskj~=!H)DMKC(MoOf%*aK2oFsYsSLL2iG94-&koal2BmeFnG7 zeop2e@$zww)!x0oe>fIsfp-AL1AID_X~20{?#FK|@Y?(S z!CpTgZsO4SvDZJY?%O}s)E$NH@szI9miXo0hxF1Nbf@$xB|E70su0aqYFlqfxzB{>ph6 zYb{=MU~YpED@TCCbWRG!D=^vc!9ffrxv)OV?KqdA0auG6-tu#=d^?=>Zu#(E0xv|- zpSnHy<`%Vw?kH~$omk=J-^PEvB(kdhiC09t^xnUSc>g2bzR#8uUl-@S%DJ20ch+_oDI%YuL{|lSDN86DI9vZ@GKeq`gcN ztIZXAn6#H&f@LM5_2JS?K3_Yg?s~e1X?xjNF%{j9*(p|`H+x?j_P&0qIKP*?r@NO> z-0@bXH<417$9wQQ&40}o6qnTACqIu=p_EW{A{WC4KeR?V-1|7I^~1gqRgkD^v#dMAo>F z{7Ihi6KUN0THgJ(8&k<|U08+tUl)#C!8odNWAPZccrNCW;Ds!L7Y6zYkvn4hZR2H| z{KYP%)?e)?ZNviTT@CLUa&x5hrigt_q+q$$^9Aj1{?lL({IqT=}d5>E+%rxU&9SM!pBnl=@xw*wzJ*~ zH|!60XsLI@(!TKgNP*zbUi6|Wy#$7S^Y5{yB#)zmHy@K7_i}C`-U-i}BEIk}Q6d)+ zDWPL94cBDLvspUN5_i^tnR9-TT;;+`ubJ6nTp%&(SVunAF^^ zNq50>`4eOjTU;YQK~82%YZAk;kFv1DUcvC(za;5N)!aa(jr8~plx?I%^8BY&81Ogm zq|#mV#5*awixy2cVGS`y8>u=^`<6;cQ-YFrROx0d|D`f!wfX@u3VT#-AB_J;V5M3a zXoT5(HjDkQs(hxX_YyYC4m-MZESsea?xfDubnbhy@;g;|8A=LL;!&C|Q{WVxX%n8- zQ8$LYZ8~2P?-5-*lG_<^_pAID<;osEj$BP@70__Kro5(VZ>XSZkVn;RTK-~n%q8j< z@Kqy-#ALYDyLE?_zf2vo2Db+CTeoS7`5eJ+5X_asfEJ9J5~XxFRZ7zH*$)W2L6Bd< zE+_0l!phb8?mVTG$t6^k6R4sI3ATMS2cC0x&LKR0v zW5{Pd>ocV|U-RK1=Q^@*BN@Avn7!zSyAXIiFqu^Xh;JbCt|4q4NpB=<15pJYmvS3P zD*Cu!6vg&aXlsf0MU5eM&yGT3QSzEnytQsK@m#x7QsOH>wSpDHL`#XCw0YV(aM z@{C=gI^qfUV%6TIC{3`sno+U1oL4290nF)<^CdZ3nxdqAQq9CDhdgdGar+9~z6eIp zU^IJPUR=3TTnWo@T#1V-H;5|T!pM71Y6wL z98?Ch$CEKRo*s;E#q~7H^?a!VUo-*mWKQP|6+e9(tc{CcXq7!gmEX(tn`A4ZB$~s8 zaGTPWs5?;sKf^JVS8VcWta*zhPJb#Z`(q^(^n4Pl7uPn(?0%X3RMz&#jF0SF3B~`N zghuw+#^a7MUwX-AFWX8C9&sKdyKUngJ1&l;w@cC;l0yb0BbC80YRPqUfH8x< zNl4DE1p^MUF4$X3nFBHVNs_^lzhD=YqglsB-3{w-bianA#Sy#%t*pwagsY3hIdr;X znl@U5_lgLZtOKzcQBIb= zMImY`(GF<@I3}`*PgALwTa`n*gWEHW=D=Wq^LRy=nv+W5b=lM-VI=}$HCkpV5j^>8 zDm_QpH0daK?-6)f939e*Svgj4W-POrz@tSLsl$!|rB>d7KOp!+fouh>`#F^!qZ0R) zl9xK9c`(ZymI5S1RLj(6k~; zqgb`FXpE$UC%mTc9J(^xdPUgYmF4wpGeJj$I+pY5*x=2CJx+Mt+L?7f*3OU=b_N`G z4o@=4G1)YB9E_{lLmv_4`FE}LZ<_s*=G03PzOY}_{zkNC6|D+W^cGqvWiXU8dKPyN zMTaOuSzR=($6yTEq5mS7-j`q-WlCu}e=2N}5+8ADMhD^IJIcmh|`Of9ZiSPDc{Mh9D*N!q|y1-(q(f`Kc&vm(}N6rvAWd}-_Pd^ z604g5(H?UAcN52WUr8KiuNw1RXI1RG)+){>%+rbs3A~WSwJ8TYV|~}Ugvb{Y^%4R% z>w58}Byp^YPv(zHtcvKP$(hv&J@ zkdv+^>a_%oJJDR5KHBu@b&k^ny_L1`qpeldxRdL3Uef3M8iGU=j!uY2ijc$!-)#x- zYq%&8#G7hR7C#`^jmguMcapZ-h^v&4PB10!A=i<_^+X37|9Ud!Is!gS>^cI2Z(R;b z(yjY3NncNn70=iQJd?YQxYwgwBGvbi5sCrd=ywt8PNLn0jR6ba3U}Q}2H!@MTS>(x zG9uFZfgg}K9heaZ!5KE4mNZFt{Eu*RYD`GxF62BtW z7Q%Pk)laI8cBmll6RQbV(KFO&2Za_rM2u?4pN%wG|E3mNk?akh}y)BKmYr-{22 z?kkEh9v5;Y_|nMIq2+b2{pVk;Asv?ya}Akt8L7OS3_0HT2XWpYwc-do^Cn5}B+)lX z8RmCy5@RRHh<-S_hP2JEeTzhQk&=1nm+^)gIdKKicabq~5oZk6=ZSjrber}+}T|z3!Xqvv5&`Zcs z6|J4V})$UhP?s^C{pBJ`TG-XrOK#CVrv_K^l`ndV4* z4@rDXjE_iSKVi?4Xrb;ilKPaSE40Ft-DL7R#Mw=ZcSvS8sdQRt>R;kcayKb{hqUb` zCBGp<%iQd!jFY{IWX$~}{t3ZRyePYx4%|r+nOM3kmChQO1Rk4O7ki1czDR2SLRv4T z-Tn0Uv1NlkVGNys_0c4HCJes|YHyd&Z(E))C`vY3Il8+cy)7ooj>l59?)Ni6Q zAEcT4VV5&T$3;z(ZJ@;)>D2NfI+RQ-OKhO#Mv806XTULv6~+-Pf%wxoJY8g(kqy+n zjZSKe|1XXIff~Q3o$KkeTWEScjo(7e_4K4$XzO}v+(O$cCVPceF|=S*6cx-0y)ffi zx{3UVI@eO;M>KOStsHsuHcGcsdBl)W@&BW7JT`tiJ$4&)w$u1FY6`r0JFVSD+peKS zV~%ZS?-FY-jHa7o#Nc#0&BwGWsc|VyJxp64qC+30b${zls-1p}q+I;zS}f7F%aYN9{6LU7 zmFCOGlwHr2x5vUPJNoIlVI`wffQ$dVsu^?`ys6H$m5g3@8zHU<1P|RrO27^upx`%J zBVN&zZy7W23)-lt(javxF0|%{j~Vs_9f}JhekkD=Kaoe_UG2`8xuer#_?z0dk#V>( z-kCIaVtNw4GX88l*8s8@;6plP;p92E@GCN9-efi<4Nw8ilPjmN$^T7qrA6hq>*U~U z2B2q4sawP#ZtCEwo3%5Kl*j91cVGcGuKCE~smj>Gg!-e*sq9ELO&f1$yLf(LX|BCR zfy4p-wmXrrN4FkhAB_!-89$C5i__VybL`pcQpW?G+j@dMi_B?0(K$((U3PpuVJEWr z+HnT_#$6>X!~=_37u$;(<3jR*%ixAF?ZF0t&Rudb2*SZ@5VpTzXdKg1=3=Ka26xnP z?g1UkGd!(9-kp(JSkVt-YayJC7N<)ntPKyxq6JcnCW|`dtjqz;Np~WgtIN?Wc8e^x z98M0B@UFn3MwM0>&Q=w}LVr@u2Ego=oHtUhR5rLi!6By+2Z((o18>o@gUDe9Y-C(Tlslx5Y{ zLV1B&Wxy*}26Zu^V#^shou4kYZ>tz`FpmvO`00wtICH0IM{&^;y~?WmMpRWWxvkV5 zQ(E|%RMe~G?on3#m^Ow%wFRcL%OUM;68V(qw^b|y(je^a z!g95%U561EUiuf9ejYi~weM-Og}*UT2iVFimSpkoTIZ$wCvyk6Z+-oJzOjw+gVG|{ zTiBzZZamo*M@^My!TFk$=vy*g&C3SQwDf=f5~5T)vvQ;e&AU9#mYH)&WdW689cr5Y zJ*L6;cswUDLoRERUC@BW20tH#Rg9Kr%(1LgM)&59VWSmTr7xh?#Qj>MO9!hjb$Sdc z1YCB?L5uKv8T24u?PVOT=UsOH@5;kHLBR4KF}3D)k4*bxr%F4o2pwi zV2pWs<@F?bHT0yp15JrU!G+eB%Jn+DS%7>T{8kX!aA!&9eG( zv(iO3dx%~0LUgkWQ{U)mV?@M0)VGI6$Rkakx`8YeQBh+KaR89>vJZ09HKH!crY#JHo|drijl}CfL2ic#t^IO3Re+xuo~I691_rM0VTi zSY;KOOR4bw6y`}4WP3ADqef&~tzK!WpnUrohBf5!;{A6 zyGAk0;(2pdj4e}TtM|BtV&FP#N&JdG{goMM5^_H%ni4!y#P~c~=Hnz5^zJ=`-Azih zIOMVTn0`H}a=O@Z2YY~N>=9w7=sDU8@X!spix z=6(m}XBk9$m^((7OEYo>D<$*+NW>Y7=lt%LC!FlfXj8X@# zFAkQ2^zE{Hmtms%mN*p9m5WJ|od z)?GW{olG-IG-{-nW`YE1ucU%3qDB(WG7e!)ZwTkryt*0HGM^=5=p|gc# z*&w|v?kakCFsqfZSh6bZ^6X$XF^%PCuc;tNI9P>flDV2oXiL>iLf&P~p!U#wfrUc% z0N)Kbb#RXy&2>W{cRsW|^alVB6+1k+!{(oR@-&?zym-|GFNpj3rLT#&KRKFHPVZWN z#>$DyxuDA?cDeE(Bb(T7ED^zr9zVMi{*n=W=AC`+oh=d9P7ucialC;(2p#9G#-k87 zfz(DD*N?)s!!CBrTdZLhyIcJztb81HJ__eQ4!@~6E4Nx*Q@xJvez%0AP1 z*UaxTC(v13c7h%Smq~gUI>72B)TyWBzwF{)*aN`rzKOhSbpAwYxx}fy*s(8n=+m}y zx!kcif^GL_?c%NWRpcMyfvcSAA3FAxPJ|V(PK0qc2=!7T-%g}Ei1chk+8W`GIdNqJ zfjq19tBCZBxS{~t0u0`)%N`=S6Fx3t!OAIL}Fe$l8Kbo7`>OvHbX*lm^3^M zaLmR>Slz>rd~S?1N;UL#0%n0CbeHLkgnMV3j90Xi*<_GvfiXM{8&KB~`Ws@_I`LE{ zo1o1_8T1y>k~TV)E<_$MIt`mvqXuLe&4z5V*_3TD2WAH=gWRFckm%4HI57#qd(7a; zJh+p5LOSG#K^@gc#o_+X?wo^-J?{yAAH2zfVIvX)Cg~}3zIkmjJSJhVWSyL3yUoHe+{AE1=bew-KzU<&l%m1433Ve!ItJXl zyCHxIDT_QRpHUpyMyyWSVpluxUFtftBc>&b6IYQmE@rC1(z=si7|H@-fNd0OoM$AM zMnDzA-dzdmRSFB#A_&n7h7i{u=N4x1$rR-5s}S>nu?R}%4&=KNkUY<0H5QYj685$r z8ymw0a+*5OuYn_WiQfy9XARZBo~0G#Qi+_QV~KZiwO9s+Pd1!ET2dU(^F>b@?>51* z%0UePiavb7fXWLASvW7$ECWLb7(hi)Ff&|g=$0j$S^oP77mQ9Ah8huH%JHw`%=@l) zmWHyf72!CiKVxWI{X3E~(s3|1P_Xq%mesfTEs4~Q@a0*d4o{wSFO%Mjk#PEnz z^T9Mm^Qz66YXM+|6|mx9MOEUG@L|h}#@n#YGCAvuf@(PuMv5wFl%U%5dM8X#(6sly zUhm;OY^?8l)QGAz8pE767_%5*ddJ}q6dn-9vQLg)NM)W#8HJRw(r%(K2@X`bM!evs zS(Q}=e&)0ptr;O~uY)&-kxaI+7;l3Zr7h)9Oau5ie$xTFUXYAB2w*m?}fa?Ihys7*%;5=;h<2k;)n!9{EKjJ11xxIbl&X;`W%muJ-1!cxN z3A7n40bKI_A0)Kdfu5dPOEajoS>o!pVr#b0C_-O16rw?BLuFvaaOG33io?Z_B}iJq z-(GZ?SVf(wkh*14;xBKscT3AW?Drj;Ck$2}XruAhsBK2?=UJ@oU)RP9Z^98IaO#;bVTw z<&(?gBsR2@yiiGn941S-l=mlu9>Y@t1x~>O&B5zj7^QA1$DlfDP&VLmuDq96(A_oM zOK*Ned$<1aNZ{WB{1gzR_sEg$p>qL01Bh^;m(DKV?n~RcKa0!xPrd8i<1%+p>Peq+ zVeloM^XV=0zm%t;97u1VBC6_je9ya-ds;{duczDe$acL%9Pc69^yck)(>A?vyM8mq zWauPak83sCb$6StY}aq`P84y%#PQ_NZl_5ePiypYMv;k4M)Dy&^03Z~BN@~+bOvC;sUjcP15@?lq>OozQJSNuhGkd5h7wboE# z4pAP|$f=Ci+_f z&yW=`*ek74tCiu5(WB`s<$F>DUG6Uk$zw3fs?}VJCv~Wdb(~~j z6&Hc5OBlK(To)1|CisP^RHLhH5uKfd&Z-I>U@5wB-pPRj4Y4U%Q{hqDEMNybVOi!J z3miQ{m}M8_YH4gx(KskE6D9*R7Ym zs$+{va~n@@|2UWwA?(k2ByCv78nMI>@%ggMDuB9Zl&%G9DR zg;AFjwWS(9(3O%qBfM_B5VdcOC|5;B;>N&4IE@?Y#Er*P<+g~9d-q1*gBe;Qyy;?& zSBn1W80nXoZPEq|8YfE`U?XXQH}S_I`6VjA%P4YMt#IAf+fd|cHT1!_0&FRNheF3< zH!+LpY6itUh@`N`FkZJb{8S~X6)Az@P!2=HIPV$;dduY3#H<~1{$suJYHRP2f1e6` zA>bT9P+kuM{~h3E01sV5y>e-8_u>!zesKN?eafqA!5J%-%wB#5clZOP?q|7_*A_BK z9H(NJ66NylHL%y%`KzYU02KCb(MVJDAy77MiPJD!HyJ3Ltcc^ zA?lGSSfGE$$?U~ds1_p48rK;t!!~sqqxj8S8mk0z)Ou+Y#GP>mf^($=62uwO;PspX zu~LK$52%?9z&iFv;DKx0P;o1~@DA~6bmw?4f97=b=m(z-{6fI@0YUz(1XSaf$Kr8qVR{`0mEN!O6 zd}yeE^%K4W2J={?7Fv^jq4JMS@aRsDMmhQ)Z{;}Pe*r$-iaEADv>$N9IFJ507kcfk z;vz3@%X|HO^SPegnfd3xD&E!~{ipY$zjU?yTKG$etd_5&BD$W4=n6?hmw9JbGjVo< zETU23cqwl2TG1xd&p*ZT=!m^+;T|?>FYH)}HP_Jh^;JT={ZZV^?`2KBMDS}IH2^H908orYJOJCA{5iu!n#IP!ToWwoQ}40238OQi5b zzIrh9qoD|g9l%ry!*8_=2~jFvMKCetNC}u|mlGVO(digBDrAuUu#DLV=4q(j52 zbT|B{q~?_-=npx78Bp`%in-hvfei`Z-&s`F2S>nL4MW3_kN900yA{g8%!Wslmh%41< zS~kN5Kboqgo0Pwg|4N21Mwq`u-$+!Lsc4u{GKA(L8C{V_LYuV>!kuVXQB3V%jY`5| zVGf@=M#Y)|yUSRJNAMU|H-)+}YOIbSGfd-b7}u<~6peGpVWEx2AaWn!k^y`Titj6= zoYy71cHe9-zt&FdSsy+G{272VsXM>qe*tfq3>|v_59j!Lhk4V>x7?MUKHcK;z4QLY zofS)$pLyEiG2E;ZCK;uxrM>!>l&qF6CSQuR#j0(3@pgT_SWOHSQ^6l#-iJ#kZqrM* z>&b0;{dT=}n_j+M*ThV4_%>bMu1nkWy6yVwSeUeL*XN0e;{4E-c#~CuT@xj*lorY4 z;#lz|sK%p>ghXx#H{KkE+z5A=eVG+mW69{}n5E#^Qa#gw9G{q<1g(a4=&bxKR{Q|} zo#I;LSK-pF;pDU7vYm3|K1*&^7?u-qa%a4JcU*fXuB=UH1*<|Xlx+*k+r!efaNQrn zdL5*{+m-UMv`H??YZH~4tWLv8G!6};29zeTTVv{4QW1@sH*DpX7G|i!FcH1Wstqf; zG8A(1YWg*PwHjAHGY2q9Q^sL(n$T>lTDWBvUc(l`$jzNZDpiNjE^vR2!boJ(733O< z*=i-s48nnoULR@Tj%2_=!H-s9$~9kZl!juFfqj!=?L@s4q?OS~q}D1oHA^vvJ776D zb@uD%WHFs}A+0}8g&44@DD(MO9eM;gPV{m~n93zp!DAmM_BZtA!{175x@ zQewGgF}`Tgs8*yC!%B?cXG+2E0GyNj_CKYkK3@uaGobFs?)t18H?=)<#!>B|EdU<6 zy1aSQzPr78JaeSS-=6facfI5CgY&mnEI4b)*pru|PM7b{*3wrsvO~MY712kwh_-td z|L8@3@S=&YV)d}qn6`(t?`2`3TR2iIp^x9g9oJ;gm*gHo6ZP>yvr)yXR4XFmK0q| z3Of0m$zL$}bJp;0Rs(Iaf||rggY~86IC;#zBI*FzM6w3c2VsOu>qF^Cb)c58Y+5Cc zR_%yvRnb>rT_sy0BDV$+)SYgPasKsl$?9Jx?fa85Di{DOUImL-g{a_>{}aM~mXD5MaXP-<02rU5>3g9(1g!}nnQIpyO*q6H9Eju|dh|@!~od zS^o7BT+a;3RUav?SNK;eaJ96yy!B{tRoAKpayH2{a6vfRVWeCk9S|g@c z60X+m@Kcrn)U38_^Csc|jaIwy==CHHG*O+jk@sncS%MQD&2;c=h7cb%z4#mJWT=H> zh{9w89fS^Jv(0?^h&wO`L&8|~jl&de00e(>nv1@)2GbH~$Ao1}W@IuRLt7GyQd>(g zFrC3s48v4PX&hpV#ZjXoq9*e?zly0`Dy5X8hsl$=d@bIdE|##kXHtb+q78+xC3beo zO3Les!BS!ALwN?v{X$lY)ncPQ4eKl2?=l#!aO)CHzQhm1S0K=&+t?|A7N5vR&dnD* zYNRh*ZdJx>F!?J3kDAqBvK7~(T3x&rJo0oz3fq`~3M#XVbIlVa$-xmB6R((7S0hqV z+UuD{krF6(k1Z_@8+u)Zc%m8;*x)TK;)#Zm#z_Sm6F$f#Nj#SaxiZYdKr%sh5~`u< z?FpLH!z1u59k?8CSLe-vM|J5bzfU9^D=~25=I9hb_-}^T#gV4%F}b zdF9HV_2r|V(*^t6p2;DMB;YG-qF)lS8oOy8d!ca;n<`Z2Gke)BQfP0o0u`7@>mJfX*dBOgRq|4&2OY24;N?Qfa_= z6O6CwG>JM6kz7U0$#_Vw8_i2-1oeE zTD-&KZ@hB1cfR_n9pbtE=9#B2I2A@ORxagcB$uCdrtni*x{qE&-lb$8-KD-OW}9d2 zgf&Sp0N!Nt-(rPb%y^6GyI6=^)W*~>}=4%-5?y>Q%(hVDyY_Z`+TxB)$KT?*zZjklmRouX1!9rwd{;i|at!?=D` zyab{?5WZCH2c5!w4qp~3s{Wv(-0vu0X*=d)PWtDLyxGxA2$tT>-(%uE_oP%h;?{Wn zw)o5h|Gk9iy#i*r{!6FAe+z{C?57>&F$ZsH>Av<;M|sLoe(BU6a0S;rD<9Z9O@e8G zj#qN@ancm5Rbe9;tK%`K8Uta3S%s~t5mF6l#~oPm!W~7Or2HBtZa8oJEbPM?L?ZLm z0@jkc(t!=l3b032bQ@{xBG%~KZkQAvZRO2N3Hs(n7zX2AL8D#D>#Cz@6`H_s7UeTe zlh&ZN>WZU73ZJAEZq>S4hsi2z8JTfrWAjMSWf`4f9>ePhJPAd9CySXXxNnIlwr2~F zs;S6=lTPI_{)-6zMOIJn-;~jm8@FxA!y$3s3lod5Q0Ti}ecm#&$9~J7f$s#o3kdpw z*evW<0jdE!^tIQ+zVOybOaIVkKWfE-Z}G|GG*}NoH;|e?W*(V;B*2=-H`V5g>Nzs> zda8`-(Cvh%K9pw36N$o;SlMt(iwYX5ZTh=xb>Ma!L4}F2`ItP7^;5teZA~G-Fjb#rI2p?eiFJl-6S{Z zl@qY+0GD4G0cGukQkLL)!u2o{Qws;I=*r-zMuzG@F${0P(tw_~iq(9o!Zjs6HBrOk z6Xg_pA&PQAK2i*elvo@tmY|&upDh@c%N5K*72So^D)k7M1I9I6huvwVOleV7cRVHv zah0BFxnTnXZJR`%PdC4m&PmGiX={6$Y!hdivMp`>HXXGjb0G;k;V`!NAl;@7LR)CU zV!nY+22TeDpiodcVv~+1W9eLyKU9z z(p1VZS1Nb7#<-j^vkZFF$+%*JInO2X?MxCjL8BODX$37;iV;_$X@nD5QtrgWZ=zZ7 z`%-x@7a$XmG&8X*6pPblF<097>Xqu?z4)SduNo#+!e@bZUFfwZXHE~lW&rT>08ayg zdbjGh_R#+T-UIN^@vJvKY=6XyoBe&L=N9y-cfI)bg73{6)h5y;_MLv@?Lz(0+lBgr zBrbM};~a5}iesrbKIT2OK%7hx#}04b>J{vKM#U1YW-puYq7G9bB>9qF%Q1QvH6CW# zL#*gwmJ@p>_KSMtCH*p3)4|i8C7N{T$_#IqI?TK@vY{wA1sbqPEOy#yS|+!<(K}qG zk{`P@_kzb~83QT#L0T1CEy*?MBy0kE=QLv6pV58_@rlem8Jn6Hr!yC&?aR`U%hPa$ zYBi}X>IAIs!-V08DVO0!bo8b+26xv426iMj{OLyGu*BiQn5V5Ya0^TTDC`g;HB_6W zxOciWPrAwzuCm_MAjOS(Cuj#14!RmBKWC^b)k~B0bHI_jTGARJ*)k|>P*)!$#gz)M zNL}@Ag2T9QgztvKh{pg48YEmA;1$jm4}%#zK`mEmVNk@NYhQWxrWeOerJxr1+TxL&4JO&`-O4aG$nw5iwN2pM9$)O4E_!DsH`L*2x7!sRCA7FoTG8O0voKZqr-2O9FF4}cso6K zaLsfr%hD1u@4TRzrU+gy=jDPQtyK9GHT(RF&>F8jh`{(kJ2UOdyEXO29p&pfkNdpLRd^2O67JOG<1WII_Vj!|*^JrPm! zHjud0cpZ}+@GFiGlbzj4=*DarYH2n;1Z;v@nfza({e?su%*rH`R}zmBSe3w9_ITM< zjzN)3Q6N|evmLGk>wtsdFa%R7tw{4ELSU2u<}o)=tO8@SUMd&yaOr0RCF^49Rp4_{ zYznqxL{kX9EMzM9lyn^Okn`?Qx)R^+#R5_-K}n8~xW18$DLrZjeuHWX*1mrQCfR~3 z;Pol+W}(0~v4h=P^vsM*po%Noe9K&N?iJH>%tC~*^q)pvXST=#g&9SJmI zMorg97oee;;Q^8?7m}zmL5$27+82?MT>#94r;0+qn`=#L*x+O zZ#d{Z@0CG(8hx=EErv*|=3rYBcD^taTQEJthQg9*E7<(tL1DuX)?qA?%t13O zCBrV5r4=)5%TaP}{aLz2F2(5A(#ieTDT%mhOC??jd>iB0V?@fz4cNR&)6u+!ZGpEG zm{T4jE#k#cfH{vaDH9rId;>_BCI!DWg*>;=V^xA5pT$5%)D*Bhgj1ss@=r%SO&)(eM;$+6_XcxVrQw&^WfXzG{AS@j`BIg!2oc zKThhOBAMrj`2vzneg!s8ePaApuaVEg&MqcSN|s^U-N(lB%%6$|A4hks%k{8>gS7*8 z!gW?p#7!=b$M;-evI@tjreiL|y+KsTc!=Zjc#*f;f8^!sCgd0M^ZEtg{{ZX)1o;|Y z1RLgnF#sO=*6Wvie;^0g`R^}ZyECZcd{ovsfb&F!eV+=S32AWeN#ac~Lc=7phnRbb zwTFz^Mac8S_%qS}A9-&cSVeXHfxmn2tnbadH*bI0U-ktOLPA&qn6M-PS&|?S#G>qr zvP2+?S_PH5qC{HvEoy7gszs|7cWTwTi~G_lajh#v+bXSAf1i72CNGI#ZGU`!|NJI7 zGk50Aa`$`gx#xV&i)3(g`a5>!9E;RXfE-n1kTjiNtcCDq5QN5lR6qj3saF}y#1A}6 zxN@TeD&)`ctiVcoy8WD;_?C<9{Mdzby8Yt&2!9Fs8sz53#>I7>`#?P)zE$qG+w-ok z?Bgw+wmhfct?%(C{o6UOXT7c?!MSg;x%9umb1APg7i*r|&=V?67|<3%Ul=+V=n^Se zf%9V}1I_bFs&=9Al8t_&9Ro!x{-Q zsP9JVA8QKsm*ee+(XWK1Bns09oa$T+Vt8PAOSDjBz~#~n3mq8*9r4^4SQ&g%ilX<9 z=@~{g;E99k!8K7)3g`+D-*&xa z_otJhHXjfP+j?8O$Jy6Cr|l8<^`?`j%Tb&Z`UPF=Z{%7=y4dsdS_~qO8g;#O#< zl@u++DwLsCeM{J-R8BAW7GRV_t&xGw#<}ew6sses1IJ@h$VCu2BnnNU833iPg0jIN zSW>IJqpbvPnTm?|46O8k)5ZmmQUPW=DuP022S*EF%ehI*6fsqU;s_T*sUwi>+@65D zcI3;(FqtQ1V78NRET+kW6ilq#nzidHJKyVF*Kr?|Q)UFDS6C~$EJnxRJxQEuTX=#!z`6mT@Da{C=o67n1v z@jp$a@xXJ3g{-U;kJ`7DT|DR9(hp)G}DHi%#2-n87``Em0GQ5~ zShAeL2hJcwmt3>ihb}0_s((~v=;^ZS!K7pD^5tcGEW#&)wt?Jwa38|&f&KyF+nirJ z~B{cm@x%D4%_)GaHv<9k(2Kq&}hY-Juo0CeFE;d&rDkyfZ7e!}N3{7H26_`_lh*2XE&8$*21 zfH?(pR#bw*rfS?SlR{WACSVnripQ!hdocs9|Oo+u1lPNHnd=Q_C%muD2xs&koVoafDfK`$pkb>L@>{6Ai zLR5sY6ar`TTG)%n_)yG^td4{vg0};%T{j-Rpf2-8>k7PU$1m;t^sGwRvE(5<4zv#B z*4r--K4Nv9XETUzpWbZO&-M*=|JCXE=juAj(M$Pp^|qSV+iuortEjy#3r)4VsW@yQ zw#M2MknF&b)V0V|z*BeOtY$Ap76E__WNd(3Ba1_TtQOggjMh(rVW0XZYCKL8+Wmy) zC2F9q8tWdU!Orgr*3S>@l~A4cV_f#aS67(jzfK+3udhLVSVe}i9B?^M zNF?M;ZSWQ>6Ul#~`MarnzNXzTdmpEAnYx*&xASS#5LA7Gix06LIgy?QwMiZBWXj=% zYMPWF*}(QD~N= z7efIQh={qdXi&oYvw%$!%7g+a%nh?yJ5;8D1j0KD@f&>7@`?{X$-i;h|C&@ky9?px zL2rXxKF(;je;?)?UHMhdM-E@ZU&gmB1Ll)Lezju3$`vOs5iWM}dX!FSpF(<+$H+c- zOMcRTlaSp6V3zFXM9J`2i!k&@Hc3O?^B(q|4<(o={e5~Z)=q*u(}VFK3BK!#yz8C% z9n0X>lf`tc%uQy>An=I*^1-Gkj%CpJE@K}M&i-*&uME@%?xu)~_PF>P+ITt_DEsZ_ z!NkP9hKYAU8j{*u5aimwa1a%Khy6xR*KKybbvyaNlfDn(uR-5|c)mqE9*G@q=Uc!z zx_&y{BY%!>?s+d?=r|CKTN!X5dI1UeJpQMMM*?|rsE_%iEu!n{8|Lq6|E(RbP57S6 zx4w<=7ocxIZvQi4ZJlQYXf23uyB)r@`yRXeN_uvS>sQs={f{T%=*6vAzr15%#iBK< z;8DDM-H8j9EnBj-Z}5aAs~4}~S5_`qy{ux*+GRsF3|S8W-#T0xvS8hMP95u4tgPTG z_YJETtz5Hi#p-2~;res!3ATY@5BZqwBcz8sLiVAOK5cwPij9(2ndhe?HJ#4gf{xo# z%I`3Z+f7WIARNn4^04R+>whgog8=dsM;Z#sJK?ZT#gRxk-P2)>HZq7H3aV2X<)Uwf4W|5_;JAp*QcX?mpr zxg8il@V{|?x|CKU1rtN<-*WuuE4+D_SHa^!j%o_ON}}~)ed`Xpyh_%k#^2Ks-V8bi z&N!_Lp0nbo3y8 zu3T{P`Z~{4Pz%US$4rFz*5(}D__{~?ZU49FXjskllI?W7H6R`HopkI({7Rh2tm>%q zYy@2ha?|mflj=ML8)1WVx}BcIuh{dA#LKqdk^AL8i>LqcjD7vkmB*sx(5qg%WOegW z;e-Uusbcc#b?r+Qt;hMHEOq2jURQV@y*5m`!mmIs4-Mp}jV_X#lXuOvaM_X?WkapZhw~<$fbUJO^MBBb2)+XBVB1v=-`93o1L1I2Y8tx@q$UTJJOQQD>>t51v z0a>!0NH3Dc7s$-#iS+{M0NT~VMEZ=(>LKPn((oxc157ykl!OGXYsW)m@!eEKdS z);-kfrX9bd@?I)m&KfRbGcRSYSu*RoZ>r>2nnsr>uLw1(Vy)LQtBZB~jdqe>(wygL!?W~o*pQN!>Fn32`6_LA3H{)Ul)XelFH-X*x=Qvw zL#=0N$8|I@QeHG`skx+K;YkX_t}7akZCha-+pfkIu!V^Q*20dOw)dE{Rch>%TDMAO zr?mE6w(>7jKAX)tkD2GPhO^klpD}h83;m2)XR(gg@qQ+M$9$V47>hNX0b~Vf)@I2( zQ)>8@-A>@@;#(GS_vW{3?ek!&o@UZltZ_eU{fb%pS;tdMPG}Pv#?KsQjqiwVBWE$` zb~fuyX8w*f>|h&z%h(PU`Yp3|u#PjCyo*Vnu!c`r>nF_mlyyABtY?Y*Ptv%bw0%Xa z{iNe5au(@i(tT|9gRJ-g)^IP|cn@Ruvd}%ux|elaz^uoZ^f_z%g0+4Q)DG71C_82+ zliy{tK49kitl=HD@omQ5VWGE~^$zQ}iyf^u+~2^>k-y*DLY}c&kMc% z#_P%9iur5Ou${F1npoROyKG)Ztm{cTlddL>SCO_WiFFm}SYui_qZ?}5Mwzv1&5Ize zZk;vLJfflH4ARV6Ld{l7M}FcZn)4lP_?EW*o0{L!wa?QfT?7n5BT+(z3wX48P(H{_;pQriUWE%<`B&WF*SH5D`( zG!|5-Ce#qn*|S1TK_jH=rW%Yig^h^Cpm^3BhWbpb37o%$6!7$v!A%?!hTnz1(lUyk8 zsN?crI|2;iATe`Qr52B--h7&xENU(^iu5e;;^b5))?G{n@yA9E#$)A11s)ruDx(HG zmQ~q2#HiGZ`D5o0HCfd>)Tq)+ajHzit(nL;4%?w6w z((6fUdW+l~(mKUQrZyd6%nVL3)sZtascDumJIKsdRT+sS+jZqMHEYh)He-(7%v0(m zumDeG_uOeBd*|`b*354{#+a{@=sesucRB!OV)Qz)EOxB9g8w{i<<#Shl{yP8Qy}trT>*7V5Nwa{6$GcEFwV&f< zXOU)TO9EKzRQ|r+EIEhRsXpI+@Iumj0WmHlco1<%4wd6GBJVoMRLmuBBtI87j{F4} z*QSe!0f2vE;{CW428^gx*{D@l;(M2o=1Ylj8PT^Ao)cbDiFS!pAwRZ}rpt+O1%YJ+ zPf6eUo^=&zzLFSM5gm|~;<0|!=^A(`xSE836n!xkPkD}9Mw+fAU?hT<;$4wzFqLk) zjzGGGlE0ceAUN%6l8>uOlW?W7&hb~kBy zfEW*w;9Vm2Jm$(SWDZ;!>>^kQMJ8oEOq%~djE9MS4?Ys%o)VgXP5%hbqKAmOi=6fl zN#d%~^e8bNBgi6LMR|GUYChk^%2y7#hDwdB6&M8nBFY5$avgRww-c>FZPhIGeCln~ z+kpJEjTo~4ZQWpQA<$)v`YrPRq249KW>uTR8)`NVXEhup>TEL7H$ocOG{UT%HOd^*F#2{fhK&vhGBGkA z);PBHFl+1?q`skUCY%bMPsh(1XHIOGuyG=r5SnOBIIXdvp|#O!IFC$fY-*ciHGM}8 zpFO#FYQvO`Q`wZzRBOt)WP0PY*6G%?*GbE)W^+bE>&6+ZH8jI&eU;3daYS-o<7 z*{slPbJpo}PGei^9INdCGPm)_nRBfpuOUBaJgW64)=~c=M>o!Eo8NFu+kESoQ;)Xh ztzX!8vH@@`hz+kmYPyXt}lQ7IJLEidOVre#LPHf#^op|aA zR>%628&8^fvUSoe1lo!LTNaYScFK?op_NmnY-Mr3gWMOA{-F<^f`1{Xqw!CGPQQsZ7_ns+cPf}&>Wq4)*r!8KZ@S*%Vp zCRmLy<}Oz&qzUe~ln6|9a$~S{O68pdh2Q@o?=-KTbp>GHI32YZv>t0#J6)i-sdU+Szz zs|FD3Ba)M>0r|qJqRohprt7&*Y`Cd%Y(Q)x1%^MupqM!&Hd8(V?7=7)#P+LUz7lf+ z@aXmUkBH5Gtfw%}a`Thd>;DjYe05OoS9!_s+Recnd0G3B5^ggCO``*}6L{6`mkOqb zf;<(z0Z;v?QvH!-@!zKYKiq%NJck|`(p~JN`$we!^`L*w|L1QXyiGXYhnSw%X}f>2 zME?YZYB=KIJ>7xp{=nKMf3LP_sBOW6_HqYoTf@~FX@=I?zip+XZS}?mx%FdmY2<%s zi~alOzV$ejn+L3S=oJp!dUTT4n~VM1rrYa7*?PRz7Mm*{S#z*lK?@gS1@gSNg*$oD zdycl#x2(ilCGDu#(dN9^eEFDZi37$PHISnM^^Pn3dfEQ{P$~xwGD2xmZ_DRp!E1uS zfdBggJq{n!#CRrpWjoZjCxoKkA;>*q_m4krq!m2~vGe;!)+*lXM821jR4I59hLtvq0v;0Zp$^sUv0q&|we-v6zA%P9o#;<7${7q1Dxo9rEd4%{d3 zk<}dw;Q69A-Z9wg{P$_L>(bx>vG~FI`2VWzA8hoD^tOMyO#nz0Z6bt4QmuEC|1mvR z7W>Yu^`^Ornd{@Z%i+vEH5du!;A`j$WSrT>%rCBDFJ&oX{Y{p+902kJ?FZ0-Ax zeLiy8Yl_LWy(rX8uMmOm3sZU?HCwUf3K|1)*NN&8=Gz44I8bj!{D_^q{&nb9a2B3~ z^}33wOIG);b=|1?Jd#+p^LTok_;(>*l};qSM3{Egc~p=ae+yy0r8&og#lP3S^^mPV zx$$4e7aimEXKaL0yPo$J!XJb7f!uU{jWFMgi|pgU()q|rTTkaum(vj^E@Ar_ELgk#q(iwTYAdXBy#c4p#uu-s^eRIFnqh zKTWRDPx(r#-mh6-Y5IOG_?1?;U%P|>*}thYw`@NkBFjdAp4LlQ*@H^8ZNabR-WHrw2>)dkFzX^S^f9^wJTYm1jY+zs`#DQ&_rGN^=a!4huFs=Z(H9uR+=jh&n%m8eK z<&s2ALOz|q_?oK*%UOX)zyzY7E{9lL#!JlI2D{4u?EG_tJxx@|`C7q{SYxzd+M19m zBUiK$g-~Tatl$U;zG?FrL_0B{v7juLea-1?v<9551(=XT;+7=8C$mcxJWJ(wXmSe) zpHGV42AF5Eo0@y5F-{Jv^Q9?ds-YLaSQ^?UA2ap|Gbw5CLv+X*NdpP9oy>XiO&@eEx!*@vf}BC(F-sNjzMYw89NvL!mD*Mjjm)gRsViX&Ys&BFw4)Sa|`_#sp$a z(}uANNFru#(2fjZ%ETrix>+IM;+S)_CV=F`v~MNpQkh%^+fwCnC>@qlcpDodH~E8U z8k>QK zd|ef)m%ye*Zvu#^3dgSKlShQ4;M2O7=?_987&c=`$W)7?Eip4{0G>k4kkU!o1fUf7 z^ZdD19?KytK3vzIEEIk8>a_h6;2GL zf@e=!EK>_s08a^0lkiX(C{|i_1hU!u^ddk~L-Ps#BFdEtlSCOepU~k!LV}DD5+IHo zL!}YHS`)GtbF6Y0j26ZFr^AT5Si^6SdSp?3N(c*(TH|DHlLrNHfC;x|LU}Q&8C9@I z869r{-Z$#1G&$|?p|r3$bFPWb3$bZ~jCHPYjJeQ91J%}Wi~6$6$-Xgw_nXX90VkIW zA#+qp$5t})=sx$aRO@`>*$A!1S4rx9i!h^sBAv#h)oPttD5*%>YIU0FWyGs$g;n#_ zS(5C0X}&huR2Yk*a;ia|BY$D|D>yxB~fD1Z)9UX7;`BXr%^8^Rw zvj}V(VD15$=Nui=L@UkaH}+qi;x~SCMV;q<(6TFg`3?Cm*VK6)xfVF%T{ge5_$-^> z*xh0C89mG15d6ke)#g9C+V_a_L&qIVT(WY>`X&EYtcP%c7CfdL@ zS9z=WfKOo%jGjgFTE2k6d>UN0-v!&@Y>Y{oM82Q^FZwsto`thOjL5~{TIR8Y^b?w; zc>&fFp(CK-m3Ib-o?0V8F)95en83j1Q@`8582X7K{S{y?L7L~SSRGyFg~<{5oTh)l z_wf1Z-t#DpNrV5wGXBgO$l$kF#+$6Ml5s23Ze#Mx zG&;phN@oH=Ja9M6Ub3Gd4Cc8&6kjf9jW|5fRQxo{c#0K6#nYnsPqK_B*bpspSYnWw zrdj5B{AJRGNQrrt2ySE6IV|IBra{wfvm)cue}bL0CSv*pxCNH6hn4JbV)dwV0c-0K z?G$aXc69V5EpWSTQTcA2Kl?l?WCtB}17e*V}!@736 z4ju{+R2J+}pxpYBh}d6Yoa6>hW~TzbX*3(7MezF5p?RlmCfey_M1(*7vK~Ey0MHe; z)Ue@j{Jff-&2OP~=>W23p>s&|Tq2)GqEqB1ShHkO-*y65WN#Dp1|WSIj<6a?u(mlG4Ul@R{62qBj75RI>niw4WMhGP0Q!QSZ+fl6E(V0{dHej+d*#;8%4y z_iNVgsulFT0dNrZGV!VME5wQ?lIl40cX0a!3?XjQA^Bk4v4BTPH8f}#0!S%drokv2 zgXD0`tl;WM9u>ss2Ghw}2A5}e8u)!UCt&RcJimdjRtDk*mVFX{^-+`@#v-tMz_XAg z%UVLdk%R?^tE!d)vH%>^JG5*MRbhJvgj7&4p8zSJ$9M23||vCD}rb?j~4OQZtZfD#MV$fV|B&l5U&iplc5r_$p|Eo^OwuQ79qZ+enG%#KiI zKF4=aS_8PFo9Piq=N%Le{$2t^0oVb|U14;u-%X5ka2^mZ^3&jWFg?e|GNL7byAJX)*O z)@81>U>aaQsf~aWTcjyd5{}3bfBrsxH3T@mXtmj578>VkZ1!(_mf!|#IJU3((&o_PV`H^_O!hYWOGxW#>UOlW_LZC#dohF|;sEjkvwkLKI zG35AA{xV_2P&yb62Vr+rTId{WontzLPdkR%{N3&wQu4z5U&00#G!o>>(bgjTGtlKA zzI8`zdy<|K`?%pH+rDknyY~5^zZeq~xM2C1v1O zhRT@igleVHWDI7}W8o(Nc>qH{P$?)2YArZF3=?$?xLFV^BDY&$wYE_jj`kPgnyoX? ze?b!k-Pd5YnP7G`h~G9?Oo=2K;($ja1QYYH0pt`T;0q(qB|si#b0}oIJp$IqP&7T% zE2pfiw)400S1Eb&*$CeN+75E__i2Rx4Ehknw~?RP_Li=no-vNyPW^d@I)4{0S+p`` zFdgqAkK0H+!vtOrRPlh?lh09mo;9AQp54fA3lQaiX0l4=4iV zDHns-QD{9ybR5rBU?)g~05hcvMozhKE-!%t1qe07P?&x|xy^)jK@zygGO5EAUTJ%Q zQ96g&`PY79O3wQT!hZri1#JXA4w1TO2qohj``f7<~dKC|(4Kf{NAF7$+#-rOw*Q8&k(sd=mw}9>jx#^m?9d!kC3y5!X z{%FgoE2rD@tB6xCX0EXD2o7DlOVx?IZs}FJMQz}RI5dEeG+cu^ zTnVv4ETF_RpU*Jh{ANIN^6aX$+taR_QubWMH`jTlfLcIqy?X>)py_ z_EG$ZUHcTf9v-@ScR>5Wl<|HKy+qo_ae(7uKUnPVvY~-L#epxd{95yzMcU{LDME9+ zC?+tF5NT;8FeHWi8CP??{-m513b3+V%Ufs8iGZC?6vt?tp#|i)nULeT034Tx$n^}) zA7qBP2^OIWE96pC%totC&JUsfO^-MfO8p*+**Sppb1q1I08ko~JU7BSGY z;Y7$@S(IRG4l{Pxs2EDMKx_yz6++U0fCW&n?1=80%O+T1+-m0!&!f{3-U8|bx%u~V=l83eqq|=09{F>8>&4MI zWaHLA1MYC;$RVWCKScHHHWql+F7SA=(A$)?^l8Arz=^%>aMGvUmP+3ogcpI9 zf_VD4o%9Ol_w~-vO_zIg-{+nmx_-nlv<_RDSa@v;XdeGYkF?R_$-pGbCp8izrBASO zoLye8A)YQSR^@N&JflEkKyG^K5a!!N=XkL7ISC>i(%WeZ49G7jqSWl7N?&+V}^JE#v{C*dvX<4YR*n)nbolur$Zf z0`Rk>$1@%-fplQtiC=j7;W5fq2?+WlShxXfSJG2C!On+Hq|dFlpCbGZ(0-7c4__lJ zwmS}z5B9JB2mMS*S+AveX@zZ~ec-z5C8fZvaMCj$@pRL3Kf;fK9tXMUc?w~^?RJje zE7$*T(qo&>o7P~vEw*^17Tyd2gOd%vglLQ1PI@YTm%<;MhHwjLCWxm8n=}Vuz8&Qp z-Tu%$iXX9a&jGryXwB+%>ldtEU(vDpxYcV;Ts?ci%8DuQ4h$s*ujd8B>$wGk5rW)u z$kXG*V<+D4=IaXxzYKaE4efKMPUrTuecM{i^-CmxUE z{ce7|i|_}ak3nuc_9D!;&z+tH?x#xZ3v39}w@5STp0r9AJ;xYg3R6I^W_%zTNAU7UoA>S>(i(IdtO+Am1AyQE`l(_CB+X-BjKoKgJGuF^KwXi zh?EQ0KC`54gw-oaEXPIpgk=`gQtl)SZ^8{46e}PgfrO+S(+}=VG6{D2>qvZG=AueF<{&CGB22KPsJL;zPUqTzRC(EbQ8! zu&?*6PyO=6?us!cVRCk~n4H~-$r&G@?xdbC2&9SBz#LtdvQ20qz|aqpA84IGHppQN zk?35=drT}{WXn*P1ZTM9`p*xP49aM^X)6=xc*%`UGoRX5C49;!zcC`f7dQK0T@_Icp9y{IgiJ2hF$>v zmFGg513jY?r7V;y;+#Y0G82VX1TRYv9dp@e4obfq(@f+5h3i$|*B40~{k+GC_wxHv zdKaAtUkADo|E2e#Z6? zf&MVN2@aE=4}FZ*q&eywl5_Ky3#eL}e9ux1Ta;z-X+^hiFj&ZQBC z322s(WkxU;-Q>h;&I74&}ASuUONze0Q4+~Z|k43>!~Z}p3`lY^MU$R#EXwL zy|IGlftsy^bdsf8MFHo%uaXZ``F%C`ff{*VUHSnk=qohuTuRQP@=Y{&GmYFp7pK$n zMEip#UJRYhQr=kJ^U4xiDR&T##NI-dJSdtReQb7@8qjmSLrfe_5A5C?td zWx%&CCw?E|yKeoEAFA_Yf+mBU_{rBJ{5a?%5Z^XCesp_w+5JOTuB}(?;)T~2zAf(S z8_!-oq&KGUa<;>kZtk!pnhW;<$La-RPdrntsehumvN<9d=;H;>0^vFlaWu2et&5W-J@o&~w( z_9DW3d&fDp6MLL*&$N%?N9?-0?RM3@agVsvx7_;hZM`K2pAWYH>46v4v&3^R!%mD` zxoGNxXgbe7ICMe>D2facNRB+`qy+sLUy2o5x08 z+umLNO8khOd%bV``|x`W8x|~DpGpK`ANM@S;vSSyjPFv6U#p$J`|&-uU8FsXb^$5^ zx$zo>a6M=mh;IY?&2EREa8DykPT|27u?j!=xbHW!F~ z2O!pdpr+#*Ukitd8@^xZ#Cr$g z*$ekOyjo1W4sayb>$#qX*~HhmCjZUk8kWneMK)Nyxl)|70~3+wHxv6ZmXlGxzt7;o zve&IGz!{ujmrEz&?WXSzgzo`80CLm!D8kQzUIy{a&40JP>~{EZ_j=!Q=^fAdr!Cx4 zCkC~-o<~^zn#^_pcV+?oSPX3WfW#N)S*Y;5Z|!p8Ir5QIJm(;M3}_L^jps6i`PS|n z|C@f_8Q%uPvc5)i{wPsiWm#P2nH*UiWM2>Tzc^HhM`_{~Om1?UVA z-v-9d`o>;|-Be-sCw=qL8JGIU4}qV7Ql3AGMdM=GC8z>mEiLA#1!3Q_9y>sj_2 zc)IIn+VxI*ER|nn2oD3*f!zE$9N}4@c_6+G%&+^Mdgu1HeeoKtU4Q`M>pL$P zrGHh=As?#Qo;O(OSM(gRpJwxJw}dW7AtSADLQROc#Je(dzNn27AU=^aq&k9TWX-bE z@fzai&JVspSou?(#|LuKAx9AA+Ysltc(u)67p(2iXItmm<-Y5O$Bq6e!j$oDx>bzy z-EaW~A3%=?P-=!~&Nb02UUU#A0Z{ zKnm*~14j&`9LFEt2{F^exieTI9qqI2bnkT1!_(G{@VlVDrmjh@+`>Kb`}pRb_bsnJ z;|i2^RxViuH!F&dS9xMibcVp1w zmN&koIUjor;b%b4gWP`lWrX?mmUDFZMwdTu9z7sGxq8Woja;OPRvxaOC`Q|3Jm0Wm zI6p8LOYLH+C03B3JO@{Me5%#bX7@jno=)+(?FgR;IvwQ3>*ok}fo=uyZI`3JkE{l9ongncWv1X>Mt!Cx_o^|^8B(FD!$-9DW=uoO8zA^Z?BmeY zFyTfJ5iW$r8bHTsl8ImVcmgwZey>Q-E+;*SXHw}IjBqt*0?19zB7|3hP6hGJ<+t2? z*8Wp^fDTN3@HgcvwS2!Sf2Df&gDKdI6eN)X`A+WM%nMz3!o1<%Nb>cP_d2L; zAw5va<19cSwCyn8qUD%p37#NJu=;#1%)L#Nh(f}B*yhi%%c%$PwZs*C|JgcE7&Hy! zrt2nzp9Sg9+39L|$QcLUv5(1XY`o->&%e(Xtq`Te-MU@~#ZKsVevJc{ppE=Yg)MlG zD(_Q+@N>mr8vskFy=q{eD)p#rAN*(+L8%MgIN;~hD~|)kzeG-)C6)SM$m)}?BIG;f zeUHj-(_jH<(DPVPpb!>r-!cf11D{dp9m?K@LKq{oAVA}VeC!Mq0Xr>2k&2=AFBe3J zJha5mLtbJ&X|q&$Kt~2lDR7|zdc-I~MtW6fn;PSM5o3fe#B;b*)E0Pl2FC=!2!l?{68XhyiAwir$GM#XU&ow>PT)W)1qdeSlyBFah#v#%#N?Gg9&?E}`@ z@dnog$D3SGzZnN!-`YM?y?fOepQ#ypRrxbD0C#gt4QSE5s`QyE?Nw{Vo_(gG4q{K$ zqA&SNw{pYT_1Y2z0oTw@~lp6mX6qxPA+lM@U${7yMh`J}N&*1OJv# zGar%J*HYjcDS8u?ZlltzDCEi;sdOJ@0K>kCvYRRWH>^kEFHrer8vk07zmdETz)wYS zC&LBpYe`hpvz!yu)!n?V4xv*}k78t`R7o|T2>~fg5dsmf3?C~n^MtyR?4M{x{IxK} z#qDr6iTcVVF=0-L~AP zZ+%&{;J77|SM%X5UU?F9q;drD3RApKEwH<%9<^wn8t73o_Nh5N$jhs+fTMg2y=F4X zH^%!JYCL(8kTf+DI-}2!qNjBD(Srb7s~+~6`L;mp=PN;!NM#J6rIpLQYr?)>&;gg*sU zzto#g^1TSZ2O9FSoljjm?f!cAKwFn2^}yi~ZU3 zJJGRMe5U4!#ue7m_Nrtb04mXZbbdsW>Lj13#$I*hKKQTFQ3-=;5xna0HpbnSjRS>v zFMo$rfczpvI|Kb>pl>@0eZ-Sw0T)Sq~)D`d`!X1bl z@DAQ4cc2FsY(uNq7jxT?7mVgl)RCX6$**9nudWySpx76SeWB+=G*E3-ay3~cKgCAg z3;&A{pqxwePlyCqem^;rL}3A9YW^x340z8Z=4KLzk)dQ2zvB(w&?+-7C+2c}cqmsi z!ljsnr<2K0ZLz$;)Y)5R3;<`%-o%T??J@ANlW&{|_Sk z1n5POTTbsIychHj5Z?ysQSJYM@qgW_1uIuN+_Z4q7!rIyzF4f7;rWG}MHN379duRs zQb6a^0N%mz`9MBa31-;mP_oB_Ai2nn@0{0C{nKiMj|X*t-1we^FyDUa9Ctiw_t!4} zEPll9K%7evAv^x>Ac>OdWGu40&2StF;^ny_$)}D%= z(xs>MpJL4k@E4v}AX!rPN%03Xl&D+-F{N{tZM5Jb5^!NYulO99f@erRziroIXWU0RD@93o zJYOI@=+BsMft>u1??Cu-P}X1U{OEq(8Mp4Tk0s7Jo#!$8eACu$@wUFb4KJ^Qc14&_ z3f`da1AG9SU@Q0Z@3;7ydRJR=y6AP}T1vWTj@X}0#bJWj|JnX!n|-*}K0Ja0FNO!{ zJ{20@XiK@ZM^41H35%l0R%+@M;U-=tt`UT@KYJ2LovQ_*c|SD z26i)e0*NM#emLkQ70#V`;(NfF#vL$ZmP3B~T`|1N#Jl)1UTPr{Z57uf^v(QzeazQ9 zyI0utbmW_MWE#%x1OGZFyF3rj)udBy7CV3BX-teyPnQJZI8Irx7zW(4FWMf zCU%jwYq{ZGme^nHXx!XFJ>9V1tAot~cSkHse$5LzM%kfLY)8l#7vY7n2viLYWEL;0 zTq%lFVbKz71J5(4Q~>%3QwlgP&VyrOH!m_#`Fit$H&c)2I4AvYrTB$rgqMJh1-a=z z9bvv*;~bNYeQ9Np(_Y1|Sa-;`&+9jSKmB&g>dk>MBJJbE{!%9geosCBLJs6=A)vSv zGX^_O)qpWCPa`UGh@@d=6GrER**aR0Nwe83p@d{-04A?|7{&@Uv~~OtxJQ8K1M?DG zGm$-gDg}N+M&LRs1<#23m3BVV?@8suY=qZ>HiO)Jco5-NL7#&7Hn1LaI_r@0->~yx z*8%E*7+ZR?p#OBLiHT##Pe5*r22FKq&h=bohKUQXMa0Af zj+}UP%0eXqwjGcV?COLDE%KE?gAbAv_&_c2$`qfmbU=(TP4-2kG!0hvrd!o=u@;6L zMl*JD*sdTwtL%K<-kr+lhYWIL@!r+2>BIJfh_SWqECSF&Aojx zJbthYABzlc?vvqg2MJzAmBR|4n=nJdxBg?6`xU0=56JTPkI3>JYwY|^yp!tRDiNLw zItJwC_mv3$1@u0MZ{1~f{q6jx&A+X5_)NEbdk!!T3*Mx<%C6a%T3%x-103@mR|!}n z_P?<&HH(vNIN`(Pb&BT&wSX>z2_+n%XJ=-~*;*EjL}-5WaNuwa@shV$)jMo3&GrG) zj(9V?*6;woN6tQl>#r360gr>}^kk>;|(GzGRV@M5PJzz~p3IGo;W`Cp+*CDNg zT^S6=(20uf^BzX4$lcJ|EPyS!UGdRraIqn}5+Ayf3go`xO+YN@m8&qyal3NSJQUG9 zuzV{3RN;UNtqOR4aVX0S1^571q~5+bcVHJ}=lfc_ydHly)jqlr_P$r= z34q-4nu72a(8ZtwmDi>LGXdwSxd2QByu)KaQRs8~4`Tv9RvQDteYs34g z_SJ>(1E4)1x4g$5@3j?t z4P^!I;JV52d$>C2Jh8tDN})LUjiVcSgOK5reyK+GskBF(#U(ktXSWm29S}IqFk}f9#u{VUfG|O*yc9l~cow53O(x4ag= zZI@Tlkw@P7wcSr94>0~5v0~Y3UNXDM{O1VSP3DMww9mdqgwKZt5`L}~`^)T;hj8G1 z8rp8pkJ0!@Plsq8oS81V(HDjl&KSo(eyjU(_#dQU-{G156RMRihLKkVq zHcbzYOis;V;5XB7hg=*0$t9%*xJM}wK+s2$q`DiHt$44C>}3h^6U&>1{ks1Svs$AyzwuPT>8 zHt+P(P{5+nc(?-x02BIZuqR$rY%hbu8-su`L8JnRMnudc;7$Q+N&HFv9!)N#K#zim z4MICf4bYI^%;NgpUW^ZrtHEUr*0e&3jP%$ui34!Yo*k#y^{M@%lpV_X2ww@h1?1Ex zN%^?WQwSOb;@hrfyWX_4+Q*#^-?;vl-`8Jv=eOfeTEE1>S-A-cnOKOcve)5W#C&sN zk6I=;mkQ5c;J#p-H#-KEZN}`BV^BHa4`M=K!g9&)i@aRSO#qw^q6Ek;8#fn^Xk{R)g3fZo9Y zruYCzq>1ni?PnFd>{L<%(EyBjAzT>4bUa>-i6t+GT$Bx@XsA6VM6Ar`_j}C{^8*K-I+idsljduPeK27Cc8N%a0jUYGwmLbfy zbDZOjpV;|i)!0YzBX&C+{i*H)%xh*WaVNL-Y-T&=F_`1t=uBtsXPygvxwKSDV}p=s zM*-o0fujxhkTj4x%PU1)fqF8s4Gtrug_!R}V32{C9-U>Q0`a*CpULrc6yBV{@_|v~ zvm2g093wPn&jEq(f=RHSdmZPvO+Y!uGj3zf#Yg+i0PPfZo^I#Yq|Z|MH5cI%K&OD* z{OUrOZ+~=-R?N<)u4w=K>blvvet`UP>sl9?BQolzVn4lKrhUph+mUJITAn%xC}|~9 z1{-Ze(43KR7;Vux0lD0r;pM>(y`61CA;BAkUN-^{rXuV3dS5O?>Rk50vtVG>6~gL1 zb=}TDFus`XiR?pt`r+)`bf%qeoA##i?dJ$T3EBs8^Q~cDoo6fPRuJDF`Ki4Q{9%s0 zKHTn%t2^i0*FBxx;=aB-&&)MKqDOPO=>=pDCEc`K?4PINFrv@?BK!9z?O*cu2=Uxo zRA^+37yFy&XKHM(Iu6>KVo@3Tn>SI<)4m~ewp8+yieuz-3viQa`rp;GP!3I3$Ue>c zg_c2!yyV}Scax3~9chlt8k+&X&&o!u7T9oi6D zj{>r1D!?a!vS2p7iePc9h$ehVOzi~$2vLbt`;z_!;tdS5;$bC`V1tzkISs$31u%BP z-W7P?MbgELD(9I^(ZL&9lO&;Bd&dJ z|MZ1@?R6$DR*L*eZLCGDlYWXQhIFmyA(%@ZQvVozEmH^ zBNN2uw~!un(mu7eNBxd?ZZxaFY(P0kDq$te!o~(6RR# zEoKVNM6hqRi%@c_2O4_?9B)LFc17l!YD>o z@%f@yGyg^_{#c^V`PJptds-SK@GG-NfR!a*X(#U2lH(cPk`2-pc|+uR-FiXCUWV#a zllczS_ViccYYcqstNDnhqnollym~{64=E|+yld1=3*fG_0+AL!51AzNjgNl-v`!xB zEm7!^Qn57DYeG9qv#FSTq(?v1gP-Wyr}{)hGIK0DOfmd^6S&FbY;VpvUh+3%!ru)t z`(zqwE6D_EC_I(QBN<<%+GEsq1173qB)@VS=|FE=MW-TqNx^jPCJZ^u6mJDC<&Y|= zMuvu;x0oaWmKy<1Sq`q7K8%O(>6@vIRMRoy;eI>?Ha|TFbJI|`jNdKSW)A0PX=Sj# zjmX(}YZ7+>WU#0T&Q^^JB3oVMu{UA{vxP7!oJb8x3&tQND&2hVWP}eTX@~Wmn3{cus~i;uBnCd)Lh($G-{};U}SL=b2q`qNC1~ay~g_8RrdI{|6eJ& zp8hrXL{JFi@`+Ul^KG1Sd}No+zYNq*+48u3z3;fTW-Z6=c^Gmw1G``PYm(laNW=?u zEa+eX^Us@6V0e9_65e=bf!8B7Kn^w)bU0?F^E@yW!W2}naH&wSxW--A!fT1h%&>?Z zvd@tfz?_7Hq;aT5c?FQuXW$z%I{%xJ77{s^T%k1&Ga)B*R-sI@3mrS+wyXy}y zpArbENLgN|^e4JiBAwD6A`XX({TBP$EOGKDCJvX_Hyk5QmWurz`xpC}IpWei_LE16 zlc((y`}arjJl6v2%J94a4X)Y7;WOq(M*6;lcDz)>ft8b|n`Iw#dHG?#EcAkzE!TbJFP=dzM-Z>B{6cK3!dh0k;Fo1Ir zz!fw8DoDn?xI@Nhmx=e8G%F(m z9Z$ITotc`PH-bM?oK$^P7`Wk9F{uXeq%{)I+C!7-a)gJ0(m*l->5@e?NCEft@w{`E*fu+gA@^Z6zN(K281LRD}3xj z9z{uloD<-g$nDp~(_~8s{41i44Af`|FF^}C7?kkK#}}-LkvSQ z42*843*izRg#168oe6*(Rhjtvy*j(Px~uPFdZy>-xhI*KB$I2BNhXtvgpdOQ z#&9Jh0Rp*5h;k`GZio;N1Vtn&3&^oVMMV$|%C0P^1Q!vIRS;y6Rfy~%f7gZo?^Sir zOhS;OX1;o_UR76p@BZHRz9TN`#+YWpFuEL`3G=no@R#jEeoUk*ao}~zESl4;`a~|z zd-G~y$U6x~xJ&{;xz$oS;XZr7#Lbf`L06^sVp3h|v&}gNm0!=_DZho0aD4J`>D3x# zup23p{>W5TOxUM2^3fcHYNRXQZz#ESRw>+WFEQKAHq)_6MyI{ZY_~`K9?Tb89S5Z> za@rzwqjAQRzSIuJ*#)QfuJa=!iBUMS+d*06qY1|-P+CdAsX->zFX z`0&DM;eP7{wvd8V6c;azzPOGh)4=Q2R~tgFdJxF)X>5HmgrWIU5q@0YdPe*(+V`WV zFV6evR7 z;{Rmx+tU0$>AelRN}n=unz-4Gf7#`%R!UcR;&N}{72b+>WcII$2$AAat@$#|yj1fp z10Sthn`Oks?QZ-Im$UlGb)NW~x9~b|#pPP|tA_RmVYKm?o3-4RHN!vinPz@fBfjCr zzv*&TzxuK#ZuS;_*;{do=HA8%pfS%QP2vr2V81t^(Hvt+EltXJc28y*eO$SOQ%s3* zoLT4}$;KAr4w?KHIgh>?BfI0YabD9MB7D2B?-b(ZXx(l~%M`jvNyMk6%FwMQ1rU^q zbC;OO3Zdx-GWn3i-N_^JF7ZP-Miuym@ags@@seBjid$R#efzX7^?T?$r<^1A|LJD_ z%RN>rMy0MLJjMG{Mtix6%e~X&O zgvI$%ufq2(w?C$VL;%Ubdy8%xQ{4 zNT~VeNM%i>55<=9TnZCJ+{kPOLFupyzdS4HKeMv9M9!~_)P9bYbX)>M!1!6e%ySu_%(_Lq0oy$_KA7AU=itR zZD_rPwR>2z;|kde&v4_+uB8_!VFav(>Y$$`R(G49Bx>sVO;Zt+1W|DJrOlgE3&|)*Fb2nwrh(dTuij$3L?1Ux$f{&$}69G z+KZbhe8WW$__4z{ncxTN#|2*O@ZvTe$yLHE%NBq6#x=&RB0T)}AHuhuxb%ZObW9~1 z<;t6{5b%AOoMRf+`5~slu1rVFny}2}JZU)^XsL6atwOUDuNx_eky3C#Rw1b@lLw`O zLHtU5IPW!1B4Usy&8=~Z?7dgsXyw$VZBj%7w7g6*lgQvQDz5~?Atw(k{i(z6{d?bx zSF)%IP_6$|;f}`dkadHE%E34f;~obO*kzC!tV7E(94(Nd)5gb3XRLaAvDfZN0uC14 zr?#+a27{pbl92{Tzjr^CMCd(8Ez#1Fc{?}!9Z@|5k-~`|E`+m=iX^eBBk*jU-O@=e6131Bn;j0cnO zj@v5XqGy72_Ns&I_#H|=Wc6CL{!Z->$DOZKGCmplLGqJIMh~Fb09KX;%Rp|fd2!1KzhXbbp75t1BiTB3_L#qLG9CuP6Z?j=~u%Ge$ zn}hYh%U=u9LxF(Hx)xTzmF-#N8PJ2agDzAT7AMb zdh9ZNB0|?NzY(W0n-a+Jhzq>TC0-KBbH%twe`>1nY|OaK6JOW2OXm)K!q@fKZoQ$b z_2;J={q|J5Uz^%UDElv#)0o_Q|wJaj>UkRw$vMHxY4$KTs!xxz?Bf6Xb4zh8->; zQHpoY4^Kd!gluCm)n|AjZ)=(@N>vsXF4`do@T=(zWp1_2iR5hrzDzRG>OwFjqF|Xs zgCs_%HrjaJv>n$|oQ1sUIw_{|L?X};sq-ajl)|R}8`)vQ{En#|=~%7{hrrQ#9A4KL zb(J^P+PS=Jz;us;WdH+HnZD)(TPh9Ut%RcZ2UJ{rSA9`AhOLN|kQT__?076_mp6KY z!+K%&5dSss0#I$2Mm%VbnMzn45AS&P=YBh_o~m}3b|0c$uGzR{<+`n#X_<%|&Ur$~ z6c$FEyGF%>^hYZ~hCk9m*QOfb&mbiYhuB1Hi9dCP)U+Q@KPu{|%0~ISz_?(Kadfav z{clPe9lL;JzbaibO2&pwePnF77Ze7WSo+hTJnkT$)p712;&T#%p#?y-JpN2v9cLti z&|Mq!$EOB<;ip$m?QU?r;}G&SYPWgyR%P6%euwrt_7ueqZJU2S)<4(y=iX8AAO*Q} z^=NQ$x*tE?17PGv8XP?`j9C~=)GbRod6e%uoj!~EUE6gsManP zGhpngt2ljTGPT}|Ean8rjX^rcAPvb0PqpLL4k7yd*Qy0gEEblBN9wd5d6?))R#qFC zpGh@r1QxV>;tHMmenn(@(#7H& zPM=q~zoZgY?TA&wYQL-6A3A{9wQ2pC-RoCxSbq-Ymg#k=hA}MbV)Yip+R>q(>PP#; zn%3^StWiZ{_)-6rTPpb7U-_;|e2n-nfoA}PUm8CQzpmVWr4m;0s)qi{I90C?#!sR3 z!930cZ`xnMYiVX={N6_V9N<$x6|Wt{)p2@?1YWHXq zM@&a4Lk!LGn&VEk?-&1pg z!}|M|5x)kw4yfXL195eHsS>_dyEs&PJrLiD>yT)?EAVBqB&07=o7zg|in+U9m-vxLbehP7CRazN2mZwl*yk>c-;DMA3zoA{*VI&?322_^G}hA*2@} zCPt}oG$QDVoP)yTxi6}7=mqe${a7dzDGY|vKn|#udkt}Q)K|ifUheNU;TDZI1ywLF zq|Z}T(5|Y06UWjDemnSXwH@C|{2t&(Ko!4dh`$KD38>@XcD%Hr-*~8T7SBb2Ch@_I zI2xY?V$Gpg$0M%%v8#Pai`}Hv`*EB^bbQ~p&ikOyaAjYQmFNeR5jEwzI3=2u5e(>b z2>+N-4-dt^qjY9nsJobYFgW&A^0%sHq}_jt_$9#QKsA3miL2w9O8DW*e>i{d+vpp9 z9khr2d?)XJ5t|Q1;=ov-iq9bN1;7eG9S4{9{@(<2WOaN#aNHQiXSk6^xRo2TR}0c9`z@`l$oK~epEv`m%A(Z*$bZ4_WdgHKLh^-RP*x};_CQYCH#ox z`{5cl-`iioZ&mF`d0$NYTHt!1ir8C*V<_iqGT3)$w#C{HWzN+)zJwk@?>p{I{Uo21_IDZ$0s? zz;>XD=UK$n@u^DqQOoVaHo#pK{9fR@)p9iI2SZ7q2vqTFB|Z-52h?$JIp!<+R)_BI zRmJglwZEmypn0q%)>7JE-y?3_kKJ)0y>G83HrGC(CgE0{ofaqtT4NvMX|3j`IXD+J zG}SCa4ZjJ>cQ<&&eau3k9}xcu@EB0V|7XP2@rz3M;mUUe|MzQ`TPpbUHjI?#QsT!0 zCj(V{HWNPwxByVc!R6Uop%>n-JV)B)(xnF!Wo=ND`((8sJ4Xt#R#b|ySS`j-=(j;R zz6w6oaWc_37^(s4fGXY%#MRMK2|sE%e%N-pw1VGde7D+8?;?Ib@Gzi(Q=0Y6W5j<6 zJP)Yj;BuW)Dc3`flhiZX_U~$?gY!p5Nm^+tDB2%ssfUC1h_&%*8%+g8i_%7A;PkOT zj;wiGCP@!tcl0#!W!gSa~OSHcfhepNi*zuoPv;Ip)4q}(ep!T$ zQI2|YSTD5Uvj-01<$4W%o$63(>#!H%u{B8G#jgbA*xp57seEiY@j1W(po-^8;_6se z39qa8Q#`o8hh)&-55jZl<}C`%EngR#6`GHW&^e9BDiqazAwpT>l~PWl{3M2fe19kb zqROpM3mXk;v%y4jOsNjKf!Jn=q8-B)g}w@uTZpw zljvi6ELcuf7-B9D*DR9|N)59klT~>cd^Ny#%2?)1AEQv{2;#>AtAHxLR}fdn=PTiR zm2XvlSI#tJeqRYkklkgRPZjk6nx7Li%x`5Jo?=h+bA(6{DiOY<~r> zJ$!FU<>miOd>`;EP$_TY--*kf!H@%}V|mq{ya@PpXX#J+>D6`TjxW66U&FssQ}4F! zxm&kx-Wr@Kcs7E+z+P-5^tAi&Y5mjp$k53>vhy;l|5EF=ic6ohh(gw|tE#*aiy%?o@UG?a*_dkMq*iAmF?dvJx zuK{lW)%?bKkw*e%0qS`5+hia&o`q zWM3LRD2VEfB`2M>Zq1qMmaN|+|0?d4ao$FBS!qTGBFQ<((*nH6ROEPp%bpC_&@aNNZ4rPSxf~6_z5y0 zHj=yOfl@v?LmL|Zynh;3VU*&EjtP;YtaIubJ`gWD-RlcI~Q;3u&{3ul8G0*5fu>`;7d(o=hW1-D4Wz_wrVLUT7rYkZ{P4kXxHlj zzBhtLZ{?%kA^tt!A)t!y!^G9`NF}u2!+vtL9}d^Ms_$8w*0LR40>KPnyytzkTF9l>Ky1&=#;f3N=~ z6xat;@py{3I(}6NKPnzW+t+V6bG;gSgCf~8f{OqCy%l_>Oc=rEW5ibiCjeD^ zP9?66(<|Xe#mBEFuqjYMh0qU_{*pvoKcwR+yTJQjsNnM`-|6+g7z+KK`0K!%Koy_2 zh^ynBO88#*?EPKP?%%7uEMC6>Z1nh%kf14WIxVyh!QK-vaEe0LkwKuycVxeePQJJF zji5cB+BbsVmBgH^Y%|v*CKqFAar-isW+AHBl#An+!Y`ay^sinATL$B$zA^v5p|N7953O<+dohm;6 zK>QBiZlH?K9^&fwRwevs_#C!++mh3%zW|m08HLL33Lg1MBXrm@;;VtPfeIeRJ;WaY zeg&vw?~TEDxZ|84JnWTU1nFO`q#tVDS$}3l`lDmmiSclIYwz6bPdpvni&t+{wTQvV zx8ys%w@_sU^l5hm)59hP&BZS{N5AaUz2sOgJ5FdPKBcp=&K8$z_7z&*3diiIlJ7P2 z^2M5Q2@17kwu{B}`q7`)>#oFK+bg~;{r&ix*_Kx&y-2?W!?Sw7)~4eJ z+zEXj6Y-r={7J@2MkpO;7gVSs;ZYp# zADm;dCN(!(kMfBc$7<@<#%i>BHDfN4ShMoKB#*=X!wjEhg|VUh>>~b!Y$uMR6juXK zc4@G(5}AwTJ|*SftZejIago&4qMnE*sm2*+U%Zy_=RbpT-%oi~``5WsSziEu1*+}( zJN<*9*fiQZppMH@K{*fJ`jmhD{IyT};g`N1)I;dB7yawuQXW;HtNmWDye5t+@b%k{ z-lPaDX4~Q4%vpEx>g^jwKSk@`f}4y@YdgBPY~D8N(FNNUY{G%Y$*b4UCx&0Jebd%; ztJj=b8DQ%7YhTme(8PZ2&xRj({`rqV+RehhTJQ!H`MkRwOSXgf>e1u?rq@swenJ@p zD-gL@MW$ee7^6gps;aQV2j#8#NQ_t9A$VX6Hu=gdDdMt>C|ZfaZtsyL?10(2>xTPT zSxvKJxXy7Bm+0Y(b?p+QjghmH4VSVHn@A??Wpt(*Gzsp-p|$W55jTqc`a&cg|8MME zB_eU`{3YV*R}EL|#$`G@A{qOf9{s#Zxj{F+NLao}H@>XGTlDB9x^cC>Oo}n7uFnc2 zRO8*=IBb~3@}5}KczAk@J=L0y9{2qCqqH9WFic=E3SWlyGu%T>AJBFSR%TBqyO#yKU|lR(u}{IYrNMeG>W3Y~JBS@*xm3z=g_w}A7I&O$>vh0hP_B6EKY*nAAtxZNGP&crQB|8x*v<*iYM8QRP zLW^Ur!-o27XANQ_p6S!p^x}3UL#+e~dCJCAgq=p_N)W<-u(@vm7_|UwOjJaWD@Ct( z)O#A<^?U1}-!=xnvl?PgV@X`N7)Viet1_viCgOT3N>{e=FA!DIi?p`tM-Bg@DSCYz zr6!caQ7}@O#&(GADjR;f6N$5z3h572WElO9`M*KGe|7rEeAYcM7&;O-1E}`<9}o}C z7z~vFb*!DY&kvV(2jL^Rp#Q(REf^1WU-Dc3{%{u@)$i5fmO*&i=nlPpo1YSpx5GbT zgjlzg$CT5Xu6vb*&KIR0d?5&O{>9C{`@HAfTa;zU`&6%sAPa@ms_`@BdcB!$S0B1c z8I_hUquzjay}(wdD5si__Y-C{dL_pd^=#vnv`d9~m5AFj87yJ2ikRVq`&yLEwdPYw zpSBWo2Y<{}?}Fb^Hfr=;g03oQ)n!(?Zo)~H6D3TyJE945yKR~spDdGJ*yynnSl&oz zZE}K|C~uL7uiQr;#+cSb#Do;GC^`kmvJ}c=pdk}1?ZP#&1pQ3$Sk(032#mjBN-$;# zmP1O`g_eK>Z5WBy7-4PREjmtK)pfX3(hJydh53O^xP+CAVD2b~y1$NA16Hxrk}+rS zyA;auOvl*F=~0%|!WbFNJ6hbzxmHf+exu5?I(EDrw3qzM5kA92;vWZY0IKa}*5F|1 zUf_>_IyPJr%m*)DSD6>`L3`PE)4%%nUwEJPa?EOGWo4AP|F_Bx^S7lRH2UYOG(WgV z|1DTP?|xfZA76!G$Cp%7z_dPt_f*lv2rU_@-QkhCh0e-QM+e4j5wl}iv?{g{BbH}o zXeHN*xLG@s%Z%AH(MgL_7_5(URj<#_$f4@IzIfUdLQbJx+;!esbSw7D@HLutEuV}s zmpA-bCd`Q8{g;aWKPlgo{@DC~(%r!m4Hsy}MTCmzLiJkKU#`XWODAw;%{k^ItaUWI z<;{1iVK^9w{})5|R%*Bjf+!zXP4Gs+u-1a}C6J}5)?fjq4QtNp`1BZmz-^a<(yfc4 zC*r2lZnWNPNM)Ka!xRrY4Q8e(Yi8nEErYv~ObgHsG-ul~j+sCca;9po2Nf!I2{m)7 z(dE0%NaMhu75+m9(1L)qmf<5FEBvq`| z0*qp9Z9c=j2E8k)XEc|d5N{Q_JJ#$?MViaeCR9!ePOlkha!uw}4aXQJ-W<(HJJ9TE z*g;C;cG9V1?2N_3x$sQY2li<<`Rz47G(snBCH@WIcR;oMUp^bY3D7=gFr&%Ys4VyQg z?z44SAauW@)(1O-WkR!m@nYaX;LkzuKyd4-;3|0H87@@6`n{mT;BZZTN=&B6lk#t> zf1L%K$VB&Tb)if_-6O;l`8g4~0zx2)3d1aCqS^XIEp~$@KF@R*zFwQ4()E^I+TijO`r|>Sp1*Jzb$S? zd*=TM?=9i{pD->_xAOz)NOg99LYI2X*Fb9 zqy=gR(x#d!(h+b8-WQ8`-xqdFQBc1Zu$0x*{wdgaXkLktQe=q!wt(yjN)c0Nlp;$n zn073tDs+IAMOzux7#7&m&^~zIG0a>e5mO3fO6?23 zBx+5-h{xm-R*uvaw;Lmj>I(s-!T6C!ZgnK{#g8$s1I-a6q=#?x#;DhT|81HCehyD~E zcnLiJyj$~wJA<^|cl;&A=d@Xop(}MxFY2M)T95vqkTsY{vg9NR5ZhJkWnr`1GqOb~ zu9T6T=r8>bHUg}F;uMZ2!kxm7|AUO|m7Rs?IJ?tyGuVDxuhCG2Eg~$yi~7+rX%>lL z9^6lDoP}psVGJ^N6s?Tq)5lONo5W>UxYHNuW%VnJr#8?5`@+?Dx9r2xz(PtsD}Mp8 z!FxK^;(83kxni8P=~kS!p0YZRJVAi!G(SGI==ZP`L0ju8gGMaAPm zdkP&kLgzFPp93ras^k1M#MSYWN*I4WXix1MgZAX#g@26$1hAjid8xFmtjn{8yShW-3aJCL(UM3T&)K@F}OEdB{2)zwJ9ZP2i{eJoJLH#|`67Vwy2Y%__ zUv=4g&(qsZ-Mm!|2y@o0f%!YChL2hUx1ytaQDr6`b!V8l6inhrZyU|EfFb2i`m$-i z{$2A8UF_FikG|no{KL|ojM3b<6^5V{!jli`tX%Xl+Co;nbFhJ&mp2Lem(n;WPLB6| zUg$IYCmmKs^B{Gz%6h0gSLw3{1@Y;d3C9594lch zvaMWbvK!MtqNye~CcLmUFYDVf7`#cPyR!>2Y~IUQ&E&2^GMp&jt|ikAncb7<%@yh} z8kv`k6Ec&E_0dd2cLYT)rnjEuvASp>c1-7jjsa!EHd<>(;yKeQg5JYwbFY9cm@o>U zikf;*H!l@f-(84d$2l77FzqIRLqEm%DB5vK2O}{qMq-@EM0Z}Kj4=-lhfU`?y-XvG zVd^wAp2Z&X3Csc}0|sS`NRn?;Cg_lAk`J?cs7j+C-GT#otAwRIU`aMt{fXx29@* ztH`(D%LskQo>dr1)g>EKq%2n~QgA5@+EaCGS|1vd@=(&mDs0)dY8Pu0?RW%3;nrA1 zR>tdt@n>*xus{7RBNUppgt=qsV8}gkWc)dP#bD^-<48YY&>vqKYJTO1=biGrAMR@U zb&&q2VElRE!r%GVhZ;jps_w}h>gM`QpFopz?X0b*j2fEOZ>vg64gW+jVm5BsuiIIrusRcyhJ`oIv{R_j)?cQ~BZ z-no1`-(-kfcVP1H_*g+du!6n6d~4*5ve;jKTl0f^r5|Mc^YcO43!Z;9?@96&3IRAXN>jzH+?|3$N0%o!L*pGv&H-q30mY?`maPOty&A$rXj4f;R zgFgkqKLlZ6}Qq0N^J*iMp3LnkmNh){D|#xHUZd8@)&%>6R3_bSdG-+A#nYs%v-<4E zbsnEseH;lX8g-Ao(t^e&elhOX&BLpAi@f7Ul1{uwsH8IQ@3+R-4OZ0tjQVO<^}%P= z&yKBLy&z%2JfXpX(U=kX_~;LD5@h4-fpH|q+#cMBkAB0N(HHj|@bZn;B=~9L?TuC! zi-e+ia`ihU-h6{W$^qH=yk<4n|Eb>akN{z0mPTQvhHe!&4ID;z47bUGXHN3VGBxxW zVRhPgV;r!DP^~pB%3~WP`J}Es*2vT6SHJo@LHgOGpyOXD^mA3@DoOeuS-pu@9CiJ? zUpw~*t)$Nf27yGVvtM6=Y?Y1KV~@$$#x|H+%E#&&?J?mldrIj(-NDQ7PldTxZ-v9& zE8^~)WXZWvASBYEH9I*u`7Yzr-(-Q?!klxFkQa(KW$7<6o3P~uEoME5v#QK^_qeN# zo#I*}o5_ApKYLzyt~RelihmcySHlWjxa74rK^ za}Ubx0b%}HxX(j$WR1u?d#>TseqPHwA=7i^yx0;Q=bOTKTaZ4_nOpOKmiRZEt0bP+ z)4$f`^Xy%Ov(xoNEPO9JYpH)UObnkU({KIjOX#I(J#|jW~ssL@Iu$Zj*GZhFJ7V_emhlrrtt!?)j@eO`*pO$4oVqC6!Z)>(2txM~P&msfl z?ZmrS%y4!6N^F0dSJ2XGqVB?R2wjT1^y1xm*U$LzJ}rB@?%js#5Zh@2q1ldFW!)(v z;vv2G1O3?F^33lvs@l6>k6QVtaV5*9u-m{+ZZ5XcX|Hojsj%IicZ4=or_Jc{emEAa z3G+yG=fH(ZZzQK?cs)gaDn7sXz+m`d^<@o2Qfqnsc-4g>mcz8_nsm z)@;~Lmyr?^ihW(3J4IWz$LsbCV;`()@_-2q@mX2CO2W_IDZVMPmrL(5TnsDh&r8AX zDPAJGZs*pWBJ1;fJk4nG%iK+T7xXgUmx+f66ZgX>O0a&ztlVG}>L%(WZjoKPp>D)y zwc=IU$@k*B`I|C(xw2}>&7UE8l=`WLxoq0Q=!TQMMd-T))neZIuI3YcM8vcxmiWG) z6~CxWe2`cEKxVJkyz4aYXPB@t{s#-2ram)lxQ^*0o03!IlF3GIT9!;ZWu#_$*28d0 z;9UsgA7%ElGW{9b$wQzy8LSvP?8hoP2zm(zYHYgy#V)>Oe@SSKf3m$dZQ}w>dlO$d zGWDk1&KlYnTf%F#o!V=6y=d(eFI(9MZSMgaOX*Vl#4bK+Z;;s^+un~z>G+k5JclDx znR-s1od{nOu9MMSVePk;eWPJND&<4A{R7*&I!puqA50G=Y)y{&lNNg&Yv+?#LOCL0 zWzTj>tqdq(_*Tl#b`~y?660GcTa(A#%=dR&*^G{HOmU%IyvRQPA4s~x%D!WHZ!;d} zTTj$ig0uLg7JFK~b%Nf6mUH(1VROvjupducSsgA(IZyK1ghwkGi}2-E71DqH3<>@=B& z`+3XCD?~W!h2c7~)MwTSM~u#xjfr)r-{tikjCEo2(=8I%Uo^!Q7qpnmSw}tD0qRxv`8+UIhHnVyk^+nGwjLc ze#8C?15(_@0AwU?$!s=~WeX;5IJk%VUpN&jze!WSmxXZlE!)ajM_3VSg0;p%zQTuy z)xrWjhkx4(&C-7v<%w3*nhjHI87Wumr5$>C8qZy*9{;i>o(Pv%JNql08hL?arz0&= z=Bbz%y;a#aK0~$}PYFAhDdh9=TS7G8%XLOwHkpzO*jkDr5ZI6Ll@c=I#`|V|-50Mp>@!&!_8pa*4bSG_{XuYvzS5b=^3OmFBGJJ+tIc zVp@S&B0If)T4H+rENM1QFV8ZEhL}6HPxGc{2FAl*%?<7nv&}gt%}&fYSL$<{53}VM z?2@LzfQ=~8JUcdL%}#Qqwu7;R6qWLsNj%Q^kCqjT)p-kiFbi6alE zCNuJ+W6k4g7^NL@0@m~U2R$4!814|cnjjafZ|+M^X;{`%*RYjZ*=C+u!{&9KKb}3Y z|ClKLm!i3$W94zj4rHe+tg9(HYfqKsHU3vmt&?EDSGu{w;jw zjO-Nah}7cz;3SId5eGiD^w6Uf~_ZyPa9~M);EZm#LiZ6-8r?ThSoozoBg)fRTzaVPAD7@9+ zcc%csuL~c;bF7)pvN?UE{-a90CrH)G_Awo|DKX1G z&-u2!-6?Q3J))V3Y9LVe32jrTEWI?ym zE*}`s-?rb0H*Uhv-7_$XYEvs8crk3gHNvb{a z8z$8MNH!H3_lV}5qFiqB8v9$vv^2CvTRtP&i*1Tr=*YHvZO_Uv#jaz!cZ#vuF<#dT zvUh6F6IyS&N9#3u`o{N-`=LJG8`s)5Wx_yjuBV|dJwfX;Cd4NdCw5KQDJEwpc@x+4 z7pHbj-zlbLG5B|nm{A<)8r&&nW@mT<8;2&%O3WEQd*i&Wxz=ID`6n;jDHdc8^X8Wp z^&NhLvAB4|#HBmMlI&vd2yc;h_~*4b2p!M*PjO^%8Lh%wX250=%Tq_)Dvn7V-L+z; z_*nKB@8~friy!}tSm}Ly(s7Yv#c`=)KO;`)JYHJ? zRl}}`*x`(aoj-_5I5%~Xa@NZ9VdB-cC&N+kq^1=_9y@y)axme@0&@mVx?q@Fxky^^ zUoo2%1M(O-g};OAyqs5PhWjI>Hx{dX1Nn zYblO!!EA@>fuxAp8RfTIN&gk>cHSPCR8`#FxZ?0elwCj@ONbU=Tm4{+NJ1n5Gco1X zV!F^~O=cq#qwZT)6*qiaSclo_?WP@L!>GH#sz=F&a~^s|FHtAvt*5H}iQF-;W?(R%|R+#vEv=GhV zSL~5AD=ZqcF4@VxUtAj-wZg5LHpDy{5-pfHo1_g$xZ!Mb7#du1Wu`0=!P`YP8coEs z2y9u(s7Y;qVIa}z(}Xh)r+=+Zi)}{zoEmO2XU5s)?A3b;vKEdU+!*pHNn|eITVkVG znb!4c99V(W4I?#$Jd-_ z&dlrX)CPKlW4GDu_FNn1OYD>I+xIMuhG-ZJT-%POc#Q8o#4TuRo1h0dJ*Xd4YT0BY>(k4w@&}?j?lczXxU4NH~9^~0wmaA%? zZ?@PtD0cOE_OcbKJz`~$GU8s)W3@;jU&YG;uO71@T#H;n&>!BXX8aOL(_e#;%Wzv# zLF;|@@7~>VS-r3bA_w&{LPNHK`WhL3gSvX3HwAS>ZdCiK_9)esM%tnplkm(Hwvjms zMx1W)PQ5xY1PtsU6swmt`+W|XxLUirxnNJE<@@`7hZ?7Y_E?{aqPly`&8|qk(rB$)`}47=_sxDz&EIoO}#rC zE7>WAMAe!aEoYH4%MF{0%2C|CdOE$6p@CmU=}G>~Men5bF_S4!yEkfseL&4tSv9Js z>APxPQ{zrh_I@Acy4(=0&-nL7k4FdeSA2_tY*cCodF*^ zlJVPYR=tsYE2uuj{61W_Y8-2zttea+F%YFR7z^BprlS=Q&fo?Vzw`dMpUkj#jNVtY zOV7p}?zd9zYP_iBd)jc>JCwZoK6S#pRWr#oUHn(ro-@}l(yq6tS?xJ}%>4lL!uS>X zv8n+F<*Q8XXZc<;<2t#17o~AP|5N3?BCpDr(l06jox_bt!H!r7($uKc!P~Hg{O-IR z7yg()$l0NMRUKui)u8m$i1K&FaOQ#WDQ4NuLnp`{4P) zW4}2YuR%~qnO)VP3YAI%vyJ7uEub~{I-lH2!QCgFk7ra12M#s=blQ3(k9boyi7&Y6 zlKn~;>Z>ItV$*&-j?7dZZ%FYi_f-9qu}I$gbe2f_w5;mM(THb9-S%UUM%dh{XZc_l zYQl0;)1%YU(<3nQLL<=3z z+isa46RbaewrPW}VC;+$yU6rFx*7jW;1woMEY!(J8%{ z-=9Y4)>=Ew?5JCxrRVycE>5Tnd-oo6-BGztDTz3B>_0u&zkKVo5jn@+)6r`L_5c<6 z34P~=!O(NSqK$+8?|yn&Apg?$=^(uIl|X)C>B)gy#qgHj#?_~K+g9HQ_1Ca{+-zHQmxQO(>w-4M5j zJ7nUvu=c-U^X;&>+MKe})UGsL{~X(8j(O0Uv==9k#)FpoeapStO#6478x)iIbusBa z%l?+-?y;N;P5mNMyU%VFkx2W*TM)bRe z@fV@}qh1qgD1S<~mAcB#P-|syWt)cb~p! zEe?u|T%xA6kYGBR97|Z4Y`mzZzA5(OLS*u@6jR|sM2k>47+^(Ok0tp!%sj`mPFm}y zoc^!|btYm{;I6trEIKAW$zzi8+*q1xRZoqD}+Q^5hlzJ|kFXj@^M-qVm=?^u?LgIc9 zv3uV~CQ2f7AY2dXY6-2x32IGNGNgrToI0GCs??fHT>^(`la&>j;EF+i3jW4hFn@s3 zwI4PUHfIrkjQAo4{H`bHSubn}`qk1+BYM^wiJu2t095vw7YBCpoOF711UAM6gU zzM%P6Hw!;#zZypVYwqV%n`*Z%5%zo}IlZvw+#+cH4;i6SkDRRZ$i|0Tlo$^?>+mVJ zrrR-Pkt#CE!J0_OvGh$?0LcdVZILqiI}|I^EE??_E)nY^FxVS}$8rYdcziQkAQ2mW zEBhxeQrjB8@$_0FHBoQHH5(T0HM|rXk(u;-D`gbIa)Q~;_dR`bIHkoW_OaX3puWA; z8fVp6Jv5shiHcdhY(=Kjjrc-Sy5Y{l4u8G55mhGGwz9)GD!EQJL{S^9JW-oX$Qh!W zH+R-&VqMWxLw9{`LlUrznR>Lau-2{5G(}SLqA9)EY^eS&mccP!=yN8fVA}Odgf<`Q z)kC=X7J=h(N=vDO!KzY%g}zc4T9Pd+@hwIP9H-$j+)nwTiu6=ph0A1ak$N$s*J`Pf z(z@{_OwpFX1c7>oP%@>tCIhhmy)iABUS!dTptu&;n@8xe@}@=!HIY;O#bP%`ZNuQ= zSrG*|U^IN)ni%>udDEa=Q8wb;wUi_bBg6kTvf#>WgCWN&0zxRIvy@ChZyL%;hlh%e zr-xZdi?Wt#Pmn*PCrx{7Z98+Iddt|_8phM2KF01c5YsYXpweT_D2jKa3WN964Cj^B zB)Br_G`K7VqG3s>^?E&}BzT80!qy8Vz2oelpXaxY^q+CW2Z6ajwVxkPTpb%K;owh$ z{=DLeAoOo?>iyii^>mef?z*iV-P@H^q*4J};j4Siy%z*tbAKp8dyyi}sJ&ITXpi4m(O^X}@?(ydlJXafy7x&(xb* z=r?|*aOWl`x!rootIy7`+rXC5SL;zi@MGhh4z9gYDHb?&ZeYQtmA;on#4uwy&U$vo zb4E$d_f2g0SuL@m5%87b*oU4?T(7SKM5~$TComG!WkQ zgy)#TF)a3?V4TV@B!gdEp~3Si^}l^YZ*Vg48Nd)wEwAOo)p24a-1~4)?^XLl{!LE3 z{~DwpYTTs$=dU{xtzL>OwRH6oo7z7w^i@P*;H)Z%VyY9n=gOvkMoy&cC?x|fU zW!g<8a_p_(y$^hP{S@5r5s!R=x(2FvFCcy%a512cyAa{`I;R|WX;o~W8K!sVepHS zglc)vNv$@)I-vfpMO;_#J^Bgm?kGRUcm6JwVj$NJ^6{Q8Z5gKIiufpMW}p zEUTi-p?>EXW6{VxjHw~GN^+GoBQ(}d6hAurfg)%phkbISyiXy1F>oVLDQ{yx@%FQ@ zFAS)oZ+%d{_pJ!R{VxUcYxC~lddGDy_|F}xy{z7P3gU{J&fG>VV3Oxgx^Il<&A>9x zeL+xrFM9W{xv$D4+R`fpGHLh`mCxv*`{`q8J?YdX&!S)>F(;a(QlfhKTT;7EO7lq8 zUI_zMxvA^!r9%6(c`nn9Aukoe821gqREN{NlwoaDv0mJeG#W`OMVa@ouQ&mlX{c>? zvn!Kj@@q`Q9m|PPvd0QYEUPCPO~%dXMi57ZNA>MjrPRcgO2LLNYGBBlgumg#pum`h zbiJC7R0oF5)e4N~It)`iAcNf)k40OkK4v(`ZZvcFJq#Nv zQR(;8qG6#lP3@S+{K{66GNzJH42Dt9sBZ#ojH!ow$MAhL$5k^}by3g`mY$7`RKMmz zp-sfU0Nf8$+d;!QgQ1TB+W~dlcWIzEapToN_`=&y`RUi49JGUmzo$1>X$Pt^z96m- zR7U?*{8lND?hJx&1VNxjIz_E3UvpQ|8M~H5mOd)NDd%zl$@Lp`nhhKsx(czhB0?q6 zuTg&b-N-o?Y9QDmyQrQhB2o>>1=2}PmWVp0_G#x!=W)$@OpA(cW2(fFmd*yvL{pY5 zBa2Z-?*Wa}Z)@It8dBGWGp8J}8d;R(C@{6$JQc-s1A&%iS!+zj!7N4um;lP*F1l?r z+-=UbPE5xmv)x3BwQ6jNn)z1Jv%BEfJSxnTak6K;n8S-YLjWDX+ox$ z8KdN!Tbjfyy@$*cXVTvh_=_X$Nr(X*A{#1 z$0L4lL%|O&<4U!+KWcOBc`xgU>qPPaA&!ur^wRO!-p7-w9ZnKQqG-7~u{`-t(pz6i zTIqT5JG8lxd6%fubAq4WC%nVsotBBdhTv|-m}!nvZxw8_HhDT*hBfhL1-3y<`z_6z z8BclHICFYD$_w5Q-n_U*0;aa&LsrSYQdnn!*~|L)c-qN@iFru`|L z(b8fxs1dj`G$}Y_D)vh)`LwqB>vH*SX%~zx?WDFf+S=4CZ75xH%#4V+lEJP{7e6$7 zLdHI9)FZi!On!62srkKuZTt)|U#n5<1oB0`rfEWTC-$kDafkgYq;$?(3 z;#cVzJKCV%Wbh+b@Po;b+G&VzD(SAch~)HRwc{xMoXp^A`BL5_%_~?;6l4=~p53gK zDZL}K#dfRKBFoyGT$@qUYNs}+C+xD(q@SXlYNHk{8=GPg*>tpaj9t>|46jtf)oSe| z8+9&YvNq(jV85-lP?|YaTgajzoSmxGY8d&8J|H6BL%z6R&zm<>8_WW-#ygRLWe?Mm zxZEo3G_6Sa#8py!#VCbWeqR|H8n32JR_W8>E=)1Mi+H(~F;S{zqJsg-h{bLow0)dE zrK;Fm7j5`75>*Y9RA)~C7qQ4Wk1HS;k{?scm- zgI;!t9@>%rvpM0zt3O-4Fk;5xqs3+VXg1@l{PI{hJ3D@4TrN1mGv=DL?~#pel?{;> z(^vG%?#UhXsPrF)fZ4Q;8Fz}~?Nw`zkDibr-zxV_335HTV_^%fs3S%l+dM}ZsW6O*mFJ?{(`PpL@s2ZVgYX=foh)V3qVtUW zdF;q+D{RTfDqoX}Qyp2fm@XG;uQqE&Pq0pOwr`M6w(U))KNBkiQMT3@dHlZ>sGE4?WEzLkg&-JvBTiA%I}B=wwtI=xTi z56^WXO{y0KfQMpR$%lWW)^=^QlG0APx`zn=a7^ue z2B{2T<@HQW{Q%uRWD9 zT|%thviuMC8w2?nyv{0RJ2b|B8|i!U+TSveH`P4Muh7QS!wD0=pX5M~BnCxJ z@x-mXK645>mu#=V3h-@1dMfYilE%U+)!%EdT#6B{4Y}ax2GH`2$ zIno!O&(@Y^*Vu7Y68bcQy_pY=%j(4uRfEAd`A$kVx`L8rZ(pTGqJ#F#yct`o)lu6W z@xxR)_yQ;8UE72|VB7Qzpj`a`m52L%pdca)NqCN4t$d2D>jk%VM_?yS(Hgf=fvoLKl6(krF&)P7>3tX)#K! zaSWqPLhn-Lpx$8N=RFv@(l#^}DMNm1-S)q7Oj?+=Fx z)sn_P_U{hp)rLz(=+&vj=K>3X3caeYC9aO`m2l6`1AfQBcCQ=mIEbGxiW1!t7{8A1 zzy@kO$Kvog_j@Ar0P`VpJXj-DMh&MFbsdO-*Xz@bq)Cz$He-r$Qx6v?rx=)#BqoL2 zNDM_@pTi&8^OYbU`@yfl#}vO`mkx&NfexTbcfUz|;$`r80CimSMu6}1Cxi9a1`&kU zofXjId*8>dPt~Yi{a*PS>xWY8mFN7BmHBh-ZCFK`^sFBGo9xlsS%ze!PM55$Gn&IP z-XdFTeSSB#U}6)dY11JmnMJg$MtoVy5b>--jP*#ikb-~FO?faQ`}e!CP+^K&HSKHK zxCj;ls!xxHcCjB8#cGl6g(HL2<~FYHIN#mW?Qc9}K6D)G4zOk8Z?V4;_>HIj}r zkj9M5Yy0iGnM|W8qrkoS7Kfs1Xe?bgmXKrfVUM zd%{aGq){L4QkhYQz+Ep?X@x5j9`uGS`sOfTu;)e6>SI`!jEp1b|?2*aNOJ)?osx0a5UMgkBil2 z@@iiVRtB5daD%4UlhyOF@y0lYEdMvrcIYlv?G zwgJ`taXxW%TvZ7-RQQ1h_mBPE@7+I6#U9{>bwjJyZ`i#3Ott7AJcS*vB0FBsxwneY zQ(B`OZ%#JjiUmd#V&1lzY;-Y#g>g(z(bXwA3_{q^CZwrG*-6`9$;T~|NBCIw6@wuU zNCDM+c9 zOJ5Nfbgsvs^KqPkfohT81{!_|4r;K-ciZ_l_UNd9wh!aun(x_{{`ae zc)b$tt?ZMA4&u|_UEwqCzVyBAI#g^kRLxS#`hD^>@q`rnr1u2ok7-;o^kuzA=IvF^ zv@nv*L2s|cMjbhhtB$L7pJ1f3aJ5B_{vVj@hTVc1zV1)T?Cz;j(bW!<%Dp4vC^qoZ z;Mn{1Am6)oj@YxfpZF8NTR=76%RW08Iv=vi)+-Mv9Kzo^GecnQ+|no7}P^Zr3M@1zIZ$IAX84Vm2^X;9s2IDHWFHO>z- z`H*IFHnDGLIA739x9Zl{^p)4DrDLPoZSQ9cT2L^CTWL7y z^OfC_PO8JzO|2CxM*+Idm~c0Ci?I6__R%#$jU)TI#Lr;lMm;zH4{>(lS z0hB#J*b)M`ff%-!U@&1(0ToaYaR)(>MOjqbeE<;eC`{Nq0grS_U&Sv(nEgf`)3zrTS7gotv9Y7Z#=QaXY+-denjXsX!M@$MRw& zh{f!QCihwBUu4v7W@3Y`6LljG&pmph0)i>Y12AdJ>xQ}u$kIVyas_M&KeBwA;T5)a z^DPJ3m_M^s(5djIrSjQ)fr(idDcf{Y0E~&~r8jIC5C~LuAmjxM%I$+FpnB2!PmM(6 z@4Ba%J)Yr#GHCR2wxixYyp-34znwS7{eIJ>qkPz3X8k*qpHhb9fOgqXQ$OVpiu`SP zJ$~PBY`;I+zEQ<;|IPk*d!!$anP0?mVE@P(zHa@gBJ4M8RqNG;&l~GS#IK?cCn;i1 zenpQu>rUeFC*EONKQz6%SR$`Bc~Wd&YnEy)+BdbfnYFw!TeCIN^VS070)gPSnTLKq zMxCt_c?`6^;K5zxmzb1PklcmzDX8ojG=2|C$nMmkBCl69hEEG$9fUS|2@H)fQ*VwS zVw&DP+C}R0T_GekQMd7SiYaF;#>A`IyAh{(nT zXXGK@Kd^S=>CvMZd4B66!t3KB=Qs?HFUJIqSHuL4=O*5v zwlDe*sGyR(Rs~_Q8V;sbh25!6GRN!TOj2ZFuEF78voyors07#%(j2!}xQ6ANlovKf z+Z!tbEz>IL7G02b_!;&~9l*DRa6)QgQwvULhbgEv6ZB4^$I;aIO79k7m<}d{{cuzl z5M)K8y;lo5jP@{8o!uQ-E&ZIH`m?S-r#C25pV4Q?dhKOh`(HgmG`_CeZ_1v(>*m`m zJN~Jgn}o{xTqAf+H=ohdi@5GWYZIkv0VNE0*Rp?2ai!@Kv@ObYA2>Y z9kT8jPB#WU<_j!Mr#C7xo~FG)cQ1dL3f**a4kV5VutMq7V7M_eke-%Fr_sBGfH=1o z=E4ICbMgfui8}0w!Z+EDV&u@)!YrJGijxo&l>w z>rkk#Q%NI8AgARTCT1$ZQx%nb1_KJB8+`oqS1#A#sSAGlcq#*`18P;U39oIniO6Z=A@gv>`6?i5a za7A*2I03_$pcpZnB+ZPEe8cG)Jq~~k(M+UqWei3>8jdXv(hP$l!4Uy`En|KKj8SAb z8pp4R@E@5$9{IyqUM#&L=7SPh@JrUiD~Fm^QikRDw5x`i?xeJTc1R9s>f9X5iPFXK z@`C?~{hNO}INlzS17jHRV>xlgI&6cDLVf@P;!siUPDl`=Yg7Q#-U`^!aHOEpCbz`$ikr#2X)oHomDxi@xZS za}tQCr&TyDwIH04sv%Rd6j|PCV9YLuD^q>Z@^IE?r9#A#qO9Nq5nU%WU5^`QZ*VhJ zY$|HbwAq&5qP3;emsGcw{-SF0)OP5f)1OosPu(hO-y6HnSA(_53^=MMJmRtokB0 zn;T`{_Gq6_YQ)EUiS6KvDs1debCK)hsBt27L{8xo)D};e)&~_`?mA^AS_J^^mO}Wz zMLYAgA?6`fAOULwEm;PZJ&tk^Wm#jn5D}Eq+Orm}!0D=kPDt9wyjEz&(p)kFP$yc3 z{Bl|qZ*Ps8o#mA5NnC49W7*$WE@9uklztD<;7?90VSmmU5G>2n3PHKRm_dT7IYesA zv1{HOH|y6DRgm4Yd2(K6ksb!+-1KZJ=Vn!50D5URzZdw`a%p9;4=_Txd7mr<|1GmB zVRawnR#a_SCDd26BXbSEVSS5imx6B+k@bw#MzUwY%?ZHG%7op1&eG!IV~1snkoNAn z2e1V`WR9i&qu+?pSyKD${+sC9yBy!W%a)uihG}u??Rrhlg!)lxg+(hYQcE!Jp{G_S z!Tcl!8tP=zhWlbUbpPi@?bZLo`kR!0QikPF`1x4=)EdkGl$Y<{@#m*6`0yEPPv2+b zerKKZCO6rJ z(oY%*Ong0Bx9pmYL6<}MN(^6V`I^p=pd>BvQhp??bG1?;`d3+`9< zssB=ng%&N6|HVUm$^W6sCkiTmLg5oy)1~qQ6m-hZv@!^5F$%siB>|ChK?^6 zzBar=Y-iCg=ps093G*cE9zt1~Gi3usGzGIQx=BJBljF#lfbJrV95-x>tW(;D-;*PM z5w~yCwXuGG4sADs^>vi1D8uc0&=-c9%rBA)m?D2?JQDY#hYpYZAFo~ZaI}B#PsiI$ zSL}?o$Bf$}9Ea`&#=q*MuDL^t7Jt&C#qZ-pHaEpv?~C?r zG9-n~Oa6CIvXW2A#|(rSn(XF`$QGuf^!RmETpBpvBex4*K(?5IB={4s@m{RhgrPpO5+ z?`15u7a35)x!S~!9E1_q%q-ORHQ;nmvop)Rl(sTg$S2)ypoW8{iT-;;DNBIiv~)LtGFD@>H(n98Z0Kb_pi{%hTz(>z!p{AImhxk_0xBJ zZ31S!mAEl+Sb8NFU%56P0`dS|b}}$YUNUsq`3cvoWis|OEPgez3)BqqENY8@snt9W z9@WYEnanPi=H_HO3Z{0xQtjp0)mpI=chE6*5*vmksxd}{8Nxh4>{E?ECw$w0DcVYH z#Y(|z-J4kBC8~hKb^(yeEFG-JXlot>QBZGv01Eb|rtb*u^hp9;^%-1IImbsqdW?F`%RprVja?cD}{aP0A61;XtiBS&4Tw{S_kL5{s#?o}QhX zz|pSnv=wTRr(RxU{(<&uUSCa5=B%uR@r8g3X7L!muO)2pd3zug=Z^vpcw|Fg?}I2g`nUOb?8LDGwr z(oqs4E#O)|nUzRjmpkE(q{NV0C($~5L}S_huI-pNfGb3zCH1>luB^Fk)Nb%W);~qL zo-!;~+P*y0bS&iziu}F3Uo2PNo)gEpvHRo`N_$ypE7c^@u*^31a6~5c zX>+u3ZjZk*(QB5I0|{s!tOb;6CSXYIRBdX0I>@x7m-!0?JAE*3*VPHk|2FDl^x_by z1BEzX8tjIXAp>iVzyLX0EQL^&KnB1#kW2|ADsY(H4MTRijaKL(fDDk+K)QvDB~V;5 z=N)rwGzWHqsW2v$8O(QkEqeFVkH!7#``5>M!5j37-?RQ2#rw)=|2l&8 z>nV3oEBNHcg}^f@=y4<^vP zZq_hBJgcR{%)+RTU4;oT@w#EXjhnyA>a_wUD*-H|tyA)}j(i0iFItEITLGfNDIcn5fg5CIuMnAY= z6mS1K)?cN#UmfWO#?h=_L%D?_f3LmNkTcWb=YD@f&iv^w@&4V(mk%7(puE?L*Qy(| zYZRucJBhqw(H?z1!-hx~dHnbCaFh3FJo;qx_#c@o_#jm`lu9g1Bv|b=XOpi803z`0zy)+4asJX2}N9sp`qWytcea?iriSH6?T3-S>HnW6lJ)ckFuWm26GgO{QY=(-0xo7BVOLn=zl}&vg2sAPvceeD?so;v1^iaT&#Z&$e8c52&4I_01Bs4u>4(HDPjSr1z_q^>iy1$$&Q zZzdo~k8GZ8Nv)-pCj@F-bvE{gR7Vn|u2~H#xTs06ZU51#K4j5zgh6v0G9hr7z-VqF zfblZ%9G;``I()Rv(i=&a(eRoooY{@^ zSy(0mD3T;lM*$ryIcm0!B#O_d`E7zWJ!un(7Ax1%4ck74WrK`L3&nKeAkJMe!OlF73j$bQ2 zE|8A}K_Yns%gt7Bi$Ytu5BSt9x+nMxXOed4&9-$r>?b1qtJ*~D3v+*ITW{O2MP-Y* z{+ctxERpBnkGAzVYU$i3?Zgwd=hxxB%Ub2X+SdQ#;UAnxqyUNAE25{9-_rP$@_Y6) z7ntc5=T2p(^|oHr>v`%`vSWT)T`eO;}Xu-uJvoPNC7d&S*G>ty`TsniIpLx@Lko)wRRA2rbr8D=@466<^o{4M=+_` z42N-qO&CEa#KFzclowr_=pMYVGJ1$6J-QdyB|?T77zhUTM$9x4aEwxfAKrGsIU{c7 zV2a1&5>2HUvx*_{W6f+830O{5lGPGMCZ+|X1eM9Q9O2=9EtW_m*y8eiiWo%$3t#h? z@3UH=Dk0QHZ}$YosgAN1_P7&CO4SaFU01?#RSS?Z6h_OiL0nS{>PfE^rkW_mh+t(= zxsu#nO`NigBTJ1VxigN8;Ax#sM+8s9M?J9=RJa!81VY>(b^VWc&Ub%5EN+`NJRiRg zO*f9(mu9lQoU)!WEXRJr`m2=kP4WA1_nH3{y%*PB7cZR#?#5`~BzGsrjyvR?3=jK zv95KJ*T8e_G^6??C7cJS|DktSi|@3|JFFA$wDKK#=hQnai|ugyV_4seKM)4I0R5Bh z)YvYX$uBu`K23xWvThbU8gPVb3wT@l>{(um7A9JfduTpLe@hP%N6VZb>CYJ+Q!jH=UY%llC$Af4htkw2k7)1C3(T6&Dej6YsPUq?xq45nPIXfe;nkK2WPH zMxK(H1=r58A-Kb=Br?;C))vGvq0ANfS_{C(cF>sQfOE=6OC&Ye;xt%JS0*Q%Cs(xf zNyx+$E+vdYyY?1Z`TiH7V)4mt?gWS-AQ9n3) zN$h_gcrNzeoc#S*KHmMQozeHZ>kr2w4);IflrzS-a3n|dyE3N=M-BsEoCSP$ml@9d zvHt;ME;O1xoDp&_Vcuc5Z{Oj(;B9x*4(B(8?L6O?{BLM0oJr|wy*03IQl;bJoz;tL zN>_ntDcz~9sO&vC*s7AhQY#Wucc{|*;{K&u&ETx$>=n+`D^;mwg}(Rr{BalrJ!Nq@Q>LfcrKYwta==|yJ{*WNro9U`gx%+x^$zKBgI zPSmttYtCm>`dPjHj2>L0-K4fygH}c>T4rE>+{$gS^p9I>K4*1URT5k+)h4Q$7+2wy z=K<$uI{5*~fmgr+a*yeJpAYIIJ^QNVyr@t9tFu*o56VCG?*}KF*5hG$3465Wt$N}fZHM}mIscdD{tua?8YXKu z`2>LiTUJYMrk1U?SyhL+851Gh*P{f%a6Wz+NQt?@0zc=LO-A#S1&;(sF>RKlRP{lA~Ym z%ptsr*PW;@t@b%5^IInC!c4D!6Sy*R@mm)500gnFs|{DEgRZjOCzZcb=})Tm=+g{J zZ>pBRsl=OV{Ab*)u)c>kLCtA@N~?Y`urJn$N66Zt-D}T491Lm;No0$y74PrqOvin^ zuH(|>jGr!J^vUPivw6RZsGv!S4;0>qo$gtsb*2Y0DQ!-xRhvL{rnot`lE8ta_2X3= zZ*5WL1P0GpZZ36{Hf@}QaFrp_On1-eT3@(P(@L2?s30&`I<;1-dIjTbs;c!*EKl+$ zmLa^z58R^qnjO$D)^N`3*Mp9^E3OWZ#8pgWoH+h;7Vn;@M?^2 zKCY~qNxrUGtwh09=GM+^8(;I=^k#`sJUxAo{dLv8Rn@~t? z4#aaVLnX8w(l0?D6`F4HqJEvpm(DcdH zRDE*KR09=MJXiWMYq5h$NsU(cLN|u+gnUqItE5)Rt${Vv{)qK!a{K#Jo$;yJ`aCC5r1nV(a6s70opEo)obDayMG^A`DY%B)pr$)V zmzKQy{u8YU_UGry{Rc;5J|vxl9y%a##eivLjkV6%;+CNuE>zY*#=gQt95Jtrxgi2y z&vwqrG#h0g4gdC-+BBzRo&ZaxW}IY}P0k}+L2F*qHpwPEf^$Uk`zlMEkAQDI%m}

ys#ZP=@CLUts+e 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

HN_`@~LR+C^OJe!=tDQE_e)MI2O_@Ci9 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

|IP=uA&oqHp2c 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

C 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

ZLp9#m>6p>}PiU*zn>H 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

q4ic)pD7t&A{vGx<;r+{HF2x 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Ú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 From 2254fa8657b148a61fe57af8f8a6e4a1289fab04 Mon Sep 17 00:00:00 2001 From: zhanghj Date: Tue, 28 Dec 2021 10:03:18 +0800 Subject: [PATCH 267/385] runtime: fix a typo in kata-collect-data.sh Fix a typo while to check if mountpoint exist. Fixes: #3365 Signed-off-by: zhanghj --- src/runtime/data/kata-collect-data.sh.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/runtime/data/kata-collect-data.sh.in b/src/runtime/data/kata-collect-data.sh.in index ab84f5c00..adc33564e 100644 --- a/src/runtime/data/kata-collect-data.sh.in +++ b/src/runtime/data/kata-collect-data.sh.in @@ -714,7 +714,7 @@ unmount_partition() { local mountpoint="$1" [ -n "$mountpoint" ] || die "need mountpoint" - [ -n "$mountpoint" ] || die "mountpoint does not exist: $mountpoint" + [ -e "$mountpoint" ] || die "mountpoint does not exist: $mountpoint" umount "$mountpoint" } From ea1a173854af892e92af95790b5726d64d04edf0 Mon Sep 17 00:00:00 2001 From: Fupan Li Date: Thu, 30 Dec 2021 11:25:41 +0800 Subject: [PATCH 268/385] agent: fix the issue of creating new namespaces for agent The tokio's spawn will only create an future async task instead of a new real thread, thus executing unshare to create a new namespace in tokio's async task would make the agent process to join in the new created namespace, which isn't expected. Thus, we'd better to to the unshare in a real thread to prevent moving the agent process into a new namespace. Fixes: #3369 Signed-off-by: Fupan Li --- src/agent/src/namespace.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/agent/src/namespace.rs b/src/agent/src/namespace.rs index c821a0acb..fd8bfbec2 100644 --- a/src/agent/src/namespace.rs +++ b/src/agent/src/namespace.rs @@ -100,7 +100,7 @@ impl Namespace { self.path = new_ns_path.clone().into_os_string().into_string().unwrap(); let hostname = self.hostname.clone(); - let new_thread = tokio::spawn(async move { + let new_thread = std::thread::spawn(move || { if let Err(err) = || -> Result<()> { let origin_ns_path = get_current_thread_ns_path(ns_type.get()); @@ -148,7 +148,7 @@ impl Namespace { }); new_thread - .await + .join() .map_err(|e| anyhow!("Failed to join thread {:?}!", e))??; Ok(self) From 3093f93a6f466a69bbf8a5eb15ce4b60489582d1 Mon Sep 17 00:00:00 2001 From: zhaojizhuang <571130360@qq.com> Date: Tue, 4 Jan 2022 11:42:46 +0800 Subject: [PATCH 269/385] osbuilder: Restore Debian as a rootfs Restore Debian as a rootfs. 1. revert of #3154, but some change 2. update debian version to 10.11 3. update `libstdc++-6-dev` to `libstdc++-8-dev` 4. changes discarded in QAT are not restored Fixes: #3372 Signed-off-by: zhaojizhuang <571130360@qq.com> --- .../pkg/katatestutils/constraints_test.go | 1 + .../debian/Dockerfile-aarch64.in | 34 ++++++++++++++++ .../rootfs-builder/debian/Dockerfile.in | 40 +++++++++++++++++++ .../osbuilder/rootfs-builder/debian/config.sh | 20 ++++++++++ .../rootfs-builder/debian/rootfs_lib.sh | 7 ++++ tools/osbuilder/rootfs-builder/rootfs.sh | 6 +-- .../scripts/kata-configure-docker.sh | 2 +- utils/kata-manager.sh | 2 +- 8 files changed, 107 insertions(+), 5 deletions(-) create mode 100644 tools/osbuilder/rootfs-builder/debian/Dockerfile-aarch64.in create mode 100644 tools/osbuilder/rootfs-builder/debian/Dockerfile.in create mode 100644 tools/osbuilder/rootfs-builder/debian/config.sh create mode 100644 tools/osbuilder/rootfs-builder/debian/rootfs_lib.sh diff --git a/src/runtime/pkg/katatestutils/constraints_test.go b/src/runtime/pkg/katatestutils/constraints_test.go index 5513b26fd..9444fe8e0 100644 --- a/src/runtime/pkg/katatestutils/constraints_test.go +++ b/src/runtime/pkg/katatestutils/constraints_test.go @@ -43,6 +43,7 @@ type testDataDistro struct { var distros = []string{ "centos", "clear-linux-os", + "debian", "fedora", "opensuse", "rhel", diff --git a/tools/osbuilder/rootfs-builder/debian/Dockerfile-aarch64.in b/tools/osbuilder/rootfs-builder/debian/Dockerfile-aarch64.in new file mode 100644 index 000000000..727506f47 --- /dev/null +++ b/tools/osbuilder/rootfs-builder/debian/Dockerfile-aarch64.in @@ -0,0 +1,34 @@ +# +# Copyright (c) 2020 ARM Limited +# +# SPDX-License-Identifier: Apache-2.0 + +ARG IMAGE_REGISTRY=docker.io +# NOTE: OS_VERSION is set according to config.sh +FROM ${IMAGE_REGISTRY}/debian:@OS_VERSION@ + +# RUN commands +RUN apt-get update && apt-get install -y \ + autoconf \ + automake \ + binutils \ + build-essential \ + chrony \ + coreutils \ + curl \ + debianutils \ + debootstrap \ + g++ \ + gcc \ + git \ + libc-dev \ + libstdc++-8-dev \ + m4 \ + make \ + sed \ + systemd \ + tar \ + vim +# This will install the proper packages to build Kata components +@INSTALL_MUSL@ +@INSTALL_RUST@ diff --git a/tools/osbuilder/rootfs-builder/debian/Dockerfile.in b/tools/osbuilder/rootfs-builder/debian/Dockerfile.in new file mode 100644 index 000000000..685dd0f4d --- /dev/null +++ b/tools/osbuilder/rootfs-builder/debian/Dockerfile.in @@ -0,0 +1,40 @@ +# +# Copyright (c) 2018 SUSE +# +# SPDX-License-Identifier: Apache-2.0 + +ARG IMAGE_REGISTRY=docker.io +# NOTE: OS_VERSION is set according to config.sh +FROM ${IMAGE_REGISTRY}/debian:@OS_VERSION@ + +# RUN commands +RUN apt-get update && apt-get --no-install-recommends install -y \ + apt-utils \ + autoconf \ + automake \ + binutils \ + build-essential \ + ca-certificates \ + chrony \ + coreutils \ + curl \ + debianutils \ + debootstrap \ + g++ \ + gcc \ + git \ + libc-dev \ + libstdc++-8-dev \ + m4 \ + make \ + musl \ + musl-dev \ + musl-tools \ + sed \ + systemd \ + tar \ + vim \ + wget + +# This will install the proper packages to build Kata components +@INSTALL_RUST@ diff --git a/tools/osbuilder/rootfs-builder/debian/config.sh b/tools/osbuilder/rootfs-builder/debian/config.sh new file mode 100644 index 000000000..f87370921 --- /dev/null +++ b/tools/osbuilder/rootfs-builder/debian/config.sh @@ -0,0 +1,20 @@ +# +# Copyright (c) 2018 SUSE +# +# SPDX-License-Identifier: Apache-2.0 + +OS_VERSION=${OS_VERSION:-10.11} + +# Set OS_NAME to the desired debian "codename" +OS_NAME=${OS_NAME:-"stretch"} + +PACKAGES="systemd coreutils init chrony kmod" + +# NOTE: Re-using ubuntu rootfs configuration, see 'ubuntu' folder for full content. +source $script_dir/ubuntu/$CONFIG_SH + +# Init process must be one of {systemd,kata-agent} +INIT_PROCESS=systemd +# List of zero or more architectures to exclude from build, +# as reported by `uname -m` +ARCH_EXCLUDE_LIST=() diff --git a/tools/osbuilder/rootfs-builder/debian/rootfs_lib.sh b/tools/osbuilder/rootfs-builder/debian/rootfs_lib.sh new file mode 100644 index 000000000..f6aae2636 --- /dev/null +++ b/tools/osbuilder/rootfs-builder/debian/rootfs_lib.sh @@ -0,0 +1,7 @@ +# +# Copyright (c) 2018 SUSE +# +# SPDX-License-Identifier: Apache-2.0 + +# NOTE: Re-using ubuntu rootfs lib, see 'ubuntu' folder for details. +source ${script_dir}/ubuntu/$LIB_SH diff --git a/tools/osbuilder/rootfs-builder/rootfs.sh b/tools/osbuilder/rootfs-builder/rootfs.sh index 1697e0a82..dedd45c14 100755 --- a/tools/osbuilder/rootfs-builder/rootfs.sh +++ b/tools/osbuilder/rootfs-builder/rootfs.sh @@ -193,7 +193,7 @@ docker_extra_args() args+=" -v ${gentoo_local_portage_dir}:/usr/portage/packages" args+=" --volumes-from ${gentoo_portage_container}" ;; - ubuntu | suse) + debian | ubuntu | suse) source /etc/os-release case "$ID" in @@ -520,8 +520,8 @@ EOT chrony_conf_file="${ROOTFS_DIR}/etc/chrony/chrony.conf" chrony_systemd_service="${ROOTFS_DIR}/lib/systemd/system/chronyd.service" ;; - "ubuntu") - echo "I am ubuntu" + "ubuntu" | "debian") + echo "I am ubuntu or debian" chrony_conf_file="${ROOTFS_DIR}/etc/chrony/chrony.conf" chrony_systemd_service="${ROOTFS_DIR}/lib/systemd/system/chrony.service" ;; diff --git a/tools/packaging/static-build/scripts/kata-configure-docker.sh b/tools/packaging/static-build/scripts/kata-configure-docker.sh index 43996b79e..7c5309021 100644 --- a/tools/packaging/static-build/scripts/kata-configure-docker.sh +++ b/tools/packaging/static-build/scripts/kata-configure-docker.sh @@ -122,7 +122,7 @@ setup() case "$distro" in centos|rhel) $chronic sudo -E yum -y install "$pkg" ;; - ubuntu) $chronic sudo -E apt-get --no-install-recommends install -y "$pkg" ;; + debian|ubuntu) $chronic sudo -E apt-get --no-install-recommends install -y "$pkg" ;; fedora) $chronic sudo -E dnf -y install "$pkg" ;; opensuse|sles) $chronic sudo -E zypper -y install "$pkg" ;; *) die "do not know how to install command $pkg' for distro '$distro'" ;; diff --git a/utils/kata-manager.sh b/utils/kata-manager.sh index c168e99da..40f647702 100755 --- a/utils/kata-manager.sh +++ b/utils/kata-manager.sh @@ -290,7 +290,7 @@ check_deps() case "$ID" in centos|rhel) sudo yum -y install $packages ;; - ubuntu) sudo apt-get -y install $packages ;; + debian|ubuntu) sudo apt-get -y install $packages ;; fedora) sudo dnf -y install $packages ;; opensuse*|sles) sudo zypper install -y $packages ;; *) die "Unsupported distro: $ID" From 1c4edb9619f3875d867314e09dbd9fea3e7d9a13 Mon Sep 17 00:00:00 2001 From: stevenhorsman Date: Fri, 10 Dec 2021 10:08:28 +0000 Subject: [PATCH 270/385] agent: Refactor arg parsing to use clap Fixes: #3284 Co-authored-by: Samuel Ortiz Co-authored-by: stevenhorsman Signed-off-by: stevenhorsman --- src/agent/Cargo.lock | 119 +++++++++++++++++++++++++++++++++++++++++- src/agent/Cargo.toml | 1 + src/agent/src/main.rs | 30 +++++++++-- 3 files changed, 145 insertions(+), 5 deletions(-) diff --git a/src/agent/Cargo.lock b/src/agent/Cargo.lock index 6c2215d66..ba9ab5265 100644 --- a/src/agent/Cargo.lock +++ b/src/agent/Cargo.lock @@ -60,6 +60,17 @@ dependencies = [ "syn", ] +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + [[package]] name = "autocfg" version = "1.0.1" @@ -173,6 +184,36 @@ dependencies = [ "winapi", ] +[[package]] +name = "clap" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1121e32687f7f90b905d4775273305baa4f32cd418923e9b0fa726533221857" +dependencies = [ + "atty", + "bitflags", + "clap_derive", + "indexmap", + "lazy_static", + "os_str_bytes", + "strsim", + "termcolor", + "textwrap", +] + +[[package]] +name = "clap_derive" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cbcf660a32ad0eda4b11996d8761432f499034f6e685bc6072337db662c85f8" +dependencies = [ + "heck 0.4.0", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "crc32fast" version = "1.3.0" @@ -384,6 +425,12 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + [[package]] name = "hermit-abi" version = "0.1.19" @@ -491,6 +538,7 @@ dependencies = [ "async-trait", "capctl", "cgroups-rs", + "clap", "futures", "ipnetwork", "lazy_static", @@ -841,6 +889,15 @@ dependencies = [ "tokio-stream", ] +[[package]] +name = "os_str_bytes" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64" +dependencies = [ + "memchr", +] + [[package]] name = "parking_lot" version = "0.11.2" @@ -951,6 +1008,30 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed0cfbc8191465bed66e1718596ee0b0b35d5ee1f41c5df2189d0fe8bde535ba" +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + [[package]] name = "proc-macro-hack" version = "0.5.19" @@ -1035,7 +1116,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "355f634b43cdd80724ee7848f95770e7e70eefa6dcf14fea676216573b8fd603" dependencies = [ "bytes 1.1.0", - "heck", + "heck 0.3.3", "itertools", "log", "multimap", @@ -1422,6 +1503,12 @@ version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309" +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + [[package]] name = "syn" version = "1.0.82" @@ -1453,6 +1540,21 @@ dependencies = [ "winapi", ] +[[package]] +name = "termcolor" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "textwrap" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0066c8d12af8b5acd21e00547c3797fde4e8677254a7ee429176ccebbe93dd80" + [[package]] name = "thiserror" version = "1.0.30" @@ -1715,6 +1817,12 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +[[package]] +name = "version_check" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" + [[package]] name = "void" version = "1.0.2" @@ -1835,6 +1943,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" diff --git a/src/agent/Cargo.toml b/src/agent/Cargo.toml index 492666023..205a1558f 100644 --- a/src/agent/Cargo.toml +++ b/src/agent/Cargo.toml @@ -60,6 +60,7 @@ vsock-exporter = { path = "vsock-exporter" } # Configuration serde = { version = "1.0.129", features = ["derive"] } toml = "0.5.8" +clap = { version = "3.0.1", features = ["derive"] } [dev-dependencies] tempfile = "3.1.0" diff --git a/src/agent/src/main.rs b/src/agent/src/main.rs index aa7d823ef..d62f1e64c 100644 --- a/src/agent/src/main.rs +++ b/src/agent/src/main.rs @@ -20,6 +20,7 @@ extern crate scopeguard; extern crate slog; use anyhow::{anyhow, Context, Result}; +use clap::{AppSettings, Parser}; use nix::fcntl::OFlag; use nix::sys::socket::{self, AddressFamily, SockAddr, SockFlag, SockType}; use nix::unistd::{self, dup, Pid}; @@ -80,10 +81,32 @@ const NAME: &str = "kata-agent"; lazy_static! { static ref AGENT_CONFIG: Arc> = Arc::new(RwLock::new( + // Note: We can't do AgentOpts.parse() here to send through the processed arguments to AgentConfig + // clap::Parser::parse() greedily process all command line input including cargo test parameters, + // so should only be used inside main. AgentConfig::from_cmdline("/proc/cmdline", env::args().collect()).unwrap() )); } +#[derive(Parser)] +// The default clap version info doesn't match our form, so we need to override it +#[clap(global_setting(AppSettings::DisableVersionFlag))] +struct AgentOpts { + /// Print the version information + #[clap(short, long)] + version: bool, + #[clap(subcommand)] + subcmd: Option, + /// Specify a custom agent config file + #[clap(short, long)] + config: Option, +} + +#[derive(Parser)] +enum SubCommand { + Init {}, +} + #[instrument] fn announce(logger: &Logger, config: &AgentConfig) { info!(logger, "announce"; @@ -255,9 +278,9 @@ async fn real_main() -> std::result::Result<(), Box> { } fn main() -> std::result::Result<(), Box> { - let args: Vec = env::args().collect(); + let args = AgentOpts::parse(); - if args.len() == 2 && args[1] == "--version" { + if args.version { println!( "{} version {} (api version: {}, commit version: {}, type: rust)", NAME, @@ -265,11 +288,10 @@ fn main() -> std::result::Result<(), Box> { version::API_VERSION, version::VERSION_COMMIT, ); - exit(0); } - if args.len() == 2 && args[1] == "init" { + if let Some(SubCommand::Init {}) = args.subcmd { reset_sigpipe(); rustjail::container::init_child(); exit(0); From 623d8f086a06acf9af452b125a75869a2267fb63 Mon Sep 17 00:00:00 2001 From: Gabriela Cervantes Date: Tue, 4 Jan 2022 15:58:50 +0000 Subject: [PATCH 271/385] docs: Remove word duplication This PR removes a word duplication in the Upgrading documentation. Fixes #3381 Signed-off-by: Gabriela Cervantes --- docs/Upgrading.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Upgrading.md b/docs/Upgrading.md index 0403b91be..7345d799f 100644 --- a/docs/Upgrading.md +++ b/docs/Upgrading.md @@ -102,7 +102,7 @@ first [install the latest release](#determine-latest-version). See the -[manual installation installation documentation](install/README.md#manual-installation) +[manual installation documentation](install/README.md#manual-installation) for details on how to automatically install and configuration a static release with containerd. From 1f581a04058ad0883bcc08b2f65168e8d0452f45 Mon Sep 17 00:00:00 2001 From: Bo Chen Date: Tue, 4 Jan 2022 14:37:35 -0800 Subject: [PATCH 272/385] versions: Upgrade to Cloud Hypervisor v20.2 This is a bug release from Cloud Hypervisor addressing the following issues: 1) Don't error out when setting up the SIGWINCH handler (for console resize) when this fails due to older kernel; 2) Seccomp rules were refined to remove syscalls that are now unused; 3) Fix reboot on older host kernels when SIGWINCH handler was not initialised; 4) Fix virtio-vsock blocking issue. Details can be found: https://github.com/cloud-hypervisor/cloud-hypervisor/releases/tag/v20.2 Fixes: #3383 Signed-off-by: Bo Chen --- versions.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions.yaml b/versions.yaml index f214d9693..c60f334ae 100644 --- a/versions.yaml +++ b/versions.yaml @@ -75,7 +75,7 @@ assets: url: "https://github.com/cloud-hypervisor/cloud-hypervisor" uscan-url: >- https://github.com/cloud-hypervisor/cloud-hypervisor/tags.*/v?(\d\S+)\.tar\.gz - version: "v20.1" + version: "v20.2" firecracker: description: "Firecracker micro-VMM" From 7b03d78f154d7dce963f4ba4a2f1040f4c5509c2 Mon Sep 17 00:00:00 2001 From: Eric Ernst Date: Wed, 15 Dec 2021 11:40:44 -0800 Subject: [PATCH 273/385] vendor: update to containerd v1.6.0-beta.4 Update our containerd vendoring. In particular, we're interested in grabbing the updated annotation definitions for defining sandbox sizing. - go get github.com/containerd/containerd@v1.6.0-beta.4 - edit go.mod to remove containerd v1.5.8 replacement directive - go mod vendor - go mod tidy Fixes: #3276 Signed-off-by: Eric Ernst --- src/runtime/go.mod | 41 +- src/runtime/go.sum | 536 +- .../github.com/Microsoft/go-winio/README.md | 29 +- .../go-winio/pkg/security/syscall_windows.go | 6 +- .../go-winio/pkg/security/zsyscall_windows.go | 24 +- .../Microsoft/go-winio/privilege.go | 5 +- .../github.com/Microsoft/go-winio/vhd/vhd.go | 10 +- .../Microsoft/go-winio/vhd/zvhd_windows.go | 52 +- .../github.com/Microsoft/hcsshim/.gitignore | 39 +- .../Microsoft/hcsshim/.golangci.yml | 96 + .../github.com/Microsoft/hcsshim/Makefile | 87 + .../github.com/Microsoft/hcsshim/README.md | 82 +- .../github.com/Microsoft/hcsshim/go.mod | 24 +- .../github.com/Microsoft/hcsshim/go.sum | 774 ++- .../internal/hcs/schema2/attachment.go | 6 + .../hcsshim/internal/hcs/schema2/container.go | 2 + .../internal/hcs/schema2/cpu_group_config.go | 2 +- .../hcsshim/internal/hcs/schema2/device.go | 8 +- .../model_container_definition_device.go | 14 + .../hcs/schema2/model_device_category.go | 15 + .../hcs/schema2/model_device_extension.go | 15 + .../hcs/schema2/model_device_instance.go | 17 + .../hcs/schema2/model_device_namespace.go | 16 + .../hcs/schema2/model_interface_class.go | 16 + .../internal/hcs/schema2/model_namespace.go | 15 + .../hcs/schema2/model_object_directory.go | 18 + .../hcs/schema2/model_object_namespace.go | 16 + .../hcs/schema2/model_object_symlink.go | 18 + .../hcs/schema2/virtual_p_mem_mapping.go | 15 + .../hcsshim/internal/hns/hnsendpoint.go | 1 + .../hcsshim/internal/hns/hnspolicy.go | 30 +- .../hcsshim/internal/wclayer/activatelayer.go | 2 +- .../hcsshim/internal/wclayer/createlayer.go | 2 +- .../internal/wclayer/createscratchlayer.go | 2 +- .../hcsshim/internal/wclayer/destroylayer.go | 2 +- .../internal/wclayer/expandscratchsize.go | 2 +- .../hcsshim/internal/wclayer/exportlayer.go | 2 +- .../internal/wclayer/getlayermountpath.go | 4 +- .../internal/wclayer/getsharedbaseimages.go | 2 +- .../hcsshim/internal/wclayer/grantvmaccess.go | 2 +- .../hcsshim/internal/wclayer/importlayer.go | 2 +- .../hcsshim/internal/wclayer/layerexists.go | 2 +- .../hcsshim/internal/wclayer/legacy.go | 2 +- .../hcsshim/internal/wclayer/nametoguid.go | 4 +- .../hcsshim/internal/wclayer/preparelayer.go | 2 +- .../internal/wclayer/unpreparelayer.go | 2 +- .../hcsshim/internal/winapi/memory.go | 23 - .../hcsshim/internal/winapi/utils.go | 25 +- .../internal/winapi/zsyscall_windows.go | 27 - .../hcsshim/osversion/windowsbuilds.go | 3 + .../github.com/containerd/cgroups/README.md | 8 +- .../github.com/containerd/cgroups/blkio.go | 9 +- .../github.com/containerd/cgroups/cgroup.go | 161 +- .../github.com/containerd/cgroups/control.go | 43 +- .../github.com/containerd/cgroups/go.mod | 9 +- .../github.com/containerd/cgroups/go.sum | 14 +- .../github.com/containerd/cgroups/opts.go | 2 +- .../github.com/containerd/cgroups/paths.go | 9 +- .../github.com/containerd/cgroups/systemd.go | 15 +- .../github.com/containerd/cgroups/utils.go | 47 +- .../containerd/console/console_windows.go | 10 +- .../containerd/console/console_zos.go | 163 + .../github.com/containerd/console/go.mod | 5 +- .../github.com/containerd/console/go.sum | 2 - .../github.com/containerd/console/tc_unix.go | 2 +- .../sys/stat_unix.go => console/tc_zos.go} | 30 +- .../containerd/containerd/api/LICENSE | 191 + .../api/services/ttrpc/events/v1/doc.go | 2 +- .../containerd/api/types/task/doc.go | 18 + .../containerd/defaults/defaults.go | 32 + .../containerd/defaults/defaults_darwin.go | 37 + .../containerd/defaults/defaults_unix.go | 40 + .../containerd/defaults/defaults_windows.go | 46 + .../containerd/containerd/defaults/doc.go | 19 + .../containerd/events/exchange/exchange.go | 251 + .../containerd/containerd/filters/adaptor.go | 33 + .../containerd/containerd/filters/filter.go | 179 + .../containerd/containerd/filters/parser.go | 292 + .../containerd/containerd/filters/quote.go | 253 + .../containerd/containerd/filters/scanner.go | 297 + .../containerd/containerd/log/context.go | 5 +- .../fmountat_linux.go} | 6 +- .../containerd/mount/lookup_unix.go | 1 + .../containerd/mount/lookup_unsupported.go | 1 + .../containerd/mount/mount_freebsd.go | 4 +- .../containerd/mount/mount_linux.go | 7 +- .../containerd/containerd/mount/mount_unix.go | 1 + .../containerd/mount/mount_windows.go | 17 +- .../{sys => mount}/subprocess_unsafe_linux.go | 2 +- .../{sys => mount}/subprocess_unsafe_linux.s | 0 .../containerd/containerd/mount/temp.go | 5 +- .../containerd/containerd/mount/temp_unix.go | 3 +- .../containerd/mount/temp_unsupported.go | 3 +- .../pkg/cri/annotations/annotations.go | 13 + .../containerd/pkg/dialer/dialer_unix.go | 1 + .../containerd/pkg/runtimeoptions/v1/doc.go | 17 + .../containerd/pkg/shutdown/shutdown.go | 109 + .../pkg/userns/userns_unsupported.go | 1 + .../containerd/containerd/plugin/context.go | 161 + .../containerd/containerd/plugin/plugin.go | 224 + .../containerd/plugin/plugin_go18.go | 63 + .../containerd/plugin/plugin_other.go | 25 + .../containerd/containerd/runtime/monitor.go | 13 +- .../containerd/containerd/runtime/runtime.go | 7 +- .../containerd/containerd/runtime/task.go | 14 +- .../containerd/runtime/task_list.go | 13 + .../containerd/runtime/v2/shim/shim.go | 331 +- .../containerd/runtime/v2/shim/shim_darwin.go | 2 - .../runtime/v2/shim/shim_freebsd.go | 2 - .../containerd/runtime/v2/shim/shim_unix.go | 1 + .../runtime/v2/shim/shim_windows.go | 2 - .../containerd/runtime/v2/shim/util.go | 82 +- .../containerd/runtime/v2/shim/util_unix.go | 23 +- .../containerd/containerd/sys/epoll.go | 1 + .../containerd/containerd/sys/fds.go | 5 +- .../containerd/containerd/sys/filesys_unix.go | 1 + .../containerd/sys/filesys_windows.go | 31 +- .../containerd/containerd/sys/oom_linux.go | 3 +- .../containerd/sys/oom_unsupported.go | 1 + .../containerd/sys/reaper/reaper_unix.go | 36 +- .../containerd/containerd/sys/socket_unix.go | 1 + .../containerd/sys/socket_windows.go | 2 - .../containerd/containerd/sys/stat_bsd.go | 44 - .../containerd/containerd/sys/stat_openbsd.go | 45 - .../containerd/containerd/version/version.go | 2 +- .../cni/pkg/types/020/types.go | 85 +- .../cni/pkg/types/040/types.go | 306 + .../cni/pkg/types/100/types.go | 307 + .../containernetworking/cni/pkg/types/args.go | 18 +- .../cni/pkg/types/create/create.go | 56 + .../cni/pkg/types/current/types.go | 276 - .../cni/pkg/types/internal/convert.go | 92 + .../cni/pkg/types/internal/create.go | 66 + .../cni/pkg/types/types.go | 31 +- .../cni/pkg/version/conf.go | 15 +- .../cni/pkg/version/plugin.go | 8 +- .../cni/pkg/version/version.go | 52 +- .../plugins/pkg/testutils/ping.go | 18 +- .../plugins/pkg/testutils/testing.go | 54 + .../github.com/docker/go-events/.gitignore | 24 + .../docker/go-events/CONTRIBUTING.md | 70 + .../github.com/docker/go-events/LICENSE | 201 + .../github.com/docker/go-events/MAINTAINERS | 46 + .../github.com/docker/go-events/README.md | 117 + .../github.com/docker/go-events/broadcast.go | 178 + .../github.com/docker/go-events/channel.go | 61 + .../github.com/docker/go-events/errors.go | 10 + .../github.com/docker/go-events/event.go | 15 + .../github.com/docker/go-events/filter.go | 52 + .../github.com/docker/go-events/queue.go | 111 + .../github.com/docker/go-events/retry.go | 260 + .../go-openapi/jsonpointer/.travis.yml | 4 +- .../go-openapi/jsonpointer/pointer.go | 64 +- .../go-openapi/jsonreference/.golangci.yml | 41 + .../go-openapi/jsonreference/.travis.yml | 15 +- .../go-openapi/jsonreference/README.md | 2 +- .../go-openapi/jsonreference/go.mod | 2 +- .../go-openapi/jsonreference/go.sum | 10 +- .../github.com/go-openapi/swag/.golangci.yml | 17 + .../github.com/go-openapi/swag/.travis.yml | 30 +- .../github.com/go-openapi/swag/README.md | 1 - .../github.com/go-openapi/swag/convert.go | 16 +- .../go-openapi/swag/convert_types.go | 195 +- .../vendor/github.com/go-openapi/swag/go.mod | 14 +- .../vendor/github.com/go-openapi/swag/go.sum | 29 +- .../vendor/github.com/go-openapi/swag/json.go | 8 +- .../github.com/go-openapi/swag/loading.go | 42 +- .../vendor/github.com/go-openapi/swag/util.go | 6 +- .../github.com/josharian/intern/README.md | 5 + .../vendor/github.com/josharian/intern/go.mod | 3 + .../github.com/josharian/intern/intern.go | 44 + .../github.com/josharian/intern/license.md | 21 + .../github.com/mailru/easyjson/buffer/pool.go | 72 +- .../mailru/easyjson/jlexer/lexer.go | 216 +- .../mailru/easyjson/jwriter/writer.go | 41 +- .../github.com/moby/sys/mountinfo/go.mod | 4 +- .../github.com/moby/sys/mountinfo/go.sum | 4 +- .../moby/sys/mountinfo/mounted_linux.go | 11 +- .../moby/sys/mountinfo/mounted_unix.go | 16 +- .../moby/sys/mountinfo/mountinfo.go | 9 +- .../moby/sys/mountinfo/mountinfo_bsd.go | 9 +- .../moby/sys/mountinfo/mountinfo_linux.go | 27 +- .../sys/mountinfo/mountinfo_unsupported.go | 3 +- .../opencontainers/image-spec/LICENSE | 191 + .../image-spec/specs-go/v1/annotations.go | 62 + .../image-spec/specs-go/v1/config.go | 114 + .../image-spec/specs-go/v1/descriptor.go | 64 + .../image-spec/specs-go/v1/index.go | 32 + .../image-spec/specs-go/v1/layout.go} | 29 +- .../image-spec/specs-go/v1/manifest.go | 35 + .../image-spec/specs-go/v1/mediatype.go | 57 + .../image-spec/specs-go/version.go | 32 + .../image-spec/specs-go/versioned.go} | 19 +- .../client_golang/prometheus/counter.go | 20 +- .../client_golang/prometheus/desc.go | 4 +- .../prometheus/expvar_collector.go | 39 +- .../client_golang/prometheus/gauge.go | 20 +- .../client_golang/prometheus/go_collector.go | 53 +- .../client_golang/prometheus/histogram.go | 31 +- .../client_golang/prometheus/metric.go | 6 +- .../prometheus/process_collector.go | 33 +- .../client_golang/prometheus/registry.go | 4 +- .../client_golang/prometheus/summary.go | 39 +- .../client_golang/prometheus/value.go | 15 +- .../client_golang/prometheus/vec.go | 112 +- .../client_golang/prometheus/wrap.go | 6 +- .../prometheus/common/expfmt/decode.go | 2 +- .../prometheus/common/expfmt/text_parse.go | 11 + .../github.com/prometheus/common/model/fnv.go | 2 +- .../prometheus/common/model/labels.go | 8 + .../prometheus/common/model/time.go | 143 +- .../github.com/safchain/ethtool/.travis.yml | 6 + .../github.com/safchain/ethtool/ethtool.go | 180 +- .../safchain/ethtool/ethtool_cmd.go | 15 +- .../safchain/ethtool/ethtool_msglvl.go | 15 +- .../github.com/vishvananda/netns/README.md | 11 + .../vishvananda/netns/netns_linux.go | 18 +- .../go.opentelemetry.io/otel/CHANGELOG.md | 15 +- .../vendor/go.opentelemetry.io/otel/Makefile | 32 +- .../go.opentelemetry.io/otel/RELEASING.md | 26 +- .../otel/attribute/type_string.go | 2 +- .../otel/baggage/baggage.go | 2 +- .../vendor/go.opentelemetry.io/otel/go.mod | 2 +- .../otel/sdk/resource/os_unix.go | 1 + .../otel/sdk/trace/event.go | 2 +- .../otel/sdk/trace/snapshot.go | 2 +- .../otel/semconv/v1.4.0/exception.go | 2 +- .../otel/semconv/v1.4.0/schema.go | 2 +- .../go.opentelemetry.io/otel/trace/go.mod | 2 +- .../otel/trace/tracestate.go | 2 +- .../go.opentelemetry.io/otel/version.go | 2 +- .../go.opentelemetry.io/otel/versions.yaml | 6 +- .../golang.org/x/net/http/httpguts/httplex.go | 10 +- .../vendor/golang.org/x/net/http2/Dockerfile | 2 +- .../vendor/golang.org/x/net/http2/README | 20 - .../vendor/golang.org/x/net/http2/ascii.go | 53 + .../x/net/http2/client_conn_pool.go | 81 +- .../vendor/golang.org/x/net/http2/go115.go | 27 + .../golang.org/x/net/http2/headermap.go | 7 +- .../golang.org/x/net/http2/not_go115.go | 31 + .../vendor/golang.org/x/net/http2/server.go | 49 +- .../golang.org/x/net/http2/transport.go | 224 +- .../vendor/golang.org/x/net/http2/write.go | 7 +- .../golang.org/x/net/idna/idna10.0.0.go | 113 +- .../vendor/golang.org/x/net/idna/idna9.0.0.go | 93 +- src/runtime/vendor/golang.org/x/sync/AUTHORS | 3 + .../vendor/golang.org/x/sync/CONTRIBUTORS | 3 + src/runtime/vendor/golang.org/x/sync/LICENSE | 27 + src/runtime/vendor/golang.org/x/sync/PATENTS | 22 + .../golang.org/x/sync/errgroup/errgroup.go | 66 + .../golang.org/x/sys/execabs/execabs.go | 102 + .../vendor/golang.org/x/sys/unix/README.md | 6 +- .../golang.org/x/sys/unix/asm_bsd_386.s | 4 +- .../golang.org/x/sys/unix/asm_bsd_arm.s | 4 +- .../vendor/golang.org/x/sys/unix/fdset.go | 4 +- .../golang.org/x/sys/unix/ifreq_linux.go | 149 + .../golang.org/x/sys/unix/ioctl_linux.go | 78 +- .../vendor/golang.org/x/sys/unix/mkall.sh | 12 - .../vendor/golang.org/x/sys/unix/mkerrors.sh | 22 +- .../golang.org/x/sys/unix/sockcmsg_linux.go | 53 + .../x/sys/unix/syscall_darwin.1_13.go | 4 +- .../golang.org/x/sys/unix/syscall_darwin.go | 73 +- .../x/sys/unix/syscall_darwin_386.go | 51 - .../x/sys/unix/syscall_darwin_arm.go | 51 - .../x/sys/unix/syscall_darwin_libSystem.go | 9 +- .../golang.org/x/sys/unix/syscall_illumos.go | 8 + .../golang.org/x/sys/unix/syscall_linux.go | 177 +- .../x/sys/unix/syscall_linux_386.go | 42 +- .../x/sys/unix/syscall_linux_amd64.go | 48 +- .../x/sys/unix/syscall_linux_arm.go | 46 +- .../x/sys/unix/syscall_linux_arm64.go | 55 +- .../x/sys/unix/syscall_linux_mips64x.go | 39 +- .../x/sys/unix/syscall_linux_mipsx.go | 39 +- .../x/sys/unix/syscall_linux_ppc.go | 45 +- .../x/sys/unix/syscall_linux_ppc64x.go | 38 +- .../x/sys/unix/syscall_linux_riscv64.go | 51 +- .../x/sys/unix/syscall_linux_s390x.go | 40 +- .../x/sys/unix/syscall_linux_sparc64.go | 37 +- .../golang.org/x/sys/unix/syscall_solaris.go | 240 + .../golang.org/x/sys/unix/syscall_unix.go | 4 + .../x/sys/unix/syscall_zos_s390x.go | 52 +- .../golang.org/x/sys/unix/sysvshm_linux.go | 21 + .../golang.org/x/sys/unix/sysvshm_unix.go | 61 + .../x/sys/unix/sysvshm_unix_other.go | 14 + .../x/sys/unix/zerrors_darwin_386.go | 1789 ----- .../x/sys/unix/zerrors_darwin_amd64.go | 3120 ++++----- .../x/sys/unix/zerrors_darwin_arm.go | 1789 ----- .../x/sys/unix/zerrors_darwin_arm64.go | 3120 ++++----- .../x/sys/unix/zerrors_freebsd_386.go | 5 + .../x/sys/unix/zerrors_freebsd_amd64.go | 5 + .../x/sys/unix/zerrors_freebsd_arm.go | 5 + .../x/sys/unix/zerrors_freebsd_arm64.go | 5 + .../golang.org/x/sys/unix/zerrors_linux.go | 166 +- .../x/sys/unix/zerrors_linux_386.go | 21 + .../x/sys/unix/zerrors_linux_amd64.go | 21 + .../x/sys/unix/zerrors_linux_arm.go | 21 + .../x/sys/unix/zerrors_linux_arm64.go | 21 + .../x/sys/unix/zerrors_linux_mips.go | 21 + .../x/sys/unix/zerrors_linux_mips64.go | 21 + .../x/sys/unix/zerrors_linux_mips64le.go | 21 + .../x/sys/unix/zerrors_linux_mipsle.go | 21 + .../x/sys/unix/zerrors_linux_ppc.go | 21 + .../x/sys/unix/zerrors_linux_ppc64.go | 21 + .../x/sys/unix/zerrors_linux_ppc64le.go | 21 + .../x/sys/unix/zerrors_linux_riscv64.go | 21 + .../x/sys/unix/zerrors_linux_s390x.go | 21 + .../x/sys/unix/zerrors_linux_sparc64.go | 21 + .../x/sys/unix/zerrors_openbsd_386.go | 3 + .../x/sys/unix/zerrors_openbsd_arm.go | 3 + .../x/sys/unix/zerrors_zos_s390x.go | 22 + .../x/sys/unix/zsyscall_darwin_386.1_13.go | 40 - .../x/sys/unix/zsyscall_darwin_386.1_13.s | 13 - .../x/sys/unix/zsyscall_darwin_386.go | 2431 ------- .../x/sys/unix/zsyscall_darwin_386.s | 291 - .../x/sys/unix/zsyscall_darwin_amd64.1_13.go | 8 +- .../x/sys/unix/zsyscall_darwin_amd64.1_13.s | 18 +- .../x/sys/unix/zsyscall_darwin_amd64.go | 631 +- .../x/sys/unix/zsyscall_darwin_amd64.s | 876 ++- .../x/sys/unix/zsyscall_darwin_arm.1_13.go | 40 - .../x/sys/unix/zsyscall_darwin_arm.1_13.s | 13 - .../x/sys/unix/zsyscall_darwin_arm.go | 2417 ------- .../x/sys/unix/zsyscall_darwin_arm.s | 289 - .../x/sys/unix/zsyscall_darwin_arm64.1_13.go | 8 +- .../x/sys/unix/zsyscall_darwin_arm64.1_13.s | 18 +- .../x/sys/unix/zsyscall_darwin_arm64.go | 631 +- .../x/sys/unix/zsyscall_darwin_arm64.s | 876 ++- .../golang.org/x/sys/unix/zsyscall_linux.go | 81 +- .../x/sys/unix/zsyscall_linux_386.go | 53 - .../x/sys/unix/zsyscall_linux_amd64.go | 53 - .../x/sys/unix/zsyscall_linux_arm.go | 53 - .../x/sys/unix/zsyscall_linux_mips.go | 55 - .../x/sys/unix/zsyscall_linux_mips64.go | 32 - .../x/sys/unix/zsyscall_linux_mips64le.go | 32 - .../x/sys/unix/zsyscall_linux_mipsle.go | 55 - .../x/sys/unix/zsyscall_linux_ppc.go | 53 - .../x/sys/unix/zsyscall_linux_ppc64.go | 53 - .../x/sys/unix/zsyscall_linux_ppc64le.go | 53 - .../x/sys/unix/zsyscall_linux_s390x.go | 43 - .../x/sys/unix/zsyscall_linux_sparc64.go | 42 - .../x/sys/unix/zsyscall_solaris_amd64.go | 72 +- .../x/sys/unix/zsyscall_zos_s390x.go | 42 +- .../x/sys/unix/zsysnum_darwin_386.go | 438 -- .../x/sys/unix/zsysnum_darwin_arm.go | 438 -- .../x/sys/unix/zsysnum_linux_386.go | 5 + .../x/sys/unix/zsysnum_linux_amd64.go | 713 +- .../x/sys/unix/zsysnum_linux_arm.go | 4 + .../x/sys/unix/zsysnum_linux_arm64.go | 603 +- .../x/sys/unix/zsysnum_linux_mips.go | 4 + .../x/sys/unix/zsysnum_linux_mips64.go | 698 +- .../x/sys/unix/zsysnum_linux_mips64le.go | 698 +- .../x/sys/unix/zsysnum_linux_mipsle.go | 4 + .../x/sys/unix/zsysnum_linux_ppc.go | 4 + .../x/sys/unix/zsysnum_linux_ppc64.go | 796 +-- .../x/sys/unix/zsysnum_linux_ppc64le.go | 796 +-- .../x/sys/unix/zsysnum_linux_riscv64.go | 600 +- .../x/sys/unix/zsysnum_linux_s390x.go | 726 +- .../x/sys/unix/zsysnum_linux_sparc64.go | 754 +-- .../x/sys/unix/ztypes_darwin_386.go | 524 -- .../x/sys/unix/ztypes_darwin_amd64.go | 231 + .../x/sys/unix/ztypes_darwin_arm.go | 524 -- .../x/sys/unix/ztypes_darwin_arm64.go | 231 + .../x/sys/unix/ztypes_dragonfly_amd64.go | 3 + .../x/sys/unix/ztypes_freebsd_386.go | 7 +- .../x/sys/unix/ztypes_freebsd_amd64.go | 7 +- .../x/sys/unix/ztypes_freebsd_arm.go | 7 +- .../x/sys/unix/ztypes_freebsd_arm64.go | 7 +- .../x/sys/unix/ztypes_illumos_amd64.go | 2 + .../golang.org/x/sys/unix/ztypes_linux.go | 228 +- .../golang.org/x/sys/unix/ztypes_linux_386.go | 56 +- .../x/sys/unix/ztypes_linux_amd64.go | 53 +- .../golang.org/x/sys/unix/ztypes_linux_arm.go | 56 +- .../x/sys/unix/ztypes_linux_arm64.go | 53 +- .../x/sys/unix/ztypes_linux_mips.go | 55 +- .../x/sys/unix/ztypes_linux_mips64.go | 53 +- .../x/sys/unix/ztypes_linux_mips64le.go | 53 +- .../x/sys/unix/ztypes_linux_mipsle.go | 55 +- .../golang.org/x/sys/unix/ztypes_linux_ppc.go | 57 +- .../x/sys/unix/ztypes_linux_ppc64.go | 52 +- .../x/sys/unix/ztypes_linux_ppc64le.go | 52 +- .../x/sys/unix/ztypes_linux_riscv64.go | 53 +- .../x/sys/unix/ztypes_linux_s390x.go | 52 +- .../x/sys/unix/ztypes_linux_sparc64.go | 52 +- .../x/sys/unix/ztypes_netbsd_386.go | 4 +- .../x/sys/unix/ztypes_netbsd_amd64.go | 4 +- .../x/sys/unix/ztypes_netbsd_arm.go | 4 +- .../x/sys/unix/ztypes_netbsd_arm64.go | 4 +- .../x/sys/unix/ztypes_openbsd_386.go | 4 +- .../x/sys/unix/ztypes_openbsd_amd64.go | 4 +- .../x/sys/unix/ztypes_openbsd_arm.go | 4 +- .../x/sys/unix/ztypes_openbsd_arm64.go | 4 +- .../x/sys/unix/ztypes_openbsd_mips64.go | 4 +- .../x/sys/unix/ztypes_solaris_amd64.go | 40 + .../golang.org/x/sys/unix/ztypes_zos_s390x.go | 4 + .../golang.org/x/sys/windows/aliases.go | 4 +- .../vendor/golang.org/x/sys/windows/empty.s | 1 + .../golang.org/x/sys/windows/eventlog.go | 1 + .../golang.org/x/sys/windows/exec_windows.go | 81 +- .../x/sys/windows/memory_windows.go | 11 + .../golang.org/x/sys/windows/mksyscall.go | 1 + .../vendor/golang.org/x/sys/windows/race.go | 1 + .../vendor/golang.org/x/sys/windows/race0.go | 1 + .../x/sys/windows/security_windows.go | 1 + .../golang.org/x/sys/windows/service.go | 2 + .../vendor/golang.org/x/sys/windows/str.go | 1 + .../golang.org/x/sys/windows/syscall.go | 1 + .../x/sys/windows/syscall_windows.go | 21 + .../golang.org/x/sys/windows/types_windows.go | 370 +- .../x/sys/windows/zsyscall_windows.go | 217 + .../x/text/secure/bidirule/bidirule10.0.0.go | 1 + .../x/text/secure/bidirule/bidirule9.0.0.go | 1 + .../x/text/unicode/bidi/tables10.0.0.go | 1 + .../x/text/unicode/bidi/tables11.0.0.go | 1 + .../x/text/unicode/bidi/tables12.0.0.go | 1 + .../x/text/unicode/bidi/tables13.0.0.go | 1 + .../x/text/unicode/bidi/tables9.0.0.go | 1 + .../x/text/unicode/norm/tables10.0.0.go | 1 + .../x/text/unicode/norm/tables11.0.0.go | 1 + .../x/text/unicode/norm/tables12.0.0.go | 1 + .../x/text/unicode/norm/tables13.0.0.go | 1 + .../x/text/unicode/norm/tables9.0.0.go | 1 + .../golang.org/x/text/width/tables10.0.0.go | 1 + .../golang.org/x/text/width/tables11.0.0.go | 1 + .../golang.org/x/text/width/tables12.0.0.go | 1 + .../golang.org/x/text/width/tables13.0.0.go | 1 + .../golang.org/x/text/width/tables9.0.0.go | 1 + .../vendor/google.golang.org/grpc/.travis.yml | 42 - .../google.golang.org/grpc/MAINTAINERS.md | 5 +- .../vendor/google.golang.org/grpc/Makefile | 2 - .../vendor/google.golang.org/grpc/NOTICE.txt | 13 + .../vendor/google.golang.org/grpc/README.md | 2 +- .../grpc/balancer/balancer.go | 78 +- .../grpc/balancer/base/balancer.go | 44 +- .../grpc/balancer/roundrobin/roundrobin.go | 4 +- .../grpc/balancer_conn_wrappers.go | 116 +- .../google.golang.org/grpc/clientconn.go | 385 +- .../grpc/connectivity/connectivity.go | 35 +- .../grpc/credentials/credentials.go | 24 +- .../grpc/credentials/go12.go | 30 - .../google.golang.org/grpc/credentials/tls.go | 3 + .../google.golang.org/grpc/dialoptions.go | 17 +- .../vendor/google.golang.org/grpc/go.mod | 13 +- .../vendor/google.golang.org/grpc/go.sum | 51 +- .../google.golang.org/grpc/install_gae.sh | 6 - .../grpc/internal/binarylog/sink.go | 39 +- .../grpc/internal/channelz/funcs.go | 2 +- .../grpc/internal/channelz/types_linux.go | 2 - .../grpc/internal/channelz/types_nonlinux.go | 5 +- .../grpc/internal/channelz/util_linux.go | 2 - .../grpc/internal/channelz/util_nonlinux.go | 3 +- .../grpc/internal/credentials/credentials.go | 49 + .../grpc/internal/credentials/spiffe.go | 2 - .../internal/credentials/spiffe_appengine.go | 31 - .../grpc/internal/credentials/syscallconn.go | 2 - .../credentials/syscallconn_appengine.go | 30 - .../grpc/internal/credentials/util.go | 4 +- .../grpc/internal/envconfig/envconfig.go | 6 +- .../grpc/internal/grpcrand/grpcrand.go | 29 +- .../grpc/internal/internal.go | 11 +- .../grpc/internal/resolver/config_selector.go | 72 + .../internal/resolver/dns/dns_resolver.go | 52 +- .../grpc/internal/resolver/dns/go113.go | 33 - .../internal/serviceconfig/serviceconfig.go | 20 +- .../grpc/internal/status/status.go | 14 +- .../grpc/internal/syscall/syscall_linux.go | 2 - .../grpc/internal/syscall/syscall_nonlinux.go | 21 +- .../grpc/internal/transport/controlbuf.go | 56 +- .../grpc/internal/transport/handler_server.go | 3 +- .../grpc/internal/transport/http2_client.go | 287 +- .../grpc/internal/transport/http2_server.go | 243 +- .../grpc/internal/transport/http_util.go | 221 +- .../transport/networktype/networktype.go | 2 +- .../grpc/internal/transport/transport.go | 22 +- .../grpc/internal/xds/env/env.go | 95 + .../grpc/internal/xds_handshake_cluster.go | 40 + .../grpc/metadata/metadata.go | 100 +- .../google.golang.org/grpc/picker_wrapper.go | 2 +- .../google.golang.org/grpc/pickfirst.go | 23 +- .../google.golang.org/grpc/regenerate.sh | 10 - .../grpc/resolver/resolver.go | 2 +- .../grpc/resolver_conn_wrapper.go | 71 +- .../vendor/google.golang.org/grpc/rpc_util.go | 50 +- .../vendor/google.golang.org/grpc/server.go | 218 +- .../google.golang.org/grpc/stats/stats.go | 11 +- .../vendor/google.golang.org/grpc/stream.go | 220 +- .../vendor/google.golang.org/grpc/tap/tap.go | 16 +- .../vendor/google.golang.org/grpc/version.go | 2 +- .../vendor/google.golang.org/grpc/vet.sh | 75 +- .../vendor/gopkg.in/yaml.v3/.travis.yml | 16 - src/runtime/vendor/gopkg.in/yaml.v3/apic.go | 1 + src/runtime/vendor/gopkg.in/yaml.v3/decode.go | 65 +- .../vendor/gopkg.in/yaml.v3/emitterc.go | 58 +- src/runtime/vendor/gopkg.in/yaml.v3/encode.go | 30 +- .../vendor/gopkg.in/yaml.v3/parserc.go | 48 +- .../vendor/gopkg.in/yaml.v3/scannerc.go | 49 +- src/runtime/vendor/gopkg.in/yaml.v3/yaml.go | 40 +- src/runtime/vendor/gopkg.in/yaml.v3/yamlh.go | 2 + .../apimachinery/pkg/api/resource/OWNERS | 1 - .../apimachinery/pkg/api/resource/quantity.go | 9 + .../pkg/api/resource/quantity_proto.go | 2 +- .../pkg/apis/runtime/v1alpha2/api.pb.go | 5821 +++++++++++++++-- .../pkg/apis/runtime/v1alpha2/api.proto | 166 +- src/runtime/vendor/modules.txt | 96 +- 502 files changed, 29752 insertions(+), 23281 deletions(-) create mode 100644 src/runtime/vendor/github.com/Microsoft/hcsshim/.golangci.yml create mode 100644 src/runtime/vendor/github.com/Microsoft/hcsshim/Makefile create mode 100644 src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_container_definition_device.go create mode 100644 src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_device_category.go create mode 100644 src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_device_extension.go create mode 100644 src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_device_instance.go create mode 100644 src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_device_namespace.go create mode 100644 src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_interface_class.go create mode 100644 src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_namespace.go create mode 100644 src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_object_directory.go create mode 100644 src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_object_namespace.go create mode 100644 src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_object_symlink.go create mode 100644 src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/virtual_p_mem_mapping.go create mode 100644 src/runtime/vendor/github.com/containerd/console/console_zos.go rename src/runtime/vendor/github.com/containerd/{containerd/sys/stat_unix.go => console/tc_zos.go} (52%) create mode 100644 src/runtime/vendor/github.com/containerd/containerd/api/LICENSE create mode 100644 src/runtime/vendor/github.com/containerd/containerd/api/types/task/doc.go create mode 100644 src/runtime/vendor/github.com/containerd/containerd/defaults/defaults.go create mode 100644 src/runtime/vendor/github.com/containerd/containerd/defaults/defaults_darwin.go create mode 100644 src/runtime/vendor/github.com/containerd/containerd/defaults/defaults_unix.go create mode 100644 src/runtime/vendor/github.com/containerd/containerd/defaults/defaults_windows.go create mode 100644 src/runtime/vendor/github.com/containerd/containerd/defaults/doc.go create mode 100644 src/runtime/vendor/github.com/containerd/containerd/events/exchange/exchange.go create mode 100644 src/runtime/vendor/github.com/containerd/containerd/filters/adaptor.go create mode 100644 src/runtime/vendor/github.com/containerd/containerd/filters/filter.go create mode 100644 src/runtime/vendor/github.com/containerd/containerd/filters/parser.go create mode 100644 src/runtime/vendor/github.com/containerd/containerd/filters/quote.go create mode 100644 src/runtime/vendor/github.com/containerd/containerd/filters/scanner.go rename src/runtime/vendor/github.com/containerd/containerd/{sys/mount_linux.go => mount/fmountat_linux.go} (96%) rename src/runtime/vendor/github.com/containerd/containerd/{sys => mount}/subprocess_unsafe_linux.go (98%) rename src/runtime/vendor/github.com/containerd/containerd/{sys => mount}/subprocess_unsafe_linux.s (100%) create mode 100644 src/runtime/vendor/github.com/containerd/containerd/pkg/runtimeoptions/v1/doc.go create mode 100644 src/runtime/vendor/github.com/containerd/containerd/pkg/shutdown/shutdown.go create mode 100644 src/runtime/vendor/github.com/containerd/containerd/plugin/context.go create mode 100644 src/runtime/vendor/github.com/containerd/containerd/plugin/plugin.go create mode 100644 src/runtime/vendor/github.com/containerd/containerd/plugin/plugin_go18.go create mode 100644 src/runtime/vendor/github.com/containerd/containerd/plugin/plugin_other.go delete mode 100644 src/runtime/vendor/github.com/containerd/containerd/sys/stat_bsd.go delete mode 100644 src/runtime/vendor/github.com/containerd/containerd/sys/stat_openbsd.go create mode 100644 src/runtime/vendor/github.com/containernetworking/cni/pkg/types/040/types.go create mode 100644 src/runtime/vendor/github.com/containernetworking/cni/pkg/types/100/types.go create mode 100644 src/runtime/vendor/github.com/containernetworking/cni/pkg/types/create/create.go delete mode 100644 src/runtime/vendor/github.com/containernetworking/cni/pkg/types/current/types.go create mode 100644 src/runtime/vendor/github.com/containernetworking/cni/pkg/types/internal/convert.go create mode 100644 src/runtime/vendor/github.com/containernetworking/cni/pkg/types/internal/create.go create mode 100644 src/runtime/vendor/github.com/containernetworking/plugins/pkg/testutils/testing.go create mode 100644 src/runtime/vendor/github.com/docker/go-events/.gitignore create mode 100644 src/runtime/vendor/github.com/docker/go-events/CONTRIBUTING.md create mode 100644 src/runtime/vendor/github.com/docker/go-events/LICENSE create mode 100644 src/runtime/vendor/github.com/docker/go-events/MAINTAINERS create mode 100644 src/runtime/vendor/github.com/docker/go-events/README.md create mode 100644 src/runtime/vendor/github.com/docker/go-events/broadcast.go create mode 100644 src/runtime/vendor/github.com/docker/go-events/channel.go create mode 100644 src/runtime/vendor/github.com/docker/go-events/errors.go create mode 100644 src/runtime/vendor/github.com/docker/go-events/event.go create mode 100644 src/runtime/vendor/github.com/docker/go-events/filter.go create mode 100644 src/runtime/vendor/github.com/docker/go-events/queue.go create mode 100644 src/runtime/vendor/github.com/docker/go-events/retry.go create mode 100644 src/runtime/vendor/github.com/go-openapi/jsonreference/.golangci.yml create mode 100644 src/runtime/vendor/github.com/josharian/intern/README.md create mode 100644 src/runtime/vendor/github.com/josharian/intern/go.mod create mode 100644 src/runtime/vendor/github.com/josharian/intern/intern.go create mode 100644 src/runtime/vendor/github.com/josharian/intern/license.md create mode 100644 src/runtime/vendor/github.com/opencontainers/image-spec/LICENSE create mode 100644 src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/annotations.go create mode 100644 src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/config.go create mode 100644 src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/descriptor.go create mode 100644 src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/index.go rename src/runtime/vendor/github.com/{prometheus/client_golang/prometheus/build_info.go => opencontainers/image-spec/specs-go/v1/layout.go} (51%) create mode 100644 src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/manifest.go create mode 100644 src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/mediatype.go create mode 100644 src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/version.go rename src/runtime/vendor/github.com/{prometheus/client_golang/prometheus/build_info_pre_1.12.go => opencontainers/image-spec/specs-go/versioned.go} (54%) delete mode 100644 src/runtime/vendor/golang.org/x/net/http2/README create mode 100644 src/runtime/vendor/golang.org/x/net/http2/ascii.go create mode 100644 src/runtime/vendor/golang.org/x/net/http2/go115.go create mode 100644 src/runtime/vendor/golang.org/x/net/http2/not_go115.go create mode 100644 src/runtime/vendor/golang.org/x/sync/AUTHORS create mode 100644 src/runtime/vendor/golang.org/x/sync/CONTRIBUTORS create mode 100644 src/runtime/vendor/golang.org/x/sync/LICENSE create mode 100644 src/runtime/vendor/golang.org/x/sync/PATENTS create mode 100644 src/runtime/vendor/golang.org/x/sync/errgroup/errgroup.go create mode 100644 src/runtime/vendor/golang.org/x/sys/execabs/execabs.go create mode 100644 src/runtime/vendor/golang.org/x/sys/unix/ifreq_linux.go delete mode 100644 src/runtime/vendor/golang.org/x/sys/unix/syscall_darwin_386.go delete mode 100644 src/runtime/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go create mode 100644 src/runtime/vendor/golang.org/x/sys/unix/sysvshm_linux.go create mode 100644 src/runtime/vendor/golang.org/x/sys/unix/sysvshm_unix.go create mode 100644 src/runtime/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go delete mode 100644 src/runtime/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go delete mode 100644 src/runtime/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go delete mode 100644 src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go delete mode 100644 src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.s delete mode 100644 src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go delete mode 100644 src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s delete mode 100644 src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go delete mode 100644 src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.s delete mode 100644 src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go delete mode 100644 src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s delete mode 100644 src/runtime/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go delete mode 100644 src/runtime/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go delete mode 100644 src/runtime/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go delete mode 100644 src/runtime/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go delete mode 100644 src/runtime/vendor/google.golang.org/grpc/.travis.yml create mode 100644 src/runtime/vendor/google.golang.org/grpc/NOTICE.txt delete mode 100644 src/runtime/vendor/google.golang.org/grpc/credentials/go12.go delete mode 100644 src/runtime/vendor/google.golang.org/grpc/install_gae.sh create mode 100644 src/runtime/vendor/google.golang.org/grpc/internal/credentials/credentials.go delete mode 100644 src/runtime/vendor/google.golang.org/grpc/internal/credentials/spiffe_appengine.go delete mode 100644 src/runtime/vendor/google.golang.org/grpc/internal/credentials/syscallconn_appengine.go delete mode 100644 src/runtime/vendor/google.golang.org/grpc/internal/resolver/dns/go113.go create mode 100644 src/runtime/vendor/google.golang.org/grpc/internal/xds/env/env.go create mode 100644 src/runtime/vendor/google.golang.org/grpc/internal/xds_handshake_cluster.go delete mode 100644 src/runtime/vendor/gopkg.in/yaml.v3/.travis.yml diff --git a/src/runtime/go.mod b/src/runtime/go.mod index 2e8956ca2..fba0a173f 100644 --- a/src/runtime/go.mod +++ b/src/runtime/go.mod @@ -6,14 +6,15 @@ require ( github.com/BurntSushi/toml v0.3.1 github.com/blang/semver v3.5.1+incompatible github.com/blang/semver/v4 v4.0.0 - github.com/containerd/cgroups v1.0.1 - github.com/containerd/console v1.0.2 - github.com/containerd/containerd v1.5.7 + github.com/containerd/cgroups v1.0.2 + github.com/containerd/console v1.0.3 + github.com/containerd/containerd v1.6.0-beta.4 + github.com/containerd/containerd/api v1.6.0-beta.3 github.com/containerd/cri-containerd v1.11.1-0.20190125013620-4dd6735020f5 github.com/containerd/fifo v1.0.0 github.com/containerd/ttrpc v1.1.0 github.com/containerd/typeurl v1.0.2 - github.com/containernetworking/plugins v0.9.1 + github.com/containernetworking/plugins v1.0.1 github.com/coreos/go-systemd/v22 v22.3.2 github.com/cri-o/cri-o v1.0.0-rc2.0.20170928185954-3394b3b2d6af github.com/fsnotify/fsnotify v1.4.9 @@ -21,7 +22,7 @@ require ( github.com/go-openapi/errors v0.18.0 github.com/go-openapi/runtime v0.18.0 github.com/go-openapi/strfmt v0.18.0 - github.com/go-openapi/swag v0.19.5 + github.com/go-openapi/swag v0.19.14 github.com/go-openapi/validate v0.18.0 github.com/godbus/dbus/v5 v5.0.4 github.com/gogo/protobuf v1.3.2 @@ -29,39 +30,35 @@ require ( github.com/intel-go/cpuid v0.0.0-20210602155658-5747e5cec0d9 github.com/kata-containers/govmm v0.0.0-20210909155007-1b60b536f3c7 github.com/mdlayher/vsock v0.0.0-20191108225356-d9c65923cb8f - github.com/opencontainers/runc v1.0.2 + github.com/opencontainers/runc v1.0.3 github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 github.com/opencontainers/selinux v1.8.2 github.com/pkg/errors v0.9.1 - github.com/prometheus/client_golang v1.7.1 + github.com/prometheus/client_golang v1.11.0 github.com/prometheus/client_model v0.2.0 - github.com/prometheus/common v0.10.0 + github.com/prometheus/common v0.26.0 github.com/prometheus/procfs v0.6.0 - github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8 + github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1 github.com/sirupsen/logrus v1.8.1 - github.com/smartystreets/goconvey v1.6.4 // indirect github.com/stretchr/testify v1.7.0 github.com/urfave/cli v1.22.2 github.com/vishvananda/netlink v1.1.1-0.20210924202909-187053b97868 - github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae + github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f go.opencensus.io v0.23.0 // indirect - go.opentelemetry.io/otel v1.0.0 + go.opentelemetry.io/otel v1.0.1 go.opentelemetry.io/otel/exporters/jaeger v1.0.0 - go.opentelemetry.io/otel/sdk v1.0.0 - go.opentelemetry.io/otel/trace v1.0.0 - golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 + go.opentelemetry.io/otel/sdk v1.0.1 + go.opentelemetry.io/otel/trace v1.0.1 + golang.org/x/net v0.0.0-20210825183410-e898025ed96a golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93 - golang.org/x/sys v0.0.0-20210426230700-d19ff857e887 - golang.org/x/text v0.3.5 // indirect + golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359 google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb // indirect - google.golang.org/grpc v1.36.0 - k8s.io/apimachinery v0.20.6 - k8s.io/cri-api v0.20.6 + google.golang.org/grpc v1.41.0 + k8s.io/apimachinery v0.22.0 + k8s.io/cri-api v0.23.0-alpha.4 ) replace ( - github.com/containerd/containerd => github.com/containerd/containerd v1.5.8 github.com/opencontainers/runc => github.com/opencontainers/runc v1.0.1 github.com/uber-go/atomic => go.uber.org/atomic v1.5.1 google.golang.org/genproto => google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 diff --git a/src/runtime/go.sum b/src/runtime/go.sum index 6141ec2c2..01c123efd 100644 --- a/src/runtime/go.sum +++ b/src/runtime/go.sum @@ -1,4 +1,5 @@ bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= +bazil.org/fuse v0.0.0-20200407214033-5883e5a4b512/go.mod h1:FbcW6z/2VytnFDhZfumh8Ss8zxHE6qpMP5sHTRe0EaM= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -22,6 +23,7 @@ cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4g cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -32,58 +34,104 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= +github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= +github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= +github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= +github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= +github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.4.17 h1:iT12IBVClFevaf8PuVyi3UmZOVh4OqnaLxDTW2O6j3w= github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.5.1 h1:aPJp2QD7OOrhO5tQXqQoGSJc+DjDtWTGLOmNyAm6FgY= +github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= +github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= +github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= +github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= +github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= +github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00= github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600= -github.com/Microsoft/hcsshim v0.8.23 h1:47MSwtKGXet80aIn+7h4YI6fwPmwIghAnsx2aOUrG2M= -github.com/Microsoft/hcsshim v0.8.23/go.mod h1:4zegtUJth7lAvFyc6cH2gGQ5B3OFQim01nnU2M8jKDg= +github.com/Microsoft/hcsshim v0.8.20/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= +github.com/Microsoft/hcsshim v0.8.21/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= +github.com/Microsoft/hcsshim v0.9.1 h1:VfDCj+QnY19ktX5TsH22JHcjaZ05RWQiwDbOyEg5ziM= +github.com/Microsoft/hcsshim v0.9.1/go.mod h1:Y/0uV2jUab5kBI7SQgl62at0AVX7uaruzADAVmxm3eM= +github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= +github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= +github.com/alexflint/go-filemutex v1.1.0/go.mod h1:7P4iRhttt/nUvUOrYIhcpMzv2G6CY9UnI16Z+UJqRyk= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= +github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= +github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= github.com/bits-and-blooms/bitset v1.2.0 h1:Kn4yilvwNtMACtf1eYDlG8H77R07mZSPbMjLyS07ChA= github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= +github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= +github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= +github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= +github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= +github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= +github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= +github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= 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.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= @@ -92,6 +140,8 @@ github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d8 github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= +github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/cilium/ebpf v0.6.2 h1:iHsfF/t4aW4heW2YKfeHrVPGdtYTL4C4KocpM8KTSnI= @@ -99,52 +149,131 @@ github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= +github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= +github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= +github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= +github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= +github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= github.com/containerd/aufs v1.0.0/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= +github.com/containerd/btrfs v0.0.0-20201111183144-404b9149801e/go.mod h1:jg2QkJcsabfHugurUvvPhS3E08Oxiuh5W/g1ybB4e0E= +github.com/containerd/btrfs v0.0.0-20210316141732-918d888fb676/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= github.com/containerd/btrfs v1.0.0/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= +github.com/containerd/cgroups v0.0.0-20190717030353-c4b9ac5c7601/go.mod h1:X9rLEHIqSf/wfK8NsPqxJmeZgW4pcfzdXITDrUSJ6uI= +github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= +github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= +github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= +github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= -github.com/containerd/cgroups v1.0.1 h1:iJnMvco9XGvKUvNQkv88bE4uJXxRQH18efbKo9w5vHQ= github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= +github.com/containerd/cgroups v1.0.2 h1:mZBclaSgNDfPWtfhj2xJY28LZ9nYIgzB0pwSURPl6JM= +github.com/containerd/cgroups v1.0.2/go.mod h1:qpbpJ1jmlqsR9f2IyaLPsdkCdnt0rbDVqIDlhuu5tRY= +github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= -github.com/containerd/console v1.0.2 h1:Pi6D+aZXM+oUw1czuKgH5IJ+y0jhYcwBJfx5/Ghn9dE= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= -github.com/containerd/containerd v1.5.8 h1:NmkCC1/QxyZFBny8JogwLpOy2f+VEbO/f6bV2Mqtwuw= -github.com/containerd/containerd v1.5.8/go.mod h1:YdFSv5bTFLpG2HIYmfqDpSYYTDX+mc5qtSuYx1YUb/s= +github.com/containerd/console v1.0.3 h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARubLw= +github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= +github.com/containerd/containerd v1.2.10/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.1-0.20191213020239-082f7e3aed57/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.0-beta.2.0.20200729163537-40b22ef07410/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.3/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.5.0-beta.1/go.mod h1:5HfvG1V2FsKesEGQ17k5/T7V960Tmcumvqn8Mc+pCYQ= +github.com/containerd/containerd v1.5.0-beta.3/go.mod h1:/wr9AVtEM7x9c+n0+stptlo/uBBoBORwEx6ardVcmKU= +github.com/containerd/containerd v1.5.0-beta.4/go.mod h1:GmdgZd2zA2GYIBZ0w09ZvgqEq8EfBp/m3lcVZIvPHhI= +github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoTJseu1FGOKuoA4nNb2s= +github.com/containerd/containerd v1.5.1/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= +github.com/containerd/containerd v1.5.7/go.mod h1:gyvv6+ugqY25TiXxcZC3L5yOeYgEw0QMhscqVp1AR9c= +github.com/containerd/containerd v1.6.0-beta.4 h1:khjl5fy4TaUm8Nq9P8yPGzfgyDc5HE7/qsk5utCMsCc= +github.com/containerd/containerd v1.6.0-beta.4/go.mod h1:K/hqBtTs+ifkK1zGMfm6YSKBSdxuyu/9jC+ThEbUMos= +github.com/containerd/containerd/api v1.6.0-beta.3 h1:+w8zh0hbn4cNIkAtt4v95dBylcwp1hEsFJ5lxbr8wgY= +github.com/containerd/containerd/api v1.6.0-beta.3/go.mod h1:fkctx1jj7m92mQDI6mIEXF+SH3tt2Rv/azUHqrOxYPc= +github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20190815185530-f2a389ac0a02/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo= +github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ= -github.com/containerd/continuity v0.1.0 h1:UFRRY5JemiAhPZrr/uE0n8fMTLcZsUvySPr1+D7pgr8= github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= +github.com/containerd/continuity v0.2.2-0.20211201162329-8e53e7cac79d h1:X5aD4AgIfNi00260miYN8nCzxPQCusmnNapaphze0FM= +github.com/containerd/continuity v0.2.2-0.20211201162329-8e53e7cac79d/go.mod h1:pWygW9u7LtS1o4N/Tn0FoCFDIXZ7rxcMX7HX1Dmibvk= github.com/containerd/cri-containerd v1.11.1-0.20190125013620-4dd6735020f5 h1:/srF029I+oDfm/qeltxCGJyJ8urmlqWGOQmQ7HvwrRc= github.com/containerd/cri-containerd v1.11.1-0.20190125013620-4dd6735020f5/go.mod h1:wxbGdReWGCalzGOEpifoHeYCK4xAgnj4o/4bVB+9voU= +github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/fifo v0.0.0-20200410184934-f15a3290365b/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= +github.com/containerd/fifo v0.0.0-20201026212402-0724c46b320c/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= +github.com/containerd/fifo v0.0.0-20210316144830-115abcc95a1d/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= github.com/containerd/fifo v1.0.0 h1:6PirWBr9/L7GDamKr+XM0IeUFXu5mf3M/BPpH9gaLBU= github.com/containerd/fifo v1.0.0/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= +github.com/containerd/go-cni v1.0.1/go.mod h1:+vUpYxKvAF72G9i1WoDOiPGRtQpqsNW/ZHtSlv++smU= github.com/containerd/go-cni v1.0.2/go.mod h1:nrNABBHzu0ZwCug9Ije8hL2xBCYh/pjfMb1aZGrrohk= +github.com/containerd/go-cni v1.1.1-0.20211026134925-aa8bf14323a5/go.mod h1:Rflh2EJ/++BA2/vY5ao3K6WJRR/bZKsX123aPk+kUtA= +github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/go-runc v0.0.0-20190911050354-e029b79d8cda/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/go-runc v0.0.0-20200220073739-7016d3ce2328/go.mod h1:PpyHrqVs8FTi9vpyHwPwiNEGaACDxT/N/pLcvMSRA9g= github.com/containerd/go-runc v0.0.0-20201020171139-16b287bc67d0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= github.com/containerd/go-runc v1.0.0 h1:oU+lLv1ULm5taqgV/CJivypVODI4SUz1znWjv3nNYS0= github.com/containerd/go-runc v1.0.0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= +github.com/containerd/imgcrypt v1.0.1/go.mod h1:mdd8cEPW7TPgNG4FpuP3sGBiQ7Yi/zak9TYCG3juvb0= +github.com/containerd/imgcrypt v1.0.4-0.20210301171431-0ae5c75f59ba/go.mod h1:6TNsg0ctmizkrOgXRNQjAPFWpMYRWuiB6dSF4Pfa5SA= +github.com/containerd/imgcrypt v1.1.1-0.20210312161619-7ed62a527887/go.mod h1:5AZJNI6sLHJljKuI9IHnw1pWqo/F0nGDOuR9zgTs7ow= github.com/containerd/imgcrypt v1.1.1/go.mod h1:xpLnwiQmEUJPvQoAapeb2SNCxz7Xr6PJrXQb0Dpc4ms= +github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFYfE5+So4M5syatU0N0f0LbWpuqyMi4/BE8c= +github.com/containerd/nri v0.0.0-20210316161719-dbaa18c31c14/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= github.com/containerd/nri v0.1.0/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= +github.com/containerd/stargz-snapshotter/estargz v0.4.1/go.mod h1:x7Q9dg9QYb4+ELgxmo4gBUeJB0tl5dqH1Sdz0nJU1QM= +github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/ttrpc v0.0.0-20191028202541-4f1b8fe65a5c/go.mod h1:LPm1u0xBw8r8NOKoOdNMeVHSawSsltak+Ihv+etqsE8= +github.com/containerd/ttrpc v1.0.1/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= github.com/containerd/ttrpc v1.1.0 h1:GbtyLRxb0gOLR0TYQWt3O6B0NvT8tMdorEHqIQo/lWI= github.com/containerd/ttrpc v1.1.0/go.mod h1:XX4ZTnoOId4HklF4edwc4DcqskFZuvXB1Evzy5KFQpQ= +github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= +github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk= github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg= github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= +github.com/containerd/zfs v0.0.0-20200918131355-0a33824f23a2/go.mod h1:8IgZOBdv8fAgXddBT4dBXJPtxyRsejFIpXoklgxgEjw= +github.com/containerd/zfs v0.0.0-20210301145711-11e8f1707f62/go.mod h1:A9zfAbMlQwE+/is6hi0Xw8ktpL+6glmqZYtevJgaB8Y= +github.com/containerd/zfs v0.0.0-20210315114300-dde8f0fda960/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containerd/zfs v0.0.0-20210324211415-d5c4544f0433/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= github.com/containerd/zfs v1.0.0/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= github.com/containernetworking/cni v0.8.0/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/containernetworking/cni v0.8.1 h1:7zpDnQ3T3s4ucOuJ/ZCLrYBxzkg0AELFfII3Epo9TmI= github.com/containernetworking/cni v0.8.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/containernetworking/plugins v0.9.1 h1:FD1tADPls2EEi3flPc2OegIY1M9pUa9r2Quag7HMLV8= +github.com/containernetworking/cni v1.0.1 h1:9OIL/sZmMYDBe+G8svzILAlulUpaDTUjeAbtH/JNLBo= +github.com/containernetworking/cni v1.0.1/go.mod h1:AKuhXbN5EzmD4yTNtfSsX3tPcmtrBI6QcRV0NiNt15Y= +github.com/containernetworking/plugins v0.8.6/go.mod h1:qnw5mN19D8fIwkqW7oHHYDHVlzhJpcY6TQxn/fUyDDM= github.com/containernetworking/plugins v0.9.1/go.mod h1:xP/idU2ldlzN6m4p5LmGiwRDjeJr6FLK6vuiUwoH7P8= +github.com/containernetworking/plugins v1.0.1 h1:wwCfYbTCj5FC0EJgyzyjTXmqysOiJE9r712Z+2KVZAk= +github.com/containernetworking/plugins v1.0.1/go.mod h1:QHCfGpaTwYTbbH+nZXKVTxNBDZcxSOplJT5ico8/FLE= +github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc= +github.com/containers/ocicrypt v1.1.0/go.mod h1:b8AOe0YR67uU8OqfVNcznfFpAzu3rdgUV4GP9qXPfu4= github.com/containers/ocicrypt v1.1.1/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= github.com/coreos/go-iptables v0.5.0/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= +github.com/coreos/go-iptables v0.6.0/go.mod h1:Qe8Bv2Xik5FyTXwgIbLAnv2sWSBmvWdFETJConOQ//Q= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20161114122254-48702e0da86b/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= @@ -154,6 +283,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:ma github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cri-o/cri-o v1.0.0-rc2.0.20170928185954-3394b3b2d6af h1:H6nLV96F1LkWizYLQtrMtqJBrlJxnpjgisHsTsOS2HU= github.com/cri-o/cri-o v1.0.0-rc2.0.20170928185954-3394b3b2d6af/go.mod h1:POmDVglzQ2jWTlL9ZCfZ8d1QjLhmk0oB36O8T0oG75Y= github.com/cyphar/filepath-securejoin v0.2.2 h1:jCwT2GTP+PY5nBz3c/YL5PAIbusElVrPujOBSCj8xRg= @@ -165,13 +296,27 @@ github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjI 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/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= +github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= +github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= +github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= +github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8= github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= +github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= @@ -183,15 +328,24 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/frankban/quicktest v1.11.3 h1:8sXhOn0uLys67V8EsXLc6eszDs8VXWxL3iRvebPhedY= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= +github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= +github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= @@ -200,14 +354,18 @@ github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0 github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-ini/ini v1.28.2 h1:drmmYv7psRpoGZkPtPKKTB+ZFSnvmwCMfNj5o1nLh2Y= github.com/go-ini/ini v1.28.2/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= github.com/go-openapi/analysis v0.17.2 h1:eYp14J1o8TTSCzndHBtsNuckikV1PfZOSnx4BcBeu0c= @@ -216,22 +374,27 @@ github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQH github.com/go-openapi/errors v0.17.2/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= github.com/go-openapi/errors v0.18.0 h1:+RnmJ5MQccF7jwWAoMzwOpzJEspZ18ZIWfg9Z2eiXq8= github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= +github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.17.2/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= -github.com/go-openapi/jsonpointer v0.19.3 h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= github.com/go-openapi/jsonreference v0.17.2/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= -github.com/go-openapi/jsonreference v0.19.3 h1:5cxNfTy0UVC3X8JL5ymxzyoUZmo8iZb+jeTWn7tUa8o= github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/jsonreference v0.19.5 h1:1WJP/wi4OjB4iV8KVbH73rQaoialJrqv8gitZLxGLtM= +github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= github.com/go-openapi/loads v0.17.2 h1:tEXYu6Xc0pevpzzQx5ghrMN9F7IVpN/+u4iD3rkYE5o= github.com/go-openapi/loads v0.17.2/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= github.com/go-openapi/runtime v0.18.0 h1:ddoL4Uo/729XbNAS9UIsG7Oqa8R8l2edBe6Pq/i8AHM= github.com/go-openapi/runtime v0.18.0/go.mod h1:uI6pHuxWYTy94zZxgcwJkUWa9wbIlhteGfloI10GD4U= +github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= github.com/go-openapi/spec v0.17.2/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= github.com/go-openapi/spec v0.19.3 h1:0XRyw8kguri6Yw4SxhsQA/atC88yqrk0+G4YhI2wabc= @@ -240,23 +403,31 @@ github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pL github.com/go-openapi/strfmt v0.17.2/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= github.com/go-openapi/strfmt v0.18.0 h1:FqqmmVCKn3di+ilU/+1m957T1CnMz3IteVUcV3aGXWA= github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= +github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.17.2/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.14 h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5Fng= +github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-openapi/validate v0.17.2/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= github.com/go-openapi/validate v0.18.0 h1:PVXYcP1GkTl+XIAJnyJxOmK6CSG5Q1UcvoCvNO++5Kg= github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c h1:RBUpb2b14UnmRHNd2uHz20ZHLDK+SW5Us/vWF5IHRaY= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e h1:BWhy2j3IXJhjCbC68FptL43tDKIq8FladmaTs3Xs7Z8= +github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4 h1:9349emZab16e7zQvpmsbtjc18ykshndd8y2PG3sgJbA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= @@ -265,8 +436,9 @@ github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4er github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= @@ -274,6 +446,7 @@ github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -288,10 +461,13 @@ github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvq github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0 h1:LUVKkCeviFUMKqHa4tXIIij/lbhnMbP7Fn5wKdKkRh4= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -305,6 +481,7 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -327,47 +504,85 @@ github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= +github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= +github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= +github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/intel-go/cpuid v0.0.0-20210602155658-5747e5cec0d9 h1:x9HFDMDCsaxTvC4X3o0ZN6mw99dT/wYnTItGwhBRmg0= github.com/intel-go/cpuid v0.0.0-20210602155658-5747e5cec0d9/go.mod h1:RmeVYf9XrPRbRc3XIx0gLYA8qOFvNoPOfaEZduRlEp4= github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= +github.com/j-keck/arping v1.0.2/go.mod h1:aJbELhR92bSk7tp79AWM/ftfc90EfEi2bQJrbBFOsPw= +github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/kata-containers/govmm v0.0.0-20210909155007-1b60b536f3c7 h1:lrtaReMyoviyn/Gtd9iAmQ9qNSTaS3QC1NgQ+h5fliI= github.com/kata-containers/govmm v0.0.0-20210909155007-1b60b536f3c7/go.mod h1:A6QaNB6N6PRQ9mTRpFtUxiF5T5CJpzLALjxBrUQPlFI= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -379,120 +594,196 @@ github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3/go.mod h1:3r6x7q95whyfWQpmGZTu3gk3v2YkMi05HEzl7Tf7YEo= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= +github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= github.com/mdlayher/vsock v0.0.0-20191108225356-d9c65923cb8f h1:t9bhAC/9+wqdIb49Jamux+Sxqa7MhkyuTtsHkmVg6tk= github.com/mdlayher/vsock v0.0.0-20191108225356-d9c65923cb8f/go.mod h1:4GtNxrXX+cNil8xnCdz0zGYemDZDDHSsXbopCRZrRRw= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= -github.com/moby/sys/mountinfo v0.4.1 h1:1O+1cHA1aujwEwwVMa2Xm2l+gIpUHyd3+D+d7LZh1kM= +github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= +github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= +github.com/moby/sys/mountinfo v0.5.0 h1:2Ks8/r6lopsxWi9m58nlwjaeSzUX9iiL1vj5qB/9ObI= +github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= +github.com/moby/sys/signal v0.6.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= +github.com/moby/sys/symlink v0.2.0/go.mod h1:7uZVF2dqJjG/NsClqul95CqKOBRQyYSNnJ6BMgR/gFs= github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= +github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= +github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1 h1:mFwc4LvZ0xpSvDZ3E+k8Yte0hLOMxXUlP+yXtJqkYfQ= +github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.3 h1:gph6h/qe9GSUw1NhH1gp+qb+h8rXD8Cy60Z32Qw3ELA= +github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= +github.com/onsi/gomega v1.15.0 h1:WjP/FQ/sk43MRmnEcT+MlDw2TFvkrXlprrPST/IudjU= +github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= +github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0-rc1.0.20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.0.2-0.20211117181255-693428a734f5 h1:q37d91F6BO4Jp1UqWiun0dUFYaqv6WsKTLTCaWv+8LY= +github.com/opencontainers/image-spec v1.0.2-0.20211117181255-693428a734f5/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/runc v1.0.1 h1:G18PGckGdAm3yVQRWDVQ1rLSLntiniKJ0cNRT2Tm5gs= github.com/opencontainers/runc v1.0.1/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= +github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 h1:3snG66yBm59tKhhSPQrQ/0bCrv1LQbKt40LnUPiUxdc= github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= +github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= +github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= github.com/opencontainers/selinux v1.8.2 h1:c4ca10UMgRcvZ6h0K4HtS15UaVSBEaE+iln2LVpAuGc= github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= +github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 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/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= +github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= -github.com/prometheus/client_golang v1.7.1 h1:NTGy1Ja9pByO+xAeH/qiWnLrKtr3hJPNjaVUwnjpdpA= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.10.0 h1:RyRA7RzGXQZiW+tGMr7sxa85G1z0yOpM1qq5c8lNawc= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0 h1:iMAkS2TDoNWnKM+Kopnx/8tnEStIfpYA0ur0xQzzhMQ= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8 h1:2c1EFnZHIPCW8qKWgHMH/fX2PkSabFc5mrVzfUNdg5U= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= +github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1 h1:ZFfeKAhIQiiOrQaI3/znw0gOmYpO28Tcu1YaqMa/jtQ= +github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= +github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/seccomp/libseccomp-golang v0.9.1 h1:NJjM5DNFOs0s3kYE1WUOr6G8V97sdt46rlXTMfXGWBo= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= @@ -500,9 +791,11 @@ github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= @@ -510,6 +803,7 @@ github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkU github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= +github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= @@ -517,11 +811,15 @@ github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= +github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= +github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= +github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -529,32 +827,59 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2 h1:gsqYFH8bb9ekPA12kRo0hfjngWQjkJPlN9R0N78BoUo= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= +github.com/vishvananda/netlink v1.1.1-0.20210330154013-f5de75959ad5/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= github.com/vishvananda/netlink v1.1.1-0.20210924202909-187053b97868 h1:FFT5/l13iFxg+2dzyoiXZPmMtoclsyBKnUqTEzYpDXw= github.com/vishvananda/netlink v1.1.1-0.20210924202909-187053b97868/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= +github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= -github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae h1:4hwBBUfQCFe3Cym0ZtKyq7L16eZUtYKs+BaHDN6mAns= github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= +github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f h1:p4VB7kIXpOQvVn1ZaTIVp+3vuYAXFe3OJEvjbUYJLaA= +github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= +github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= +github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= +github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= +go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= +go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= +go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= +go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= +go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= +go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= @@ -563,26 +888,55 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/otel v1.0.0 h1:qTTn6x71GVBvoafHK/yaRUmFzI4LcONZD0/kXxl5PHI= +go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.24.0/go.mod h1:O0cG0vP6TP3c323kh70JmeG1jN69Sn9Z5HxgmeASFWY= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= +go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= go.opentelemetry.io/otel v1.0.0/go.mod h1:AjRVh9A5/5DE7S+mZtTR6t8vpKKryam+0lREnfmS4cg= +go.opentelemetry.io/otel v1.0.1 h1:4XKyXmfqJLOQ7feyV5DB6gsBFZ0ltB8vLtp6pj4JIcc= +go.opentelemetry.io/otel v1.0.1/go.mod h1:OPEOD4jIT2SlZPMmwT6FqZz2C0ZNdQqiWcoK6M0SNFU= go.opentelemetry.io/otel/exporters/jaeger v1.0.0 h1:cLhx8llHw02h5JTqGqaRbYn+QVKHmrzD9vEbKnSPk5U= go.opentelemetry.io/otel/exporters/jaeger v1.0.0/go.mod h1:q10N1AolE1JjqKrFJK2tYw0iZpmX+HBaXBtuCzRnBGQ= -go.opentelemetry.io/otel/sdk v1.0.0 h1:BNPMYUONPNbLneMttKSjQhOTlFLOD9U22HNG1KrIN2Y= +go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.1/go.mod h1:Kv8liBeVNFkkkbilbgWRpV+wWuu+H5xdOT6HAgd30iw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.1/go.mod h1:xOvWoTOrQjxjW61xtOmD/WKGRYb/P4NzRo3bs65U6Rk= +go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= +go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= +go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= go.opentelemetry.io/otel/sdk v1.0.0/go.mod h1:PCrDHlSy5x1kjezSdL37PhbFUMjrsLRshJ2zCzeXwbM= -go.opentelemetry.io/otel/trace v1.0.0 h1:TSBr8GTEtKevYMG/2d21M989r5WJYVimhTHBKVEZuh4= +go.opentelemetry.io/otel/sdk v1.0.1 h1:wXxFEWGo7XfXupPwVJvTBOaPBC9FEg0wB8hMNrKk+cA= +go.opentelemetry.io/otel/sdk v1.0.1/go.mod h1:HrdXne+BiwsOHYYkBE5ysIcv2bvdZstxzmCQhxTcZkI= +go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= +go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= +go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= go.opentelemetry.io/otel/trace v1.0.0/go.mod h1:PXTWqayeFUlJV1YDNhsJYB184+IvAH814St6o6ajzIs= +go.opentelemetry.io/otel/trace v1.0.1 h1:StTeIH6Q3G4r0Fiw34LTokUFESZgIDUr0qIJ7mKmAfw= +go.opentelemetry.io/otel/trace v1.0.1/go.mod h1:5g4i4fKLaX2BQpSBsxw8YYcgKpMMSW3x7ZTuYBr3sUk= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.opentelemetry.io/proto/otlp v0.9.0/go.mod h1:1vKfU9rv61e9EVGthD1zNvUbiwPcimSsOPU9brfSHJg= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -613,10 +967,13 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -628,11 +985,13 @@ golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191108221443-4ba9e2ef068c/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -644,6 +1003,7 @@ golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= @@ -651,9 +1011,15 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210825183410-e898025ed96a h1:bRuuGXV8wwSdGTB+CtJf+FjgO1APK1CoO39T4BN/XBw= +golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -671,9 +1037,13 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -682,21 +1052,29 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190522044717-8097e1b27ff5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191105231009-c1f44814a5cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -713,39 +1091,62 @@ golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200817155316-9781c653f443/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210426230700-d19ff857e887 h1:dXfMednGJh/SUUFjTLsWJz3P+TQt9qnR11GgeI3vWKs= golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210820121016-41cdb8703e55/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359 h1:2B5p2L5IfGiD7+b9BOoRMC6DgObAVZV+Fsp050NqXik= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -760,9 +1161,12 @@ golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -782,19 +1186,25 @@ golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjs golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200916195026-c9a70fc28ce3/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -819,13 +1229,17 @@ google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCID google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= @@ -834,9 +1248,15 @@ google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKa google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.36.0 h1:o1bcQ6imQMIOpdrO3SWf2z5RV72WbDwdXuK0MDlc8As= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.41.0 h1:f+PlOh7QV4iIJkPrx5NQ7qaNGFQ3OTse67yaDHfju4E= +google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -852,32 +1272,39 @@ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= @@ -890,24 +1317,57 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= +k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= -k8s.io/apimachinery v0.20.6 h1:R5p3SlhaABYShQSO6LpPsYHjV05Q+79eBUR0Ut/f4tk= +k8s.io/api v0.22.0/go.mod h1:0AoXXqst47OI/L0oGKq9DG61dvGRPXs7X4/B7KyjBCU= +k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= +k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= +k8s.io/apimachinery v0.22.0 h1:CqH/BdNAzZl+sr3tc0D3VsK3u6ARVSo3GWyLmfIjbP0= +k8s.io/apimachinery v0.22.0/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= +k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= +k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= +k8s.io/apiserver v0.22.0/go.mod h1:04kaIEzIQrTGJ5syLppQWvpkLJXQtJECHmae+ZGc/nc= +k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= +k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= +k8s.io/client-go v0.22.0/go.mod h1:GUjIuXR5PiEv/RVK5OODUsm6eZk7wtSWZSaSJbpFdGg= +k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= +k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= +k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM= -k8s.io/cri-api v0.20.6 h1:iXX0K2pRrbR8yXbZtDK/bSnmg/uSqIFiVJK1x4LUOMc= +k8s.io/component-base v0.22.0/go.mod h1:SXj6Z+V6P6GsBhHZVbWCw9hFjUdUYnJerlhhPnYCBCg= +k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= +k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= +k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= +k8s.io/cri-api v0.23.0-alpha.4 h1:VY9Bxk+254iz5rop9IWorEfVQIzcv8IkUVEwWcvODgM= +k8s.io/cri-api v0.23.0-alpha.4/go.mod h1:qVxNSzR1gwLmZWK61jKRA5NhbyYrNoXUaZpQ7yOUYOQ= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= +k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= +k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= +k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210707171843-4b05e18ac7d9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/src/runtime/vendor/github.com/Microsoft/go-winio/README.md b/src/runtime/vendor/github.com/Microsoft/go-winio/README.md index 568001057..683be1dcf 100644 --- a/src/runtime/vendor/github.com/Microsoft/go-winio/README.md +++ b/src/runtime/vendor/github.com/Microsoft/go-winio/README.md @@ -1,4 +1,4 @@ -# go-winio +# go-winio [![Build Status](https://github.com/microsoft/go-winio/actions/workflows/ci.yml/badge.svg)](https://github.com/microsoft/go-winio/actions/workflows/ci.yml) This repository contains utilities for efficiently performing Win32 IO operations in Go. Currently, this is focused on accessing named pipes and other file handles, and @@ -11,12 +11,27 @@ package. Please see the LICENSE file for licensing information. -This project has adopted the [Microsoft Open Source Code of -Conduct](https://opensource.microsoft.com/codeofconduct/). For more information -see the [Code of Conduct -FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact -[opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional -questions or comments. +## Contributing +This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) +declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com. + +When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR +appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA. + +We also require that contributors sign their commits using git commit -s or git commit --signoff to certify they either authored the work themselves +or otherwise have permission to use it in this project. Please see https://developercertificate.org/ for more info, as well as to make sure that you can +attest to the rules listed. Our CI uses the DCO Github app to ensure that all commits in a given PR are signed-off. + + +## Code of Conduct + +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). +For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or +contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. + + + +## Special Thanks Thanks to natefinch for the inspiration for this library. See https://github.com/natefinch/npipe for another named pipe implementation. diff --git a/src/runtime/vendor/github.com/Microsoft/go-winio/pkg/security/syscall_windows.go b/src/runtime/vendor/github.com/Microsoft/go-winio/pkg/security/syscall_windows.go index c40c2739b..d7096716c 100644 --- a/src/runtime/vendor/github.com/Microsoft/go-winio/pkg/security/syscall_windows.go +++ b/src/runtime/vendor/github.com/Microsoft/go-winio/pkg/security/syscall_windows.go @@ -2,6 +2,6 @@ package security //go:generate go run mksyscall_windows.go -output zsyscall_windows.go syscall_windows.go -//sys getSecurityInfo(handle syscall.Handle, objectType uint32, si uint32, ppsidOwner **uintptr, ppsidGroup **uintptr, ppDacl *uintptr, ppSacl *uintptr, ppSecurityDescriptor *uintptr) (err error) [failretval!=0] = advapi32.GetSecurityInfo -//sys setSecurityInfo(handle syscall.Handle, objectType uint32, si uint32, psidOwner uintptr, psidGroup uintptr, pDacl uintptr, pSacl uintptr) (err error) [failretval!=0] = advapi32.SetSecurityInfo -//sys setEntriesInAcl(count uintptr, pListOfEEs uintptr, oldAcl uintptr, newAcl *uintptr) (err error) [failretval!=0] = advapi32.SetEntriesInAclW +//sys getSecurityInfo(handle syscall.Handle, objectType uint32, si uint32, ppsidOwner **uintptr, ppsidGroup **uintptr, ppDacl *uintptr, ppSacl *uintptr, ppSecurityDescriptor *uintptr) (win32err error) = advapi32.GetSecurityInfo +//sys setSecurityInfo(handle syscall.Handle, objectType uint32, si uint32, psidOwner uintptr, psidGroup uintptr, pDacl uintptr, pSacl uintptr) (win32err error) = advapi32.SetSecurityInfo +//sys setEntriesInAcl(count uintptr, pListOfEEs uintptr, oldAcl uintptr, newAcl *uintptr) (win32err error) = advapi32.SetEntriesInAclW diff --git a/src/runtime/vendor/github.com/Microsoft/go-winio/pkg/security/zsyscall_windows.go b/src/runtime/vendor/github.com/Microsoft/go-winio/pkg/security/zsyscall_windows.go index 4a90cb3cc..4084680e0 100644 --- a/src/runtime/vendor/github.com/Microsoft/go-winio/pkg/security/zsyscall_windows.go +++ b/src/runtime/vendor/github.com/Microsoft/go-winio/pkg/security/zsyscall_windows.go @@ -45,26 +45,26 @@ var ( procSetSecurityInfo = modadvapi32.NewProc("SetSecurityInfo") ) -func getSecurityInfo(handle syscall.Handle, objectType uint32, si uint32, ppsidOwner **uintptr, ppsidGroup **uintptr, ppDacl *uintptr, ppSacl *uintptr, ppSecurityDescriptor *uintptr) (err error) { - r1, _, e1 := syscall.Syscall9(procGetSecurityInfo.Addr(), 8, uintptr(handle), uintptr(objectType), uintptr(si), uintptr(unsafe.Pointer(ppsidOwner)), uintptr(unsafe.Pointer(ppsidGroup)), uintptr(unsafe.Pointer(ppDacl)), uintptr(unsafe.Pointer(ppSacl)), uintptr(unsafe.Pointer(ppSecurityDescriptor)), 0) - if r1 != 0 { - err = errnoErr(e1) +func getSecurityInfo(handle syscall.Handle, objectType uint32, si uint32, ppsidOwner **uintptr, ppsidGroup **uintptr, ppDacl *uintptr, ppSacl *uintptr, ppSecurityDescriptor *uintptr) (win32err error) { + r0, _, _ := syscall.Syscall9(procGetSecurityInfo.Addr(), 8, uintptr(handle), uintptr(objectType), uintptr(si), uintptr(unsafe.Pointer(ppsidOwner)), uintptr(unsafe.Pointer(ppsidGroup)), uintptr(unsafe.Pointer(ppDacl)), uintptr(unsafe.Pointer(ppSacl)), uintptr(unsafe.Pointer(ppSecurityDescriptor)), 0) + if r0 != 0 { + win32err = syscall.Errno(r0) } return } -func setEntriesInAcl(count uintptr, pListOfEEs uintptr, oldAcl uintptr, newAcl *uintptr) (err error) { - r1, _, e1 := syscall.Syscall6(procSetEntriesInAclW.Addr(), 4, uintptr(count), uintptr(pListOfEEs), uintptr(oldAcl), uintptr(unsafe.Pointer(newAcl)), 0, 0) - if r1 != 0 { - err = errnoErr(e1) +func setEntriesInAcl(count uintptr, pListOfEEs uintptr, oldAcl uintptr, newAcl *uintptr) (win32err error) { + r0, _, _ := syscall.Syscall6(procSetEntriesInAclW.Addr(), 4, uintptr(count), uintptr(pListOfEEs), uintptr(oldAcl), uintptr(unsafe.Pointer(newAcl)), 0, 0) + if r0 != 0 { + win32err = syscall.Errno(r0) } return } -func setSecurityInfo(handle syscall.Handle, objectType uint32, si uint32, psidOwner uintptr, psidGroup uintptr, pDacl uintptr, pSacl uintptr) (err error) { - r1, _, e1 := syscall.Syscall9(procSetSecurityInfo.Addr(), 7, uintptr(handle), uintptr(objectType), uintptr(si), uintptr(psidOwner), uintptr(psidGroup), uintptr(pDacl), uintptr(pSacl), 0, 0) - if r1 != 0 { - err = errnoErr(e1) +func setSecurityInfo(handle syscall.Handle, objectType uint32, si uint32, psidOwner uintptr, psidGroup uintptr, pDacl uintptr, pSacl uintptr) (win32err error) { + r0, _, _ := syscall.Syscall9(procSetSecurityInfo.Addr(), 7, uintptr(handle), uintptr(objectType), uintptr(si), uintptr(psidOwner), uintptr(psidGroup), uintptr(pDacl), uintptr(pSacl), 0, 0) + if r0 != 0 { + win32err = syscall.Errno(r0) } return } diff --git a/src/runtime/vendor/github.com/Microsoft/go-winio/privilege.go b/src/runtime/vendor/github.com/Microsoft/go-winio/privilege.go index 9c83d36fe..c3dd7c217 100644 --- a/src/runtime/vendor/github.com/Microsoft/go-winio/privilege.go +++ b/src/runtime/vendor/github.com/Microsoft/go-winio/privilege.go @@ -28,8 +28,9 @@ const ( ERROR_NOT_ALL_ASSIGNED syscall.Errno = 1300 - SeBackupPrivilege = "SeBackupPrivilege" - SeRestorePrivilege = "SeRestorePrivilege" + SeBackupPrivilege = "SeBackupPrivilege" + SeRestorePrivilege = "SeRestorePrivilege" + SeSecurityPrivilege = "SeSecurityPrivilege" ) const ( diff --git a/src/runtime/vendor/github.com/Microsoft/go-winio/vhd/vhd.go b/src/runtime/vendor/github.com/Microsoft/go-winio/vhd/vhd.go index b03b789e6..a33a36c0f 100644 --- a/src/runtime/vendor/github.com/Microsoft/go-winio/vhd/vhd.go +++ b/src/runtime/vendor/github.com/Microsoft/go-winio/vhd/vhd.go @@ -13,11 +13,11 @@ import ( //go:generate go run mksyscall_windows.go -output zvhd_windows.go vhd.go -//sys createVirtualDisk(virtualStorageType *VirtualStorageType, path string, virtualDiskAccessMask uint32, securityDescriptor *uintptr, createVirtualDiskFlags uint32, providerSpecificFlags uint32, parameters *CreateVirtualDiskParameters, overlapped *syscall.Overlapped, handle *syscall.Handle) (err error) [failretval != 0] = virtdisk.CreateVirtualDisk -//sys openVirtualDisk(virtualStorageType *VirtualStorageType, path string, virtualDiskAccessMask uint32, openVirtualDiskFlags uint32, parameters *OpenVirtualDiskParameters, handle *syscall.Handle) (err error) [failretval != 0] = virtdisk.OpenVirtualDisk -//sys attachVirtualDisk(handle syscall.Handle, securityDescriptor *uintptr, attachVirtualDiskFlag uint32, providerSpecificFlags uint32, parameters *AttachVirtualDiskParameters, overlapped *syscall.Overlapped) (err error) [failretval != 0] = virtdisk.AttachVirtualDisk -//sys detachVirtualDisk(handle syscall.Handle, detachVirtualDiskFlags uint32, providerSpecificFlags uint32) (err error) [failretval != 0] = virtdisk.DetachVirtualDisk -//sys getVirtualDiskPhysicalPath(handle syscall.Handle, diskPathSizeInBytes *uint32, buffer *uint16) (err error) [failretval != 0] = virtdisk.GetVirtualDiskPhysicalPath +//sys createVirtualDisk(virtualStorageType *VirtualStorageType, path string, virtualDiskAccessMask uint32, securityDescriptor *uintptr, createVirtualDiskFlags uint32, providerSpecificFlags uint32, parameters *CreateVirtualDiskParameters, overlapped *syscall.Overlapped, handle *syscall.Handle) (win32err error) = virtdisk.CreateVirtualDisk +//sys openVirtualDisk(virtualStorageType *VirtualStorageType, path string, virtualDiskAccessMask uint32, openVirtualDiskFlags uint32, parameters *OpenVirtualDiskParameters, handle *syscall.Handle) (win32err error) = virtdisk.OpenVirtualDisk +//sys attachVirtualDisk(handle syscall.Handle, securityDescriptor *uintptr, attachVirtualDiskFlag uint32, providerSpecificFlags uint32, parameters *AttachVirtualDiskParameters, overlapped *syscall.Overlapped) (win32err error) = virtdisk.AttachVirtualDisk +//sys detachVirtualDisk(handle syscall.Handle, detachVirtualDiskFlags uint32, providerSpecificFlags uint32) (win32err error) = virtdisk.DetachVirtualDisk +//sys getVirtualDiskPhysicalPath(handle syscall.Handle, diskPathSizeInBytes *uint32, buffer *uint16) (win32err error) = virtdisk.GetVirtualDiskPhysicalPath type ( CreateVirtualDiskFlag uint32 diff --git a/src/runtime/vendor/github.com/Microsoft/go-winio/vhd/zvhd_windows.go b/src/runtime/vendor/github.com/Microsoft/go-winio/vhd/zvhd_windows.go index 572f7b42f..7fb5f3651 100644 --- a/src/runtime/vendor/github.com/Microsoft/go-winio/vhd/zvhd_windows.go +++ b/src/runtime/vendor/github.com/Microsoft/go-winio/vhd/zvhd_windows.go @@ -47,60 +47,60 @@ var ( procOpenVirtualDisk = modvirtdisk.NewProc("OpenVirtualDisk") ) -func attachVirtualDisk(handle syscall.Handle, securityDescriptor *uintptr, attachVirtualDiskFlag uint32, providerSpecificFlags uint32, parameters *AttachVirtualDiskParameters, overlapped *syscall.Overlapped) (err error) { - r1, _, e1 := syscall.Syscall6(procAttachVirtualDisk.Addr(), 6, uintptr(handle), uintptr(unsafe.Pointer(securityDescriptor)), uintptr(attachVirtualDiskFlag), uintptr(providerSpecificFlags), uintptr(unsafe.Pointer(parameters)), uintptr(unsafe.Pointer(overlapped))) - if r1 != 0 { - err = errnoErr(e1) +func attachVirtualDisk(handle syscall.Handle, securityDescriptor *uintptr, attachVirtualDiskFlag uint32, providerSpecificFlags uint32, parameters *AttachVirtualDiskParameters, overlapped *syscall.Overlapped) (win32err error) { + r0, _, _ := syscall.Syscall6(procAttachVirtualDisk.Addr(), 6, uintptr(handle), uintptr(unsafe.Pointer(securityDescriptor)), uintptr(attachVirtualDiskFlag), uintptr(providerSpecificFlags), uintptr(unsafe.Pointer(parameters)), uintptr(unsafe.Pointer(overlapped))) + if r0 != 0 { + win32err = syscall.Errno(r0) } return } -func createVirtualDisk(virtualStorageType *VirtualStorageType, path string, virtualDiskAccessMask uint32, securityDescriptor *uintptr, createVirtualDiskFlags uint32, providerSpecificFlags uint32, parameters *CreateVirtualDiskParameters, overlapped *syscall.Overlapped, handle *syscall.Handle) (err error) { +func createVirtualDisk(virtualStorageType *VirtualStorageType, path string, virtualDiskAccessMask uint32, securityDescriptor *uintptr, createVirtualDiskFlags uint32, providerSpecificFlags uint32, parameters *CreateVirtualDiskParameters, overlapped *syscall.Overlapped, handle *syscall.Handle) (win32err error) { var _p0 *uint16 - _p0, err = syscall.UTF16PtrFromString(path) - if err != nil { + _p0, win32err = syscall.UTF16PtrFromString(path) + if win32err != nil { return } return _createVirtualDisk(virtualStorageType, _p0, virtualDiskAccessMask, securityDescriptor, createVirtualDiskFlags, providerSpecificFlags, parameters, overlapped, handle) } -func _createVirtualDisk(virtualStorageType *VirtualStorageType, path *uint16, virtualDiskAccessMask uint32, securityDescriptor *uintptr, createVirtualDiskFlags uint32, providerSpecificFlags uint32, parameters *CreateVirtualDiskParameters, overlapped *syscall.Overlapped, handle *syscall.Handle) (err error) { - r1, _, e1 := syscall.Syscall9(procCreateVirtualDisk.Addr(), 9, uintptr(unsafe.Pointer(virtualStorageType)), uintptr(unsafe.Pointer(path)), uintptr(virtualDiskAccessMask), uintptr(unsafe.Pointer(securityDescriptor)), uintptr(createVirtualDiskFlags), uintptr(providerSpecificFlags), uintptr(unsafe.Pointer(parameters)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(handle))) - if r1 != 0 { - err = errnoErr(e1) +func _createVirtualDisk(virtualStorageType *VirtualStorageType, path *uint16, virtualDiskAccessMask uint32, securityDescriptor *uintptr, createVirtualDiskFlags uint32, providerSpecificFlags uint32, parameters *CreateVirtualDiskParameters, overlapped *syscall.Overlapped, handle *syscall.Handle) (win32err error) { + r0, _, _ := syscall.Syscall9(procCreateVirtualDisk.Addr(), 9, uintptr(unsafe.Pointer(virtualStorageType)), uintptr(unsafe.Pointer(path)), uintptr(virtualDiskAccessMask), uintptr(unsafe.Pointer(securityDescriptor)), uintptr(createVirtualDiskFlags), uintptr(providerSpecificFlags), uintptr(unsafe.Pointer(parameters)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(handle))) + if r0 != 0 { + win32err = syscall.Errno(r0) } return } -func detachVirtualDisk(handle syscall.Handle, detachVirtualDiskFlags uint32, providerSpecificFlags uint32) (err error) { - r1, _, e1 := syscall.Syscall(procDetachVirtualDisk.Addr(), 3, uintptr(handle), uintptr(detachVirtualDiskFlags), uintptr(providerSpecificFlags)) - if r1 != 0 { - err = errnoErr(e1) +func detachVirtualDisk(handle syscall.Handle, detachVirtualDiskFlags uint32, providerSpecificFlags uint32) (win32err error) { + r0, _, _ := syscall.Syscall(procDetachVirtualDisk.Addr(), 3, uintptr(handle), uintptr(detachVirtualDiskFlags), uintptr(providerSpecificFlags)) + if r0 != 0 { + win32err = syscall.Errno(r0) } return } -func getVirtualDiskPhysicalPath(handle syscall.Handle, diskPathSizeInBytes *uint32, buffer *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procGetVirtualDiskPhysicalPath.Addr(), 3, uintptr(handle), uintptr(unsafe.Pointer(diskPathSizeInBytes)), uintptr(unsafe.Pointer(buffer))) - if r1 != 0 { - err = errnoErr(e1) +func getVirtualDiskPhysicalPath(handle syscall.Handle, diskPathSizeInBytes *uint32, buffer *uint16) (win32err error) { + r0, _, _ := syscall.Syscall(procGetVirtualDiskPhysicalPath.Addr(), 3, uintptr(handle), uintptr(unsafe.Pointer(diskPathSizeInBytes)), uintptr(unsafe.Pointer(buffer))) + if r0 != 0 { + win32err = syscall.Errno(r0) } return } -func openVirtualDisk(virtualStorageType *VirtualStorageType, path string, virtualDiskAccessMask uint32, openVirtualDiskFlags uint32, parameters *OpenVirtualDiskParameters, handle *syscall.Handle) (err error) { +func openVirtualDisk(virtualStorageType *VirtualStorageType, path string, virtualDiskAccessMask uint32, openVirtualDiskFlags uint32, parameters *OpenVirtualDiskParameters, handle *syscall.Handle) (win32err error) { var _p0 *uint16 - _p0, err = syscall.UTF16PtrFromString(path) - if err != nil { + _p0, win32err = syscall.UTF16PtrFromString(path) + if win32err != nil { return } return _openVirtualDisk(virtualStorageType, _p0, virtualDiskAccessMask, openVirtualDiskFlags, parameters, handle) } -func _openVirtualDisk(virtualStorageType *VirtualStorageType, path *uint16, virtualDiskAccessMask uint32, openVirtualDiskFlags uint32, parameters *OpenVirtualDiskParameters, handle *syscall.Handle) (err error) { - r1, _, e1 := syscall.Syscall6(procOpenVirtualDisk.Addr(), 6, uintptr(unsafe.Pointer(virtualStorageType)), uintptr(unsafe.Pointer(path)), uintptr(virtualDiskAccessMask), uintptr(openVirtualDiskFlags), uintptr(unsafe.Pointer(parameters)), uintptr(unsafe.Pointer(handle))) - if r1 != 0 { - err = errnoErr(e1) +func _openVirtualDisk(virtualStorageType *VirtualStorageType, path *uint16, virtualDiskAccessMask uint32, openVirtualDiskFlags uint32, parameters *OpenVirtualDiskParameters, handle *syscall.Handle) (win32err error) { + r0, _, _ := syscall.Syscall6(procOpenVirtualDisk.Addr(), 6, uintptr(unsafe.Pointer(virtualStorageType)), uintptr(unsafe.Pointer(path)), uintptr(virtualDiskAccessMask), uintptr(openVirtualDiskFlags), uintptr(unsafe.Pointer(parameters)), uintptr(unsafe.Pointer(handle))) + if r0 != 0 { + win32err = syscall.Errno(r0) } return } diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/.gitignore b/src/runtime/vendor/github.com/Microsoft/hcsshim/.gitignore index aec9bd4bb..54ed6f06c 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/.gitignore +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/.gitignore @@ -1,3 +1,38 @@ +# Binaries for programs and plugins *.exe -.idea -.vscode +*.dll +*.so +*.dylib + +# Ignore vscode setting files +.vscode/ + +# Test binary, build with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736 +.glide/ + +# Ignore gcs bin directory +service/bin/ +service/pkg/ + +*.img +*.vhd +*.tar.gz + +# Make stuff +.rootfs-done +bin/* +rootfs/* +*.o +/build/ + +deps/* +out/* + +.idea/ +.vscode/ \ No newline at end of file diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/.golangci.yml b/src/runtime/vendor/github.com/Microsoft/hcsshim/.golangci.yml new file mode 100644 index 000000000..16b25be55 --- /dev/null +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/.golangci.yml @@ -0,0 +1,96 @@ +linters: + enable: + - stylecheck + +linters-settings: + stylecheck: + # https://staticcheck.io/docs/checks + checks: ["all"] + + +issues: + # This repo has a LOT of generated schema files, operating system bindings, and other things that ST1003 from stylecheck won't like + # (screaming case Windows api constants for example). There's also some structs that we *could* change the initialisms to be Go + # friendly (Id -> ID) but they're exported and it would be a breaking change. This makes it so that most new code, code that isn't + # supposed to be a pretty faithful mapping to an OS call/constants, or non-generated code still checks if we're following idioms, + # while ignoring the things that are just noise or would be more of a hassle than it'd be worth to change. + exclude-rules: + - path: layer.go + linters: + - stylecheck + Text: "ST1003:" + + - path: hcsshim.go + linters: + - stylecheck + Text: "ST1003:" + + - path: internal\\hcs\\schema2\\ + linters: + - stylecheck + Text: "ST1003:" + + - path: internal\\wclayer\\ + linters: + - stylecheck + Text: "ST1003:" + + - path: hcn\\ + linters: + - stylecheck + Text: "ST1003:" + + - path: internal\\hcs\\schema1\\ + linters: + - stylecheck + Text: "ST1003:" + + - path: internal\\hns\\ + linters: + - stylecheck + Text: "ST1003:" + + - path: ext4\\internal\\compactext4\\ + linters: + - stylecheck + Text: "ST1003:" + + - path: ext4\\internal\\format\\ + linters: + - stylecheck + Text: "ST1003:" + + - path: internal\\guestrequest\\ + linters: + - stylecheck + Text: "ST1003:" + + - path: internal\\guest\\prot\\ + linters: + - stylecheck + Text: "ST1003:" + + - path: internal\\windevice\\ + linters: + - stylecheck + Text: "ST1003:" + + - path: internal\\winapi\\ + linters: + - stylecheck + Text: "ST1003:" + + - path: internal\\vmcompute\\ + linters: + - stylecheck + Text: "ST1003:" + + - path: internal\\regstate\\ + linters: + - stylecheck + Text: "ST1003:" + + - path: internal\\hcserror\\ + linters: + - stylecheck + Text: "ST1003:" \ No newline at end of file diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/Makefile b/src/runtime/vendor/github.com/Microsoft/hcsshim/Makefile new file mode 100644 index 000000000..a8f5516cd --- /dev/null +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/Makefile @@ -0,0 +1,87 @@ +BASE:=base.tar.gz + +GO:=go +GO_FLAGS:=-ldflags "-s -w" # strip Go binaries +CGO_ENABLED:=0 +GOMODVENDOR:= + +CFLAGS:=-O2 -Wall +LDFLAGS:=-static -s # strip C binaries + +GO_FLAGS_EXTRA:= +ifeq "$(GOMODVENDOR)" "1" +GO_FLAGS_EXTRA += -mod=vendor +endif +GO_BUILD:=CGO_ENABLED=$(CGO_ENABLED) $(GO) build $(GO_FLAGS) $(GO_FLAGS_EXTRA) + +SRCROOT=$(dir $(abspath $(firstword $(MAKEFILE_LIST)))) + +# The link aliases for gcstools +GCS_TOOLS=\ + generichook + +.PHONY: all always rootfs test + +all: out/initrd.img out/rootfs.tar.gz + +clean: + find -name '*.o' -print0 | xargs -0 -r rm + rm -rf bin deps rootfs out + +test: + cd $(SRCROOT) && go test -v ./internal/guest/... + +out/delta.tar.gz: bin/init bin/vsockexec bin/cmd/gcs bin/cmd/gcstools Makefile + @mkdir -p out + rm -rf rootfs + mkdir -p rootfs/bin/ + cp bin/init rootfs/ + cp bin/vsockexec rootfs/bin/ + cp bin/cmd/gcs rootfs/bin/ + cp bin/cmd/gcstools rootfs/bin/ + for tool in $(GCS_TOOLS); do ln -s gcstools rootfs/bin/$$tool; done + git -C $(SRCROOT) rev-parse HEAD > rootfs/gcs.commit && \ + git -C $(SRCROOT) rev-parse --abbrev-ref HEAD > rootfs/gcs.branch + tar -zcf $@ -C rootfs . + rm -rf rootfs + +out/rootfs.tar.gz: out/initrd.img + rm -rf rootfs-conv + mkdir rootfs-conv + gunzip -c out/initrd.img | (cd rootfs-conv && cpio -imd) + tar -zcf $@ -C rootfs-conv . + rm -rf rootfs-conv + +out/initrd.img: $(BASE) out/delta.tar.gz $(SRCROOT)/hack/catcpio.sh + $(SRCROOT)/hack/catcpio.sh "$(BASE)" out/delta.tar.gz > out/initrd.img.uncompressed + gzip -c out/initrd.img.uncompressed > $@ + rm out/initrd.img.uncompressed + +-include deps/cmd/gcs.gomake +-include deps/cmd/gcstools.gomake + +# Implicit rule for includes that define Go targets. +%.gomake: $(SRCROOT)/Makefile + @mkdir -p $(dir $@) + @/bin/echo $(@:deps/%.gomake=bin/%): $(SRCROOT)/hack/gomakedeps.sh > $@.new + @/bin/echo -e '\t@mkdir -p $$(dir $$@) $(dir $@)' >> $@.new + @/bin/echo -e '\t$$(GO_BUILD) -o $$@.new $$(SRCROOT)/$$(@:bin/%=%)' >> $@.new + @/bin/echo -e '\tGO="$(GO)" $$(SRCROOT)/hack/gomakedeps.sh $$@ $$(SRCROOT)/$$(@:bin/%=%) $$(GO_FLAGS) $$(GO_FLAGS_EXTRA) > $(@:%.gomake=%.godeps).new' >> $@.new + @/bin/echo -e '\tmv $(@:%.gomake=%.godeps).new $(@:%.gomake=%.godeps)' >> $@.new + @/bin/echo -e '\tmv $$@.new $$@' >> $@.new + @/bin/echo -e '-include $(@:%.gomake=%.godeps)' >> $@.new + mv $@.new $@ + +VPATH=$(SRCROOT) + +bin/vsockexec: vsockexec/vsockexec.o vsockexec/vsock.o + @mkdir -p bin + $(CC) $(LDFLAGS) -o $@ $^ + +bin/init: init/init.o vsockexec/vsock.o + @mkdir -p bin + $(CC) $(LDFLAGS) -o $@ $^ + +%.o: %.c + @mkdir -p $(dir $@) + $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/README.md b/src/runtime/vendor/github.com/Microsoft/hcsshim/README.md index 95c300365..b8ca926a9 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/README.md +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/README.md @@ -2,13 +2,67 @@ [![Build status](https://github.com/microsoft/hcsshim/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/microsoft/hcsshim/actions?query=branch%3Amaster) -This package contains the Golang interface for using the Windows [Host Compute Service](https://techcommunity.microsoft.com/t5/containers/introducing-the-host-compute-service-hcs/ba-p/382332) (HCS) to launch and manage [Windows Containers](https://docs.microsoft.com/en-us/virtualization/windowscontainers/about/). It also contains other helpers and functions for managing Windows Containers such as the Golang interface for the Host Network Service (HNS). +This package contains the Golang interface for using the Windows [Host Compute Service](https://techcommunity.microsoft.com/t5/containers/introducing-the-host-compute-service-hcs/ba-p/382332) (HCS) to launch and manage [Windows Containers](https://docs.microsoft.com/en-us/virtualization/windowscontainers/about/). It also contains other helpers and functions for managing Windows Containers such as the Golang interface for the Host Network Service (HNS), as well as code for the [guest agent](./internal/guest/README.md) (commonly referred to as the GCS or Guest Compute Service in the codebase) used to support running Linux Hyper-V containers. -It is primarily used in the [Moby Project](https://github.com/moby/moby), but it can be freely used by other projects as well. +It is primarily used in the [Moby](https://github.com/moby/moby) and [Containerd](https://github.com/containerd/containerd) projects, but it can be freely used by other projects as well. + +## Building + +While this repository can be used as a library of sorts to call the HCS apis, there are a couple binaries built out of the repository as well. The main ones being the Linux guest agent, and an implementation of the [runtime v2 containerd shim api](https://github.com/containerd/containerd/blob/master/runtime/v2/README.md). +### Linux Hyper-V Container Guest Agent + +To build the Linux guest agent itself all that's needed is to set your GOOS to "Linux" and build out of ./cmd/gcs. +```powershell +C:\> $env:GOOS="linux" +C:\> go build .\cmd\gcs\ +``` + +or on a Linux machine +```sh +> go build ./cmd/gcs +``` + +If you want it to be packaged inside of a rootfs to boot with alongside all of the other tools then you'll need to provide a rootfs that it can be packaged inside of. An easy way is to export the rootfs of a container. + +```sh +docker pull busybox +docker run --name base_image_container busybox +docker export base_image_container | gzip > base.tar.gz +BASE=./base.tar.gz +make all +``` + +If the build is successful, in the `./out` folder you should see: +```sh +> ls ./out/ +delta.tar.gz initrd.img rootfs.tar.gz +``` + +### Containerd Shim +For info on the Runtime V2 API: https://github.com/containerd/containerd/blob/master/runtime/v2/README.md. + +Contrary to the typical Linux architecture of shim -> runc, the runhcs shim is used both to launch and manage the lifetime of containers. + +```powershell +C:\> $env:GOOS="windows" +C:\> go build .\cmd\containerd-shim-runhcs-v1 +``` + +Then place the binary in the same directory that Containerd is located at in your environment. A default Containerd configuration file can be generated by running: +```powershell +.\containerd.exe config default | Out-File "C:\Program Files\containerd\config.toml" -Encoding ascii +``` + +This config file will already have the shim set as the default runtime for cri interactions. + +To trial using the shim out with ctr.exe: +```powershell +C:\> ctr.exe run --runtime io.containerd.runhcs.v1 --rm mcr.microsoft.com/windows/nanoserver:2004 windows-test cmd /c "echo Hello World!" +``` ## Contributing -This project welcomes contributions and suggestions. Most contributions require you to agree to a +This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com. @@ -16,7 +70,27 @@ When you submit a pull request, a CLA-bot will automatically determine whether y a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA. -We also ask that contributors [sign their commits](https://git-scm.com/docs/git-commit) using `git commit -s` or `git commit --signoff` to certify they either authored the work themselves or otherwise have permission to use it in this project. +We also require that contributors [sign their commits](https://git-scm.com/docs/git-commit) using `git commit -s` or `git commit --signoff` to +certify they either authored the work themselves or otherwise have permission to use it in this project. Please see https://developercertificate.org/ for +more info, as well as to make sure that you can attest to the rules listed. Our CI uses the [DCO Github app](https://github.com/apps/dco) to ensure +that all commits in a given PR are signed-off. + +### Test Directory (Important to note) + +This project has tried to trim some dependencies from the root Go modules file that would be cumbersome to get transitively included if this +project is being vendored/used as a library. Some of these dependencies were only being used for tests, so the /test directory in this project also has +its own go.mod file where these are now included to get around this issue. Our tests rely on the code in this project to run, so the test Go modules file +has a relative path replace directive to pull in the latest hcsshim code that the tests actually touch from this project +(which is the repo itself on your disk). + +``` +replace ( + github.com/Microsoft/hcsshim => ../ +) +``` + +Because of this, for most code changes you may need to run `go mod vendor` + `go mod tidy` in the /test directory in this repository, as the +CI in this project will check if the files are out of date and will fail if this is true. ## Code of Conduct diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/go.mod b/src/runtime/vendor/github.com/Microsoft/hcsshim/go.mod index ffc9c2f38..7c9747667 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/go.mod +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/go.mod @@ -3,26 +3,34 @@ module github.com/Microsoft/hcsshim go 1.13 require ( + github.com/BurntSushi/toml v0.3.1 github.com/Microsoft/go-winio v0.4.17 github.com/cenkalti/backoff/v4 v4.1.1 github.com/containerd/cgroups v1.0.1 github.com/containerd/console v1.0.2 - github.com/containerd/containerd v1.4.9 - github.com/containerd/continuity v0.1.0 // indirect - github.com/containerd/fifo v1.0.0 // indirect + github.com/containerd/containerd v1.5.7 github.com/containerd/go-runc v1.0.0 github.com/containerd/ttrpc v1.1.0 github.com/containerd/typeurl v1.0.2 github.com/gogo/protobuf v1.3.2 - github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d + github.com/golang/mock v1.6.0 + github.com/google/go-cmp v0.5.6 + github.com/google/go-containerregistry v0.5.1 + github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3 + github.com/mattn/go-shellwords v1.0.6 + github.com/opencontainers/runc v1.0.2 + github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 github.com/pkg/errors v0.9.1 github.com/sirupsen/logrus v1.8.1 github.com/urfave/cli v1.22.2 + github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852 + github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae + go.etcd.io/bbolt v1.3.6 go.opencensus.io v0.22.3 - golang.org/x/sync v0.0.0-20201207232520-09787c993a3a - golang.org/x/sys v0.0.0-20210324051608-47abb6519492 - google.golang.org/grpc v1.33.2 - gotest.tools/v3 v3.0.3 // indirect + golang.org/x/net v0.0.0-20210825183410-e898025ed96a // indirect + golang.org/x/sync v0.0.0-20210220032951-036812b2e83c + golang.org/x/sys v0.0.0-20210510120138-977fb7262007 + google.golang.org/grpc v1.40.0 ) replace ( diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/go.sum b/src/runtime/vendor/github.com/Microsoft/hcsshim/go.sum index 3f5b5561a..7c383806d 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/go.sum +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/go.sum @@ -1,242 +1,992 @@ bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= +github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= +github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= +github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= +github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= +github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= +github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.4.17 h1:iT12IBVClFevaf8PuVyi3UmZOVh4OqnaLxDTW2O6j3w= github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= +github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= +github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= +github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= +github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= +github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00= +github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600= +github.com/Microsoft/hcsshim v0.8.21/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= +github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= +github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= +github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= +github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= +github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= +github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= +github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= +github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= +github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= github.com/cenkalti/backoff/v4 v4.1.1 h1:G2HAfAmvm/GcKan2oOQpBXOd2tT2G57ZnZGWa1PxPBQ= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= +github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= +github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= +github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= +github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= +github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= +github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= +github.com/containerd/aufs v1.0.0/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= +github.com/containerd/btrfs v0.0.0-20201111183144-404b9149801e/go.mod h1:jg2QkJcsabfHugurUvvPhS3E08Oxiuh5W/g1ybB4e0E= +github.com/containerd/btrfs v0.0.0-20210316141732-918d888fb676/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= +github.com/containerd/btrfs v1.0.0/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= +github.com/containerd/cgroups v0.0.0-20190717030353-c4b9ac5c7601/go.mod h1:X9rLEHIqSf/wfK8NsPqxJmeZgW4pcfzdXITDrUSJ6uI= +github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= +github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= +github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= +github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= +github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= github.com/containerd/cgroups v1.0.1 h1:iJnMvco9XGvKUvNQkv88bE4uJXxRQH18efbKo9w5vHQ= github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= +github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= github.com/containerd/console v1.0.2 h1:Pi6D+aZXM+oUw1czuKgH5IJ+y0jhYcwBJfx5/Ghn9dE= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= -github.com/containerd/containerd v1.4.9 h1:JIw9mjVw4LsGmnA/Bqg9j9e+XB7soOJufrKUpA6n2Ns= -github.com/containerd/containerd v1.4.9/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.2.10/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.1-0.20191213020239-082f7e3aed57/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.0-beta.2.0.20200729163537-40b22ef07410/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.3/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.5.0-beta.1/go.mod h1:5HfvG1V2FsKesEGQ17k5/T7V960Tmcumvqn8Mc+pCYQ= +github.com/containerd/containerd v1.5.0-beta.3/go.mod h1:/wr9AVtEM7x9c+n0+stptlo/uBBoBORwEx6ardVcmKU= +github.com/containerd/containerd v1.5.0-beta.4/go.mod h1:GmdgZd2zA2GYIBZ0w09ZvgqEq8EfBp/m3lcVZIvPHhI= +github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoTJseu1FGOKuoA4nNb2s= +github.com/containerd/containerd v1.5.1/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= +github.com/containerd/containerd v1.5.7 h1:rQyoYtj4KddB3bxG6SAqd4+08gePNyJjRqvOIfV3rkM= +github.com/containerd/containerd v1.5.7/go.mod h1:gyvv6+ugqY25TiXxcZC3L5yOeYgEw0QMhscqVp1AR9c= +github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20190815185530-f2a389ac0a02/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo= +github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= +github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ= github.com/containerd/continuity v0.1.0 h1:UFRRY5JemiAhPZrr/uE0n8fMTLcZsUvySPr1+D7pgr8= github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= +github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/fifo v0.0.0-20200410184934-f15a3290365b/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= +github.com/containerd/fifo v0.0.0-20201026212402-0724c46b320c/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= +github.com/containerd/fifo v0.0.0-20210316144830-115abcc95a1d/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= github.com/containerd/fifo v1.0.0 h1:6PirWBr9/L7GDamKr+XM0IeUFXu5mf3M/BPpH9gaLBU= github.com/containerd/fifo v1.0.0/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= +github.com/containerd/go-cni v1.0.1/go.mod h1:+vUpYxKvAF72G9i1WoDOiPGRtQpqsNW/ZHtSlv++smU= +github.com/containerd/go-cni v1.0.2/go.mod h1:nrNABBHzu0ZwCug9Ije8hL2xBCYh/pjfMb1aZGrrohk= +github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/go-runc v0.0.0-20190911050354-e029b79d8cda/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/go-runc v0.0.0-20200220073739-7016d3ce2328/go.mod h1:PpyHrqVs8FTi9vpyHwPwiNEGaACDxT/N/pLcvMSRA9g= +github.com/containerd/go-runc v0.0.0-20201020171139-16b287bc67d0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= github.com/containerd/go-runc v1.0.0 h1:oU+lLv1ULm5taqgV/CJivypVODI4SUz1znWjv3nNYS0= github.com/containerd/go-runc v1.0.0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= +github.com/containerd/imgcrypt v1.0.1/go.mod h1:mdd8cEPW7TPgNG4FpuP3sGBiQ7Yi/zak9TYCG3juvb0= +github.com/containerd/imgcrypt v1.0.4-0.20210301171431-0ae5c75f59ba/go.mod h1:6TNsg0ctmizkrOgXRNQjAPFWpMYRWuiB6dSF4Pfa5SA= +github.com/containerd/imgcrypt v1.1.1-0.20210312161619-7ed62a527887/go.mod h1:5AZJNI6sLHJljKuI9IHnw1pWqo/F0nGDOuR9zgTs7ow= +github.com/containerd/imgcrypt v1.1.1/go.mod h1:xpLnwiQmEUJPvQoAapeb2SNCxz7Xr6PJrXQb0Dpc4ms= +github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFYfE5+So4M5syatU0N0f0LbWpuqyMi4/BE8c= +github.com/containerd/nri v0.0.0-20210316161719-dbaa18c31c14/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= +github.com/containerd/nri v0.1.0/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= +github.com/containerd/stargz-snapshotter/estargz v0.4.1 h1:5e7heayhB7CcgdTkqfZqrNaNv15gABwr3Q2jBTbLlt4= +github.com/containerd/stargz-snapshotter/estargz v0.4.1/go.mod h1:x7Q9dg9QYb4+ELgxmo4gBUeJB0tl5dqH1Sdz0nJU1QM= +github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/ttrpc v0.0.0-20191028202541-4f1b8fe65a5c/go.mod h1:LPm1u0xBw8r8NOKoOdNMeVHSawSsltak+Ihv+etqsE8= +github.com/containerd/ttrpc v1.0.1/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= +github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= github.com/containerd/ttrpc v1.1.0 h1:GbtyLRxb0gOLR0TYQWt3O6B0NvT8tMdorEHqIQo/lWI= github.com/containerd/ttrpc v1.1.0/go.mod h1:XX4ZTnoOId4HklF4edwc4DcqskFZuvXB1Evzy5KFQpQ= +github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= +github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk= +github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg= github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= +github.com/containerd/zfs v0.0.0-20200918131355-0a33824f23a2/go.mod h1:8IgZOBdv8fAgXddBT4dBXJPtxyRsejFIpXoklgxgEjw= +github.com/containerd/zfs v0.0.0-20210301145711-11e8f1707f62/go.mod h1:A9zfAbMlQwE+/is6hi0Xw8ktpL+6glmqZYtevJgaB8Y= +github.com/containerd/zfs v0.0.0-20210315114300-dde8f0fda960/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containerd/zfs v0.0.0-20210324211415-d5c4544f0433/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containerd/zfs v1.0.0/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/cni v0.8.0/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/cni v0.8.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/plugins v0.8.6/go.mod h1:qnw5mN19D8fIwkqW7oHHYDHVlzhJpcY6TQxn/fUyDDM= +github.com/containernetworking/plugins v0.9.1/go.mod h1:xP/idU2ldlzN6m4p5LmGiwRDjeJr6FLK6vuiUwoH7P8= +github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc= +github.com/containers/ocicrypt v1.1.0/go.mod h1:b8AOe0YR67uU8OqfVNcznfFpAzu3rdgUV4GP9qXPfu4= +github.com/containers/ocicrypt v1.1.1/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= +github.com/coreos/go-iptables v0.5.0/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= +github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20161114122254-48702e0da86b/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= +github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= +github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= +github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= +github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= +github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= 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/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= +github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= +github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017 h1:2HQmlpI3yI9deH18Q6xiSOIjXD4sLI55Y/gfpa8/558= +github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= +github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug= +github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7 h1:Cvj7S8I4Xpx78KAl6TwTmMHuHlZ/0SM60NUneGJQ7IE= +github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.6.3 h1:zI2p9+1NQYdnG6sMU26EX4aVGlqbInSQxQXLvzJ4RPQ= +github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= +github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= +github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= +github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= +github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= +github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= +github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= +github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= +github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= +github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= +github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e h1:BWhy2j3IXJhjCbC68FptL43tDKIq8FladmaTs3Xs7Z8= +github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.0.4 h1:9349emZab16e7zQvpmsbtjc18ykshndd8y2PG3sgJbA= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= +github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 h1:ZgQEtGgCBiWRM39fZuwSd1LwSqqSW0hOdXCYYDX0R3I= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0 h1:LUVKkCeviFUMKqHa4tXIIij/lbhnMbP7Fn5wKdKkRh4= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-containerregistry v0.5.1 h1:/+mFTs4AlwsJ/mJe8NDtKb7BxLtbZFpcn8vDsneEkwQ= +github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= +github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= +github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3 h1:jUp75lepDg0phMUJBCmvaeFDldD2N3S1lBuPwUTszio= +github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3/go.mod h1:3r6x7q95whyfWQpmGZTu3gk3v2YkMi05HEzl7Tf7YEo= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= +github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/mattn/go-shellwords v1.0.6 h1:9Jok5pILi5S1MnDirGVTufYGtksUs/V2BWUP3ZkeUUI= +github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= +github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= +github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= +github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= +github.com/moby/sys/mountinfo v0.4.1 h1:1O+1cHA1aujwEwwVMa2Xm2l+gIpUHyd3+D+d7LZh1kM= +github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= +github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= +github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= +github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= +github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0-rc1.0.20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= +github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= +github.com/opencontainers/runc v1.0.2 h1:opHZMaswlyxz1OuGpBE53Dwe4/xF7EZTY0A2L/FpCOg= +github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= +github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d h1:pNa8metDkwZjb9g4T8s+krQ+HRgZAkqnXml+wNir/+s= github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 h1:3snG66yBm59tKhhSPQrQ/0bCrv1LQbKt40LnUPiUxdc= +github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= +github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= +github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= +github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= +github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 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/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= +github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= +github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= +github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= +github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2 h1:gsqYFH8bb9ekPA12kRo0hfjngWQjkJPlN9R0N78BoUo= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= +github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= +github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852 h1:cPXZWzzG0NllBLdjWoD1nDfaqu98YMv+OneaKc8sPOA= +github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= +github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= +github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= +github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae h1:4hwBBUfQCFe3Cym0ZtKyq7L16eZUtYKs+BaHDN6mAns= +github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= +github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= +github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= +github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= +go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= +go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= +go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= +go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3 h1:8sGtKOrtQqkN1bp2AtX+misvLIlOmsEsNd+9NIcPEm8= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210825183410-e898025ed96a h1:bRuuGXV8wwSdGTB+CtJf+FjgO1APK1CoO39T4BN/XBw= +golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190522044717-8097e1b27ff5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200817155316-9781c653f443/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492 h1:Paq34FxTluEPvVyayQqMPgHm+vTOrIifmcYxFBx9TLg= golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200916195026-c9a70fc28ce3/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63 h1:YzfoEYWbODU5Fbt37+h7X16BWQbad7Q4S6gclTKFXM8= google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/grpc v1.27.1 h1:zvIju4sqAGvwKspUQOhwnpcqSbzi7/H6QomNNjTL4sk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= +k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= +k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= +k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= +k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= +k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= +k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= +k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= +k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= +k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= +k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= +k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= +k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= +k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= +k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= +k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM= +k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= +k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= +k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= +k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= +k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= +k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= +k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= +k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/attachment.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/attachment.go index bcfeb34d5..70884aad7 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/attachment.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/attachment.go @@ -27,4 +27,10 @@ type Attachment struct { CaptureIoAttributionContext bool `json:"CaptureIoAttributionContext,omitempty"` ReadOnly bool `json:"ReadOnly,omitempty"` + + SupportCompressedVolumes bool `json:"SupportCompressedVolumes,omitempty"` + + AlwaysAllowSparseFiles bool `json:"AlwaysAllowSparseFiles,omitempty"` + + ExtensibleVirtualDiskType string `json:"ExtensibleVirtualDiskType,omitempty"` } diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/container.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/container.go index 4fb231076..39a54432c 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/container.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/container.go @@ -31,4 +31,6 @@ type Container struct { RegistryChanges *RegistryChanges `json:"RegistryChanges,omitempty"` AssignedDevices []Device `json:"AssignedDevices,omitempty"` + + AdditionalDeviceNamespace *ContainerDefinitionDevice `json:"AdditionalDeviceNamespace,omitempty"` } diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/cpu_group_config.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/cpu_group_config.go index f1a28cd38..0be0475d4 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/cpu_group_config.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/cpu_group_config.go @@ -14,5 +14,5 @@ type CpuGroupConfig struct { Affinity *CpuGroupAffinity `json:"Affinity,omitempty"` GroupProperties []CpuGroupProperty `json:"GroupProperties,omitempty"` // Hypervisor CPU group IDs exposed to clients - HypervisorGroupId int32 `json:"HypervisorGroupId,omitempty"` + HypervisorGroupId uint64 `json:"HypervisorGroupId,omitempty"` } diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/device.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/device.go index 107caddad..31c4538af 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/device.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/device.go @@ -12,9 +12,9 @@ package hcsschema type DeviceType string const ( - ClassGUID DeviceType = "ClassGuid" - DeviceInstance DeviceType = "DeviceInstance" - GPUMirror DeviceType = "GpuMirror" + ClassGUID DeviceType = "ClassGuid" + DeviceInstanceID DeviceType = "DeviceInstance" + GPUMirror DeviceType = "GpuMirror" ) type Device struct { @@ -22,6 +22,6 @@ type Device struct { Type DeviceType `json:"Type,omitempty"` // The interface class guid of the device interfaces to assign to the container. Only used when Type is ClassGuid. InterfaceClassGuid string `json:"InterfaceClassGuid,omitempty"` - // The location path of the device to assign to the container. Only used when Type is DeviceInstance. + // The location path of the device to assign to the container. Only used when Type is DeviceInstanceID. LocationPath string `json:"LocationPath,omitempty"` } diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_container_definition_device.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_container_definition_device.go new file mode 100644 index 000000000..8dbe40b3b --- /dev/null +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_container_definition_device.go @@ -0,0 +1,14 @@ +/* + * HCS API + * + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * API version: 2.4 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package hcsschema + +type ContainerDefinitionDevice struct { + DeviceExtension []DeviceExtension `json:"device_extension,omitempty"` +} diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_device_category.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_device_category.go new file mode 100644 index 000000000..8fe89f927 --- /dev/null +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_device_category.go @@ -0,0 +1,15 @@ +/* + * HCS API + * + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * API version: 2.4 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package hcsschema + +type DeviceCategory struct { + Name string `json:"name,omitempty"` + InterfaceClass []InterfaceClass `json:"interface_class,omitempty"` +} diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_device_extension.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_device_extension.go new file mode 100644 index 000000000..a62568d89 --- /dev/null +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_device_extension.go @@ -0,0 +1,15 @@ +/* + * HCS API + * + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * API version: 2.4 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package hcsschema + +type DeviceExtension struct { + DeviceCategory *DeviceCategory `json:"device_category,omitempty"` + Namespace *DeviceExtensionNamespace `json:"namespace,omitempty"` +} diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_device_instance.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_device_instance.go new file mode 100644 index 000000000..a7410febd --- /dev/null +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_device_instance.go @@ -0,0 +1,17 @@ +/* + * HCS API + * + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * API version: 2.4 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package hcsschema + +type DeviceInstance struct { + Id string `json:"id,omitempty"` + LocationPath string `json:"location_path,omitempty"` + PortName string `json:"port_name,omitempty"` + InterfaceClass []InterfaceClass `json:"interface_class,omitempty"` +} diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_device_namespace.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_device_namespace.go new file mode 100644 index 000000000..355364064 --- /dev/null +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_device_namespace.go @@ -0,0 +1,16 @@ +/* + * HCS API + * + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * API version: 2.4 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package hcsschema + +type DeviceNamespace struct { + RequiresDriverstore bool `json:"requires_driverstore,omitempty"` + DeviceCategory []DeviceCategory `json:"device_category,omitempty"` + DeviceInstance []DeviceInstance `json:"device_instance,omitempty"` +} diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_interface_class.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_interface_class.go new file mode 100644 index 000000000..7be98b541 --- /dev/null +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_interface_class.go @@ -0,0 +1,16 @@ +/* + * HCS API + * + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * API version: 2.4 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package hcsschema + +type InterfaceClass struct { + Type_ string `json:"type,omitempty"` + Identifier string `json:"identifier,omitempty"` + Recurse bool `json:"recurse,omitempty"` +} diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_namespace.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_namespace.go new file mode 100644 index 000000000..3ab9cf1ec --- /dev/null +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_namespace.go @@ -0,0 +1,15 @@ +/* + * HCS API + * + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * API version: 2.4 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package hcsschema + +type DeviceExtensionNamespace struct { + Ob *ObjectNamespace `json:"ob,omitempty"` + Device *DeviceNamespace `json:"device,omitempty"` +} diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_object_directory.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_object_directory.go new file mode 100644 index 000000000..d2f51b3b5 --- /dev/null +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_object_directory.go @@ -0,0 +1,18 @@ +/* + * HCS API + * + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * API version: 2.4 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package hcsschema + +type ObjectDirectory struct { + Name string `json:"name,omitempty"` + Clonesd string `json:"clonesd,omitempty"` + Shadow string `json:"shadow,omitempty"` + Symlink []ObjectSymlink `json:"symlink,omitempty"` + Objdir []ObjectDirectory `json:"objdir,omitempty"` +} diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_object_namespace.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_object_namespace.go new file mode 100644 index 000000000..47dfb55bf --- /dev/null +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_object_namespace.go @@ -0,0 +1,16 @@ +/* + * HCS API + * + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * API version: 2.4 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package hcsschema + +type ObjectNamespace struct { + Shadow string `json:"shadow,omitempty"` + Symlink []ObjectSymlink `json:"symlink,omitempty"` + Objdir []ObjectDirectory `json:"objdir,omitempty"` +} diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_object_symlink.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_object_symlink.go new file mode 100644 index 000000000..8867ebe5f --- /dev/null +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/model_object_symlink.go @@ -0,0 +1,18 @@ +/* + * HCS API + * + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * API version: 2.4 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package hcsschema + +type ObjectSymlink struct { + Name string `json:"name,omitempty"` + Path string `json:"path,omitempty"` + Scope string `json:"scope,omitempty"` + Pathtoclone string `json:"pathtoclone,omitempty"` + AccessMask int32 `json:"access_mask,omitempty"` +} diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/virtual_p_mem_mapping.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/virtual_p_mem_mapping.go new file mode 100644 index 000000000..9ef322f61 --- /dev/null +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hcs/schema2/virtual_p_mem_mapping.go @@ -0,0 +1,15 @@ +/* + * HCS API + * + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * API version: 2.4 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package hcsschema + +type VirtualPMemMapping struct { + HostPath string `json:"HostPath,omitempty"` + ImageFormat string `json:"ImageFormat,omitempty"` +} diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hns/hnsendpoint.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hns/hnsendpoint.go index 262714b4d..7cf954c7b 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hns/hnsendpoint.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hns/hnsendpoint.go @@ -20,6 +20,7 @@ type HNSEndpoint struct { IPv6Address net.IP `json:",omitempty"` DNSSuffix string `json:",omitempty"` DNSServerList string `json:",omitempty"` + DNSDomain string `json:",omitempty"` GatewayAddress string `json:",omitempty"` GatewayAddressV6 string `json:",omitempty"` EnableInternalDNS bool `json:",omitempty"` diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hns/hnspolicy.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hns/hnspolicy.go index 6765aaead..591a2631e 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hns/hnspolicy.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/hns/hnspolicy.go @@ -22,9 +22,9 @@ const ( type NatPolicy struct { Type PolicyType `json:"Type"` - Protocol string - InternalPort uint16 - ExternalPort uint16 + Protocol string `json:",omitempty"` + InternalPort uint16 `json:",omitempty"` + ExternalPort uint16 `json:",omitempty"` } type QosPolicy struct { @@ -88,20 +88,20 @@ const ( type ACLPolicy struct { Type PolicyType `json:"Type"` Id string `json:"Id,omitempty"` - Protocol uint16 - Protocols string `json:"Protocols,omitempty"` - InternalPort uint16 + Protocol uint16 `json:",omitempty"` + Protocols string `json:"Protocols,omitempty"` + InternalPort uint16 `json:",omitempty"` Action ActionType Direction DirectionType - LocalAddresses string - RemoteAddresses string - LocalPorts string `json:"LocalPorts,omitempty"` - LocalPort uint16 - RemotePorts string `json:"RemotePorts,omitempty"` - RemotePort uint16 - RuleType RuleType `json:"RuleType,omitempty"` - Priority uint16 - ServiceName string + LocalAddresses string `json:",omitempty"` + RemoteAddresses string `json:",omitempty"` + LocalPorts string `json:"LocalPorts,omitempty"` + LocalPort uint16 `json:",omitempty"` + RemotePorts string `json:"RemotePorts,omitempty"` + RemotePort uint16 `json:",omitempty"` + RuleType RuleType `json:"RuleType,omitempty"` + Priority uint16 `json:",omitempty"` + ServiceName string `json:",omitempty"` } type Policy struct { diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/activatelayer.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/activatelayer.go index ff81ac2c1..5debe974d 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/activatelayer.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/activatelayer.go @@ -21,7 +21,7 @@ func ActivateLayer(ctx context.Context, path string) (err error) { err = activateLayer(&stdDriverInfo, path) if err != nil { - return hcserror.New(err, title+" - failed", "") + return hcserror.New(err, title, "") } return nil } diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/createlayer.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/createlayer.go index ffee31ab1..480aee872 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/createlayer.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/createlayer.go @@ -21,7 +21,7 @@ func CreateLayer(ctx context.Context, path, parent string) (err error) { err = createLayer(&stdDriverInfo, path, parent) if err != nil { - return hcserror.New(err, title+" - failed", "") + return hcserror.New(err, title, "") } return nil } diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/createscratchlayer.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/createscratchlayer.go index 5a3809ae2..131aa94f1 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/createscratchlayer.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/createscratchlayer.go @@ -28,7 +28,7 @@ func CreateScratchLayer(ctx context.Context, path string, parentLayerPaths []str err = createSandboxLayer(&stdDriverInfo, path, 0, layers) if err != nil { - return hcserror.New(err, title+" - failed", "") + return hcserror.New(err, title, "") } return nil } diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/destroylayer.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/destroylayer.go index 787054e79..424467ac3 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/destroylayer.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/destroylayer.go @@ -19,7 +19,7 @@ func DestroyLayer(ctx context.Context, path string) (err error) { err = destroyLayer(&stdDriverInfo, path) if err != nil { - return hcserror.New(err, title+" - failed", "") + return hcserror.New(err, title, "") } return nil } diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/expandscratchsize.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/expandscratchsize.go index 22f7605be..035c9041e 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/expandscratchsize.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/expandscratchsize.go @@ -25,7 +25,7 @@ func ExpandScratchSize(ctx context.Context, path string, size uint64) (err error err = expandSandboxSize(&stdDriverInfo, path, size) if err != nil { - return hcserror.New(err, title+" - failed", "") + return hcserror.New(err, title, "") } // Manually expand the volume now in order to work around bugs in 19H1 and diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/exportlayer.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/exportlayer.go index 09f0de1a4..97b27eb7d 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/exportlayer.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/exportlayer.go @@ -35,7 +35,7 @@ func ExportLayer(ctx context.Context, path string, exportFolderPath string, pare err = exportLayer(&stdDriverInfo, path, exportFolderPath, layers) if err != nil { - return hcserror.New(err, title+" - failed", "") + return hcserror.New(err, title, "") } return nil } diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/getlayermountpath.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/getlayermountpath.go index 4d22d0ecf..8d213f587 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/getlayermountpath.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/getlayermountpath.go @@ -27,7 +27,7 @@ func GetLayerMountPath(ctx context.Context, path string) (_ string, err error) { log.G(ctx).Debug("Calling proc (1)") err = getLayerMountPath(&stdDriverInfo, path, &mountPathLength, nil) if err != nil { - return "", hcserror.New(err, title+" - failed", "(first call)") + return "", hcserror.New(err, title, "(first call)") } // Allocate a mount path of the returned length. @@ -41,7 +41,7 @@ func GetLayerMountPath(ctx context.Context, path string) (_ string, err error) { log.G(ctx).Debug("Calling proc (2)") err = getLayerMountPath(&stdDriverInfo, path, &mountPathLength, &mountPathp[0]) if err != nil { - return "", hcserror.New(err, title+" - failed", "(second call)") + return "", hcserror.New(err, title, "(second call)") } mountPath := syscall.UTF16ToString(mountPathp[0:]) diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/getsharedbaseimages.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/getsharedbaseimages.go index bcc8fbd42..ae1fff840 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/getsharedbaseimages.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/getsharedbaseimages.go @@ -21,7 +21,7 @@ func GetSharedBaseImages(ctx context.Context) (_ string, err error) { var buffer *uint16 err = getBaseImages(&buffer) if err != nil { - return "", hcserror.New(err, title+" - failed", "") + return "", hcserror.New(err, title, "") } imageData := interop.ConvertAndFreeCoTaskMemString(buffer) span.AddAttributes(trace.StringAttribute("imageData", imageData)) diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/grantvmaccess.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/grantvmaccess.go index 3eaca2780..4b282fef9 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/grantvmaccess.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/grantvmaccess.go @@ -20,7 +20,7 @@ func GrantVmAccess(ctx context.Context, vmid string, filepath string) (err error err = grantVmAccess(vmid, filepath) if err != nil { - return hcserror.New(err, title+" - failed", "") + return hcserror.New(err, title, "") } return nil } diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/importlayer.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/importlayer.go index b3c150d66..687550f0b 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/importlayer.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/importlayer.go @@ -36,7 +36,7 @@ func ImportLayer(ctx context.Context, path string, importFolderPath string, pare err = importLayer(&stdDriverInfo, path, importFolderPath, layers) if err != nil { - return hcserror.New(err, title+" - failed", "") + return hcserror.New(err, title, "") } return nil } diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/layerexists.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/layerexists.go index c6999973c..01e672339 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/layerexists.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/layerexists.go @@ -21,7 +21,7 @@ func LayerExists(ctx context.Context, path string) (_ bool, err error) { var exists uint32 err = layerExists(&stdDriverInfo, path, &exists) if err != nil { - return false, hcserror.New(err, title+" - failed", "") + return false, hcserror.New(err, title, "") } span.AddAttributes(trace.BoolAttribute("layer-exists", exists != 0)) return exists != 0, nil diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/legacy.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/legacy.go index 83ba72cfa..b7f3064f2 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/legacy.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/legacy.go @@ -76,7 +76,7 @@ func readTombstones(path string) (map[string]([]string), error) { defer tf.Close() s := bufio.NewScanner(tf) if !s.Scan() || s.Text() != "\xef\xbb\xbfVersion 1.0" { - return nil, errors.New("Invalid tombstones file") + return nil, errors.New("invalid tombstones file") } ts := make(map[string]([]string)) diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/nametoguid.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/nametoguid.go index bcf39c6b8..09950297c 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/nametoguid.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/nametoguid.go @@ -17,12 +17,12 @@ func NameToGuid(ctx context.Context, name string) (_ guid.GUID, err error) { ctx, span := trace.StartSpan(ctx, title) //nolint:ineffassign,staticcheck defer span.End() defer func() { oc.SetSpanStatus(span, err) }() - span.AddAttributes(trace.StringAttribute("name", name)) + span.AddAttributes(trace.StringAttribute("objectName", name)) var id guid.GUID err = nameToGuid(name, &id) if err != nil { - return guid.GUID{}, hcserror.New(err, title+" - failed", "") + return guid.GUID{}, hcserror.New(err, title, "") } span.AddAttributes(trace.StringAttribute("guid", id.String())) return id, nil diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/preparelayer.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/preparelayer.go index 55f7730d0..90129faef 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/preparelayer.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/preparelayer.go @@ -38,7 +38,7 @@ func PrepareLayer(ctx context.Context, path string, parentLayerPaths []string) ( defer prepareLayerLock.Unlock() err = prepareLayer(&stdDriverInfo, path, layers) if err != nil { - return hcserror.New(err, title+" - failed", "") + return hcserror.New(err, title, "") } return nil } diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/unpreparelayer.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/unpreparelayer.go index 79fb98678..71b130c52 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/unpreparelayer.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/wclayer/unpreparelayer.go @@ -19,7 +19,7 @@ func UnprepareLayer(ctx context.Context, path string) (err error) { err = unprepareLayer(&stdDriverInfo, path) if err != nil { - return hcserror.New(err, title+" - failed", "") + return hcserror.New(err, title, "") } return nil } diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/winapi/memory.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/winapi/memory.go index 83f704064..53f62948c 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/winapi/memory.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/winapi/memory.go @@ -1,27 +1,4 @@ package winapi -// VOID RtlMoveMemory( -// _Out_ VOID UNALIGNED *Destination, -// _In_ const VOID UNALIGNED *Source, -// _In_ SIZE_T Length -// ); -//sys RtlMoveMemory(destination *byte, source *byte, length uintptr) (err error) = kernel32.RtlMoveMemory - //sys LocalAlloc(flags uint32, size int) (ptr uintptr) = kernel32.LocalAlloc //sys LocalFree(ptr uintptr) = kernel32.LocalFree - -// BOOL QueryWorkingSet( -// HANDLE hProcess, -// PVOID pv, -// DWORD cb -// ); -//sys QueryWorkingSet(handle windows.Handle, pv uintptr, cb uint32) (err error) = psapi.QueryWorkingSet - -type PSAPI_WORKING_SET_INFORMATION struct { - NumberOfEntries uintptr - WorkingSetInfo [1]PSAPI_WORKING_SET_BLOCK -} - -type PSAPI_WORKING_SET_BLOCK struct { - Flags uintptr -} diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/winapi/utils.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/winapi/utils.go index db59567d0..859b753c2 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/winapi/utils.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/winapi/utils.go @@ -20,36 +20,41 @@ func Uint16BufferToSlice(buffer *uint16, bufferLength int) (result []uint16) { return } +// UnicodeString corresponds to UNICODE_STRING win32 struct defined here +// https://docs.microsoft.com/en-us/windows/win32/api/ntdef/ns-ntdef-_unicode_string type UnicodeString struct { Length uint16 MaximumLength uint16 Buffer *uint16 } +// NTSTRSAFE_UNICODE_STRING_MAX_CCH is a constant defined in ntstrsafe.h. This value +// denotes the maximum number of wide chars a path can have. +const NTSTRSAFE_UNICODE_STRING_MAX_CCH = 32767 + //String converts a UnicodeString to a golang string func (uni UnicodeString) String() string { // UnicodeString is not guaranteed to be null terminated, therefore // use the UnicodeString's Length field - return syscall.UTF16ToString(Uint16BufferToSlice(uni.Buffer, int(uni.Length/2))) + return windows.UTF16ToString(Uint16BufferToSlice(uni.Buffer, int(uni.Length/2))) } // NewUnicodeString allocates a new UnicodeString and copies `s` into // the buffer of the new UnicodeString. func NewUnicodeString(s string) (*UnicodeString, error) { - // Get length of original `s` to use in the UnicodeString since the `buf` - // created later will have an additional trailing null character - length := len(s) - if length > 32767 { - return nil, syscall.ENAMETOOLONG - } - buf, err := windows.UTF16FromString(s) if err != nil { return nil, err } + + if len(buf) > NTSTRSAFE_UNICODE_STRING_MAX_CCH { + return nil, syscall.ENAMETOOLONG + } + uni := &UnicodeString{ - Length: uint16(length * 2), - MaximumLength: uint16(length * 2), + // The length is in bytes and should not include the trailing null character. + Length: uint16((len(buf) - 1) * 2), + MaximumLength: uint16((len(buf) - 1) * 2), Buffer: &buf[0], } return uni, nil diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/winapi/zsyscall_windows.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/winapi/zsyscall_windows.go index 2941b0f98..59ddee274 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/winapi/zsyscall_windows.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/internal/winapi/zsyscall_windows.go @@ -41,7 +41,6 @@ var ( modiphlpapi = windows.NewLazySystemDLL("iphlpapi.dll") modkernel32 = windows.NewLazySystemDLL("kernel32.dll") modadvapi32 = windows.NewLazySystemDLL("advapi32.dll") - modpsapi = windows.NewLazySystemDLL("psapi.dll") modcfgmgr32 = windows.NewLazySystemDLL("cfgmgr32.dll") procNtQuerySystemInformation = modntdll.NewProc("NtQuerySystemInformation") @@ -57,10 +56,8 @@ var ( procNtOpenJobObject = modntdll.NewProc("NtOpenJobObject") procNtCreateJobObject = modntdll.NewProc("NtCreateJobObject") procLogonUserW = modadvapi32.NewProc("LogonUserW") - procRtlMoveMemory = modkernel32.NewProc("RtlMoveMemory") procLocalAlloc = modkernel32.NewProc("LocalAlloc") procLocalFree = modkernel32.NewProc("LocalFree") - procQueryWorkingSet = modpsapi.NewProc("QueryWorkingSet") procGetProcessImageFileNameW = modkernel32.NewProc("GetProcessImageFileNameW") procGetActiveProcessorCount = modkernel32.NewProc("GetActiveProcessorCount") procCM_Get_Device_ID_List_SizeA = modcfgmgr32.NewProc("CM_Get_Device_ID_List_SizeA") @@ -219,18 +216,6 @@ func LogonUser(username *uint16, domain *uint16, password *uint16, logonType uin return } -func RtlMoveMemory(destination *byte, source *byte, length uintptr) (err error) { - r1, _, e1 := syscall.Syscall(procRtlMoveMemory.Addr(), 3, uintptr(unsafe.Pointer(destination)), uintptr(unsafe.Pointer(source)), uintptr(length)) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - func LocalAlloc(flags uint32, size int) (ptr uintptr) { r0, _, _ := syscall.Syscall(procLocalAlloc.Addr(), 2, uintptr(flags), uintptr(size), 0) ptr = uintptr(r0) @@ -242,18 +227,6 @@ func LocalFree(ptr uintptr) { return } -func QueryWorkingSet(handle windows.Handle, pv uintptr, cb uint32) (err error) { - r1, _, e1 := syscall.Syscall(procQueryWorkingSet.Addr(), 3, uintptr(handle), uintptr(pv), uintptr(cb)) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - func GetProcessImageFileName(hProcess windows.Handle, imageFileName *uint16, nSize uint32) (size uint32, err error) { r0, _, e1 := syscall.Syscall(procGetProcessImageFileNameW.Addr(), 3, uintptr(hProcess), uintptr(unsafe.Pointer(imageFileName)), uintptr(nSize)) size = uint32(r0) diff --git a/src/runtime/vendor/github.com/Microsoft/hcsshim/osversion/windowsbuilds.go b/src/runtime/vendor/github.com/Microsoft/hcsshim/osversion/windowsbuilds.go index e9267b955..49fb740cd 100644 --- a/src/runtime/vendor/github.com/Microsoft/hcsshim/osversion/windowsbuilds.go +++ b/src/runtime/vendor/github.com/Microsoft/hcsshim/osversion/windowsbuilds.go @@ -35,4 +35,7 @@ const ( // V20H2 corresponds to Windows Server 20H2 (semi-annual channel). V20H2 = 19042 + + // V21H1 corresponds to Windows Server 21H1 (semi-annual channel). + V21H1 = 19043 ) diff --git a/src/runtime/vendor/github.com/containerd/cgroups/README.md b/src/runtime/vendor/github.com/containerd/cgroups/README.md index d4b09f3d6..fc2c7a9be 100644 --- a/src/runtime/vendor/github.com/containerd/cgroups/README.md +++ b/src/runtime/vendor/github.com/containerd/cgroups/README.md @@ -1,7 +1,7 @@ # cgroups [![Build Status](https://github.com/containerd/cgroups/workflows/CI/badge.svg)](https://github.com/containerd/cgroups/actions?query=workflow%3ACI) -[![codecov](https://codecov.io/gh/containerd/cgroups/branch/master/graph/badge.svg)](https://codecov.io/gh/containerd/cgroups) +[![codecov](https://codecov.io/gh/containerd/cgroups/branch/main/graph/badge.svg)](https://codecov.io/gh/containerd/cgroups) [![GoDoc](https://godoc.org/github.com/containerd/cgroups?status.svg)](https://godoc.org/github.com/containerd/cgroups) [![Go Report Card](https://goreportcard.com/badge/github.com/containerd/cgroups)](https://goreportcard.com/report/github.com/containerd/cgroups) @@ -142,8 +142,8 @@ All static path should not include `/sys/fs/cgroup/` prefix, it should start wit Cgroups is a containerd sub-project, licensed under the [Apache 2.0 license](./LICENSE). As a containerd sub-project, you will find the: - * [Project governance](https://github.com/containerd/project/blob/master/GOVERNANCE.md), - * [Maintainers](https://github.com/containerd/project/blob/master/MAINTAINERS), - * and [Contributing guidelines](https://github.com/containerd/project/blob/master/CONTRIBUTING.md) + * [Project governance](https://github.com/containerd/project/blob/main/GOVERNANCE.md), + * [Maintainers](https://github.com/containerd/project/blob/main/MAINTAINERS), + * and [Contributing guidelines](https://github.com/containerd/project/blob/main/CONTRIBUTING.md) information in our [`containerd/project`](https://github.com/containerd/project) repository. diff --git a/src/runtime/vendor/github.com/containerd/cgroups/blkio.go b/src/runtime/vendor/github.com/containerd/cgroups/blkio.go index a837e19fb..f59c75bb5 100644 --- a/src/runtime/vendor/github.com/containerd/cgroups/blkio.go +++ b/src/runtime/vendor/github.com/containerd/cgroups/blkio.go @@ -130,7 +130,7 @@ func (b *blkioController) Stat(path string, stats *v1.Metrics) error { } } - f, err := os.Open(filepath.Join(b.procRoot, "diskstats")) + f, err := os.Open(filepath.Join(b.procRoot, "partitions")) if err != nil { return err } @@ -335,7 +335,10 @@ func getDevices(r io.Reader) (map[deviceKey]string, error) { s = bufio.NewScanner(r) devices = make(map[deviceKey]string) ) - for s.Scan() { + for i := 0; s.Scan(); i++ { + if i < 2 { + continue + } fields := strings.Fields(s.Text()) major, err := strconv.Atoi(fields[0]) if err != nil { @@ -352,7 +355,7 @@ func getDevices(r io.Reader) (map[deviceKey]string, error) { if _, ok := devices[key]; ok { continue } - devices[key] = filepath.Join("/dev", fields[2]) + devices[key] = filepath.Join("/dev", fields[3]) } return devices, s.Err() } diff --git a/src/runtime/vendor/github.com/containerd/cgroups/cgroup.go b/src/runtime/vendor/github.com/containerd/cgroups/cgroup.go index e0e014b28..0fab1cecf 100644 --- a/src/runtime/vendor/github.com/containerd/cgroups/cgroup.go +++ b/src/runtime/vendor/github.com/containerd/cgroups/cgroup.go @@ -17,6 +17,7 @@ package cgroups import ( + "errors" "fmt" "os" "path/filepath" @@ -25,8 +26,8 @@ import ( "sync" v1 "github.com/containerd/cgroups/stats/v1" - specs "github.com/opencontainers/runtime-spec/specs-go" - "github.com/pkg/errors" + + "github.com/opencontainers/runtime-spec/specs-go" ) // New returns a new control via the cgroup cgroups interface @@ -83,7 +84,7 @@ func Load(hierarchy Hierarchy, path Path, opts ...InitOpts) (Cgroup, error) { for _, s := range pathers(subsystems) { p, err := path(s.Name()) if err != nil { - if os.IsNotExist(errors.Cause(err)) { + if errors.Is(err, os.ErrNotExist) { return nil, ErrCgroupDeleted } if err == ErrControllerNotActive { @@ -149,8 +150,50 @@ func (c *cgroup) Subsystems() []Subsystem { return c.subsystems } -// Add moves the provided process into the new cgroup -func (c *cgroup) Add(process Process) error { +func (c *cgroup) subsystemsFilter(subsystems ...Name) []Subsystem { + if len(subsystems) == 0 { + return c.subsystems + } + + var filteredSubsystems = []Subsystem{} + for _, s := range c.subsystems { + for _, f := range subsystems { + if s.Name() == f { + filteredSubsystems = append(filteredSubsystems, s) + break + } + } + } + + return filteredSubsystems +} + +// Add moves the provided process into the new cgroup. +// Without additional arguments, the process is added to all the cgroup subsystems. +// When giving Add a list of subsystem names, the process is only added to those +// subsystems, provided that they are active in the targeted cgroup. +func (c *cgroup) Add(process Process, subsystems ...Name) error { + return c.add(process, cgroupProcs, subsystems...) +} + +// AddProc moves the provided process id into the new cgroup. +// Without additional arguments, the process with the given id is added to all +// the cgroup subsystems. When giving AddProc a list of subsystem names, the process +// id is only added to those subsystems, provided that they are active in the targeted +// cgroup. +func (c *cgroup) AddProc(pid uint64, subsystems ...Name) error { + return c.add(Process{Pid: int(pid)}, cgroupProcs, subsystems...) +} + +// AddTask moves the provided tasks (threads) into the new cgroup. +// Without additional arguments, the task is added to all the cgroup subsystems. +// When giving AddTask a list of subsystem names, the task is only added to those +// subsystems, provided that they are active in the targeted cgroup. +func (c *cgroup) AddTask(process Process, subsystems ...Name) error { + return c.add(process, cgroupTasks, subsystems...) +} + +func (c *cgroup) add(process Process, pType procType, subsystems ...Name) error { if process.Pid <= 0 { return ErrInvalidPid } @@ -159,52 +202,19 @@ func (c *cgroup) Add(process Process) error { if c.err != nil { return c.err } - return c.add(process) -} - -func (c *cgroup) add(process Process) error { - for _, s := range pathers(c.subsystems) { + for _, s := range pathers(c.subsystemsFilter(subsystems...)) { p, err := c.path(s.Name()) if err != nil { return err } - if err := retryingWriteFile( - filepath.Join(s.Path(p), cgroupProcs), + err = retryingWriteFile( + filepath.Join(s.Path(p), pType), []byte(strconv.Itoa(process.Pid)), defaultFilePerm, - ); err != nil { - return err - } - } - return nil -} - -// AddTask moves the provided tasks (threads) into the new cgroup -func (c *cgroup) AddTask(process Process) error { - if process.Pid <= 0 { - return ErrInvalidPid - } - c.mu.Lock() - defer c.mu.Unlock() - if c.err != nil { - return c.err - } - return c.addTask(process) -} - -func (c *cgroup) addTask(process Process) error { - for _, s := range pathers(c.subsystems) { - p, err := c.path(s.Name()) + ) if err != nil { return err } - if err := retryingWriteFile( - filepath.Join(s.Path(p), cgroupTasks), - []byte(strconv.Itoa(process.Pid)), - defaultFilePerm, - ); err != nil { - return err - } } return nil } @@ -326,15 +336,29 @@ func (c *cgroup) Processes(subsystem Name, recursive bool) ([]Process, error) { if c.err != nil { return nil, c.err } - return c.processes(subsystem, recursive) + return c.processes(subsystem, recursive, cgroupProcs) } -func (c *cgroup) processes(subsystem Name, recursive bool) ([]Process, error) { +// Tasks returns the tasks running inside the cgroup along +// with the subsystem used, pid, and path +func (c *cgroup) Tasks(subsystem Name, recursive bool) ([]Task, error) { + c.mu.Lock() + defer c.mu.Unlock() + if c.err != nil { + return nil, c.err + } + return c.processes(subsystem, recursive, cgroupTasks) +} + +func (c *cgroup) processes(subsystem Name, recursive bool, pType procType) ([]Process, error) { s := c.getSubsystem(subsystem) sp, err := c.path(subsystem) if err != nil { return nil, err } + if s == nil { + return nil, fmt.Errorf("cgroups: %s doesn't exist in %s subsystem", sp, subsystem) + } path := s.(pather).Path(sp) var processes []Process err = filepath.Walk(path, func(p string, info os.FileInfo, err error) error { @@ -348,10 +372,10 @@ func (c *cgroup) processes(subsystem Name, recursive bool) ([]Process, error) { return filepath.SkipDir } dir, name := filepath.Split(p) - if name != cgroupProcs { + if name != pType { return nil } - procs, err := readPids(dir, subsystem) + procs, err := readPids(dir, subsystem, pType) if err != nil { return err } @@ -361,49 +385,6 @@ func (c *cgroup) processes(subsystem Name, recursive bool) ([]Process, error) { return processes, err } -// Tasks returns the tasks running inside the cgroup along -// with the subsystem used, pid, and path -func (c *cgroup) Tasks(subsystem Name, recursive bool) ([]Task, error) { - c.mu.Lock() - defer c.mu.Unlock() - if c.err != nil { - return nil, c.err - } - return c.tasks(subsystem, recursive) -} - -func (c *cgroup) tasks(subsystem Name, recursive bool) ([]Task, error) { - s := c.getSubsystem(subsystem) - sp, err := c.path(subsystem) - if err != nil { - return nil, err - } - path := s.(pather).Path(sp) - var tasks []Task - err = filepath.Walk(path, func(p string, info os.FileInfo, err error) error { - if err != nil { - return err - } - if !recursive && info.IsDir() { - if p == path { - return nil - } - return filepath.SkipDir - } - dir, name := filepath.Split(p) - if name != cgroupTasks { - return nil - } - procs, err := readTasksPids(dir, subsystem) - if err != nil { - return err - } - tasks = append(tasks, procs...) - return nil - }) - return tasks, err -} - // Freeze freezes the entire cgroup and all the processes inside it func (c *cgroup) Freeze() error { c.mu.Lock() @@ -511,7 +492,7 @@ func (c *cgroup) MoveTo(destination Cgroup) error { return c.err } for _, s := range c.subsystems { - processes, err := c.processes(s.Name(), true) + processes, err := c.processes(s.Name(), true, cgroupProcs) if err != nil { return err } diff --git a/src/runtime/vendor/github.com/containerd/cgroups/control.go b/src/runtime/vendor/github.com/containerd/cgroups/control.go index a4cb9b832..5fcaac6d0 100644 --- a/src/runtime/vendor/github.com/containerd/cgroups/control.go +++ b/src/runtime/vendor/github.com/containerd/cgroups/control.go @@ -23,10 +23,12 @@ import ( specs "github.com/opencontainers/runtime-spec/specs-go" ) +type procType = string + const ( - cgroupProcs = "cgroup.procs" - cgroupTasks = "tasks" - defaultDirPerm = 0755 + cgroupProcs procType = "cgroup.procs" + cgroupTasks procType = "tasks" + defaultDirPerm = 0755 ) // defaultFilePerm is a var so that the test framework can change the filemode @@ -37,32 +39,37 @@ const ( var defaultFilePerm = os.FileMode(0) type Process struct { - // Subsystem is the name of the subsystem that the process is in + // Subsystem is the name of the subsystem that the process / task is in. Subsystem Name - // Pid is the process id of the process + // Pid is the process id of the process / task. Pid int - // Path is the full path of the subsystem and location that the process is in + // Path is the full path of the subsystem and location that the process / task is in. Path string } -type Task struct { - // Subsystem is the name of the subsystem that the task is in - Subsystem Name - // Pid is the process id of the task - Pid int - // Path is the full path of the subsystem and location that the task is in - Path string -} +type Task = Process // Cgroup handles interactions with the individual groups to perform // actions on them as them main interface to this cgroup package type Cgroup interface { // New creates a new cgroup under the calling cgroup New(string, *specs.LinuxResources) (Cgroup, error) - // Add adds a process to the cgroup (cgroup.procs) - Add(Process) error - // AddTask adds a process to the cgroup (tasks) - AddTask(Process) error + // Add adds a process to the cgroup (cgroup.procs). Without additional arguments, + // the process is added to all the cgroup subsystems. When giving Add a list of + // subsystem names, the process is only added to those subsystems, provided that + // they are active in the targeted cgroup. + Add(Process, ...Name) error + // AddProc adds the process with the given id to the cgroup (cgroup.procs). + // Without additional arguments, the process with the given id is added to all + // the cgroup subsystems. When giving AddProc a list of subsystem names, the process + // id is only added to those subsystems, provided that they are active in the targeted + // cgroup. + AddProc(uint64, ...Name) error + // AddTask adds a process to the cgroup (tasks). Without additional arguments, the + // task is added to all the cgroup subsystems. When giving AddTask a list of subsystem + // names, the task is only added to those subsystems, provided that they are active in + // the targeted cgroup. + AddTask(Process, ...Name) error // Delete removes the cgroup as a whole Delete() error // MoveTo moves all the processes under the calling cgroup to the provided one diff --git a/src/runtime/vendor/github.com/containerd/cgroups/go.mod b/src/runtime/vendor/github.com/containerd/cgroups/go.mod index eed71ffb4..b3df917d5 100644 --- a/src/runtime/vendor/github.com/containerd/cgroups/go.mod +++ b/src/runtime/vendor/github.com/containerd/cgroups/go.mod @@ -1,17 +1,16 @@ module github.com/containerd/cgroups -go 1.13 +go 1.16 require ( github.com/cilium/ebpf v0.4.0 - github.com/coreos/go-systemd/v22 v22.1.0 + github.com/coreos/go-systemd/v22 v22.3.2 github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect github.com/docker/go-units v0.4.0 - github.com/godbus/dbus/v5 v5.0.3 + github.com/godbus/dbus/v5 v5.0.4 github.com/gogo/protobuf v1.3.2 github.com/opencontainers/runtime-spec v1.0.2 - github.com/pkg/errors v0.9.1 - github.com/sirupsen/logrus v1.7.0 + github.com/sirupsen/logrus v1.8.1 github.com/stretchr/testify v1.6.1 github.com/urfave/cli v1.22.2 golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c diff --git a/src/runtime/vendor/github.com/containerd/cgroups/go.sum b/src/runtime/vendor/github.com/containerd/cgroups/go.sum index f08610237..20ed896ad 100644 --- a/src/runtime/vendor/github.com/containerd/cgroups/go.sum +++ b/src/runtime/vendor/github.com/containerd/cgroups/go.sum @@ -1,8 +1,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/cilium/ebpf v0.4.0 h1:QlHdikaxALkqWasW8hAC1mfR0jdmvbfaBdBPFmRSglA= github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= -github.com/coreos/go-systemd/v22 v22.1.0 h1:kq/SbG2BCKLkDKkjQf5OWwKWUKj1lgs3lFI4PxnR5lg= -github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= +github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= @@ -13,8 +13,8 @@ github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/frankban/quicktest v1.11.3 h1:8sXhOn0uLys67V8EsXLc6eszDs8VXWxL3iRvebPhedY= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -github.com/godbus/dbus/v5 v5.0.3 h1:ZqHaoEF7TBzh4jzPmqVhE/5A1z9of6orkAe5uHoAeME= -github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.0.4 h1:9349emZab16e7zQvpmsbtjc18ykshndd8y2PG3sgJbA= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M= @@ -28,16 +28,14 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/opencontainers/runtime-spec v1.0.2 h1:UfAcuLBJB9Coz72x1hgl8O5RVzTdNiaglX6v2DM6FI0= github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 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/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= diff --git a/src/runtime/vendor/github.com/containerd/cgroups/opts.go b/src/runtime/vendor/github.com/containerd/cgroups/opts.go index a1449e298..1e428d048 100644 --- a/src/runtime/vendor/github.com/containerd/cgroups/opts.go +++ b/src/runtime/vendor/github.com/containerd/cgroups/opts.go @@ -17,7 +17,7 @@ package cgroups import ( - "github.com/pkg/errors" + "errors" ) var ( diff --git a/src/runtime/vendor/github.com/containerd/cgroups/paths.go b/src/runtime/vendor/github.com/containerd/cgroups/paths.go index 27197ecad..bddc4e9cd 100644 --- a/src/runtime/vendor/github.com/containerd/cgroups/paths.go +++ b/src/runtime/vendor/github.com/containerd/cgroups/paths.go @@ -17,10 +17,9 @@ package cgroups import ( + "errors" "fmt" "path/filepath" - - "github.com/pkg/errors" ) type Path func(subsystem Name) (string, error) @@ -39,7 +38,7 @@ func StaticPath(path string) Path { // NestedPath will nest the cgroups based on the calling processes cgroup // placing its child processes inside its own path func NestedPath(suffix string) Path { - paths, err := parseCgroupFile("/proc/self/cgroup") + paths, err := ParseCgroupFile("/proc/self/cgroup") if err != nil { return errorPath(err) } @@ -50,9 +49,9 @@ func NestedPath(suffix string) Path { // This is commonly used for the Load function to restore an existing container func PidPath(pid int) Path { p := fmt.Sprintf("/proc/%d/cgroup", pid) - paths, err := parseCgroupFile(p) + paths, err := ParseCgroupFile(p) if err != nil { - return errorPath(errors.Wrapf(err, "parse cgroup file %s", p)) + return errorPath(fmt.Errorf("parse cgroup file %s: %w", p, err)) } return existingPath(paths, "") } diff --git a/src/runtime/vendor/github.com/containerd/cgroups/systemd.go b/src/runtime/vendor/github.com/containerd/cgroups/systemd.go index c17f34a62..4da57cb4b 100644 --- a/src/runtime/vendor/github.com/containerd/cgroups/systemd.go +++ b/src/runtime/vendor/github.com/containerd/cgroups/systemd.go @@ -17,6 +17,7 @@ package cgroups import ( + "context" "path/filepath" "strings" "sync" @@ -78,7 +79,8 @@ func (s *SystemdController) Name() Name { } func (s *SystemdController) Create(path string, _ *specs.LinuxResources) error { - conn, err := systemdDbus.New() + ctx := context.TODO() + conn, err := systemdDbus.NewWithContext(ctx) if err != nil { return err } @@ -90,7 +92,7 @@ func (s *SystemdController) Create(path string, _ *specs.LinuxResources) error { checkDelegate := func() { canDelegate = true dlSlice := newProperty("Delegate", true) - if _, err := conn.StartTransientUnit(slice, "testdelegate", []systemdDbus.Property{dlSlice}, nil); err != nil { + if _, err := conn.StartTransientUnitContext(ctx, slice, "testdelegate", []systemdDbus.Property{dlSlice}, nil); err != nil { if dbusError, ok := err.(dbus.Error); ok { // Starting with systemd v237, Delegate is not even a property of slices anymore, // so the D-Bus call fails with "InvalidArgs" error. @@ -100,7 +102,7 @@ func (s *SystemdController) Create(path string, _ *specs.LinuxResources) error { } } - conn.StopUnit(slice, "testDelegate", nil) + _, _ = conn.StopUnitContext(ctx, slice, "testDelegate", nil) } once.Do(checkDelegate) properties := []systemdDbus.Property{ @@ -118,7 +120,7 @@ func (s *SystemdController) Create(path string, _ *specs.LinuxResources) error { } ch := make(chan string) - _, err = conn.StartTransientUnit(name, "replace", properties, ch) + _, err = conn.StartTransientUnitContext(ctx, name, "replace", properties, ch) if err != nil { return err } @@ -127,14 +129,15 @@ func (s *SystemdController) Create(path string, _ *specs.LinuxResources) error { } func (s *SystemdController) Delete(path string) error { - conn, err := systemdDbus.New() + ctx := context.TODO() + conn, err := systemdDbus.NewWithContext(ctx) if err != nil { return err } defer conn.Close() _, name := splitName(path) ch := make(chan string) - _, err = conn.StopUnit(name, "replace", ch) + _, err = conn.StopUnitContext(ctx, name, "replace", ch) if err != nil { return err } diff --git a/src/runtime/vendor/github.com/containerd/cgroups/utils.go b/src/runtime/vendor/github.com/containerd/cgroups/utils.go index ed894b3ec..2297980d9 100644 --- a/src/runtime/vendor/github.com/containerd/cgroups/utils.go +++ b/src/runtime/vendor/github.com/containerd/cgroups/utils.go @@ -164,9 +164,9 @@ func remove(path string) error { return fmt.Errorf("cgroups: unable to remove path %q", path) } -// readPids will read all the pids of processes in a cgroup by the provided path -func readPids(path string, subsystem Name) ([]Process, error) { - f, err := os.Open(filepath.Join(path, cgroupProcs)) +// readPids will read all the pids of processes or tasks in a cgroup by the provided path +func readPids(path string, subsystem Name, pType procType) ([]Process, error) { + f, err := os.Open(filepath.Join(path, pType)) if err != nil { return nil, err } @@ -195,36 +195,6 @@ func readPids(path string, subsystem Name) ([]Process, error) { return out, nil } -// readTasksPids will read all the pids of tasks in a cgroup by the provided path -func readTasksPids(path string, subsystem Name) ([]Task, error) { - f, err := os.Open(filepath.Join(path, cgroupTasks)) - if err != nil { - return nil, err - } - defer f.Close() - var ( - out []Task - s = bufio.NewScanner(f) - ) - for s.Scan() { - if t := s.Text(); t != "" { - pid, err := strconv.Atoi(t) - if err != nil { - return nil, err - } - out = append(out, Task{ - Pid: pid, - Subsystem: subsystem, - Path: path, - }) - } - } - if err := s.Err(); err != nil { - return nil, err - } - return out, nil -} - func hugePageSizes() ([]string, error) { var ( pageSizes []string @@ -285,7 +255,16 @@ func parseKV(raw string) (string, uint64, error) { } } -func parseCgroupFile(path string) (map[string]string, error) { +// ParseCgroupFile parses the given cgroup file, typically /proc/self/cgroup +// or /proc//cgroup, into a map of subsystems to cgroup paths, e.g. +// "cpu": "/user.slice/user-1000.slice" +// "pids": "/user.slice/user-1000.slice" +// etc. +// +// Note that for cgroup v2 unified hierarchy, there are no per-controller +// cgroup paths, so the resulting map will have a single element where the key +// is empty string ("") and the value is the cgroup path the is in. +func ParseCgroupFile(path string) (map[string]string, error) { f, err := os.Open(path) if err != nil { return nil, err diff --git a/src/runtime/vendor/github.com/containerd/console/console_windows.go b/src/runtime/vendor/github.com/containerd/console/console_windows.go index 129a92883..787c11fe5 100644 --- a/src/runtime/vendor/github.com/containerd/console/console_windows.go +++ b/src/runtime/vendor/github.com/containerd/console/console_windows.go @@ -17,10 +17,10 @@ package console import ( + "errors" "fmt" "os" - "github.com/pkg/errors" "golang.org/x/sys/windows" ) @@ -103,7 +103,7 @@ func (m *master) Reset() error { {m.err, m.errMode}, } { if err := windows.SetConsoleMode(s.fd, s.mode); err != nil { - return errors.Wrap(err, "unable to restore console mode") + return fmt.Errorf("unable to restore console mode: %w", err) } } @@ -114,7 +114,7 @@ func (m *master) Size() (WinSize, error) { var info windows.ConsoleScreenBufferInfo err := windows.GetConsoleScreenBufferInfo(m.out, &info) if err != nil { - return WinSize{}, errors.Wrap(err, "unable to get console info") + return WinSize{}, fmt.Errorf("unable to get console info: %w", err) } winsize := WinSize{ @@ -139,7 +139,7 @@ func (m *master) DisableEcho() error { mode |= windows.ENABLE_LINE_INPUT if err := windows.SetConsoleMode(m.in, mode); err != nil { - return errors.Wrap(err, "unable to set console to disable echo") + return fmt.Errorf("unable to set console to disable echo: %w", err) } return nil @@ -192,7 +192,7 @@ func makeInputRaw(fd windows.Handle, mode uint32) error { } if err := windows.SetConsoleMode(fd, mode); err != nil { - return errors.Wrap(err, "unable to set console to raw mode") + return fmt.Errorf("unable to set console to raw mode: %w", err) } return nil diff --git a/src/runtime/vendor/github.com/containerd/console/console_zos.go b/src/runtime/vendor/github.com/containerd/console/console_zos.go new file mode 100644 index 000000000..b348a839a --- /dev/null +++ b/src/runtime/vendor/github.com/containerd/console/console_zos.go @@ -0,0 +1,163 @@ +// +build zos + +/* + Copyright The containerd Authors. + + 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. +*/ + +package console + +import ( + "fmt" + "os" + + "golang.org/x/sys/unix" +) + +// NewPty creates a new pty pair +// The master is returned as the first console and a string +// with the path to the pty slave is returned as the second +func NewPty() (Console, string, error) { + var f File + var err error + var slave string + for i := 0;; i++ { + ptyp := fmt.Sprintf("/dev/ptyp%04d", i) + f, err = os.OpenFile(ptyp, os.O_RDWR, 0600) + if err == nil { + slave = fmt.Sprintf("/dev/ttyp%04d", i) + break + } + if os.IsNotExist(err) { + return nil, "", err + } + // else probably Resource Busy + } + m, err := newMaster(f) + if err != nil { + return nil, "", err + } + return m, slave, nil +} + +type master struct { + f File + original *unix.Termios +} + +func (m *master) Read(b []byte) (int, error) { + return m.f.Read(b) +} + +func (m *master) Write(b []byte) (int, error) { + return m.f.Write(b) +} + +func (m *master) Close() error { + return m.f.Close() +} + +func (m *master) Resize(ws WinSize) error { + return tcswinsz(m.f.Fd(), ws) +} + +func (m *master) ResizeFrom(c Console) error { + ws, err := c.Size() + if err != nil { + return err + } + return m.Resize(ws) +} + +func (m *master) Reset() error { + if m.original == nil { + return nil + } + return tcset(m.f.Fd(), m.original) +} + +func (m *master) getCurrent() (unix.Termios, error) { + var termios unix.Termios + if err := tcget(m.f.Fd(), &termios); err != nil { + return unix.Termios{}, err + } + return termios, nil +} + +func (m *master) SetRaw() error { + rawState, err := m.getCurrent() + if err != nil { + return err + } + rawState = cfmakeraw(rawState) + rawState.Oflag = rawState.Oflag | unix.OPOST + return tcset(m.f.Fd(), &rawState) +} + +func (m *master) DisableEcho() error { + rawState, err := m.getCurrent() + if err != nil { + return err + } + rawState.Lflag = rawState.Lflag &^ unix.ECHO + return tcset(m.f.Fd(), &rawState) +} + +func (m *master) Size() (WinSize, error) { + return tcgwinsz(m.f.Fd()) +} + +func (m *master) Fd() uintptr { + return m.f.Fd() +} + +func (m *master) Name() string { + return m.f.Name() +} + +// checkConsole checks if the provided file is a console +func checkConsole(f File) error { + var termios unix.Termios + if tcget(f.Fd(), &termios) != nil { + return ErrNotAConsole + } + return nil +} + +func newMaster(f File) (Console, error) { + m := &master{ + f: f, + } + t, err := m.getCurrent() + if err != nil { + return nil, err + } + m.original = &t + return m, nil +} + +// ClearONLCR sets the necessary tty_ioctl(4)s to ensure that a pty pair +// created by us acts normally. In particular, a not-very-well-known default of +// Linux unix98 ptys is that they have +onlcr by default. While this isn't a +// problem for terminal emulators, because we relay data from the terminal we +// also relay that funky line discipline. +func ClearONLCR(fd uintptr) error { + return setONLCR(fd, false) +} + +// SetONLCR sets the necessary tty_ioctl(4)s to ensure that a pty pair +// created by us acts as intended for a terminal emulator. +func SetONLCR(fd uintptr) error { + return setONLCR(fd, true) +} diff --git a/src/runtime/vendor/github.com/containerd/console/go.mod b/src/runtime/vendor/github.com/containerd/console/go.mod index 7fca0a9a3..1fe5b7fec 100644 --- a/src/runtime/vendor/github.com/containerd/console/go.mod +++ b/src/runtime/vendor/github.com/containerd/console/go.mod @@ -2,7 +2,4 @@ module github.com/containerd/console go 1.13 -require ( - github.com/pkg/errors v0.9.1 - golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c -) +require golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c diff --git a/src/runtime/vendor/github.com/containerd/console/go.sum b/src/runtime/vendor/github.com/containerd/console/go.sum index 9db384d3b..1225630b7 100644 --- a/src/runtime/vendor/github.com/containerd/console/go.sum +++ b/src/runtime/vendor/github.com/containerd/console/go.sum @@ -1,4 +1,2 @@ -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c h1:VwygUrnw9jn88c4u8GD3rZQbqrP/tgas88tPUbBxQrk= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/src/runtime/vendor/github.com/containerd/console/tc_unix.go b/src/runtime/vendor/github.com/containerd/console/tc_unix.go index 5cd4c550c..a6bf01e8d 100644 --- a/src/runtime/vendor/github.com/containerd/console/tc_unix.go +++ b/src/runtime/vendor/github.com/containerd/console/tc_unix.go @@ -1,4 +1,4 @@ -// +build darwin freebsd linux netbsd openbsd solaris +// +build darwin freebsd linux netbsd openbsd solaris zos /* Copyright The containerd Authors. diff --git a/src/runtime/vendor/github.com/containerd/containerd/sys/stat_unix.go b/src/runtime/vendor/github.com/containerd/console/tc_zos.go similarity index 52% rename from src/runtime/vendor/github.com/containerd/containerd/sys/stat_unix.go rename to src/runtime/vendor/github.com/containerd/console/tc_zos.go index 21a666dff..4262eaf4c 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/sys/stat_unix.go +++ b/src/runtime/vendor/github.com/containerd/console/tc_zos.go @@ -1,5 +1,3 @@ -// +build linux solaris - /* Copyright The containerd Authors. @@ -16,29 +14,13 @@ limitations under the License. */ -package sys +package console import ( - "syscall" - "time" + "golang.org/x/sys/unix" ) -// StatAtime returns the Atim -func StatAtime(st *syscall.Stat_t) syscall.Timespec { - return st.Atim -} - -// StatCtime returns the Ctim -func StatCtime(st *syscall.Stat_t) syscall.Timespec { - return st.Ctim -} - -// StatMtime returns the Mtim -func StatMtime(st *syscall.Stat_t) syscall.Timespec { - return st.Mtim -} - -// StatATimeAsTime returns st.Atim as a time.Time -func StatATimeAsTime(st *syscall.Stat_t) time.Time { - return time.Unix(int64(st.Atim.Sec), int64(st.Atim.Nsec)) // nolint: unconvert -} +const ( + cmdTcGet = unix.TCGETS + cmdTcSet = unix.TCSETS +) diff --git a/src/runtime/vendor/github.com/containerd/containerd/api/LICENSE b/src/runtime/vendor/github.com/containerd/containerd/api/LICENSE new file mode 100644 index 000000000..584149b6e --- /dev/null +++ b/src/runtime/vendor/github.com/containerd/containerd/api/LICENSE @@ -0,0 +1,191 @@ + + Apache License + Version 2.0, January 2004 + https://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 The containerd Authors + + 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 + + https://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/src/runtime/vendor/github.com/containerd/containerd/api/services/ttrpc/events/v1/doc.go b/src/runtime/vendor/github.com/containerd/containerd/api/services/ttrpc/events/v1/doc.go index b7f86da86..d3d9839d6 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/api/services/ttrpc/events/v1/doc.go +++ b/src/runtime/vendor/github.com/containerd/containerd/api/services/ttrpc/events/v1/doc.go @@ -14,5 +14,5 @@ limitations under the License. */ -// Package events defines the event pushing and subscription service. +// Package events defines the ttrpc event service. package events diff --git a/src/runtime/vendor/github.com/containerd/containerd/api/types/task/doc.go b/src/runtime/vendor/github.com/containerd/containerd/api/types/task/doc.go new file mode 100644 index 000000000..e10c7a469 --- /dev/null +++ b/src/runtime/vendor/github.com/containerd/containerd/api/types/task/doc.go @@ -0,0 +1,18 @@ +/* + Copyright The containerd Authors. + + 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. +*/ + +// Package task defines the task service. +package task diff --git a/src/runtime/vendor/github.com/containerd/containerd/defaults/defaults.go b/src/runtime/vendor/github.com/containerd/containerd/defaults/defaults.go new file mode 100644 index 000000000..6f5b122ec --- /dev/null +++ b/src/runtime/vendor/github.com/containerd/containerd/defaults/defaults.go @@ -0,0 +1,32 @@ +/* + Copyright The containerd Authors. + + 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. +*/ + +package defaults + +const ( + // DefaultMaxRecvMsgSize defines the default maximum message size for + // receiving protobufs passed over the GRPC API. + DefaultMaxRecvMsgSize = 16 << 20 + // DefaultMaxSendMsgSize defines the default maximum message size for + // sending protobufs passed over the GRPC API. + DefaultMaxSendMsgSize = 16 << 20 + // DefaultRuntimeNSLabel defines the namespace label to check for the + // default runtime + DefaultRuntimeNSLabel = "containerd.io/defaults/runtime" + // DefaultSnapshotterNSLabel defines the namespace label to check for the + // default snapshotter + DefaultSnapshotterNSLabel = "containerd.io/defaults/snapshotter" +) diff --git a/src/runtime/vendor/github.com/containerd/containerd/defaults/defaults_darwin.go b/src/runtime/vendor/github.com/containerd/containerd/defaults/defaults_darwin.go new file mode 100644 index 000000000..1391884cd --- /dev/null +++ b/src/runtime/vendor/github.com/containerd/containerd/defaults/defaults_darwin.go @@ -0,0 +1,37 @@ +/* + Copyright The containerd Authors. + + 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. +*/ + +package defaults + +const ( + // DefaultRootDir is the default location used by containerd to store + // persistent data + DefaultRootDir = "/var/lib/containerd" + // DefaultStateDir is the default location used by containerd to store + // transient data + DefaultStateDir = "/var/run/containerd" + // DefaultAddress is the default unix socket address + DefaultAddress = "/var/run/containerd/containerd.sock" + // DefaultDebugAddress is the default unix socket address for pprof data + DefaultDebugAddress = "/var/run/containerd/debug.sock" + // DefaultFIFODir is the default location used by client-side cio library + // to store FIFOs. + DefaultFIFODir = "/var/run/containerd/fifo" + // DefaultRuntime would be a multiple of choices, thus empty + DefaultRuntime = "" + // DefaultConfigDir is the default location for config files. + DefaultConfigDir = "/etc/containerd" +) diff --git a/src/runtime/vendor/github.com/containerd/containerd/defaults/defaults_unix.go b/src/runtime/vendor/github.com/containerd/containerd/defaults/defaults_unix.go new file mode 100644 index 000000000..8e2619a38 --- /dev/null +++ b/src/runtime/vendor/github.com/containerd/containerd/defaults/defaults_unix.go @@ -0,0 +1,40 @@ +//go:build !windows && !darwin +// +build !windows,!darwin + +/* + Copyright The containerd Authors. + + 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. +*/ + +package defaults + +const ( + // DefaultRootDir is the default location used by containerd to store + // persistent data + DefaultRootDir = "/var/lib/containerd" + // DefaultStateDir is the default location used by containerd to store + // transient data + DefaultStateDir = "/run/containerd" + // DefaultAddress is the default unix socket address + DefaultAddress = "/run/containerd/containerd.sock" + // DefaultDebugAddress is the default unix socket address for pprof data + DefaultDebugAddress = "/run/containerd/debug.sock" + // DefaultFIFODir is the default location used by client-side cio library + // to store FIFOs. + DefaultFIFODir = "/run/containerd/fifo" + // DefaultRuntime is the default linux runtime + DefaultRuntime = "io.containerd.runc.v2" + // DefaultConfigDir is the default location for config files. + DefaultConfigDir = "/etc/containerd" +) diff --git a/src/runtime/vendor/github.com/containerd/containerd/defaults/defaults_windows.go b/src/runtime/vendor/github.com/containerd/containerd/defaults/defaults_windows.go new file mode 100644 index 000000000..9f4bed8b0 --- /dev/null +++ b/src/runtime/vendor/github.com/containerd/containerd/defaults/defaults_windows.go @@ -0,0 +1,46 @@ +/* + Copyright The containerd Authors. + + 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. +*/ + +package defaults + +import ( + "os" + "path/filepath" +) + +var ( + // DefaultRootDir is the default location used by containerd to store + // persistent data + DefaultRootDir = filepath.Join(os.Getenv("ProgramData"), "containerd", "root") + // DefaultStateDir is the default location used by containerd to store + // transient data + DefaultStateDir = filepath.Join(os.Getenv("ProgramData"), "containerd", "state") + + // DefaultConfigDir is the default location for config files. + DefaultConfigDir = filepath.Join(os.Getenv("programfiles"), "containerd") +) + +const ( + // DefaultAddress is the default winpipe address + DefaultAddress = `\\.\pipe\containerd-containerd` + // DefaultDebugAddress is the default winpipe address for pprof data + DefaultDebugAddress = `\\.\pipe\containerd-debug` + // DefaultFIFODir is the default location used by client-side cio library + // to store FIFOs. Unused on Windows. + DefaultFIFODir = "" + // DefaultRuntime is the default windows runtime + DefaultRuntime = "io.containerd.runhcs.v1" +) diff --git a/src/runtime/vendor/github.com/containerd/containerd/defaults/doc.go b/src/runtime/vendor/github.com/containerd/containerd/defaults/doc.go new file mode 100644 index 000000000..6da863ce2 --- /dev/null +++ b/src/runtime/vendor/github.com/containerd/containerd/defaults/doc.go @@ -0,0 +1,19 @@ +/* + Copyright The containerd Authors. + + 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. +*/ + +// Package defaults provides several common defaults for interacting with +// containerd. These can be used on the client-side or server-side. +package defaults diff --git a/src/runtime/vendor/github.com/containerd/containerd/events/exchange/exchange.go b/src/runtime/vendor/github.com/containerd/containerd/events/exchange/exchange.go new file mode 100644 index 000000000..eb27bf29b --- /dev/null +++ b/src/runtime/vendor/github.com/containerd/containerd/events/exchange/exchange.go @@ -0,0 +1,251 @@ +/* + Copyright The containerd Authors. + + 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. +*/ + +package exchange + +import ( + "context" + "strings" + "time" + + "github.com/containerd/containerd/errdefs" + "github.com/containerd/containerd/events" + "github.com/containerd/containerd/filters" + "github.com/containerd/containerd/identifiers" + "github.com/containerd/containerd/log" + "github.com/containerd/containerd/namespaces" + "github.com/containerd/typeurl" + goevents "github.com/docker/go-events" + "github.com/gogo/protobuf/types" + "github.com/pkg/errors" + "github.com/sirupsen/logrus" +) + +// Exchange broadcasts events +type Exchange struct { + broadcaster *goevents.Broadcaster +} + +// NewExchange returns a new event Exchange +func NewExchange() *Exchange { + return &Exchange{ + broadcaster: goevents.NewBroadcaster(), + } +} + +var _ events.Publisher = &Exchange{} +var _ events.Forwarder = &Exchange{} +var _ events.Subscriber = &Exchange{} + +// Forward accepts an envelope to be directly distributed on the exchange. +// +// This is useful when an event is forwarded on behalf of another namespace or +// when the event is propagated on behalf of another publisher. +func (e *Exchange) Forward(ctx context.Context, envelope *events.Envelope) (err error) { + if err := validateEnvelope(envelope); err != nil { + return err + } + + defer func() { + logger := log.G(ctx).WithFields(logrus.Fields{ + "topic": envelope.Topic, + "ns": envelope.Namespace, + "type": envelope.Event.TypeUrl, + }) + + if err != nil { + logger.WithError(err).Error("error forwarding event") + } else { + logger.Debug("event forwarded") + } + }() + + return e.broadcaster.Write(envelope) +} + +// Publish packages and sends an event. The caller will be considered the +// initial publisher of the event. This means the timestamp will be calculated +// at this point and this method may read from the calling context. +func (e *Exchange) Publish(ctx context.Context, topic string, event events.Event) (err error) { + var ( + namespace string + encoded *types.Any + envelope events.Envelope + ) + + namespace, err = namespaces.NamespaceRequired(ctx) + if err != nil { + return errors.Wrapf(err, "failed publishing event") + } + if err := validateTopic(topic); err != nil { + return errors.Wrapf(err, "envelope topic %q", topic) + } + + encoded, err = typeurl.MarshalAny(event) + if err != nil { + return err + } + + envelope.Timestamp = time.Now().UTC() + envelope.Namespace = namespace + envelope.Topic = topic + envelope.Event = encoded + + defer func() { + logger := log.G(ctx).WithFields(logrus.Fields{ + "topic": envelope.Topic, + "ns": envelope.Namespace, + "type": envelope.Event.TypeUrl, + }) + + if err != nil { + logger.WithError(err).Error("error publishing event") + } else { + logger.Debug("event published") + } + }() + + return e.broadcaster.Write(&envelope) +} + +// Subscribe to events on the exchange. Events are sent through the returned +// channel ch. If an error is encountered, it will be sent on channel errs and +// errs will be closed. To end the subscription, cancel the provided context. +// +// Zero or more filters may be provided as strings. Only events that match +// *any* of the provided filters will be sent on the channel. The filters use +// the standard containerd filters package syntax. +func (e *Exchange) Subscribe(ctx context.Context, fs ...string) (ch <-chan *events.Envelope, errs <-chan error) { + var ( + evch = make(chan *events.Envelope) + errq = make(chan error, 1) + channel = goevents.NewChannel(0) + queue = goevents.NewQueue(channel) + dst goevents.Sink = queue + ) + + closeAll := func() { + channel.Close() + queue.Close() + e.broadcaster.Remove(dst) + close(errq) + } + + ch = evch + errs = errq + + if len(fs) > 0 { + filter, err := filters.ParseAll(fs...) + if err != nil { + errq <- errors.Wrapf(err, "failed parsing subscription filters") + closeAll() + return + } + + dst = goevents.NewFilter(queue, goevents.MatcherFunc(func(gev goevents.Event) bool { + return filter.Match(adapt(gev)) + })) + } + + e.broadcaster.Add(dst) + + go func() { + defer closeAll() + + var err error + loop: + for { + select { + case ev := <-channel.C: + env, ok := ev.(*events.Envelope) + if !ok { + // TODO(stevvooe): For the most part, we are well protected + // from this condition. Both Forward and Publish protect + // from this. + err = errors.Errorf("invalid envelope encountered %#v; please file a bug", ev) + break + } + + select { + case evch <- env: + case <-ctx.Done(): + break loop + } + case <-ctx.Done(): + break loop + } + } + + if err == nil { + if cerr := ctx.Err(); cerr != context.Canceled { + err = cerr + } + } + + errq <- err + }() + + return +} + +func validateTopic(topic string) error { + if topic == "" { + return errors.Wrap(errdefs.ErrInvalidArgument, "must not be empty") + } + + if topic[0] != '/' { + return errors.Wrapf(errdefs.ErrInvalidArgument, "must start with '/'") + } + + if len(topic) == 1 { + return errors.Wrapf(errdefs.ErrInvalidArgument, "must have at least one component") + } + + components := strings.Split(topic[1:], "/") + for _, component := range components { + if err := identifiers.Validate(component); err != nil { + return errors.Wrapf(err, "failed validation on component %q", component) + } + } + + return nil +} + +func validateEnvelope(envelope *events.Envelope) error { + if err := identifiers.Validate(envelope.Namespace); err != nil { + return errors.Wrapf(err, "event envelope has invalid namespace") + } + + if err := validateTopic(envelope.Topic); err != nil { + return errors.Wrapf(err, "envelope topic %q", envelope.Topic) + } + + if envelope.Timestamp.IsZero() { + return errors.Wrapf(errdefs.ErrInvalidArgument, "timestamp must be set on forwarded event") + } + + return nil +} + +func adapt(ev interface{}) filters.Adaptor { + if adaptor, ok := ev.(filters.Adaptor); ok { + return adaptor + } + + return filters.AdapterFunc(func(fieldpath []string) (string, bool) { + return "", false + }) +} diff --git a/src/runtime/vendor/github.com/containerd/containerd/filters/adaptor.go b/src/runtime/vendor/github.com/containerd/containerd/filters/adaptor.go new file mode 100644 index 000000000..5a9c559c1 --- /dev/null +++ b/src/runtime/vendor/github.com/containerd/containerd/filters/adaptor.go @@ -0,0 +1,33 @@ +/* + Copyright The containerd Authors. + + 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. +*/ + +package filters + +// Adaptor specifies the mapping of fieldpaths to a type. For the given field +// path, the value and whether it is present should be returned. The mapping of +// the fieldpath to a field is deferred to the adaptor implementation, but +// should generally follow protobuf field path/mask semantics. +type Adaptor interface { + Field(fieldpath []string) (value string, present bool) +} + +// AdapterFunc allows implementation specific matching of fieldpaths +type AdapterFunc func(fieldpath []string) (string, bool) + +// Field returns the field name and true if it exists +func (fn AdapterFunc) Field(fieldpath []string) (string, bool) { + return fn(fieldpath) +} diff --git a/src/runtime/vendor/github.com/containerd/containerd/filters/filter.go b/src/runtime/vendor/github.com/containerd/containerd/filters/filter.go new file mode 100644 index 000000000..cf09d8d9e --- /dev/null +++ b/src/runtime/vendor/github.com/containerd/containerd/filters/filter.go @@ -0,0 +1,179 @@ +/* + Copyright The containerd Authors. + + 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. +*/ + +// Package filters defines a syntax and parser that can be used for the +// filtration of items across the containerd API. The core is built on the +// concept of protobuf field paths, with quoting. Several operators allow the +// user to flexibly select items based on field presence, equality, inequality +// and regular expressions. Flexible adaptors support working with any type. +// +// The syntax is fairly familiar, if you've used container ecosystem +// projects. At the core, we base it on the concept of protobuf field +// paths, augmenting with the ability to quote portions of the field path +// to match arbitrary labels. These "selectors" come in the following +// syntax: +// +// ``` +// [] +// ``` +// +// A basic example is as follows: +// +// ``` +// name==foo +// ``` +// +// This would match all objects that have a field `name` with the value +// `foo`. If we only want to test if the field is present, we can omit the +// operator. This is most useful for matching labels in containerd. The +// following will match objects that have the field "labels" and have the +// label "foo" defined: +// +// ``` +// labels.foo +// ``` +// +// We also allow for quoting of parts of the field path to allow matching +// of arbitrary items: +// +// ``` +// labels."very complex label"==something +// ``` +// +// We also define `!=` and `~=` as operators. The `!=` will match all +// objects that don't match the value for a field and `~=` will compile the +// target value as a regular expression and match the field value against that. +// +// Selectors can be combined using a comma, such that the resulting +// selector will require all selectors are matched for the object to match. +// The following example will match objects that are named `foo` and have +// the label `bar`: +// +// ``` +// name==foo,labels.bar +// ``` +// +package filters + +import ( + "regexp" + + "github.com/containerd/containerd/log" +) + +// Filter matches specific resources based the provided filter +type Filter interface { + Match(adaptor Adaptor) bool +} + +// FilterFunc is a function that handles matching with an adaptor +type FilterFunc func(Adaptor) bool + +// Match matches the FilterFunc returning true if the object matches the filter +func (fn FilterFunc) Match(adaptor Adaptor) bool { + return fn(adaptor) +} + +// Always is a filter that always returns true for any type of object +var Always FilterFunc = func(adaptor Adaptor) bool { + return true +} + +// Any allows multiple filters to be matched against the object +type Any []Filter + +// Match returns true if any of the provided filters are true +func (m Any) Match(adaptor Adaptor) bool { + for _, m := range m { + if m.Match(adaptor) { + return true + } + } + + return false +} + +// All allows multiple filters to be matched against the object +type All []Filter + +// Match only returns true if all filters match the object +func (m All) Match(adaptor Adaptor) bool { + for _, m := range m { + if !m.Match(adaptor) { + return false + } + } + + return true +} + +type operator int + +const ( + operatorPresent = iota + operatorEqual + operatorNotEqual + operatorMatches +) + +func (op operator) String() string { + switch op { + case operatorPresent: + return "?" + case operatorEqual: + return "==" + case operatorNotEqual: + return "!=" + case operatorMatches: + return "~=" + } + + return "unknown" +} + +type selector struct { + fieldpath []string + operator operator + value string + re *regexp.Regexp +} + +func (m selector) Match(adaptor Adaptor) bool { + value, present := adaptor.Field(m.fieldpath) + + switch m.operator { + case operatorPresent: + return present + case operatorEqual: + return present && value == m.value + case operatorNotEqual: + return value != m.value + case operatorMatches: + if m.re == nil { + r, err := regexp.Compile(m.value) + if err != nil { + log.L.Errorf("error compiling regexp %q", m.value) + return false + } + + m.re = r + } + + return m.re.MatchString(value) + default: + return false + } +} diff --git a/src/runtime/vendor/github.com/containerd/containerd/filters/parser.go b/src/runtime/vendor/github.com/containerd/containerd/filters/parser.go new file mode 100644 index 000000000..0825d668c --- /dev/null +++ b/src/runtime/vendor/github.com/containerd/containerd/filters/parser.go @@ -0,0 +1,292 @@ +/* + Copyright The containerd Authors. + + 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. +*/ + +package filters + +import ( + "fmt" + "io" + + "github.com/containerd/containerd/errdefs" + "github.com/pkg/errors" +) + +/* +Parse the strings into a filter that may be used with an adaptor. + +The filter is made up of zero or more selectors. + +The format is a comma separated list of expressions, in the form of +``, known as selectors. All selectors must match the +target object for the filter to be true. + +We define the operators "==" for equality, "!=" for not equal and "~=" for a +regular expression. If the operator and value are not present, the matcher will +test for the presence of a value, as defined by the target object. + +The formal grammar is as follows: + +selectors := selector ("," selector)* +selector := fieldpath (operator value) +fieldpath := field ('.' field)* +field := quoted | [A-Za-z] [A-Za-z0-9_]+ +operator := "==" | "!=" | "~=" +value := quoted | [^\s,]+ +quoted := + +*/ +func Parse(s string) (Filter, error) { + // special case empty to match all + if s == "" { + return Always, nil + } + + p := parser{input: s} + return p.parse() +} + +// ParseAll parses each filter in ss and returns a filter that will return true +// if any filter matches the expression. +// +// If no filters are provided, the filter will match anything. +func ParseAll(ss ...string) (Filter, error) { + if len(ss) == 0 { + return Always, nil + } + + var fs []Filter + for _, s := range ss { + f, err := Parse(s) + if err != nil { + return nil, errors.Wrap(errdefs.ErrInvalidArgument, err.Error()) + } + + fs = append(fs, f) + } + + return Any(fs), nil +} + +type parser struct { + input string + scanner scanner +} + +func (p *parser) parse() (Filter, error) { + p.scanner.init(p.input) + + ss, err := p.selectors() + if err != nil { + return nil, errors.Wrap(err, "filters") + } + + return ss, nil +} + +func (p *parser) selectors() (Filter, error) { + s, err := p.selector() + if err != nil { + return nil, err + } + + ss := All{s} + +loop: + for { + tok := p.scanner.peek() + switch tok { + case ',': + pos, tok, _ := p.scanner.scan() + if tok != tokenSeparator { + return nil, p.mkerr(pos, "expected a separator") + } + + s, err := p.selector() + if err != nil { + return nil, err + } + + ss = append(ss, s) + case tokenEOF: + break loop + default: + return nil, p.mkerr(p.scanner.ppos, "unexpected input: %v", string(tok)) + } + } + + return ss, nil +} + +func (p *parser) selector() (selector, error) { + fieldpath, err := p.fieldpath() + if err != nil { + return selector{}, err + } + + switch p.scanner.peek() { + case ',', tokenSeparator, tokenEOF: + return selector{ + fieldpath: fieldpath, + operator: operatorPresent, + }, nil + } + + op, err := p.operator() + if err != nil { + return selector{}, err + } + + var allowAltQuotes bool + if op == operatorMatches { + allowAltQuotes = true + } + + value, err := p.value(allowAltQuotes) + if err != nil { + if err == io.EOF { + return selector{}, io.ErrUnexpectedEOF + } + return selector{}, err + } + + return selector{ + fieldpath: fieldpath, + value: value, + operator: op, + }, nil +} + +func (p *parser) fieldpath() ([]string, error) { + f, err := p.field() + if err != nil { + return nil, err + } + + fs := []string{f} +loop: + for { + tok := p.scanner.peek() // lookahead to consume field separator + + switch tok { + case '.': + pos, tok, _ := p.scanner.scan() // consume separator + if tok != tokenSeparator { + return nil, p.mkerr(pos, "expected a field separator (`.`)") + } + + f, err := p.field() + if err != nil { + return nil, err + } + + fs = append(fs, f) + default: + // let the layer above handle the other bad cases. + break loop + } + } + + return fs, nil +} + +func (p *parser) field() (string, error) { + pos, tok, s := p.scanner.scan() + switch tok { + case tokenField: + return s, nil + case tokenQuoted: + return p.unquote(pos, s, false) + case tokenIllegal: + return "", p.mkerr(pos, p.scanner.err) + } + + return "", p.mkerr(pos, "expected field or quoted") +} + +func (p *parser) operator() (operator, error) { + pos, tok, s := p.scanner.scan() + switch tok { + case tokenOperator: + switch s { + case "==": + return operatorEqual, nil + case "!=": + return operatorNotEqual, nil + case "~=": + return operatorMatches, nil + default: + return 0, p.mkerr(pos, "unsupported operator %q", s) + } + case tokenIllegal: + return 0, p.mkerr(pos, p.scanner.err) + } + + return 0, p.mkerr(pos, `expected an operator ("=="|"!="|"~=")`) +} + +func (p *parser) value(allowAltQuotes bool) (string, error) { + pos, tok, s := p.scanner.scan() + + switch tok { + case tokenValue, tokenField: + return s, nil + case tokenQuoted: + return p.unquote(pos, s, allowAltQuotes) + case tokenIllegal: + return "", p.mkerr(pos, p.scanner.err) + } + + return "", p.mkerr(pos, "expected value or quoted") +} + +func (p *parser) unquote(pos int, s string, allowAlts bool) (string, error) { + if !allowAlts && s[0] != '\'' && s[0] != '"' { + return "", p.mkerr(pos, "invalid quote encountered") + } + + uq, err := unquote(s) + if err != nil { + return "", p.mkerr(pos, "unquoting failed: %v", err) + } + + return uq, nil +} + +type parseError struct { + input string + pos int + msg string +} + +func (pe parseError) Error() string { + if pe.pos < len(pe.input) { + before := pe.input[:pe.pos] + location := pe.input[pe.pos : pe.pos+1] // need to handle end + after := pe.input[pe.pos+1:] + + return fmt.Sprintf("[%s >|%s|< %s]: %v", before, location, after, pe.msg) + } + + return fmt.Sprintf("[%s]: %v", pe.input, pe.msg) +} + +func (p *parser) mkerr(pos int, format string, args ...interface{}) error { + return errors.Wrap(parseError{ + input: p.input, + pos: pos, + msg: fmt.Sprintf(format, args...), + }, "parse error") +} diff --git a/src/runtime/vendor/github.com/containerd/containerd/filters/quote.go b/src/runtime/vendor/github.com/containerd/containerd/filters/quote.go new file mode 100644 index 000000000..2d64e23a3 --- /dev/null +++ b/src/runtime/vendor/github.com/containerd/containerd/filters/quote.go @@ -0,0 +1,253 @@ +/* + Copyright The containerd Authors. + + 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. +*/ + +package filters + +import ( + "unicode/utf8" + + "github.com/pkg/errors" +) + +// NOTE(stevvooe): Most of this code in this file is copied from the stdlib +// strconv package and modified to be able to handle quoting with `/` and `|` +// as delimiters. The copyright is held by the Go authors. + +var errQuoteSyntax = errors.New("quote syntax error") + +// UnquoteChar decodes the first character or byte in the escaped string +// or character literal represented by the string s. +// It returns four values: +// +// 1) value, the decoded Unicode code point or byte value; +// 2) multibyte, a boolean indicating whether the decoded character requires a multibyte UTF-8 representation; +// 3) tail, the remainder of the string after the character; and +// 4) an error that will be nil if the character is syntactically valid. +// +// The second argument, quote, specifies the type of literal being parsed +// and therefore which escaped quote character is permitted. +// If set to a single quote, it permits the sequence \' and disallows unescaped '. +// If set to a double quote, it permits \" and disallows unescaped ". +// If set to zero, it does not permit either escape and allows both quote characters to appear unescaped. +// +// This is from Go strconv package, modified to support `|` and `/` as double +// quotes for use with regular expressions. +func unquoteChar(s string, quote byte) (value rune, multibyte bool, tail string, err error) { + // easy cases + switch c := s[0]; { + case c == quote && (quote == '\'' || quote == '"' || quote == '/' || quote == '|'): + err = errQuoteSyntax + return + case c >= utf8.RuneSelf: + r, size := utf8.DecodeRuneInString(s) + return r, true, s[size:], nil + case c != '\\': + return rune(s[0]), false, s[1:], nil + } + + // hard case: c is backslash + if len(s) <= 1 { + err = errQuoteSyntax + return + } + c := s[1] + s = s[2:] + + switch c { + case 'a': + value = '\a' + case 'b': + value = '\b' + case 'f': + value = '\f' + case 'n': + value = '\n' + case 'r': + value = '\r' + case 't': + value = '\t' + case 'v': + value = '\v' + case 'x', 'u', 'U': + n := 0 + switch c { + case 'x': + n = 2 + case 'u': + n = 4 + case 'U': + n = 8 + } + var v rune + if len(s) < n { + err = errQuoteSyntax + return + } + for j := 0; j < n; j++ { + x, ok := unhex(s[j]) + if !ok { + err = errQuoteSyntax + return + } + v = v<<4 | x + } + s = s[n:] + if c == 'x' { + // single-byte string, possibly not UTF-8 + value = v + break + } + if v > utf8.MaxRune { + err = errQuoteSyntax + return + } + value = v + multibyte = true + case '0', '1', '2', '3', '4', '5', '6', '7': + v := rune(c) - '0' + if len(s) < 2 { + err = errQuoteSyntax + return + } + for j := 0; j < 2; j++ { // one digit already; two more + x := rune(s[j]) - '0' + if x < 0 || x > 7 { + err = errQuoteSyntax + return + } + v = (v << 3) | x + } + s = s[2:] + if v > 255 { + err = errQuoteSyntax + return + } + value = v + case '\\': + value = '\\' + case '\'', '"', '|', '/': + if c != quote { + err = errQuoteSyntax + return + } + value = rune(c) + default: + err = errQuoteSyntax + return + } + tail = s + return +} + +// unquote interprets s as a single-quoted, double-quoted, +// or backquoted Go string literal, returning the string value +// that s quotes. (If s is single-quoted, it would be a Go +// character literal; Unquote returns the corresponding +// one-character string.) +// +// This is modified from the standard library to support `|` and `/` as quote +// characters for use with regular expressions. +func unquote(s string) (string, error) { + n := len(s) + if n < 2 { + return "", errQuoteSyntax + } + quote := s[0] + if quote != s[n-1] { + return "", errQuoteSyntax + } + s = s[1 : n-1] + + if quote == '`' { + if contains(s, '`') { + return "", errQuoteSyntax + } + if contains(s, '\r') { + // -1 because we know there is at least one \r to remove. + buf := make([]byte, 0, len(s)-1) + for i := 0; i < len(s); i++ { + if s[i] != '\r' { + buf = append(buf, s[i]) + } + } + return string(buf), nil + } + return s, nil + } + if quote != '"' && quote != '\'' && quote != '|' && quote != '/' { + return "", errQuoteSyntax + } + if contains(s, '\n') { + return "", errQuoteSyntax + } + + // Is it trivial? Avoid allocation. + if !contains(s, '\\') && !contains(s, quote) { + switch quote { + case '"', '/', '|': // pipe and slash are treated like double quote + return s, nil + case '\'': + r, size := utf8.DecodeRuneInString(s) + if size == len(s) && (r != utf8.RuneError || size != 1) { + return s, nil + } + } + } + + var runeTmp [utf8.UTFMax]byte + buf := make([]byte, 0, 3*len(s)/2) // Try to avoid more allocations. + for len(s) > 0 { + c, multibyte, ss, err := unquoteChar(s, quote) + if err != nil { + return "", err + } + s = ss + if c < utf8.RuneSelf || !multibyte { + buf = append(buf, byte(c)) + } else { + n := utf8.EncodeRune(runeTmp[:], c) + buf = append(buf, runeTmp[:n]...) + } + if quote == '\'' && len(s) != 0 { + // single-quoted must be single character + return "", errQuoteSyntax + } + } + return string(buf), nil +} + +// contains reports whether the string contains the byte c. +func contains(s string, c byte) bool { + for i := 0; i < len(s); i++ { + if s[i] == c { + return true + } + } + return false +} + +func unhex(b byte) (v rune, ok bool) { + c := rune(b) + switch { + case '0' <= c && c <= '9': + return c - '0', true + case 'a' <= c && c <= 'f': + return c - 'a' + 10, true + case 'A' <= c && c <= 'F': + return c - 'A' + 10, true + } + return +} diff --git a/src/runtime/vendor/github.com/containerd/containerd/filters/scanner.go b/src/runtime/vendor/github.com/containerd/containerd/filters/scanner.go new file mode 100644 index 000000000..6a485467b --- /dev/null +++ b/src/runtime/vendor/github.com/containerd/containerd/filters/scanner.go @@ -0,0 +1,297 @@ +/* + Copyright The containerd Authors. + + 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. +*/ + +package filters + +import ( + "unicode" + "unicode/utf8" +) + +const ( + tokenEOF = -(iota + 1) + tokenQuoted + tokenValue + tokenField + tokenSeparator + tokenOperator + tokenIllegal +) + +type token rune + +func (t token) String() string { + switch t { + case tokenEOF: + return "EOF" + case tokenQuoted: + return "Quoted" + case tokenValue: + return "Value" + case tokenField: + return "Field" + case tokenSeparator: + return "Separator" + case tokenOperator: + return "Operator" + case tokenIllegal: + return "Illegal" + } + + return string(t) +} + +func (t token) GoString() string { + return "token" + t.String() +} + +type scanner struct { + input string + pos int + ppos int // bounds the current rune in the string + value bool + err string +} + +func (s *scanner) init(input string) { + s.input = input + s.pos = 0 + s.ppos = 0 +} + +func (s *scanner) next() rune { + if s.pos >= len(s.input) { + return tokenEOF + } + s.pos = s.ppos + + r, w := utf8.DecodeRuneInString(s.input[s.ppos:]) + s.ppos += w + if r == utf8.RuneError { + if w > 0 { + s.error("rune error") + return tokenIllegal + } + return tokenEOF + } + + if r == 0 { + s.error("unexpected null") + return tokenIllegal + } + + return r +} + +func (s *scanner) peek() rune { + pos := s.pos + ppos := s.ppos + ch := s.next() + s.pos = pos + s.ppos = ppos + return ch +} + +func (s *scanner) scan() (nextp int, tk token, text string) { + var ( + ch = s.next() + pos = s.pos + ) + +chomp: + switch { + case ch == tokenEOF: + case ch == tokenIllegal: + case isQuoteRune(ch): + if !s.scanQuoted(ch) { + return pos, tokenIllegal, s.input[pos:s.ppos] + } + return pos, tokenQuoted, s.input[pos:s.ppos] + case isSeparatorRune(ch): + s.value = false + return pos, tokenSeparator, s.input[pos:s.ppos] + case isOperatorRune(ch): + s.scanOperator() + s.value = true + return pos, tokenOperator, s.input[pos:s.ppos] + case unicode.IsSpace(ch): + // chomp + ch = s.next() + pos = s.pos + goto chomp + case s.value: + s.scanValue() + s.value = false + return pos, tokenValue, s.input[pos:s.ppos] + case isFieldRune(ch): + s.scanField() + return pos, tokenField, s.input[pos:s.ppos] + } + + return s.pos, token(ch), "" +} + +func (s *scanner) scanField() { + for { + ch := s.peek() + if !isFieldRune(ch) { + break + } + s.next() + } +} + +func (s *scanner) scanOperator() { + for { + ch := s.peek() + switch ch { + case '=', '!', '~': + s.next() + default: + return + } + } +} + +func (s *scanner) scanValue() { + for { + ch := s.peek() + if !isValueRune(ch) { + break + } + s.next() + } +} + +func (s *scanner) scanQuoted(quote rune) bool { + var illegal bool + ch := s.next() // read character after quote + for ch != quote { + if ch == '\n' || ch < 0 { + s.error("quoted literal not terminated") + return false + } + if ch == '\\' { + var legal bool + ch, legal = s.scanEscape(quote) + if !legal { + illegal = true + } + } else { + ch = s.next() + } + } + return !illegal +} + +func (s *scanner) scanEscape(quote rune) (ch rune, legal bool) { + ch = s.next() // read character after '/' + switch ch { + case 'a', 'b', 'f', 'n', 'r', 't', 'v', '\\', quote: + // nothing to do + ch = s.next() + legal = true + case '0', '1', '2', '3', '4', '5', '6', '7': + ch, legal = s.scanDigits(ch, 8, 3) + case 'x': + ch, legal = s.scanDigits(s.next(), 16, 2) + case 'u': + ch, legal = s.scanDigits(s.next(), 16, 4) + case 'U': + ch, legal = s.scanDigits(s.next(), 16, 8) + default: + s.error("illegal escape sequence") + } + return +} + +func (s *scanner) scanDigits(ch rune, base, n int) (rune, bool) { + for n > 0 && digitVal(ch) < base { + ch = s.next() + n-- + } + if n > 0 { + s.error("illegal numeric escape sequence") + return ch, false + } + return ch, true +} + +func (s *scanner) error(msg string) { + if s.err == "" { + s.err = msg + } +} + +func digitVal(ch rune) int { + switch { + case '0' <= ch && ch <= '9': + return int(ch - '0') + case 'a' <= ch && ch <= 'f': + return int(ch - 'a' + 10) + case 'A' <= ch && ch <= 'F': + return int(ch - 'A' + 10) + } + return 16 // larger than any legal digit val +} + +func isFieldRune(r rune) bool { + return (r == '_' || isAlphaRune(r) || isDigitRune(r)) +} + +func isAlphaRune(r rune) bool { + return r >= 'A' && r <= 'Z' || r >= 'a' && r <= 'z' +} + +func isDigitRune(r rune) bool { + return r >= '0' && r <= '9' +} + +func isOperatorRune(r rune) bool { + switch r { + case '=', '!', '~': + return true + } + + return false +} + +func isQuoteRune(r rune) bool { + switch r { + case '/', '|', '"': // maybe add single quoting? + return true + } + + return false +} + +func isSeparatorRune(r rune) bool { + switch r { + case ',', '.': + return true + } + + return false +} + +func isValueRune(r rune) bool { + return r != ',' && !unicode.IsSpace(r) && + (unicode.IsLetter(r) || + unicode.IsDigit(r) || + unicode.IsNumber(r) || + unicode.IsGraphic(r) || + unicode.IsPunct(r)) +} diff --git a/src/runtime/vendor/github.com/containerd/containerd/log/context.go b/src/runtime/vendor/github.com/containerd/containerd/log/context.go index 37b6a7d1c..0db9562b8 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/log/context.go +++ b/src/runtime/vendor/github.com/containerd/containerd/log/context.go @@ -52,7 +52,8 @@ const ( // WithLogger returns a new context with the provided logger. Use in // combination with logger.WithField(s) for great effect. func WithLogger(ctx context.Context, logger *logrus.Entry) context.Context { - return context.WithValue(ctx, loggerKey{}, logger) + e := logger.WithContext(ctx) + return context.WithValue(ctx, loggerKey{}, e) } // GetLogger retrieves the current logger from the context. If no logger is @@ -61,7 +62,7 @@ func GetLogger(ctx context.Context) *logrus.Entry { logger := ctx.Value(loggerKey{}) if logger == nil { - return L + return L.WithContext(ctx) } return logger.(*logrus.Entry) diff --git a/src/runtime/vendor/github.com/containerd/containerd/sys/mount_linux.go b/src/runtime/vendor/github.com/containerd/containerd/mount/fmountat_linux.go similarity index 96% rename from src/runtime/vendor/github.com/containerd/containerd/sys/mount_linux.go rename to src/runtime/vendor/github.com/containerd/containerd/mount/fmountat_linux.go index a21045529..705b95ede 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/sys/mount_linux.go +++ b/src/runtime/vendor/github.com/containerd/containerd/mount/fmountat_linux.go @@ -14,7 +14,7 @@ limitations under the License. */ -package sys +package mount import ( "runtime" @@ -26,8 +26,8 @@ import ( "golang.org/x/sys/unix" ) -// FMountat performs mount from the provided directory. -func FMountat(dirfd uintptr, source, target, fstype string, flags uintptr, data string) error { +// fMountat performs mount from the provided directory. +func fMountat(dirfd uintptr, source, target, fstype string, flags uintptr, data string) error { var ( sourceP, targetP, fstypeP, dataP *byte pid uintptr diff --git a/src/runtime/vendor/github.com/containerd/containerd/mount/lookup_unix.go b/src/runtime/vendor/github.com/containerd/containerd/mount/lookup_unix.go index a2d51ce58..7a4683e95 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/mount/lookup_unix.go +++ b/src/runtime/vendor/github.com/containerd/containerd/mount/lookup_unix.go @@ -1,3 +1,4 @@ +//go:build !windows // +build !windows /* diff --git a/src/runtime/vendor/github.com/containerd/containerd/mount/lookup_unsupported.go b/src/runtime/vendor/github.com/containerd/containerd/mount/lookup_unsupported.go index 46ec66a90..2e954b1ae 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/mount/lookup_unsupported.go +++ b/src/runtime/vendor/github.com/containerd/containerd/mount/lookup_unsupported.go @@ -1,3 +1,4 @@ +//go:build windows // +build windows /* diff --git a/src/runtime/vendor/github.com/containerd/containerd/mount/mount_freebsd.go b/src/runtime/vendor/github.com/containerd/containerd/mount/mount_freebsd.go index d52450013..c7c48568e 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/mount/mount_freebsd.go +++ b/src/runtime/vendor/github.com/containerd/containerd/mount/mount_freebsd.go @@ -1,5 +1,3 @@ -// +build freebsd - /* Copyright The containerd Authors. @@ -20,10 +18,10 @@ package mount import ( "os" - "os/exec" "time" "github.com/pkg/errors" + exec "golang.org/x/sys/execabs" "golang.org/x/sys/unix" ) diff --git a/src/runtime/vendor/github.com/containerd/containerd/mount/mount_linux.go b/src/runtime/vendor/github.com/containerd/containerd/mount/mount_linux.go index 3f05ebc89..42a53dbf6 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/mount/mount_linux.go +++ b/src/runtime/vendor/github.com/containerd/containerd/mount/mount_linux.go @@ -19,13 +19,12 @@ package mount import ( "fmt" "os" - "os/exec" "path" "strings" "time" - "github.com/containerd/containerd/sys" "github.com/pkg/errors" + exec "golang.org/x/sys/execabs" "golang.org/x/sys/unix" ) @@ -64,7 +63,7 @@ func (m *Mount) Mount(target string) (err error) { flags, data, losetup := parseMountOptions(options) if len(data) > pagesize { - return errors.Errorf("mount options is too long") + return errors.New("mount options is too long") } // propagation types. @@ -378,7 +377,7 @@ func mountAt(chdir string, source, target, fstype string, flags uintptr, data st if !fs.IsDir() { return errors.Wrap(errors.Errorf("%s is not dir", chdir), "failed to mountat") } - return errors.Wrap(sys.FMountat(f.Fd(), source, target, fstype, flags, data), "failed to mountat") + return errors.Wrap(fMountat(f.Fd(), source, target, fstype, flags, data), "failed to mountat") } func (m *Mount) mountWithHelper(helperBinary, typePrefix, target string) error { diff --git a/src/runtime/vendor/github.com/containerd/containerd/mount/mount_unix.go b/src/runtime/vendor/github.com/containerd/containerd/mount/mount_unix.go index ecf569d9c..0e5306073 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/mount/mount_unix.go +++ b/src/runtime/vendor/github.com/containerd/containerd/mount/mount_unix.go @@ -1,3 +1,4 @@ +//go:build darwin || openbsd // +build darwin openbsd /* diff --git a/src/runtime/vendor/github.com/containerd/containerd/mount/mount_windows.go b/src/runtime/vendor/github.com/containerd/containerd/mount/mount_windows.go index 5de25c4e0..57e589f03 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/mount/mount_windows.go +++ b/src/runtime/vendor/github.com/containerd/containerd/mount/mount_windows.go @@ -18,6 +18,7 @@ package mount import ( "encoding/json" + "os" "path/filepath" "strings" @@ -50,15 +51,21 @@ func (m *Mount) Mount(target string) error { if err = hcsshim.ActivateLayer(di, layerID); err != nil { return errors.Wrapf(err, "failed to activate layer %s", m.Source) } - defer func() { - if err != nil { - hcsshim.DeactivateLayer(di, layerID) - } - }() if err = hcsshim.PrepareLayer(di, layerID, parentLayerPaths); err != nil { return errors.Wrapf(err, "failed to prepare layer %s", m.Source) } + + // We can link the layer mount path to the given target. It is an UNC path, and it needs + // a trailing backslash. + mountPath, err := hcsshim.GetLayerMountPath(di, layerID) + if err != nil { + return errors.Wrapf(err, "failed to get layer mount path for %s", m.Source) + } + mountPath = mountPath + `\` + if err = os.Symlink(mountPath, target); err != nil { + return errors.Wrapf(err, "failed to link mount to taget %s", target) + } return nil } diff --git a/src/runtime/vendor/github.com/containerd/containerd/sys/subprocess_unsafe_linux.go b/src/runtime/vendor/github.com/containerd/containerd/mount/subprocess_unsafe_linux.go similarity index 98% rename from src/runtime/vendor/github.com/containerd/containerd/sys/subprocess_unsafe_linux.go rename to src/runtime/vendor/github.com/containerd/containerd/mount/subprocess_unsafe_linux.go index 6e40a9c7d..c7cb0c034 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/sys/subprocess_unsafe_linux.go +++ b/src/runtime/vendor/github.com/containerd/containerd/mount/subprocess_unsafe_linux.go @@ -14,7 +14,7 @@ limitations under the License. */ -package sys +package mount import ( _ "unsafe" // required for go:linkname. diff --git a/src/runtime/vendor/github.com/containerd/containerd/sys/subprocess_unsafe_linux.s b/src/runtime/vendor/github.com/containerd/containerd/mount/subprocess_unsafe_linux.s similarity index 100% rename from src/runtime/vendor/github.com/containerd/containerd/sys/subprocess_unsafe_linux.s rename to src/runtime/vendor/github.com/containerd/containerd/mount/subprocess_unsafe_linux.s diff --git a/src/runtime/vendor/github.com/containerd/containerd/mount/temp.go b/src/runtime/vendor/github.com/containerd/containerd/mount/temp.go index 9dc4010fe..e304d4c33 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/mount/temp.go +++ b/src/runtime/vendor/github.com/containerd/containerd/mount/temp.go @@ -18,7 +18,6 @@ package mount import ( "context" - "io/ioutil" "os" "github.com/containerd/containerd/log" @@ -31,7 +30,7 @@ var tempMountLocation = getTempDir() // The mounts are valid during the call to the f. // Finally we will unmount and remove the temp dir regardless of the result of f. func WithTempMount(ctx context.Context, mounts []Mount, f func(root string) error) (err error) { - root, uerr := ioutil.TempDir(tempMountLocation, "containerd-mount") + root, uerr := os.MkdirTemp(tempMountLocation, "containerd-mount") if uerr != nil { return errors.Wrapf(uerr, "failed to create temp dir") } @@ -44,7 +43,7 @@ func WithTempMount(ctx context.Context, mounts []Mount, f func(root string) erro // For details, please refer to #1868 #1785. defer func() { if uerr = os.Remove(root); uerr != nil { - log.G(ctx).WithError(uerr).WithField("dir", root).Errorf("failed to remove mount temp dir") + log.G(ctx).WithError(uerr).WithField("dir", root).Error("failed to remove mount temp dir") } }() diff --git a/src/runtime/vendor/github.com/containerd/containerd/mount/temp_unix.go b/src/runtime/vendor/github.com/containerd/containerd/mount/temp_unix.go index ed190b8f9..e96970081 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/mount/temp_unix.go +++ b/src/runtime/vendor/github.com/containerd/containerd/mount/temp_unix.go @@ -1,4 +1,5 @@ -// +build !windows +//go:build !windows && !darwin +// +build !windows,!darwin /* Copyright The containerd Authors. diff --git a/src/runtime/vendor/github.com/containerd/containerd/mount/temp_unsupported.go b/src/runtime/vendor/github.com/containerd/containerd/mount/temp_unsupported.go index 942be4128..feec90a76 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/mount/temp_unsupported.go +++ b/src/runtime/vendor/github.com/containerd/containerd/mount/temp_unsupported.go @@ -1,4 +1,5 @@ -// +build windows +//go:build windows || darwin +// +build windows darwin /* Copyright The containerd Authors. diff --git a/src/runtime/vendor/github.com/containerd/containerd/pkg/cri/annotations/annotations.go b/src/runtime/vendor/github.com/containerd/containerd/pkg/cri/annotations/annotations.go index 68a0f4837..181eb05c7 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/pkg/cri/annotations/annotations.go +++ b/src/runtime/vendor/github.com/containerd/containerd/pkg/cri/annotations/annotations.go @@ -32,6 +32,16 @@ const ( // SandboxID is the sandbox ID annotation SandboxID = "io.kubernetes.cri.sandbox-id" + // SandboxCPU annotations are based on the initial CPU configuration for the sandbox. This is calculated as the + // sum of container CPU resources, optionally provided by Kubelet (introduced in 1.23) as part of the PodSandboxConfig + SandboxCPUPeriod = "io.kubernetes.cri.sandbox-cpu-period" + SandboxCPUQuota = "io.kubernetes.cri.sandbox-cpu-quota" + SandboxCPUShares = "io.kubernetes.cri.sandbox-cpu-shares" + + // SandboxMemory is the initial amount of memory associated with this sandbox. This is calculated as the sum + // of container memory, optionally provided by Kubelet (introduced in 1.23) as part of the PodSandboxConfig. + SandboxMem = "io.kubernetes.cri.sandbox-memory" + // SandboxLogDir is the pod log directory annotation. // If the sandbox needs to generate any log, it will put it into this directory. // Kubelet will be responsible for: @@ -59,4 +69,7 @@ const ( // PodAnnotations are the annotations of the pod PodAnnotations = "io.kubernetes.cri.pod-annotations" + + // WindowsHostProcess is used by hcsshim to identify windows pods that are running HostProcesses + WindowsHostProcess = "microsoft.com/hostprocess-container" ) diff --git a/src/runtime/vendor/github.com/containerd/containerd/pkg/dialer/dialer_unix.go b/src/runtime/vendor/github.com/containerd/containerd/pkg/dialer/dialer_unix.go index e7d195833..b4304ffbf 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/pkg/dialer/dialer_unix.go +++ b/src/runtime/vendor/github.com/containerd/containerd/pkg/dialer/dialer_unix.go @@ -1,3 +1,4 @@ +//go:build !windows // +build !windows /* diff --git a/src/runtime/vendor/github.com/containerd/containerd/pkg/runtimeoptions/v1/doc.go b/src/runtime/vendor/github.com/containerd/containerd/pkg/runtimeoptions/v1/doc.go new file mode 100644 index 000000000..62525652f --- /dev/null +++ b/src/runtime/vendor/github.com/containerd/containerd/pkg/runtimeoptions/v1/doc.go @@ -0,0 +1,17 @@ +/* + Copyright The containerd Authors. + + 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. +*/ + +package runtimeoptions_v1 //nolint diff --git a/src/runtime/vendor/github.com/containerd/containerd/pkg/shutdown/shutdown.go b/src/runtime/vendor/github.com/containerd/containerd/pkg/shutdown/shutdown.go new file mode 100644 index 000000000..bc1af75ab --- /dev/null +++ b/src/runtime/vendor/github.com/containerd/containerd/pkg/shutdown/shutdown.go @@ -0,0 +1,109 @@ +/* + Copyright The containerd Authors. + + 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. +*/ + +package shutdown + +import ( + "context" + "errors" + "sync" + "time" + + "golang.org/x/sync/errgroup" +) + +// ErrShutdown is the error condition when a context has been fully shutdown +var ErrShutdown = errors.New("shutdown") + +// Service is used to facilitate shutdown by through callback +// registration and shutdown initiation +type Service interface { + // Shutdown initiates shutdown + Shutdown() + // RegisterCallback registers functions to be called on shutdown and before + // the shutdown channel is closed. A callback error will propagate to the + // context error + RegisterCallback(func(context.Context) error) +} + +// WithShutdown returns a context which is similar to a cancel context, but +// with callbacks which can propagate to the context error. Unlike a cancel +// context, the shutdown context cannot be canceled from the parent context. +// However, future child contexes will be canceled upon shutdown. +func WithShutdown(ctx context.Context) (context.Context, Service) { + ss := &shutdownService{ + Context: ctx, + doneC: make(chan struct{}), + timeout: 30 * time.Second, + } + return ss, ss +} + +type shutdownService struct { + context.Context + + mu sync.Mutex + isShutdown bool + callbacks []func(context.Context) error + doneC chan struct{} + err error + timeout time.Duration +} + +func (s *shutdownService) Shutdown() { + s.mu.Lock() + defer s.mu.Unlock() + if s.isShutdown { + return + } + s.isShutdown = true + + go func(callbacks []func(context.Context) error) { + ctx, cancel := context.WithTimeout(context.Background(), s.timeout) + defer cancel() + grp, ctx := errgroup.WithContext(ctx) + for i := range callbacks { + fn := callbacks[i] + grp.Go(func() error { return fn(ctx) }) + } + err := grp.Wait() + if err == nil { + err = ErrShutdown + } + s.mu.Lock() + s.err = err + close(s.doneC) + s.mu.Unlock() + }(s.callbacks) +} + +func (s *shutdownService) Done() <-chan struct{} { + return s.doneC +} + +func (s *shutdownService) Err() error { + s.mu.Lock() + defer s.mu.Unlock() + return s.err +} +func (s *shutdownService) RegisterCallback(fn func(context.Context) error) { + s.mu.Lock() + defer s.mu.Unlock() + if s.callbacks == nil { + s.callbacks = []func(context.Context) error{} + } + s.callbacks = append(s.callbacks, fn) +} diff --git a/src/runtime/vendor/github.com/containerd/containerd/pkg/userns/userns_unsupported.go b/src/runtime/vendor/github.com/containerd/containerd/pkg/userns/userns_unsupported.go index aab756fd2..4f8d7dd2d 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/pkg/userns/userns_unsupported.go +++ b/src/runtime/vendor/github.com/containerd/containerd/pkg/userns/userns_unsupported.go @@ -1,3 +1,4 @@ +//go:build !linux // +build !linux /* diff --git a/src/runtime/vendor/github.com/containerd/containerd/plugin/context.go b/src/runtime/vendor/github.com/containerd/containerd/plugin/context.go new file mode 100644 index 000000000..3ee43c3dd --- /dev/null +++ b/src/runtime/vendor/github.com/containerd/containerd/plugin/context.go @@ -0,0 +1,161 @@ +/* + Copyright The containerd Authors. + + 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. +*/ + +package plugin + +import ( + "context" + "path/filepath" + + "github.com/containerd/containerd/errdefs" + "github.com/containerd/containerd/events/exchange" + ocispec "github.com/opencontainers/image-spec/specs-go/v1" + "github.com/pkg/errors" +) + +// InitContext is used for plugin initialization +type InitContext struct { + Context context.Context + Root string + State string + Config interface{} + Address string + TTRPCAddress string + + // deprecated: will be removed in 2.0, use plugin.EventType + Events *exchange.Exchange + + Meta *Meta // plugins can fill in metadata at init. + + plugins *Set +} + +// NewContext returns a new plugin InitContext +func NewContext(ctx context.Context, r *Registration, plugins *Set, root, state string) *InitContext { + return &InitContext{ + Context: ctx, + Root: filepath.Join(root, r.URI()), + State: filepath.Join(state, r.URI()), + Meta: &Meta{ + Exports: map[string]string{}, + }, + plugins: plugins, + } +} + +// Get returns the first plugin by its type +func (i *InitContext) Get(t Type) (interface{}, error) { + return i.plugins.Get(t) +} + +// Meta contains information gathered from the registration and initialization +// process. +type Meta struct { + Platforms []ocispec.Platform // platforms supported by plugin + Exports map[string]string // values exported by plugin + Capabilities []string // feature switches for plugin +} + +// Plugin represents an initialized plugin, used with an init context. +type Plugin struct { + Registration *Registration // registration, as initialized + Config interface{} // config, as initialized + Meta *Meta + + instance interface{} + err error // will be set if there was an error initializing the plugin +} + +// Err returns the errors during initialization. +// returns nil if not error was encountered +func (p *Plugin) Err() error { + return p.err +} + +// Instance returns the instance and any initialization error of the plugin +func (p *Plugin) Instance() (interface{}, error) { + return p.instance, p.err +} + +// Set defines a plugin collection, used with InitContext. +// +// This maintains ordering and unique indexing over the set. +// +// After iteratively instantiating plugins, this set should represent, the +// ordered, initialization set of plugins for a containerd instance. +type Set struct { + ordered []*Plugin // order of initialization + byTypeAndID map[Type]map[string]*Plugin +} + +// NewPluginSet returns an initialized plugin set +func NewPluginSet() *Set { + return &Set{ + byTypeAndID: make(map[Type]map[string]*Plugin), + } +} + +// Add a plugin to the set +func (ps *Set) Add(p *Plugin) error { + if byID, typeok := ps.byTypeAndID[p.Registration.Type]; !typeok { + ps.byTypeAndID[p.Registration.Type] = map[string]*Plugin{ + p.Registration.ID: p, + } + } else if _, idok := byID[p.Registration.ID]; !idok { + byID[p.Registration.ID] = p + } else { + return errors.Wrapf(errdefs.ErrAlreadyExists, "plugin %v already initialized", p.Registration.URI()) + } + + ps.ordered = append(ps.ordered, p) + return nil +} + +// Get returns the first plugin by its type +func (ps *Set) Get(t Type) (interface{}, error) { + for _, v := range ps.byTypeAndID[t] { + return v.Instance() + } + return nil, errors.Wrapf(errdefs.ErrNotFound, "no plugins registered for %s", t) +} + +// GetAll plugins in the set +func (i *InitContext) GetAll() []*Plugin { + return i.plugins.ordered +} + +// GetByID returns the plugin of the given type and ID +func (i *InitContext) GetByID(t Type, id string) (interface{}, error) { + ps, err := i.GetByType(t) + if err != nil { + return nil, err + } + p, ok := ps[id] + if !ok { + return nil, errors.Wrapf(errdefs.ErrNotFound, "no %s plugins with id %s", t, id) + } + return p.Instance() +} + +// GetByType returns all plugins with the specific type. +func (i *InitContext) GetByType(t Type) (map[string]*Plugin, error) { + p, ok := i.plugins.byTypeAndID[t] + if !ok { + return nil, errors.Wrapf(errdefs.ErrNotFound, "no plugins registered for %s", t) + } + + return p, nil +} diff --git a/src/runtime/vendor/github.com/containerd/containerd/plugin/plugin.go b/src/runtime/vendor/github.com/containerd/containerd/plugin/plugin.go new file mode 100644 index 000000000..f24a3c77b --- /dev/null +++ b/src/runtime/vendor/github.com/containerd/containerd/plugin/plugin.go @@ -0,0 +1,224 @@ +/* + Copyright The containerd Authors. + + 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. +*/ + +package plugin + +import ( + "fmt" + "sync" + + "github.com/pkg/errors" +) + +var ( + // ErrNoType is returned when no type is specified + ErrNoType = errors.New("plugin: no type") + // ErrNoPluginID is returned when no id is specified + ErrNoPluginID = errors.New("plugin: no id") + // ErrIDRegistered is returned when a duplicate id is already registered + ErrIDRegistered = errors.New("plugin: id already registered") + // ErrSkipPlugin is used when a plugin is not initialized and should not be loaded, + // this allows the plugin loader differentiate between a plugin which is configured + // not to load and one that fails to load. + ErrSkipPlugin = errors.New("skip plugin") + + // ErrInvalidRequires will be thrown if the requirements for a plugin are + // defined in an invalid manner. + ErrInvalidRequires = errors.New("invalid requires") +) + +// IsSkipPlugin returns true if the error is skipping the plugin +func IsSkipPlugin(err error) bool { + return errors.Is(err, ErrSkipPlugin) +} + +// Type is the type of the plugin +type Type string + +func (t Type) String() string { return string(t) } + +const ( + // InternalPlugin implements an internal plugin to containerd + InternalPlugin Type = "io.containerd.internal.v1" + // RuntimePlugin implements a runtime + RuntimePlugin Type = "io.containerd.runtime.v1" + // RuntimePluginV2 implements a runtime v2 + RuntimePluginV2 Type = "io.containerd.runtime.v2" + // ServicePlugin implements a internal service + ServicePlugin Type = "io.containerd.service.v1" + // GRPCPlugin implements a grpc service + GRPCPlugin Type = "io.containerd.grpc.v1" + // TTRPCPlugin implements a ttrpc shim service + TTRPCPlugin Type = "io.containerd.ttrpc.v1" + // SnapshotPlugin implements a snapshotter + SnapshotPlugin Type = "io.containerd.snapshotter.v1" + // TaskMonitorPlugin implements a task monitor + TaskMonitorPlugin Type = "io.containerd.monitor.v1" + // DiffPlugin implements a differ + DiffPlugin Type = "io.containerd.differ.v1" + // MetadataPlugin implements a metadata store + MetadataPlugin Type = "io.containerd.metadata.v1" + // ContentPlugin implements a content store + ContentPlugin Type = "io.containerd.content.v1" + // GCPlugin implements garbage collection policy + GCPlugin Type = "io.containerd.gc.v1" + // EventPlugin implements event handling + EventPlugin Type = "io.containerd.event.v1" + // TracingProcessorPlugin implements a open telemetry span processor + TracingProcessorPlugin Type = "io.containerd.tracing.processor.v1" +) + +const ( + // RuntimeLinuxV1 is the legacy linux runtime + RuntimeLinuxV1 = "io.containerd.runtime.v1.linux" + // RuntimeRuncV1 is the runc runtime that supports a single container + RuntimeRuncV1 = "io.containerd.runc.v1" + // RuntimeRuncV2 is the runc runtime that supports multiple containers per shim + RuntimeRuncV2 = "io.containerd.runc.v2" +) + +// Registration contains information for registering a plugin +type Registration struct { + // Type of the plugin + Type Type + // ID of the plugin + ID string + // Config specific to the plugin + Config interface{} + // Requires is a list of plugins that the registered plugin requires to be available + Requires []Type + + // InitFn is called when initializing a plugin. The registration and + // context are passed in. The init function may modify the registration to + // add exports, capabilities and platform support declarations. + InitFn func(*InitContext) (interface{}, error) + // Disable the plugin from loading + Disable bool +} + +// Init the registered plugin +func (r *Registration) Init(ic *InitContext) *Plugin { + p, err := r.InitFn(ic) + return &Plugin{ + Registration: r, + Config: ic.Config, + Meta: ic.Meta, + instance: p, + err: err, + } +} + +// URI returns the full plugin URI +func (r *Registration) URI() string { + return fmt.Sprintf("%s.%s", r.Type, r.ID) +} + +var register = struct { + sync.RWMutex + r []*Registration +}{} + +// Load loads all plugins at the provided path into containerd +func Load(path string) (err error) { + defer func() { + if v := recover(); v != nil { + rerr, ok := v.(error) + if !ok { + rerr = fmt.Errorf("%s", v) + } + err = rerr + } + }() + return loadPlugins(path) +} + +// Register allows plugins to register +func Register(r *Registration) { + register.Lock() + defer register.Unlock() + + if r.Type == "" { + panic(ErrNoType) + } + if r.ID == "" { + panic(ErrNoPluginID) + } + if err := checkUnique(r); err != nil { + panic(err) + } + + for _, requires := range r.Requires { + if requires == "*" && len(r.Requires) != 1 { + panic(ErrInvalidRequires) + } + } + + register.r = append(register.r, r) +} + +func checkUnique(r *Registration) error { + for _, registered := range register.r { + if r.URI() == registered.URI() { + return errors.Wrap(ErrIDRegistered, r.URI()) + } + } + return nil +} + +// DisableFilter filters out disabled plugins +type DisableFilter func(r *Registration) bool + +// Graph returns an ordered list of registered plugins for initialization. +// Plugins in disableList specified by id will be disabled. +func Graph(filter DisableFilter) (ordered []*Registration) { + register.RLock() + defer register.RUnlock() + + for _, r := range register.r { + if filter(r) { + r.Disable = true + } + } + + added := map[*Registration]bool{} + for _, r := range register.r { + if r.Disable { + continue + } + children(r, added, &ordered) + if !added[r] { + ordered = append(ordered, r) + added[r] = true + } + } + return ordered +} + +func children(reg *Registration, added map[*Registration]bool, ordered *[]*Registration) { + for _, t := range reg.Requires { + for _, r := range register.r { + if !r.Disable && + r.URI() != reg.URI() && + (t == "*" || r.Type == t) { + children(r, added, ordered) + if !added[r] { + *ordered = append(*ordered, r) + added[r] = true + } + } + } + } +} diff --git a/src/runtime/vendor/github.com/containerd/containerd/plugin/plugin_go18.go b/src/runtime/vendor/github.com/containerd/containerd/plugin/plugin_go18.go new file mode 100644 index 000000000..0df0669d2 --- /dev/null +++ b/src/runtime/vendor/github.com/containerd/containerd/plugin/plugin_go18.go @@ -0,0 +1,63 @@ +//go:build go1.8 && !windows && amd64 && !static_build && !gccgo +// +build go1.8,!windows,amd64,!static_build,!gccgo + +/* + Copyright The containerd Authors. + + 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. +*/ + +package plugin + +import ( + "fmt" + "path/filepath" + "plugin" + "runtime" +) + +// loadPlugins loads all plugins for the OS and Arch +// that containerd is built for inside the provided path +func loadPlugins(path string) error { + abs, err := filepath.Abs(path) + if err != nil { + return err + } + pattern := filepath.Join(abs, fmt.Sprintf( + "*-%s-%s.%s", + runtime.GOOS, + runtime.GOARCH, + getLibExt(), + )) + libs, err := filepath.Glob(pattern) + if err != nil { + return err + } + for _, lib := range libs { + if _, err := plugin.Open(lib); err != nil { + return err + } + } + return nil +} + +// getLibExt returns a platform specific lib extension for +// the platform that containerd is running on +func getLibExt() string { + switch runtime.GOOS { + case "windows": + return "dll" + default: + return "so" + } +} diff --git a/src/runtime/vendor/github.com/containerd/containerd/plugin/plugin_other.go b/src/runtime/vendor/github.com/containerd/containerd/plugin/plugin_other.go new file mode 100644 index 000000000..a2883bbba --- /dev/null +++ b/src/runtime/vendor/github.com/containerd/containerd/plugin/plugin_other.go @@ -0,0 +1,25 @@ +//go:build !go1.8 || windows || !amd64 || static_build || gccgo +// +build !go1.8 windows !amd64 static_build gccgo + +/* + Copyright The containerd Authors. + + 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. +*/ + +package plugin + +func loadPlugins(path string) error { + // plugins not supported until 1.8 + return nil +} diff --git a/src/runtime/vendor/github.com/containerd/containerd/runtime/monitor.go b/src/runtime/vendor/github.com/containerd/containerd/runtime/monitor.go index eb07ebdb4..df5cf7f1a 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/runtime/monitor.go +++ b/src/runtime/vendor/github.com/containerd/containerd/runtime/monitor.go @@ -18,10 +18,11 @@ package runtime // TaskMonitor provides an interface for monitoring of containers within containerd type TaskMonitor interface { - // Monitor adds the provided container to the monitor - Monitor(Task) error + // Monitor adds the provided container to the monitor. + // Labels are optional (can be nil) key value pairs to be added to the metrics namespace. + Monitor(task Task, labels map[string]string) error // Stop stops and removes the provided container from the monitor - Stop(Task) error + Stop(task Task) error } // NewMultiTaskMonitor returns a new TaskMonitor broadcasting to the provided monitors @@ -39,7 +40,7 @@ func NewNoopMonitor() TaskMonitor { type noopTaskMonitor struct { } -func (mm *noopTaskMonitor) Monitor(c Task) error { +func (mm *noopTaskMonitor) Monitor(c Task, labels map[string]string) error { return nil } @@ -51,9 +52,9 @@ type multiTaskMonitor struct { monitors []TaskMonitor } -func (mm *multiTaskMonitor) Monitor(c Task) error { +func (mm *multiTaskMonitor) Monitor(task Task, labels map[string]string) error { for _, m := range mm.monitors { - if err := m.Monitor(c); err != nil { + if err := m.Monitor(task, labels); err != nil { return err } } diff --git a/src/runtime/vendor/github.com/containerd/containerd/runtime/runtime.go b/src/runtime/vendor/github.com/containerd/containerd/runtime/runtime.go index 3d758fb97..84aaa8ac6 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/runtime/runtime.go +++ b/src/runtime/vendor/github.com/containerd/containerd/runtime/runtime.go @@ -46,7 +46,8 @@ type CreateOpts struct { RuntimeOptions *types.Any // TaskOptions received for the task TaskOptions *types.Any - // Runtime to use + // Runtime name to use (e.g. `io.containerd.NAME.VERSION`). + // As an alternative full abs path to binary may be specified instead. Runtime string } @@ -69,8 +70,6 @@ type PlatformRuntime interface { // Tasks returns all the current tasks for the runtime. // Any container runs at most one task at a time. Tasks(ctx context.Context, all bool) ([]Task, error) - // Add adds a task into runtime. - Add(ctx context.Context, task Task) error // Delete remove a task. - Delete(ctx context.Context, taskID string) + Delete(ctx context.Context, taskID string) (*Exit, error) } diff --git a/src/runtime/vendor/github.com/containerd/containerd/runtime/task.go b/src/runtime/vendor/github.com/containerd/containerd/runtime/task.go index c9876ed4a..e453fa3a9 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/runtime/task.go +++ b/src/runtime/vendor/github.com/containerd/containerd/runtime/task.go @@ -47,6 +47,14 @@ type Process interface { Start(ctx context.Context) error // Wait for the process to exit Wait(ctx context.Context) (*Exit, error) +} + +// ExecProcess is a process spawned in container via Task.Exec call. +// The only difference from a regular `Process` is that exec process can delete self, +// while task process requires slightly more complex logic and needs to be deleted through the task manager. +type ExecProcess interface { + Process + // Delete deletes the process Delete(ctx context.Context) (*Exit, error) } @@ -56,7 +64,7 @@ type Task interface { Process // PID of the process - PID() uint32 + PID(ctx context.Context) (uint32, error) // Namespace that the task exists in Namespace() string // Pause pauses the container process @@ -64,7 +72,7 @@ type Task interface { // Resume unpauses the container process Resume(ctx context.Context) error // Exec adds a process into the container - Exec(ctx context.Context, id string, opts ExecOpts) (Process, error) + Exec(ctx context.Context, id string, opts ExecOpts) (ExecProcess, error) // Pids returns all pids Pids(ctx context.Context) ([]ProcessInfo, error) // Checkpoint checkpoints a container to an image with live system data @@ -72,7 +80,7 @@ type Task interface { // Update sets the provided resources to a running task Update(ctx context.Context, resources *types.Any, annotations map[string]string) error // Process returns a process within the task for the provided id - Process(ctx context.Context, id string) (Process, error) + Process(ctx context.Context, id string) (ExecProcess, error) // Stats returns runtime specific metrics for a task Stats(ctx context.Context) (*types.Any, error) } diff --git a/src/runtime/vendor/github.com/containerd/containerd/runtime/task_list.go b/src/runtime/vendor/github.com/containerd/containerd/runtime/task_list.go index b92c6e01c..5b969e5a5 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/runtime/task_list.go +++ b/src/runtime/vendor/github.com/containerd/containerd/runtime/task_list.go @@ -128,3 +128,16 @@ func (l *TaskList) Delete(ctx context.Context, id string) { delete(tasks, id) } } + +func (l *TaskList) IsEmpty() bool { + l.mu.Lock() + defer l.mu.Unlock() + + for ns := range l.tasks { + if len(l.tasks[ns]) > 0 { + return false + } + } + + return true +} diff --git a/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/shim.go b/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/shim.go index c14aacca9..e25626cf3 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/shim.go +++ b/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/shim.go @@ -30,6 +30,8 @@ import ( "github.com/containerd/containerd/events" "github.com/containerd/containerd/log" "github.com/containerd/containerd/namespaces" + "github.com/containerd/containerd/pkg/shutdown" + "github.com/containerd/containerd/plugin" shimapi "github.com/containerd/containerd/runtime/v2/task" "github.com/containerd/containerd/version" "github.com/containerd/ttrpc" @@ -38,13 +40,6 @@ import ( "github.com/sirupsen/logrus" ) -// Client for a shim server -type Client struct { - service shimapi.TaskService - context context.Context - signals chan os.Signal -} - // Publisher for events type Publisher interface { events.Publisher @@ -53,22 +48,37 @@ type Publisher interface { // StartOpts describes shim start configuration received from containerd type StartOpts struct { - ID string + ID string // TODO(2.0): Remove ID, passed directly to start for call symmetry ContainerdBinary string Address string TTRPCAddress string } +type StopStatus struct { + Pid int + ExitStatus int + ExitedAt time.Time +} + // Init func for the creation of a shim server +// TODO(2.0): Remove init function type Init func(context.Context, string, Publisher, func()) (Shim, error) // Shim server interface +// TODO(2.0): Remove unified shim interface type Shim interface { shimapi.TaskService Cleanup(ctx context.Context) (*shimapi.DeleteResponse, error) StartShim(ctx context.Context, opts StartOpts) (string, error) } +// Manager is the interface which manages the shim process +type Manager interface { + Name() string + Start(ctx context.Context, id string, opts StartOpts) (string, error) + Stop(ctx context.Context, id string) (StopStatus, error) +} + // OptsKey is the context key for the Opts value. type OptsKey struct{} @@ -91,10 +101,23 @@ type Config struct { NoSetupLogger bool } +type ttrpcService interface { + RegisterTTRPC(*ttrpc.Server) error +} + +type taskService struct { + shimapi.TaskService +} + +func (t taskService) RegisterTTRPC(server *ttrpc.Server) error { + shimapi.RegisterTaskService(server, t.TaskService) + return nil +} + var ( debugFlag bool versionFlag bool - idFlag string + id string namespaceFlag string socketFlag string bundlePath string @@ -111,7 +134,7 @@ func parseFlags() { flag.BoolVar(&debugFlag, "debug", false, "enable debug output in logs") flag.BoolVar(&versionFlag, "v", false, "show the shim version and exit") flag.StringVar(&namespaceFlag, "namespace", "", "namespace that owns the shim") - flag.StringVar(&idFlag, "id", "", "id of the task") + flag.StringVar(&id, "id", "", "id of the task") flag.StringVar(&socketFlag, "socket", "", "socket path to serve") flag.StringVar(&bundlePath, "bundle", "", "path to the bundle if not workdir") @@ -136,35 +159,85 @@ func setRuntime() { } } -func setLogger(ctx context.Context, id string) error { - logrus.SetFormatter(&logrus.TextFormatter{ +func setLogger(ctx context.Context, id string) (context.Context, error) { + l := log.G(ctx) + l.Logger.SetFormatter(&logrus.TextFormatter{ TimestampFormat: log.RFC3339NanoFixed, FullTimestamp: true, }) if debugFlag { - logrus.SetLevel(logrus.DebugLevel) + l.Logger.SetLevel(logrus.DebugLevel) } f, err := openLog(ctx, id) if err != nil { - return err + return ctx, err } - logrus.SetOutput(f) - return nil + l.Logger.SetOutput(f) + return log.WithLogger(ctx, l), nil } // Run initializes and runs a shim server -func Run(id string, initFunc Init, opts ...BinaryOpts) { +// TODO(2.0): Remove function +func Run(name string, initFunc Init, opts ...BinaryOpts) { var config Config for _, o := range opts { o(&config) } - if err := run(id, initFunc, config); err != nil { - fmt.Fprintf(os.Stderr, "%s: %s\n", id, err) + + ctx := context.Background() + ctx = log.WithLogger(ctx, log.G(ctx).WithField("runtime", name)) + + if err := run(ctx, nil, initFunc, name, config); err != nil { + fmt.Fprintf(os.Stderr, "%s: %s", name, err) os.Exit(1) } } -func run(id string, initFunc Init, config Config) error { +// TODO(2.0): Remove this type +type shimToManager struct { + shim Shim + name string +} + +func (stm shimToManager) Name() string { + return stm.name +} + +func (stm shimToManager) Start(ctx context.Context, id string, opts StartOpts) (string, error) { + opts.ID = id + return stm.shim.StartShim(ctx, opts) +} + +func (stm shimToManager) Stop(ctx context.Context, id string) (StopStatus, error) { + // shim must already have id + dr, err := stm.shim.Cleanup(ctx) + if err != nil { + return StopStatus{}, err + } + return StopStatus{ + Pid: int(dr.Pid), + ExitStatus: int(dr.ExitStatus), + ExitedAt: dr.ExitedAt, + }, nil +} + +// RunManager initialzes and runs a shim server +// TODO(2.0): Rename to Run +func RunManager(ctx context.Context, manager Manager, opts ...BinaryOpts) { + var config Config + for _, o := range opts { + o(&config) + } + + ctx = log.WithLogger(ctx, log.G(ctx).WithField("runtime", manager.Name())) + + if err := run(ctx, manager, nil, "", config); err != nil { + fmt.Fprintf(os.Stderr, "%s: %s", manager.Name(), err) + os.Exit(1) + } +} + +func run(ctx context.Context, manager Manager, initFunc Init, name string, config Config) error { parseFlags() if versionFlag { fmt.Printf("%s:\n", os.Args[0]) @@ -199,27 +272,49 @@ func run(id string, initFunc Init, config Config) error { } defer publisher.Close() - ctx := namespaces.WithNamespace(context.Background(), namespaceFlag) + ctx = namespaces.WithNamespace(ctx, namespaceFlag) ctx = context.WithValue(ctx, OptsKey{}, Opts{BundlePath: bundlePath, Debug: debugFlag}) - ctx = log.WithLogger(ctx, log.G(ctx).WithField("runtime", id)) - ctx, cancel := context.WithCancel(ctx) - service, err := initFunc(ctx, idFlag, publisher, cancel) - if err != nil { - return err + ctx, sd := shutdown.WithShutdown(ctx) + defer sd.Shutdown() + + if manager == nil { + service, err := initFunc(ctx, id, publisher, sd.Shutdown) + if err != nil { + return err + } + plugin.Register(&plugin.Registration{ + Type: plugin.TTRPCPlugin, + ID: "task", + Requires: []plugin.Type{ + plugin.EventPlugin, + }, + InitFn: func(ic *plugin.InitContext) (interface{}, error) { + return taskService{service}, nil + }, + }) + manager = shimToManager{ + shim: service, + name: name, + } } + // Handle explicit actions switch action { case "delete": - logger := logrus.WithFields(logrus.Fields{ + logger := log.G(ctx).WithFields(logrus.Fields{ "pid": os.Getpid(), "namespace": namespaceFlag, }) go handleSignals(ctx, logger, signals) - response, err := service.Cleanup(ctx) + ss, err := manager.Stop(ctx, id) if err != nil { return err } - data, err := proto.Marshal(response) + data, err := proto.Marshal(&shimapi.DeleteResponse{ + Pid: uint32(ss.Pid), + ExitStatus: uint32(ss.ExitStatus), + ExitedAt: ss.ExitedAt, + }) if err != nil { return err } @@ -229,12 +324,12 @@ func run(id string, initFunc Init, config Config) error { return nil case "start": opts := StartOpts{ - ID: idFlag, ContainerdBinary: containerdBinaryFlag, Address: addressFlag, TTRPCAddress: ttrpcAddress, } - address, err := service.StartShim(ctx, opts) + + address, err := manager.Start(ctx, id, opts) if err != nil { return err } @@ -242,46 +337,120 @@ func run(id string, initFunc Init, config Config) error { return err } return nil - default: - if !config.NoSetupLogger { - if err := setLogger(ctx, idFlag); err != nil { - return err - } + } + + if !config.NoSetupLogger { + ctx, err = setLogger(ctx, id) + if err != nil { + return err } - client := NewShimClient(ctx, service, signals) - if err := client.Serve(); err != nil { - if err != context.Canceled { - return err - } + } + + plugin.Register(&plugin.Registration{ + Type: plugin.InternalPlugin, + ID: "shutdown", + InitFn: func(ic *plugin.InitContext) (interface{}, error) { + return sd, nil + }, + }) + + // Register event plugin + plugin.Register(&plugin.Registration{ + Type: plugin.EventPlugin, + ID: "publisher", + InitFn: func(ic *plugin.InitContext) (interface{}, error) { + return publisher, nil + }, + }) + + var ( + initialized = plugin.NewPluginSet() + ttrpcServices = []ttrpcService{} + ) + plugins := plugin.Graph(func(*plugin.Registration) bool { return false }) + for _, p := range plugins { + id := p.URI() + log.G(ctx).WithField("type", p.Type).Infof("loading plugin %q...", id) + + initContext := plugin.NewContext( + ctx, + p, + initialized, + // NOTE: Root is empty since the shim does not support persistent storage, + // shim plugins should make use state directory for writing files to disk. + // The state directory will be destroyed when the shim if cleaned up or + // on reboot + "", + bundlePath, + ) + initContext.Address = addressFlag + initContext.TTRPCAddress = ttrpcAddress + + // load the plugin specific configuration if it is provided + //TODO: Read configuration passed into shim, or from state directory? + //if p.Config != nil { + // pc, err := config.Decode(p) + // if err != nil { + // return nil, err + // } + // initContext.Config = pc + //} + + result := p.Init(initContext) + if err := initialized.Add(result); err != nil { + return errors.Wrapf(err, "could not add plugin result to plugin set") } - // NOTE: If the shim server is down(like oom killer), the address - // socket might be leaking. - if address, err := ReadAddress("address"); err == nil { - _ = RemoveSocket(address) + instance, err := result.Instance() + if err != nil { + if plugin.IsSkipPlugin(err) { + log.G(ctx).WithError(err).WithField("type", p.Type).Infof("skip loading plugin %q...", id) + } else { + log.G(ctx).WithError(err).Warnf("failed to load plugin %s", id) + } + continue } - select { - case <-publisher.Done(): - return nil - case <-time.After(5 * time.Second): - return errors.New("publisher not closed") + if src, ok := instance.(ttrpcService); ok { + logrus.WithField("id", id).Debug("registering ttrpc service") + ttrpcServices = append(ttrpcServices, src) } } + + server, err := newServer() + if err != nil { + return errors.Wrap(err, "failed creating server") + } + + for _, srv := range ttrpcServices { + if err := srv.RegisterTTRPC(server); err != nil { + return errors.Wrap(err, "failed to register service") + } + } + + if err := serve(ctx, server, signals); err != nil { + if err != shutdown.ErrShutdown { + return err + } + } + + // NOTE: If the shim server is down(like oom killer), the address + // socket might be leaking. + if address, err := ReadAddress("address"); err == nil { + _ = RemoveSocket(address) + } + + select { + case <-publisher.Done(): + return nil + case <-time.After(5 * time.Second): + return errors.New("publisher not closed") + } } -// NewShimClient creates a new shim server client -func NewShimClient(ctx context.Context, svc shimapi.TaskService, signals chan os.Signal) *Client { - s := &Client{ - service: svc, - context: ctx, - signals: signals, - } - return s -} - -// Serve the shim server -func (s *Client) Serve() error { +// serve serves the ttrpc API over a unix socket in the current working directory +// and blocks until the context is canceled +func serve(ctx context.Context, server *ttrpc.Server, signals chan os.Signal) error { dump := make(chan os.Signal, 32) setupDumpStacks(dump) @@ -289,18 +458,19 @@ func (s *Client) Serve() error { if err != nil { return err } - server, err := newServer() + + l, err := serveListener(socketFlag) if err != nil { - return errors.Wrap(err, "failed creating server") - } - - logrus.Debug("registering ttrpc server") - shimapi.RegisterTaskService(server, s.service) - - if err := serve(s.context, server, socketFlag); err != nil { return err } - logger := logrus.WithFields(logrus.Fields{ + go func() { + defer l.Close() + if err := server.Serve(ctx, l); err != nil && + !strings.Contains(err.Error(), "use of closed network connection") { + log.G(ctx).WithError(err).Fatal("containerd-shim: ttrpc server failure") + } + }() + logger := log.G(ctx).WithFields(logrus.Fields{ "pid": os.Getpid(), "path": path, "namespace": namespaceFlag, @@ -310,24 +480,7 @@ func (s *Client) Serve() error { dumpStacks(logger) } }() - return handleSignals(s.context, logger, s.signals) -} - -// serve serves the ttrpc API over a unix socket at the provided path -// this function does not block -func serve(ctx context.Context, server *ttrpc.Server, path string) error { - l, err := serveListener(path) - if err != nil { - return err - } - go func() { - defer l.Close() - if err := server.Serve(ctx, l); err != nil && - !strings.Contains(err.Error(), "use of closed network connection") { - logrus.WithError(err).Fatal("containerd-shim: ttrpc server failure") - } - }() - return nil + return handleSignals(ctx, logger, signals) } func dumpStacks(logger *logrus.Entry) { diff --git a/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/shim_darwin.go b/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/shim_darwin.go index 314b45cb5..fe833df01 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/shim_darwin.go +++ b/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/shim_darwin.go @@ -1,5 +1,3 @@ -// +build darwin - /* Copyright The containerd Authors. diff --git a/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/shim_freebsd.go b/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/shim_freebsd.go index 4bc636280..fe833df01 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/shim_freebsd.go +++ b/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/shim_freebsd.go @@ -1,5 +1,3 @@ -// +build freebsd - /* Copyright The containerd Authors. diff --git a/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/shim_unix.go b/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/shim_unix.go index a61b64208..cbab4f929 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/shim_unix.go +++ b/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/shim_unix.go @@ -1,3 +1,4 @@ +//go:build !windows // +build !windows /* diff --git a/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/shim_windows.go b/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/shim_windows.go index 7339eb2a2..1ce56d29f 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/shim_windows.go +++ b/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/shim_windows.go @@ -1,5 +1,3 @@ -// +build windows - /* Copyright The containerd Authors. diff --git a/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/util.go b/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/util.go index 52bfaa9ce..0db7df5f5 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/util.go +++ b/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/util.go @@ -20,25 +20,31 @@ import ( "bytes" "context" "fmt" - "io/ioutil" "net" "os" - "os/exec" "path/filepath" "strings" - "sync" "time" "github.com/containerd/containerd/namespaces" "github.com/gogo/protobuf/proto" "github.com/gogo/protobuf/types" "github.com/pkg/errors" + exec "golang.org/x/sys/execabs" ) -var runtimePaths sync.Map +type CommandConfig struct { + Runtime string + Address string + TTRPCAddress string + Path string + SchedCore bool + Args []string + Opts *types.Any +} // Command returns the shim command with the provided args and configuration -func Command(ctx context.Context, runtime, containerdAddress, containerdTTRPCAddress, path string, opts *types.Any, cmdArgs ...string) (*exec.Cmd, error) { +func Command(ctx context.Context, config *CommandConfig) (*exec.Cmd, error) { ns, err := namespaces.NamespaceRequired(ctx) if err != nil { return nil, err @@ -49,67 +55,23 @@ func Command(ctx context.Context, runtime, containerdAddress, containerdTTRPCAdd } args := []string{ "-namespace", ns, - "-address", containerdAddress, + "-address", config.Address, "-publish-binary", self, } - args = append(args, cmdArgs...) - name := BinaryName(runtime) - if name == "" { - return nil, fmt.Errorf("invalid runtime name %s, correct runtime name should format like io.containerd.runc.v1", runtime) - } - - var cmdPath string - cmdPathI, cmdPathFound := runtimePaths.Load(name) - if cmdPathFound { - cmdPath = cmdPathI.(string) - } else { - var lerr error - binaryPath := BinaryPath(runtime) - if _, serr := os.Stat(binaryPath); serr == nil { - cmdPath = binaryPath - } - - if cmdPath == "" { - if cmdPath, lerr = exec.LookPath(name); lerr != nil { - if eerr, ok := lerr.(*exec.Error); ok { - if eerr.Err == exec.ErrNotFound { - // LookPath only finds current directory matches based on - // the callers current directory but the caller is not - // likely in the same directory as the containerd - // executables. Instead match the calling binaries path - // (containerd) and see if they are side by side. If so - // execute the shim found there. - testPath := filepath.Join(filepath.Dir(self), name) - if _, serr := os.Stat(testPath); serr == nil { - cmdPath = testPath - } - if cmdPath == "" { - return nil, errors.Wrapf(os.ErrNotExist, "runtime %q binary not installed %q", runtime, name) - } - } - } - } - } - cmdPath, err = filepath.Abs(cmdPath) - if err != nil { - return nil, err - } - if cmdPathI, cmdPathFound = runtimePaths.LoadOrStore(name, cmdPath); cmdPathFound { - // We didn't store cmdPath we loaded an already cached value. Use it. - cmdPath = cmdPathI.(string) - } - } - - cmd := exec.Command(cmdPath, args...) - cmd.Dir = path + args = append(args, config.Args...) + cmd := exec.CommandContext(ctx, config.Runtime, args...) + cmd.Dir = config.Path cmd.Env = append( os.Environ(), "GOMAXPROCS=2", - fmt.Sprintf("%s=%s", ttrpcAddressEnv, containerdTTRPCAddress), + fmt.Sprintf("%s=%s", ttrpcAddressEnv, config.TTRPCAddress), ) + if config.SchedCore { + cmd.Env = append(cmd.Env, "SCHED_CORE=1") + } cmd.SysProcAttr = getSysProcAttr() - if opts != nil { - d, err := proto.Marshal(opts) + if config.Opts != nil { + d, err := proto.Marshal(config.Opts) if err != nil { return nil, err } @@ -196,7 +158,7 @@ func ReadAddress(path string) (string, error) { if err != nil { return "", err } - data, err := ioutil.ReadFile(path) + data, err := os.ReadFile(path) if err != nil { return "", err } diff --git a/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/util_unix.go b/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/util_unix.go index f956b0986..cc33d300d 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/util_unix.go +++ b/src/runtime/vendor/github.com/containerd/containerd/runtime/v2/shim/util_unix.go @@ -1,3 +1,4 @@ +//go:build !windows // +build !windows /* @@ -29,8 +30,8 @@ import ( "syscall" "time" + "github.com/containerd/containerd/defaults" "github.com/containerd/containerd/namespaces" - "github.com/containerd/containerd/pkg/dialer" "github.com/containerd/containerd/sys" "github.com/pkg/errors" ) @@ -62,7 +63,7 @@ func AdjustOOMScore(pid int) error { return nil } -const socketRoot = "/run/containerd" +const socketRoot = defaults.DefaultStateDir // SocketAddress returns a socket address func SocketAddress(ctx context.Context, socketPath, id string) (string, error) { @@ -76,7 +77,7 @@ func SocketAddress(ctx context.Context, socketPath, id string) (string, error) { // AnonDialer returns a dialer for a socket func AnonDialer(address string, timeout time.Duration) (net.Conn, error) { - return dialer.Dialer(socket(address).path(), timeout) + return net.DialTimeout("unix", socket(address).path(), timeout) } // AnonReconnectDialer returns a dialer for an existing socket on reconnection @@ -90,7 +91,10 @@ func NewSocket(address string) (*net.UnixListener, error) { sock = socket(address) path = sock.path() ) - if !sock.isAbstract() { + + isAbstract := sock.isAbstract() + + if !isAbstract { if err := os.MkdirAll(filepath.Dir(path), 0600); err != nil { return nil, errors.Wrapf(err, "%s", path) } @@ -99,10 +103,13 @@ func NewSocket(address string) (*net.UnixListener, error) { if err != nil { return nil, err } - if err := os.Chmod(path, 0600); err != nil { - os.Remove(sock.path()) - l.Close() - return nil, err + + if !isAbstract { + if err := os.Chmod(path, 0600); err != nil { + os.Remove(sock.path()) + l.Close() + return nil, err + } } return l.(*net.UnixListener), nil } diff --git a/src/runtime/vendor/github.com/containerd/containerd/sys/epoll.go b/src/runtime/vendor/github.com/containerd/containerd/sys/epoll.go index 28d6c2cab..73a57013f 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/sys/epoll.go +++ b/src/runtime/vendor/github.com/containerd/containerd/sys/epoll.go @@ -1,3 +1,4 @@ +//go:build linux // +build linux /* diff --git a/src/runtime/vendor/github.com/containerd/containerd/sys/fds.go b/src/runtime/vendor/github.com/containerd/containerd/sys/fds.go index db3cf702f..a71a9cd7e 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/sys/fds.go +++ b/src/runtime/vendor/github.com/containerd/containerd/sys/fds.go @@ -1,3 +1,4 @@ +//go:build !windows && !darwin // +build !windows,!darwin /* @@ -19,14 +20,14 @@ package sys import ( - "io/ioutil" + "os" "path/filepath" "strconv" ) // GetOpenFds returns the number of open fds for the process provided by pid func GetOpenFds(pid int) (int, error) { - dirs, err := ioutil.ReadDir(filepath.Join("/proc", strconv.Itoa(pid), "fd")) + dirs, err := os.ReadDir(filepath.Join("/proc", strconv.Itoa(pid), "fd")) if err != nil { return -1, err } diff --git a/src/runtime/vendor/github.com/containerd/containerd/sys/filesys_unix.go b/src/runtime/vendor/github.com/containerd/containerd/sys/filesys_unix.go index d8329af9f..805a7a736 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/sys/filesys_unix.go +++ b/src/runtime/vendor/github.com/containerd/containerd/sys/filesys_unix.go @@ -1,3 +1,4 @@ +//go:build !windows // +build !windows /* diff --git a/src/runtime/vendor/github.com/containerd/containerd/sys/filesys_windows.go b/src/runtime/vendor/github.com/containerd/containerd/sys/filesys_windows.go index a9198ef39..1c3cc40ac 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/sys/filesys_windows.go +++ b/src/runtime/vendor/github.com/containerd/containerd/sys/filesys_windows.go @@ -1,5 +1,3 @@ -// +build windows - /* Copyright The containerd Authors. @@ -280,12 +278,22 @@ func ForceRemoveAll(path string) error { func cleanupWCOWLayers(root string) error { // See snapshots/windows/windows.go getSnapshotDir() var layerNums []int + var rmLayerNums []int if err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error { if path != root && info.IsDir() { - if layerNum, err := strconv.Atoi(filepath.Base(path)); err == nil { - layerNums = append(layerNums, layerNum) + name := filepath.Base(path) + if strings.HasPrefix(name, "rm-") { + layerNum, err := strconv.Atoi(strings.TrimPrefix(name, "rm-")) + if err != nil { + return err + } + rmLayerNums = append(rmLayerNums, layerNum) } else { - return err + layerNum, err := strconv.Atoi(name) + if err != nil { + return err + } + layerNums = append(layerNums, layerNum) } return filepath.SkipDir } @@ -295,8 +303,14 @@ func cleanupWCOWLayers(root string) error { return err } - sort.Sort(sort.Reverse(sort.IntSlice(layerNums))) + sort.Sort(sort.Reverse(sort.IntSlice(rmLayerNums))) + for _, rmLayerNum := range rmLayerNums { + if err := cleanupWCOWLayer(filepath.Join(root, "rm-"+strconv.Itoa(rmLayerNum))); err != nil { + return err + } + } + sort.Sort(sort.Reverse(sort.IntSlice(layerNums))) for _, layerNum := range layerNums { if err := cleanupWCOWLayer(filepath.Join(root, strconv.Itoa(layerNum))); err != nil { return err @@ -311,9 +325,10 @@ func cleanupWCOWLayer(layerPath string) error { HomeDir: filepath.Dir(layerPath), } - // ERROR_DEV_NOT_EXIST is returned if the layer is not currently prepared. + // ERROR_DEV_NOT_EXIST is returned if the layer is not currently prepared or activated. + // ERROR_FLT_INSTANCE_NOT_FOUND is returned if the layer is currently activated but not prepared. if err := hcsshim.UnprepareLayer(info, filepath.Base(layerPath)); err != nil { - if hcserror, ok := err.(*hcsshim.HcsError); !ok || hcserror.Err != windows.ERROR_DEV_NOT_EXIST { + if hcserror, ok := err.(*hcsshim.HcsError); !ok || (hcserror.Err != windows.ERROR_DEV_NOT_EXIST && hcserror.Err != syscall.Errno(windows.ERROR_FLT_INSTANCE_NOT_FOUND)) { return errors.Wrapf(err, "failed to unprepare %s", layerPath) } } diff --git a/src/runtime/vendor/github.com/containerd/containerd/sys/oom_linux.go b/src/runtime/vendor/github.com/containerd/containerd/sys/oom_linux.go index 82a347c6f..bb2a3eafb 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/sys/oom_linux.go +++ b/src/runtime/vendor/github.com/containerd/containerd/sys/oom_linux.go @@ -18,7 +18,6 @@ package sys import ( "fmt" - "io/ioutil" "os" "strconv" "strings" @@ -69,7 +68,7 @@ func SetOOMScore(pid, score int) error { // no oom score is set, or a sore is set to 0. func GetOOMScoreAdj(pid int) (int, error) { path := fmt.Sprintf("/proc/%d/oom_score_adj", pid) - data, err := ioutil.ReadFile(path) + data, err := os.ReadFile(path) if err != nil { return 0, err } diff --git a/src/runtime/vendor/github.com/containerd/containerd/sys/oom_unsupported.go b/src/runtime/vendor/github.com/containerd/containerd/sys/oom_unsupported.go index f5d7e9786..fa0db5a10 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/sys/oom_unsupported.go +++ b/src/runtime/vendor/github.com/containerd/containerd/sys/oom_unsupported.go @@ -1,3 +1,4 @@ +//go:build !linux // +build !linux /* diff --git a/src/runtime/vendor/github.com/containerd/containerd/sys/reaper/reaper_unix.go b/src/runtime/vendor/github.com/containerd/containerd/sys/reaper/reaper_unix.go index 0033178df..a40232606 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/sys/reaper/reaper_unix.go +++ b/src/runtime/vendor/github.com/containerd/containerd/sys/reaper/reaper_unix.go @@ -1,3 +1,4 @@ +//go:build !windows // +build !windows /* @@ -19,12 +20,13 @@ package reaper import ( - "os/exec" "sync" + "syscall" "time" runc "github.com/containerd/go-runc" "github.com/pkg/errors" + exec "golang.org/x/sys/execabs" "golang.org/x/sys/unix" ) @@ -115,6 +117,38 @@ func (m *Monitor) Wait(c *exec.Cmd, ec chan runc.Exit) (int, error) { return -1, ErrNoSuchProcess } +// WaitTimeout is used to skip the blocked command and kill the left process. +func (m *Monitor) WaitTimeout(c *exec.Cmd, ec chan runc.Exit, timeout time.Duration) (int, error) { + type exitStatusWrapper struct { + status int + err error + } + + // capacity can make sure that the following goroutine will not be + // blocked if there is no receiver when timeout. + waitCh := make(chan *exitStatusWrapper, 1) + go func() { + defer close(waitCh) + + status, err := m.Wait(c, ec) + waitCh <- &exitStatusWrapper{ + status: status, + err: err, + } + }() + + timer := time.NewTimer(timeout) + defer timer.Stop() + + select { + case <-timer.C: + syscall.Kill(c.Process.Pid, syscall.SIGKILL) + return 0, errors.Errorf("timeout %v for cmd(pid=%d): %s, %s", timeout, c.Process.Pid, c.Path, c.Args) + case res := <-waitCh: + return res.status, res.err + } +} + // Subscribe to process exit changes func (m *Monitor) Subscribe() chan runc.Exit { c := make(chan runc.Exit, bufferSize) diff --git a/src/runtime/vendor/github.com/containerd/containerd/sys/socket_unix.go b/src/runtime/vendor/github.com/containerd/containerd/sys/socket_unix.go index b67cc1fa3..eb803503e 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/sys/socket_unix.go +++ b/src/runtime/vendor/github.com/containerd/containerd/sys/socket_unix.go @@ -1,3 +1,4 @@ +//go:build !windows // +build !windows /* diff --git a/src/runtime/vendor/github.com/containerd/containerd/sys/socket_windows.go b/src/runtime/vendor/github.com/containerd/containerd/sys/socket_windows.go index 3ee7679b4..1ae12bc51 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/sys/socket_windows.go +++ b/src/runtime/vendor/github.com/containerd/containerd/sys/socket_windows.go @@ -1,5 +1,3 @@ -// +build windows - /* Copyright The containerd Authors. diff --git a/src/runtime/vendor/github.com/containerd/containerd/sys/stat_bsd.go b/src/runtime/vendor/github.com/containerd/containerd/sys/stat_bsd.go deleted file mode 100644 index 4f03cd6cb..000000000 --- a/src/runtime/vendor/github.com/containerd/containerd/sys/stat_bsd.go +++ /dev/null @@ -1,44 +0,0 @@ -// +build darwin freebsd netbsd - -/* - Copyright The containerd Authors. - - 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. -*/ - -package sys - -import ( - "syscall" - "time" -) - -// StatAtime returns the access time from a stat struct -func StatAtime(st *syscall.Stat_t) syscall.Timespec { - return st.Atimespec -} - -// StatCtime returns the created time from a stat struct -func StatCtime(st *syscall.Stat_t) syscall.Timespec { - return st.Ctimespec -} - -// StatMtime returns the modified time from a stat struct -func StatMtime(st *syscall.Stat_t) syscall.Timespec { - return st.Mtimespec -} - -// StatATimeAsTime returns the access time as a time.Time -func StatATimeAsTime(st *syscall.Stat_t) time.Time { - return time.Unix(int64(st.Atimespec.Sec), int64(st.Atimespec.Nsec)) // nolint: unconvert -} diff --git a/src/runtime/vendor/github.com/containerd/containerd/sys/stat_openbsd.go b/src/runtime/vendor/github.com/containerd/containerd/sys/stat_openbsd.go deleted file mode 100644 index ec3b9df69..000000000 --- a/src/runtime/vendor/github.com/containerd/containerd/sys/stat_openbsd.go +++ /dev/null @@ -1,45 +0,0 @@ -// +build openbsd - -/* - Copyright The containerd Authors. - - 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. -*/ - -package sys - -import ( - "syscall" - "time" -) - -// StatAtime returns the Atim -func StatAtime(st *syscall.Stat_t) syscall.Timespec { - return st.Atim -} - -// StatCtime returns the Ctim -func StatCtime(st *syscall.Stat_t) syscall.Timespec { - return st.Ctim -} - -// StatMtime returns the Mtim -func StatMtime(st *syscall.Stat_t) syscall.Timespec { - return st.Mtim -} - -// StatATimeAsTime returns st.Atim as a time.Time -func StatATimeAsTime(st *syscall.Stat_t) time.Time { - // The int64 conversions ensure the line compiles for 32-bit systems as well. - return time.Unix(int64(st.Atim.Sec), int64(st.Atim.Nsec)) // nolint: unconvert -} diff --git a/src/runtime/vendor/github.com/containerd/containerd/version/version.go b/src/runtime/vendor/github.com/containerd/containerd/version/version.go index b8200307f..6e7926eda 100644 --- a/src/runtime/vendor/github.com/containerd/containerd/version/version.go +++ b/src/runtime/vendor/github.com/containerd/containerd/version/version.go @@ -23,7 +23,7 @@ var ( Package = "github.com/containerd/containerd" // Version holds the complete version number. Filled in at linking time. - Version = "1.5.8+unknown" + Version = "1.6.0-beta.4+unknown" // Revision is filled with the VCS (e.g. git) revision being used to build // the program at linking time. diff --git a/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/020/types.go b/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/020/types.go index 36f31678a..99b151ff2 100644 --- a/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/020/types.go +++ b/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/020/types.go @@ -22,25 +22,47 @@ import ( "os" "github.com/containernetworking/cni/pkg/types" + convert "github.com/containernetworking/cni/pkg/types/internal" ) const ImplementedSpecVersion string = "0.2.0" -var SupportedVersions = []string{"", "0.1.0", ImplementedSpecVersion} +var supportedVersions = []string{"", "0.1.0", ImplementedSpecVersion} + +// Register converters for all versions less than the implemented spec version +func init() { + convert.RegisterConverter("0.1.0", []string{ImplementedSpecVersion}, convertFrom010) + convert.RegisterConverter(ImplementedSpecVersion, []string{"0.1.0"}, convertTo010) + + // Creator + convert.RegisterCreator(supportedVersions, NewResult) +} // Compatibility types for CNI version 0.1.0 and 0.2.0 +// NewResult creates a new Result object from JSON data. The JSON data +// must be compatible with the CNI versions implemented by this type. func NewResult(data []byte) (types.Result, error) { result := &Result{} if err := json.Unmarshal(data, result); err != nil { return nil, err } - return result, nil + for _, v := range supportedVersions { + if result.CNIVersion == v { + if result.CNIVersion == "" { + result.CNIVersion = "0.1.0" + } + return result, nil + } + } + return nil, fmt.Errorf("result type supports %v but unmarshalled CNIVersion is %q", + supportedVersions, result.CNIVersion) } +// GetResult converts the given Result object to the ImplementedSpecVersion +// and returns the concrete type or an error func GetResult(r types.Result) (*Result, error) { - // We expect version 0.1.0/0.2.0 results - result020, err := r.GetAsVersion(ImplementedSpecVersion) + result020, err := convert.Convert(r, ImplementedSpecVersion) if err != nil { return nil, err } @@ -51,6 +73,32 @@ func GetResult(r types.Result) (*Result, error) { return result, nil } +func convertFrom010(from types.Result, toVersion string) (types.Result, error) { + if toVersion != "0.2.0" { + panic("only converts to version 0.2.0") + } + fromResult := from.(*Result) + return &Result{ + CNIVersion: ImplementedSpecVersion, + IP4: fromResult.IP4.Copy(), + IP6: fromResult.IP6.Copy(), + DNS: *fromResult.DNS.Copy(), + }, nil +} + +func convertTo010(from types.Result, toVersion string) (types.Result, error) { + if toVersion != "0.1.0" { + panic("only converts to version 0.1.0") + } + fromResult := from.(*Result) + return &Result{ + CNIVersion: "0.1.0", + IP4: fromResult.IP4.Copy(), + IP6: fromResult.IP6.Copy(), + DNS: *fromResult.DNS.Copy(), + }, nil +} + // Result is what gets returned from the plugin (via stdout) to the caller type Result struct { CNIVersion string `json:"cniVersion,omitempty"` @@ -60,17 +108,16 @@ type Result struct { } func (r *Result) Version() string { - return ImplementedSpecVersion + return r.CNIVersion } func (r *Result) GetAsVersion(version string) (types.Result, error) { - for _, supportedVersion := range SupportedVersions { - if version == supportedVersion { - r.CNIVersion = version - return r, nil - } + // If the creator of the result did not set the CNIVersion, assume it + // should be the highest spec version implemented by this Result + if r.CNIVersion == "" { + r.CNIVersion = ImplementedSpecVersion } - return nil, fmt.Errorf("cannot convert version %q to %s", SupportedVersions, version) + return convert.Convert(r, version) } func (r *Result) Print() error { @@ -93,6 +140,22 @@ type IPConfig struct { Routes []types.Route } +func (i *IPConfig) Copy() *IPConfig { + if i == nil { + return nil + } + + var routes []types.Route + for _, fromRoute := range i.Routes { + routes = append(routes, *fromRoute.Copy()) + } + return &IPConfig{ + IP: i.IP, + Gateway: i.Gateway, + Routes: routes, + } +} + // net.IPNet is not JSON (un)marshallable so this duality is needed // for our custom IPNet type diff --git a/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/040/types.go b/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/040/types.go new file mode 100644 index 000000000..3633b0eaa --- /dev/null +++ b/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/040/types.go @@ -0,0 +1,306 @@ +// Copyright 2016 CNI authors +// +// 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. + +package types040 + +import ( + "encoding/json" + "fmt" + "io" + "net" + "os" + + "github.com/containernetworking/cni/pkg/types" + types020 "github.com/containernetworking/cni/pkg/types/020" + convert "github.com/containernetworking/cni/pkg/types/internal" +) + +const ImplementedSpecVersion string = "0.4.0" + +var supportedVersions = []string{"0.3.0", "0.3.1", ImplementedSpecVersion} + +// Register converters for all versions less than the implemented spec version +func init() { + // Up-converters + convert.RegisterConverter("0.1.0", supportedVersions, convertFrom02x) + convert.RegisterConverter("0.2.0", supportedVersions, convertFrom02x) + convert.RegisterConverter("0.3.0", supportedVersions, convertInternal) + convert.RegisterConverter("0.3.1", supportedVersions, convertInternal) + + // Down-converters + convert.RegisterConverter("0.4.0", []string{"0.3.0", "0.3.1"}, convertInternal) + convert.RegisterConverter("0.4.0", []string{"0.1.0", "0.2.0"}, convertTo02x) + convert.RegisterConverter("0.3.1", []string{"0.1.0", "0.2.0"}, convertTo02x) + convert.RegisterConverter("0.3.0", []string{"0.1.0", "0.2.0"}, convertTo02x) + + // Creator + convert.RegisterCreator(supportedVersions, NewResult) +} + +func NewResult(data []byte) (types.Result, error) { + result := &Result{} + if err := json.Unmarshal(data, result); err != nil { + return nil, err + } + for _, v := range supportedVersions { + if result.CNIVersion == v { + return result, nil + } + } + return nil, fmt.Errorf("result type supports %v but unmarshalled CNIVersion is %q", + supportedVersions, result.CNIVersion) +} + +func GetResult(r types.Result) (*Result, error) { + resultCurrent, err := r.GetAsVersion(ImplementedSpecVersion) + if err != nil { + return nil, err + } + result, ok := resultCurrent.(*Result) + if !ok { + return nil, fmt.Errorf("failed to convert result") + } + return result, nil +} + +func NewResultFromResult(result types.Result) (*Result, error) { + newResult, err := convert.Convert(result, ImplementedSpecVersion) + if err != nil { + return nil, err + } + return newResult.(*Result), nil +} + +// Result is what gets returned from the plugin (via stdout) to the caller +type Result struct { + CNIVersion string `json:"cniVersion,omitempty"` + Interfaces []*Interface `json:"interfaces,omitempty"` + IPs []*IPConfig `json:"ips,omitempty"` + Routes []*types.Route `json:"routes,omitempty"` + DNS types.DNS `json:"dns,omitempty"` +} + +func convert020IPConfig(from *types020.IPConfig, ipVersion string) *IPConfig { + return &IPConfig{ + Version: ipVersion, + Address: from.IP, + Gateway: from.Gateway, + } +} + +func convertFrom02x(from types.Result, toVersion string) (types.Result, error) { + fromResult := from.(*types020.Result) + toResult := &Result{ + CNIVersion: toVersion, + DNS: *fromResult.DNS.Copy(), + Routes: []*types.Route{}, + } + if fromResult.IP4 != nil { + toResult.IPs = append(toResult.IPs, convert020IPConfig(fromResult.IP4, "4")) + for _, fromRoute := range fromResult.IP4.Routes { + toResult.Routes = append(toResult.Routes, fromRoute.Copy()) + } + } + + if fromResult.IP6 != nil { + toResult.IPs = append(toResult.IPs, convert020IPConfig(fromResult.IP6, "6")) + for _, fromRoute := range fromResult.IP6.Routes { + toResult.Routes = append(toResult.Routes, fromRoute.Copy()) + } + } + + return toResult, nil +} + +func convertInternal(from types.Result, toVersion string) (types.Result, error) { + fromResult := from.(*Result) + toResult := &Result{ + CNIVersion: toVersion, + DNS: *fromResult.DNS.Copy(), + Routes: []*types.Route{}, + } + for _, fromIntf := range fromResult.Interfaces { + toResult.Interfaces = append(toResult.Interfaces, fromIntf.Copy()) + } + for _, fromIPC := range fromResult.IPs { + toResult.IPs = append(toResult.IPs, fromIPC.Copy()) + } + for _, fromRoute := range fromResult.Routes { + toResult.Routes = append(toResult.Routes, fromRoute.Copy()) + } + return toResult, nil +} + +func convertTo02x(from types.Result, toVersion string) (types.Result, error) { + fromResult := from.(*Result) + toResult := &types020.Result{ + CNIVersion: toVersion, + DNS: *fromResult.DNS.Copy(), + } + + for _, fromIP := range fromResult.IPs { + // Only convert the first IP address of each version as 0.2.0 + // and earlier cannot handle multiple IP addresses + if fromIP.Version == "4" && toResult.IP4 == nil { + toResult.IP4 = &types020.IPConfig{ + IP: fromIP.Address, + Gateway: fromIP.Gateway, + } + } else if fromIP.Version == "6" && toResult.IP6 == nil { + toResult.IP6 = &types020.IPConfig{ + IP: fromIP.Address, + Gateway: fromIP.Gateway, + } + } + if toResult.IP4 != nil && toResult.IP6 != nil { + break + } + } + + for _, fromRoute := range fromResult.Routes { + is4 := fromRoute.Dst.IP.To4() != nil + if is4 && toResult.IP4 != nil { + toResult.IP4.Routes = append(toResult.IP4.Routes, types.Route{ + Dst: fromRoute.Dst, + GW: fromRoute.GW, + }) + } else if !is4 && toResult.IP6 != nil { + toResult.IP6.Routes = append(toResult.IP6.Routes, types.Route{ + Dst: fromRoute.Dst, + GW: fromRoute.GW, + }) + } + } + + // 0.2.0 and earlier require at least one IP address in the Result + if toResult.IP4 == nil && toResult.IP6 == nil { + return nil, fmt.Errorf("cannot convert: no valid IP addresses") + } + + return toResult, nil +} + +func (r *Result) Version() string { + return r.CNIVersion +} + +func (r *Result) GetAsVersion(version string) (types.Result, error) { + // If the creator of the result did not set the CNIVersion, assume it + // should be the highest spec version implemented by this Result + if r.CNIVersion == "" { + r.CNIVersion = ImplementedSpecVersion + } + return convert.Convert(r, version) +} + +func (r *Result) Print() error { + return r.PrintTo(os.Stdout) +} + +func (r *Result) PrintTo(writer io.Writer) error { + data, err := json.MarshalIndent(r, "", " ") + if err != nil { + return err + } + _, err = writer.Write(data) + return err +} + +// Interface contains values about the created interfaces +type Interface struct { + Name string `json:"name"` + Mac string `json:"mac,omitempty"` + Sandbox string `json:"sandbox,omitempty"` +} + +func (i *Interface) String() string { + return fmt.Sprintf("%+v", *i) +} + +func (i *Interface) Copy() *Interface { + if i == nil { + return nil + } + newIntf := *i + return &newIntf +} + +// Int returns a pointer to the int value passed in. Used to +// set the IPConfig.Interface field. +func Int(v int) *int { + return &v +} + +// IPConfig contains values necessary to configure an IP address on an interface +type IPConfig struct { + // IP version, either "4" or "6" + Version string + // Index into Result structs Interfaces list + Interface *int + Address net.IPNet + Gateway net.IP +} + +func (i *IPConfig) String() string { + return fmt.Sprintf("%+v", *i) +} + +func (i *IPConfig) Copy() *IPConfig { + if i == nil { + return nil + } + + ipc := &IPConfig{ + Version: i.Version, + Address: i.Address, + Gateway: i.Gateway, + } + if i.Interface != nil { + intf := *i.Interface + ipc.Interface = &intf + } + return ipc +} + +// JSON (un)marshallable types +type ipConfig struct { + Version string `json:"version"` + Interface *int `json:"interface,omitempty"` + Address types.IPNet `json:"address"` + Gateway net.IP `json:"gateway,omitempty"` +} + +func (c *IPConfig) MarshalJSON() ([]byte, error) { + ipc := ipConfig{ + Version: c.Version, + Interface: c.Interface, + Address: types.IPNet(c.Address), + Gateway: c.Gateway, + } + + return json.Marshal(ipc) +} + +func (c *IPConfig) UnmarshalJSON(data []byte) error { + ipc := ipConfig{} + if err := json.Unmarshal(data, &ipc); err != nil { + return err + } + + c.Version = ipc.Version + c.Interface = ipc.Interface + c.Address = net.IPNet(ipc.Address) + c.Gateway = ipc.Gateway + return nil +} diff --git a/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/100/types.go b/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/100/types.go new file mode 100644 index 000000000..0e1e8b857 --- /dev/null +++ b/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/100/types.go @@ -0,0 +1,307 @@ +// Copyright 2016 CNI authors +// +// 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. + +package types100 + +import ( + "encoding/json" + "fmt" + "io" + "net" + "os" + + "github.com/containernetworking/cni/pkg/types" + types040 "github.com/containernetworking/cni/pkg/types/040" + convert "github.com/containernetworking/cni/pkg/types/internal" +) + +const ImplementedSpecVersion string = "1.0.0" + +var supportedVersions = []string{ImplementedSpecVersion} + +// Register converters for all versions less than the implemented spec version +func init() { + // Up-converters + convert.RegisterConverter("0.1.0", supportedVersions, convertFrom02x) + convert.RegisterConverter("0.2.0", supportedVersions, convertFrom02x) + convert.RegisterConverter("0.3.0", supportedVersions, convertFrom04x) + convert.RegisterConverter("0.3.1", supportedVersions, convertFrom04x) + convert.RegisterConverter("0.4.0", supportedVersions, convertFrom04x) + + // Down-converters + convert.RegisterConverter("1.0.0", []string{"0.3.0", "0.3.1", "0.4.0"}, convertTo04x) + convert.RegisterConverter("1.0.0", []string{"0.1.0", "0.2.0"}, convertTo02x) + + // Creator + convert.RegisterCreator(supportedVersions, NewResult) +} + +func NewResult(data []byte) (types.Result, error) { + result := &Result{} + if err := json.Unmarshal(data, result); err != nil { + return nil, err + } + for _, v := range supportedVersions { + if result.CNIVersion == v { + return result, nil + } + } + return nil, fmt.Errorf("result type supports %v but unmarshalled CNIVersion is %q", + supportedVersions, result.CNIVersion) +} + +func GetResult(r types.Result) (*Result, error) { + resultCurrent, err := r.GetAsVersion(ImplementedSpecVersion) + if err != nil { + return nil, err + } + result, ok := resultCurrent.(*Result) + if !ok { + return nil, fmt.Errorf("failed to convert result") + } + return result, nil +} + +func NewResultFromResult(result types.Result) (*Result, error) { + newResult, err := convert.Convert(result, ImplementedSpecVersion) + if err != nil { + return nil, err + } + return newResult.(*Result), nil +} + +// Result is what gets returned from the plugin (via stdout) to the caller +type Result struct { + CNIVersion string `json:"cniVersion,omitempty"` + Interfaces []*Interface `json:"interfaces,omitempty"` + IPs []*IPConfig `json:"ips,omitempty"` + Routes []*types.Route `json:"routes,omitempty"` + DNS types.DNS `json:"dns,omitempty"` +} + +func convertFrom02x(from types.Result, toVersion string) (types.Result, error) { + result040, err := convert.Convert(from, "0.4.0") + if err != nil { + return nil, err + } + result100, err := convertFrom04x(result040, ImplementedSpecVersion) + if err != nil { + return nil, err + } + return result100, nil +} + +func convertIPConfigFrom040(from *types040.IPConfig) *IPConfig { + to := &IPConfig{ + Address: from.Address, + Gateway: from.Gateway, + } + if from.Interface != nil { + intf := *from.Interface + to.Interface = &intf + } + return to +} + +func convertInterfaceFrom040(from *types040.Interface) *Interface { + return &Interface{ + Name: from.Name, + Mac: from.Mac, + Sandbox: from.Sandbox, + } +} + +func convertFrom04x(from types.Result, toVersion string) (types.Result, error) { + fromResult := from.(*types040.Result) + toResult := &Result{ + CNIVersion: toVersion, + DNS: *fromResult.DNS.Copy(), + Routes: []*types.Route{}, + } + for _, fromIntf := range fromResult.Interfaces { + toResult.Interfaces = append(toResult.Interfaces, convertInterfaceFrom040(fromIntf)) + } + for _, fromIPC := range fromResult.IPs { + toResult.IPs = append(toResult.IPs, convertIPConfigFrom040(fromIPC)) + } + for _, fromRoute := range fromResult.Routes { + toResult.Routes = append(toResult.Routes, fromRoute.Copy()) + } + return toResult, nil +} + +func convertIPConfigTo040(from *IPConfig) *types040.IPConfig { + version := "6" + if from.Address.IP.To4() != nil { + version = "4" + } + to := &types040.IPConfig{ + Version: version, + Address: from.Address, + Gateway: from.Gateway, + } + if from.Interface != nil { + intf := *from.Interface + to.Interface = &intf + } + return to +} + +func convertInterfaceTo040(from *Interface) *types040.Interface { + return &types040.Interface{ + Name: from.Name, + Mac: from.Mac, + Sandbox: from.Sandbox, + } +} + +func convertTo04x(from types.Result, toVersion string) (types.Result, error) { + fromResult := from.(*Result) + toResult := &types040.Result{ + CNIVersion: toVersion, + DNS: *fromResult.DNS.Copy(), + Routes: []*types.Route{}, + } + for _, fromIntf := range fromResult.Interfaces { + toResult.Interfaces = append(toResult.Interfaces, convertInterfaceTo040(fromIntf)) + } + for _, fromIPC := range fromResult.IPs { + toResult.IPs = append(toResult.IPs, convertIPConfigTo040(fromIPC)) + } + for _, fromRoute := range fromResult.Routes { + toResult.Routes = append(toResult.Routes, fromRoute.Copy()) + } + return toResult, nil +} + +func convertTo02x(from types.Result, toVersion string) (types.Result, error) { + // First convert to 0.4.0 + result040, err := convertTo04x(from, "0.4.0") + if err != nil { + return nil, err + } + result02x, err := convert.Convert(result040, toVersion) + if err != nil { + return nil, err + } + return result02x, nil +} + +func (r *Result) Version() string { + return r.CNIVersion +} + +func (r *Result) GetAsVersion(version string) (types.Result, error) { + // If the creator of the result did not set the CNIVersion, assume it + // should be the highest spec version implemented by this Result + if r.CNIVersion == "" { + r.CNIVersion = ImplementedSpecVersion + } + return convert.Convert(r, version) +} + +func (r *Result) Print() error { + return r.PrintTo(os.Stdout) +} + +func (r *Result) PrintTo(writer io.Writer) error { + data, err := json.MarshalIndent(r, "", " ") + if err != nil { + return err + } + _, err = writer.Write(data) + return err +} + +// Interface contains values about the created interfaces +type Interface struct { + Name string `json:"name"` + Mac string `json:"mac,omitempty"` + Sandbox string `json:"sandbox,omitempty"` +} + +func (i *Interface) String() string { + return fmt.Sprintf("%+v", *i) +} + +func (i *Interface) Copy() *Interface { + if i == nil { + return nil + } + newIntf := *i + return &newIntf +} + +// Int returns a pointer to the int value passed in. Used to +// set the IPConfig.Interface field. +func Int(v int) *int { + return &v +} + +// IPConfig contains values necessary to configure an IP address on an interface +type IPConfig struct { + // Index into Result structs Interfaces list + Interface *int + Address net.IPNet + Gateway net.IP +} + +func (i *IPConfig) String() string { + return fmt.Sprintf("%+v", *i) +} + +func (i *IPConfig) Copy() *IPConfig { + if i == nil { + return nil + } + + ipc := &IPConfig{ + Address: i.Address, + Gateway: i.Gateway, + } + if i.Interface != nil { + intf := *i.Interface + ipc.Interface = &intf + } + return ipc +} + +// JSON (un)marshallable types +type ipConfig struct { + Interface *int `json:"interface,omitempty"` + Address types.IPNet `json:"address"` + Gateway net.IP `json:"gateway,omitempty"` +} + +func (c *IPConfig) MarshalJSON() ([]byte, error) { + ipc := ipConfig{ + Interface: c.Interface, + Address: types.IPNet(c.Address), + Gateway: c.Gateway, + } + + return json.Marshal(ipc) +} + +func (c *IPConfig) UnmarshalJSON(data []byte) error { + ipc := ipConfig{} + if err := json.Unmarshal(data, &ipc); err != nil { + return err + } + + c.Interface = ipc.Interface + c.Address = net.IPNet(ipc.Address) + c.Gateway = ipc.Gateway + return nil +} diff --git a/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/args.go b/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/args.go index 4eac64899..7516f03ef 100644 --- a/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/args.go +++ b/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/args.go @@ -91,16 +91,26 @@ func LoadArgs(args string, container interface{}) error { unknownArgs = append(unknownArgs, pair) continue } - keyFieldIface := keyField.Addr().Interface() - u, ok := keyFieldIface.(encoding.TextUnmarshaler) + + var keyFieldInterface interface{} + switch { + case keyField.Kind() == reflect.Ptr: + keyField.Set(reflect.New(keyField.Type().Elem())) + keyFieldInterface = keyField.Interface() + case keyField.CanAddr() && keyField.Addr().CanInterface(): + keyFieldInterface = keyField.Addr().Interface() + default: + return UnmarshalableArgsError{fmt.Errorf("field '%s' has no valid interface", keyString)} + } + u, ok := keyFieldInterface.(encoding.TextUnmarshaler) if !ok { return UnmarshalableArgsError{fmt.Errorf( "ARGS: cannot unmarshal into field '%s' - type '%s' does not implement encoding.TextUnmarshaler", - keyString, reflect.TypeOf(keyFieldIface))} + keyString, reflect.TypeOf(keyFieldInterface))} } err := u.UnmarshalText([]byte(valueString)) if err != nil { - return fmt.Errorf("ARGS: error parsing value of pair %q: %v)", pair, err) + return fmt.Errorf("ARGS: error parsing value of pair %q: %w", pair, err) } } diff --git a/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/create/create.go b/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/create/create.go new file mode 100644 index 000000000..ed28b33e8 --- /dev/null +++ b/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/create/create.go @@ -0,0 +1,56 @@ +// Copyright 2016 CNI authors +// +// 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. + +package create + +import ( + "encoding/json" + "fmt" + + "github.com/containernetworking/cni/pkg/types" + convert "github.com/containernetworking/cni/pkg/types/internal" +) + +// DecodeVersion returns the CNI version from CNI configuration or result JSON, +// or an error if the operation could not be performed. +func DecodeVersion(jsonBytes []byte) (string, error) { + var conf struct { + CNIVersion string `json:"cniVersion"` + } + err := json.Unmarshal(jsonBytes, &conf) + if err != nil { + return "", fmt.Errorf("decoding version from network config: %w", err) + } + if conf.CNIVersion == "" { + return "0.1.0", nil + } + return conf.CNIVersion, nil +} + +// Create creates a CNI Result using the given JSON with the expected +// version, or an error if the creation could not be performed +func Create(version string, bytes []byte) (types.Result, error) { + return convert.Create(version, bytes) +} + +// CreateFromBytes creates a CNI Result from the given JSON, automatically +// detecting the CNI spec version of the result. An error is returned if the +// operation could not be performed. +func CreateFromBytes(bytes []byte) (types.Result, error) { + version, err := DecodeVersion(bytes) + if err != nil { + return nil, err + } + return convert.Create(version, bytes) +} diff --git a/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/current/types.go b/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/current/types.go deleted file mode 100644 index 754cc6e72..000000000 --- a/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/current/types.go +++ /dev/null @@ -1,276 +0,0 @@ -// Copyright 2016 CNI authors -// -// 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. - -package current - -import ( - "encoding/json" - "fmt" - "io" - "net" - "os" - - "github.com/containernetworking/cni/pkg/types" - "github.com/containernetworking/cni/pkg/types/020" -) - -const ImplementedSpecVersion string = "0.4.0" - -var SupportedVersions = []string{"0.3.0", "0.3.1", ImplementedSpecVersion} - -func NewResult(data []byte) (types.Result, error) { - result := &Result{} - if err := json.Unmarshal(data, result); err != nil { - return nil, err - } - return result, nil -} - -func GetResult(r types.Result) (*Result, error) { - resultCurrent, err := r.GetAsVersion(ImplementedSpecVersion) - if err != nil { - return nil, err - } - result, ok := resultCurrent.(*Result) - if !ok { - return nil, fmt.Errorf("failed to convert result") - } - return result, nil -} - -var resultConverters = []struct { - versions []string - convert func(types.Result) (*Result, error) -}{ - {types020.SupportedVersions, convertFrom020}, - {SupportedVersions, convertFrom030}, -} - -func convertFrom020(result types.Result) (*Result, error) { - oldResult, err := types020.GetResult(result) - if err != nil { - return nil, err - } - - newResult := &Result{ - CNIVersion: ImplementedSpecVersion, - DNS: oldResult.DNS, - Routes: []*types.Route{}, - } - - if oldResult.IP4 != nil { - newResult.IPs = append(newResult.IPs, &IPConfig{ - Version: "4", - Address: oldResult.IP4.IP, - Gateway: oldResult.IP4.Gateway, - }) - for _, route := range oldResult.IP4.Routes { - newResult.Routes = append(newResult.Routes, &types.Route{ - Dst: route.Dst, - GW: route.GW, - }) - } - } - - if oldResult.IP6 != nil { - newResult.IPs = append(newResult.IPs, &IPConfig{ - Version: "6", - Address: oldResult.IP6.IP, - Gateway: oldResult.IP6.Gateway, - }) - for _, route := range oldResult.IP6.Routes { - newResult.Routes = append(newResult.Routes, &types.Route{ - Dst: route.Dst, - GW: route.GW, - }) - } - } - - return newResult, nil -} - -func convertFrom030(result types.Result) (*Result, error) { - newResult, ok := result.(*Result) - if !ok { - return nil, fmt.Errorf("failed to convert result") - } - newResult.CNIVersion = ImplementedSpecVersion - return newResult, nil -} - -func NewResultFromResult(result types.Result) (*Result, error) { - version := result.Version() - for _, converter := range resultConverters { - for _, supportedVersion := range converter.versions { - if version == supportedVersion { - return converter.convert(result) - } - } - } - return nil, fmt.Errorf("unsupported CNI result22 version %q", version) -} - -// Result is what gets returned from the plugin (via stdout) to the caller -type Result struct { - CNIVersion string `json:"cniVersion,omitempty"` - Interfaces []*Interface `json:"interfaces,omitempty"` - IPs []*IPConfig `json:"ips,omitempty"` - Routes []*types.Route `json:"routes,omitempty"` - DNS types.DNS `json:"dns,omitempty"` -} - -// Convert to the older 0.2.0 CNI spec Result type -func (r *Result) convertTo020() (*types020.Result, error) { - oldResult := &types020.Result{ - CNIVersion: types020.ImplementedSpecVersion, - DNS: r.DNS, - } - - for _, ip := range r.IPs { - // Only convert the first IP address of each version as 0.2.0 - // and earlier cannot handle multiple IP addresses - if ip.Version == "4" && oldResult.IP4 == nil { - oldResult.IP4 = &types020.IPConfig{ - IP: ip.Address, - Gateway: ip.Gateway, - } - } else if ip.Version == "6" && oldResult.IP6 == nil { - oldResult.IP6 = &types020.IPConfig{ - IP: ip.Address, - Gateway: ip.Gateway, - } - } - - if oldResult.IP4 != nil && oldResult.IP6 != nil { - break - } - } - - for _, route := range r.Routes { - is4 := route.Dst.IP.To4() != nil - if is4 && oldResult.IP4 != nil { - oldResult.IP4.Routes = append(oldResult.IP4.Routes, types.Route{ - Dst: route.Dst, - GW: route.GW, - }) - } else if !is4 && oldResult.IP6 != nil { - oldResult.IP6.Routes = append(oldResult.IP6.Routes, types.Route{ - Dst: route.Dst, - GW: route.GW, - }) - } - } - - if oldResult.IP4 == nil && oldResult.IP6 == nil { - return nil, fmt.Errorf("cannot convert: no valid IP addresses") - } - - return oldResult, nil -} - -func (r *Result) Version() string { - return ImplementedSpecVersion -} - -func (r *Result) GetAsVersion(version string) (types.Result, error) { - switch version { - case "0.3.0", "0.3.1", ImplementedSpecVersion: - r.CNIVersion = version - return r, nil - case types020.SupportedVersions[0], types020.SupportedVersions[1], types020.SupportedVersions[2]: - return r.convertTo020() - } - return nil, fmt.Errorf("cannot convert version 0.3.x to %q", version) -} - -func (r *Result) Print() error { - return r.PrintTo(os.Stdout) -} - -func (r *Result) PrintTo(writer io.Writer) error { - data, err := json.MarshalIndent(r, "", " ") - if err != nil { - return err - } - _, err = writer.Write(data) - return err -} - -// Convert this old version result to the current CNI version result -func (r *Result) Convert() (*Result, error) { - return r, nil -} - -// Interface contains values about the created interfaces -type Interface struct { - Name string `json:"name"` - Mac string `json:"mac,omitempty"` - Sandbox string `json:"sandbox,omitempty"` -} - -func (i *Interface) String() string { - return fmt.Sprintf("%+v", *i) -} - -// Int returns a pointer to the int value passed in. Used to -// set the IPConfig.Interface field. -func Int(v int) *int { - return &v -} - -// IPConfig contains values necessary to configure an IP address on an interface -type IPConfig struct { - // IP version, either "4" or "6" - Version string - // Index into Result structs Interfaces list - Interface *int - Address net.IPNet - Gateway net.IP -} - -func (i *IPConfig) String() string { - return fmt.Sprintf("%+v", *i) -} - -// JSON (un)marshallable types -type ipConfig struct { - Version string `json:"version"` - Interface *int `json:"interface,omitempty"` - Address types.IPNet `json:"address"` - Gateway net.IP `json:"gateway,omitempty"` -} - -func (c *IPConfig) MarshalJSON() ([]byte, error) { - ipc := ipConfig{ - Version: c.Version, - Interface: c.Interface, - Address: types.IPNet(c.Address), - Gateway: c.Gateway, - } - - return json.Marshal(ipc) -} - -func (c *IPConfig) UnmarshalJSON(data []byte) error { - ipc := ipConfig{} - if err := json.Unmarshal(data, &ipc); err != nil { - return err - } - - c.Version = ipc.Version - c.Interface = ipc.Interface - c.Address = net.IPNet(ipc.Address) - c.Gateway = ipc.Gateway - return nil -} diff --git a/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/internal/convert.go b/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/internal/convert.go new file mode 100644 index 000000000..bdbe4b0a5 --- /dev/null +++ b/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/internal/convert.go @@ -0,0 +1,92 @@ +// Copyright 2016 CNI authors +// +// 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. + +package convert + +import ( + "fmt" + + "github.com/containernetworking/cni/pkg/types" +) + +// ConvertFn should convert from the given arbitrary Result type into a +// Result implementing CNI specification version passed in toVersion. +// The function is guaranteed to be passed a Result type matching the +// fromVersion it was registered with, and is guaranteed to be +// passed a toVersion matching one of the toVersions it was registered with. +type ConvertFn func(from types.Result, toVersion string) (types.Result, error) + +type converter struct { + // fromVersion is the CNI Result spec version that convertFn accepts + fromVersion string + // toVersions is a list of versions that convertFn can convert to + toVersions []string + convertFn ConvertFn +} + +var converters []*converter + +func findConverter(fromVersion, toVersion string) *converter { + for _, c := range converters { + if c.fromVersion == fromVersion { + for _, v := range c.toVersions { + if v == toVersion { + return c + } + } + } + } + return nil +} + +// Convert converts a CNI Result to the requested CNI specification version, +// or returns an error if the conversion could not be performed or failed +func Convert(from types.Result, toVersion string) (types.Result, error) { + if toVersion == "" { + toVersion = "0.1.0" + } + + fromVersion := from.Version() + + // Shortcut for same version + if fromVersion == toVersion { + return from, nil + } + + // Otherwise find the right converter + c := findConverter(fromVersion, toVersion) + if c == nil { + return nil, fmt.Errorf("no converter for CNI result version %s to %s", + fromVersion, toVersion) + } + return c.convertFn(from, toVersion) +} + +// RegisterConverter registers a CNI Result converter. SHOULD NOT BE CALLED +// EXCEPT FROM CNI ITSELF. +func RegisterConverter(fromVersion string, toVersions []string, convertFn ConvertFn) { + // Make sure there is no converter already registered for these + // from and to versions + for _, v := range toVersions { + if findConverter(fromVersion, v) != nil { + panic(fmt.Sprintf("converter already registered for %s to %s", + fromVersion, v)) + } + } + converters = append(converters, &converter{ + fromVersion: fromVersion, + toVersions: toVersions, + convertFn: convertFn, + }) +} diff --git a/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/internal/create.go b/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/internal/create.go new file mode 100644 index 000000000..963630912 --- /dev/null +++ b/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/internal/create.go @@ -0,0 +1,66 @@ +// Copyright 2016 CNI authors +// +// 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. + +package convert + +import ( + "fmt" + + "github.com/containernetworking/cni/pkg/types" +) + +type ResultFactoryFunc func([]byte) (types.Result, error) + +type creator struct { + // CNI Result spec versions that createFn can create a Result for + versions []string + createFn ResultFactoryFunc +} + +var creators []*creator + +func findCreator(version string) *creator { + for _, c := range creators { + for _, v := range c.versions { + if v == version { + return c + } + } + } + return nil +} + +// Create creates a CNI Result using the given JSON, or an error if the creation +// could not be performed +func Create(version string, bytes []byte) (types.Result, error) { + if c := findCreator(version); c != nil { + return c.createFn(bytes) + } + return nil, fmt.Errorf("unsupported CNI result version %q", version) +} + +// RegisterCreator registers a CNI Result creator. SHOULD NOT BE CALLED +// EXCEPT FROM CNI ITSELF. +func RegisterCreator(versions []string, createFn ResultFactoryFunc) { + // Make sure there is no creator already registered for these versions + for _, v := range versions { + if findCreator(v) != nil { + panic(fmt.Sprintf("creator already registered for %s", v)) + } + } + creators = append(creators, &creator{ + versions: versions, + createFn: createFn, + }) +} diff --git a/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/types.go b/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/types.go index 3fa757a5d..fba17dfc0 100644 --- a/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/types.go +++ b/src/runtime/vendor/github.com/containernetworking/cni/pkg/types/types.go @@ -83,8 +83,6 @@ type NetConfList struct { Plugins []*NetConf `json:"plugins,omitempty"` } -type ResultFactoryFunc func([]byte) (Result, error) - // Result is an interface that provides the result of plugin execution type Result interface { // The highest CNI specification result version the result supports @@ -118,6 +116,24 @@ type DNS struct { Options []string `json:"options,omitempty"` } +func (d *DNS) Copy() *DNS { + if d == nil { + return nil + } + + to := &DNS{Domain: d.Domain} + for _, ns := range d.Nameservers { + to.Nameservers = append(to.Nameservers, ns) + } + for _, s := range d.Search { + to.Search = append(to.Search, s) + } + for _, o := range d.Options { + to.Options = append(to.Options, o) + } + return to +} + type Route struct { Dst net.IPNet GW net.IP @@ -127,6 +143,17 @@ func (r *Route) String() string { return fmt.Sprintf("%+v", *r) } +func (r *Route) Copy() *Route { + if r == nil { + return nil + } + + return &Route{ + Dst: r.Dst, + GW: r.GW, + } +} + // Well known error codes // see https://github.com/containernetworking/cni/blob/master/SPEC.md#well-known-error-codes const ( diff --git a/src/runtime/vendor/github.com/containernetworking/cni/pkg/version/conf.go b/src/runtime/vendor/github.com/containernetworking/cni/pkg/version/conf.go index 3cca58bbe..808c33b83 100644 --- a/src/runtime/vendor/github.com/containernetworking/cni/pkg/version/conf.go +++ b/src/runtime/vendor/github.com/containernetworking/cni/pkg/version/conf.go @@ -15,23 +15,12 @@ package version import ( - "encoding/json" - "fmt" + "github.com/containernetworking/cni/pkg/types/create" ) // ConfigDecoder can decode the CNI version available in network config data type ConfigDecoder struct{} func (*ConfigDecoder) Decode(jsonBytes []byte) (string, error) { - var conf struct { - CNIVersion string `json:"cniVersion"` - } - err := json.Unmarshal(jsonBytes, &conf) - if err != nil { - return "", fmt.Errorf("decoding version from network config: %s", err) - } - if conf.CNIVersion == "" { - return "0.1.0", nil - } - return conf.CNIVersion, nil + return create.DecodeVersion(jsonBytes) } diff --git a/src/runtime/vendor/github.com/containernetworking/cni/pkg/version/plugin.go b/src/runtime/vendor/github.com/containernetworking/cni/pkg/version/plugin.go index 1df427243..d4bc9d169 100644 --- a/src/runtime/vendor/github.com/containernetworking/cni/pkg/version/plugin.go +++ b/src/runtime/vendor/github.com/containernetworking/cni/pkg/version/plugin.go @@ -68,7 +68,7 @@ func (*PluginDecoder) Decode(jsonBytes []byte) (PluginInfo, error) { var info pluginInfo err := json.Unmarshal(jsonBytes, &info) if err != nil { - return nil, fmt.Errorf("decoding version info: %s", err) + return nil, fmt.Errorf("decoding version info: %w", err) } if info.CNIVersion_ == "" { return nil, fmt.Errorf("decoding version info: missing field cniVersion") @@ -97,20 +97,20 @@ func ParseVersion(version string) (int, int, int, error) { major, err := strconv.Atoi(parts[0]) if err != nil { - return -1, -1, -1, fmt.Errorf("failed to convert major version part %q: %v", parts[0], err) + return -1, -1, -1, fmt.Errorf("failed to convert major version part %q: %w", parts[0], err) } if len(parts) >= 2 { minor, err = strconv.Atoi(parts[1]) if err != nil { - return -1, -1, -1, fmt.Errorf("failed to convert minor version part %q: %v", parts[1], err) + return -1, -1, -1, fmt.Errorf("failed to convert minor version part %q: %w", parts[1], err) } } if len(parts) >= 3 { micro, err = strconv.Atoi(parts[2]) if err != nil { - return -1, -1, -1, fmt.Errorf("failed to convert micro version part %q: %v", parts[2], err) + return -1, -1, -1, fmt.Errorf("failed to convert micro version part %q: %w", parts[2], err) } } diff --git a/src/runtime/vendor/github.com/containernetworking/cni/pkg/version/version.go b/src/runtime/vendor/github.com/containernetworking/cni/pkg/version/version.go index 8f3508e61..1326f8038 100644 --- a/src/runtime/vendor/github.com/containernetworking/cni/pkg/version/version.go +++ b/src/runtime/vendor/github.com/containernetworking/cni/pkg/version/version.go @@ -19,13 +19,13 @@ import ( "fmt" "github.com/containernetworking/cni/pkg/types" - "github.com/containernetworking/cni/pkg/types/020" - "github.com/containernetworking/cni/pkg/types/current" + types100 "github.com/containernetworking/cni/pkg/types/100" + "github.com/containernetworking/cni/pkg/types/create" ) // Current reports the version of the CNI spec implemented by this library func Current() string { - return "0.4.0" + return types100.ImplementedSpecVersion } // Legacy PluginInfo describes a plugin that is backwards compatible with the @@ -36,29 +36,28 @@ func Current() string { // Any future CNI spec versions which meet this definition should be added to // this list. var Legacy = PluginSupports("0.1.0", "0.2.0") -var All = PluginSupports("0.1.0", "0.2.0", "0.3.0", "0.3.1", "0.4.0") +var All = PluginSupports("0.1.0", "0.2.0", "0.3.0", "0.3.1", "0.4.0", "1.0.0") -var resultFactories = []struct { - supportedVersions []string - newResult types.ResultFactoryFunc -}{ - {current.SupportedVersions, current.NewResult}, - {types020.SupportedVersions, types020.NewResult}, +// VersionsFrom returns a list of versions starting from min, inclusive +func VersionsStartingFrom(min string) PluginInfo { + out := []string{} + // cheat, just assume ordered + ok := false + for _, v := range All.SupportedVersions() { + if !ok && v == min { + ok = true + } + if ok { + out = append(out, v) + } + } + return PluginSupports(out...) } // Finds a Result object matching the requested version (if any) and asks // that object to parse the plugin result, returning an error if parsing failed. func NewResult(version string, resultBytes []byte) (types.Result, error) { - reconciler := &Reconciler{} - for _, resultFactory := range resultFactories { - err := reconciler.CheckRaw(version, resultFactory.supportedVersions) - if err == nil { - // Result supports this version - return resultFactory.newResult(resultBytes) - } - } - - return nil, fmt.Errorf("unsupported CNI result version %q", version) + return create.Create(version, resultBytes) } // ParsePrevResult parses a prevResult in a NetConf structure and sets @@ -68,15 +67,22 @@ func ParsePrevResult(conf *types.NetConf) error { return nil } + // Prior to 1.0.0, Result types may not marshal a CNIVersion. Since the + // result version must match the config version, if the Result's version + // is empty, inject the config version. + if ver, ok := conf.RawPrevResult["CNIVersion"]; !ok || ver == "" { + conf.RawPrevResult["CNIVersion"] = conf.CNIVersion + } + resultBytes, err := json.Marshal(conf.RawPrevResult) if err != nil { - return fmt.Errorf("could not serialize prevResult: %v", err) + return fmt.Errorf("could not serialize prevResult: %w", err) } conf.RawPrevResult = nil - conf.PrevResult, err = NewResult(conf.CNIVersion, resultBytes) + conf.PrevResult, err = create.Create(conf.CNIVersion, resultBytes) if err != nil { - return fmt.Errorf("could not parse prevResult: %v", err) + return fmt.Errorf("could not parse prevResult: %w", err) } return nil diff --git a/src/runtime/vendor/github.com/containernetworking/plugins/pkg/testutils/ping.go b/src/runtime/vendor/github.com/containernetworking/plugins/pkg/testutils/ping.go index 5ee9db1c4..8c47c3d7a 100644 --- a/src/runtime/vendor/github.com/containernetworking/plugins/pkg/testutils/ping.go +++ b/src/runtime/vendor/github.com/containernetworking/plugins/pkg/testutils/ping.go @@ -17,13 +17,24 @@ package testutils import ( "bytes" "fmt" + "net" "os/exec" "strconv" "syscall" ) // Ping shells out to the `ping` command. Returns nil if successful. -func Ping(saddr, daddr string, isV6 bool, timeoutSec int) error { +func Ping(saddr, daddr string, timeoutSec int) error { + ip := net.ParseIP(saddr) + if ip == nil { + return fmt.Errorf("failed to parse IP %q", saddr) + } + + bin := "ping6" + if ip.To4() != nil { + bin = "ping" + } + args := []string{ "-c", "1", "-W", strconv.Itoa(timeoutSec), @@ -31,11 +42,6 @@ func Ping(saddr, daddr string, isV6 bool, timeoutSec int) error { daddr, } - bin := "ping" - if isV6 { - bin = "ping6" - } - cmd := exec.Command(bin, args...) var stderr bytes.Buffer cmd.Stderr = &stderr diff --git a/src/runtime/vendor/github.com/containernetworking/plugins/pkg/testutils/testing.go b/src/runtime/vendor/github.com/containernetworking/plugins/pkg/testutils/testing.go new file mode 100644 index 000000000..9444a8b2d --- /dev/null +++ b/src/runtime/vendor/github.com/containernetworking/plugins/pkg/testutils/testing.go @@ -0,0 +1,54 @@ +// Copyright 2016 CNI authors +// +// 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. + +package testutils + +import ( + "github.com/containernetworking/cni/pkg/version" +) + +// AllSpecVersions contains all CNI spec version numbers +var AllSpecVersions = [...]string{"0.1.0", "0.2.0", "0.3.0", "0.3.1", "0.4.0", "1.0.0"} + +// SpecVersionHasIPVersion returns true if the given CNI specification version +// includes the "version" field in the IP address elements +func SpecVersionHasIPVersion(ver string) bool { + for _, i := range []string{"0.3.0", "0.3.1", "0.4.0"} { + if ver == i { + return true + } + } + return false +} + +// SpecVersionHasCHECK returns true if the given CNI specification version +// supports the CHECK command +func SpecVersionHasCHECK(ver string) bool { + ok, _ := version.GreaterThanOrEqualTo(ver, "0.4.0") + return ok +} + +// SpecVersionHasChaining returns true if the given CNI specification version +// supports plugin chaining +func SpecVersionHasChaining(ver string) bool { + ok, _ := version.GreaterThanOrEqualTo(ver, "0.3.0") + return ok +} + +// SpecVersionHasMultipleIPs returns true if the given CNI specification version +// supports more than one IP address of each family +func SpecVersionHasMultipleIPs(ver string) bool { + ok, _ := version.GreaterThanOrEqualTo(ver, "0.3.0") + return ok +} diff --git a/src/runtime/vendor/github.com/docker/go-events/.gitignore b/src/runtime/vendor/github.com/docker/go-events/.gitignore new file mode 100644 index 000000000..daf913b1b --- /dev/null +++ b/src/runtime/vendor/github.com/docker/go-events/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/src/runtime/vendor/github.com/docker/go-events/CONTRIBUTING.md b/src/runtime/vendor/github.com/docker/go-events/CONTRIBUTING.md new file mode 100644 index 000000000..d813af779 --- /dev/null +++ b/src/runtime/vendor/github.com/docker/go-events/CONTRIBUTING.md @@ -0,0 +1,70 @@ +# Contributing to Docker open source projects + +Want to hack on go-events? Awesome! Here are instructions to get you started. + +go-events is part of the [Docker](https://www.docker.com) project, and +follows the same rules and principles. If you're already familiar with the way +Docker does things, you'll feel right at home. + +Otherwise, go read Docker's +[contributions guidelines](https://github.com/docker/docker/blob/master/CONTRIBUTING.md), +[issue triaging](https://github.com/docker/docker/blob/master/project/ISSUE-TRIAGE.md), +[review process](https://github.com/docker/docker/blob/master/project/REVIEWING.md) and +[branches and tags](https://github.com/docker/docker/blob/master/project/BRANCHES-AND-TAGS.md). + +For an in-depth description of our contribution process, visit the +contributors guide: [Understand how to contribute](https://docs.docker.com/opensource/workflow/make-a-contribution/) + +### Sign your work + +The sign-off is a simple line at the end of the explanation for the patch. Your +signature certifies that you wrote the patch or otherwise have the right to pass +it on as an open-source patch. The rules are pretty simple: if you can certify +the below (from [developercertificate.org](http://developercertificate.org/)): + +``` +Developer Certificate of Origin +Version 1.1 + +Copyright (C) 2004, 2006 The Linux Foundation and its contributors. +660 York Street, Suite 102, +San Francisco, CA 94110 USA + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + +Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +(b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +(c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +(d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. +``` + +Then you just add a line to every git commit message: + + Signed-off-by: Joe Smith + +Use your real name (sorry, no pseudonyms or anonymous contributions.) + +If you set your `user.name` and `user.email` git configs, you can sign your +commit automatically with `git commit -s`. diff --git a/src/runtime/vendor/github.com/docker/go-events/LICENSE b/src/runtime/vendor/github.com/docker/go-events/LICENSE new file mode 100644 index 000000000..6d630cf59 --- /dev/null +++ b/src/runtime/vendor/github.com/docker/go-events/LICENSE @@ -0,0 +1,201 @@ + 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 + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2016 Docker, 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/src/runtime/vendor/github.com/docker/go-events/MAINTAINERS b/src/runtime/vendor/github.com/docker/go-events/MAINTAINERS new file mode 100644 index 000000000..e414d82e9 --- /dev/null +++ b/src/runtime/vendor/github.com/docker/go-events/MAINTAINERS @@ -0,0 +1,46 @@ +# go-events maintainers file +# +# This file describes who runs the docker/go-events project and how. +# This is a living document - if you see something out of date or missing, speak up! +# +# It is structured to be consumable by both humans and programs. +# To extract its contents programmatically, use any TOML-compliant parser. +# +# This file is compiled into the MAINTAINERS file in docker/opensource. +# +[Org] + [Org."Core maintainers"] + people = [ + "aaronlehmann", + "aluzzardi", + "lk4d4", + "stevvooe", + ] + +[people] + +# A reference list of all people associated with the project. +# All other sections should refer to people by their canonical key +# in the people section. + + # ADD YOURSELF HERE IN ALPHABETICAL ORDER + + [people.aaronlehmann] + Name = "Aaron Lehmann" + Email = "aaron.lehmann@docker.com" + GitHub = "aaronlehmann" + + [people.aluzzardi] + Name = "Andrea Luzzardi" + Email = "al@docker.com" + GitHub = "aluzzardi" + + [people.lk4d4] + Name = "Alexander Morozov" + Email = "lk4d4@docker.com" + GitHub = "lk4d4" + + [people.stevvooe] + Name = "Stephen Day" + Email = "stephen.day@docker.com" + GitHub = "stevvooe" diff --git a/src/runtime/vendor/github.com/docker/go-events/README.md b/src/runtime/vendor/github.com/docker/go-events/README.md new file mode 100644 index 000000000..0acafc279 --- /dev/null +++ b/src/runtime/vendor/github.com/docker/go-events/README.md @@ -0,0 +1,117 @@ +# Docker Events Package + +[![GoDoc](https://godoc.org/github.com/docker/go-events?status.svg)](https://godoc.org/github.com/docker/go-events) +[![Circle CI](https://circleci.com/gh/docker/go-events.svg?style=shield)](https://circleci.com/gh/docker/go-events) + +The Docker `events` package implements a composable event distribution package +for Go. + +Originally created to implement the [notifications in Docker Registry +2](https://github.com/docker/distribution/blob/master/docs/notifications.md), +we've found the pattern to be useful in other applications. This package is +most of the same code with slightly updated interfaces. Much of the internals +have been made available. + +## Usage + +The `events` package centers around a `Sink` type. Events are written with +calls to `Sink.Write(event Event)`. Sinks can be wired up in various +configurations to achieve interesting behavior. + +The canonical example is that employed by the +[docker/distribution/notifications](https://godoc.org/github.com/docker/distribution/notifications) +package. Let's say we have a type `httpSink` where we'd like to queue +notifications. As a rule, it should send a single http request and return an +error if it fails: + +```go +func (h *httpSink) Write(event Event) error { + p, err := json.Marshal(event) + if err != nil { + return err + } + body := bytes.NewReader(p) + resp, err := h.client.Post(h.url, "application/json", body) + if err != nil { + return err + } + defer resp.Body.Close() + + if resp.Status != 200 { + return errors.New("unexpected status") + } + + return nil +} + +// implement (*httpSink).Close() +``` + +With just that, we can start using components from this package. One can call +`(*httpSink).Write` to send events as the body of a post request to a +configured URL. + +### Retries + +HTTP can be unreliable. The first feature we'd like is to have some retry: + +```go +hs := newHTTPSink(/*...*/) +retry := NewRetryingSink(hs, NewBreaker(5, time.Second)) +``` + +We now have a sink that will retry events against the `httpSink` until they +succeed. The retry will backoff for one second after 5 consecutive failures +using the breaker strategy. + +### Queues + +This isn't quite enough. We we want a sink that doesn't block while we are +waiting for events to be sent. Let's add a `Queue`: + +```go +queue := NewQueue(retry) +``` + +Now, we have an unbounded queue that will work through all events sent with +`(*Queue).Write`. Events can be added asynchronously to the queue without +blocking the current execution path. This is ideal for use in an http request. + +### Broadcast + +It usually turns out that you want to send to more than one listener. We can +use `Broadcaster` to support this: + +```go +var broadcast = NewBroadcaster() // make it available somewhere in your application. +broadcast.Add(queue) // add your queue! +broadcast.Add(queue2) // and another! +``` + +With the above, we can now call `broadcast.Write` in our http handlers and have +all the events distributed to each queue. Because the events are queued, not +listener blocks another. + +### Extending + +For the most part, the above is sufficient for a lot of applications. However, +extending the above functionality can be done implementing your own `Sink`. The +behavior and semantics of the sink can be completely dependent on the +application requirements. The interface is provided below for reference: + +```go +type Sink { + Write(Event) error + Close() error +} +``` + +Application behavior can be controlled by how `Write` behaves. The examples +above are designed to queue the message and return as quickly as possible. +Other implementations may block until the event is committed to durable +storage. + +## Copyright and license + +Copyright © 2016 Docker, Inc. go-events is licensed under the Apache License, +Version 2.0. See [LICENSE](LICENSE) for the full license text. diff --git a/src/runtime/vendor/github.com/docker/go-events/broadcast.go b/src/runtime/vendor/github.com/docker/go-events/broadcast.go new file mode 100644 index 000000000..5120078df --- /dev/null +++ b/src/runtime/vendor/github.com/docker/go-events/broadcast.go @@ -0,0 +1,178 @@ +package events + +import ( + "fmt" + "sync" + + "github.com/sirupsen/logrus" +) + +// Broadcaster sends events to multiple, reliable Sinks. The goal of this +// component is to dispatch events to configured endpoints. Reliability can be +// provided by wrapping incoming sinks. +type Broadcaster struct { + sinks []Sink + events chan Event + adds chan configureRequest + removes chan configureRequest + + shutdown chan struct{} + closed chan struct{} + once sync.Once +} + +// NewBroadcaster appends one or more sinks to the list of sinks. The +// broadcaster behavior will be affected by the properties of the sink. +// Generally, the sink should accept all messages and deal with reliability on +// its own. Use of EventQueue and RetryingSink should be used here. +func NewBroadcaster(sinks ...Sink) *Broadcaster { + b := Broadcaster{ + sinks: sinks, + events: make(chan Event), + adds: make(chan configureRequest), + removes: make(chan configureRequest), + shutdown: make(chan struct{}), + closed: make(chan struct{}), + } + + // Start the broadcaster + go b.run() + + return &b +} + +// Write accepts an event to be dispatched to all sinks. This method will never +// fail and should never block (hopefully!). The caller cedes the memory to the +// broadcaster and should not modify it after calling write. +func (b *Broadcaster) Write(event Event) error { + select { + case b.events <- event: + case <-b.closed: + return ErrSinkClosed + } + return nil +} + +// Add the sink to the broadcaster. +// +// The provided sink must be comparable with equality. Typically, this just +// works with a regular pointer type. +func (b *Broadcaster) Add(sink Sink) error { + return b.configure(b.adds, sink) +} + +// Remove the provided sink. +func (b *Broadcaster) Remove(sink Sink) error { + return b.configure(b.removes, sink) +} + +type configureRequest struct { + sink Sink + response chan error +} + +func (b *Broadcaster) configure(ch chan configureRequest, sink Sink) error { + response := make(chan error, 1) + + for { + select { + case ch <- configureRequest{ + sink: sink, + response: response}: + ch = nil + case err := <-response: + return err + case <-b.closed: + return ErrSinkClosed + } + } +} + +// Close the broadcaster, ensuring that all messages are flushed to the +// underlying sink before returning. +func (b *Broadcaster) Close() error { + b.once.Do(func() { + close(b.shutdown) + }) + + <-b.closed + return nil +} + +// run is the main broadcast loop, started when the broadcaster is created. +// Under normal conditions, it waits for events on the event channel. After +// Close is called, this goroutine will exit. +func (b *Broadcaster) run() { + defer close(b.closed) + remove := func(target Sink) { + for i, sink := range b.sinks { + if sink == target { + b.sinks = append(b.sinks[:i], b.sinks[i+1:]...) + break + } + } + } + + for { + select { + case event := <-b.events: + for _, sink := range b.sinks { + if err := sink.Write(event); err != nil { + if err == ErrSinkClosed { + // remove closed sinks + remove(sink) + continue + } + logrus.WithField("event", event).WithField("events.sink", sink).WithError(err). + Errorf("broadcaster: dropping event") + } + } + case request := <-b.adds: + // while we have to iterate for add/remove, common iteration for + // send is faster against slice. + + var found bool + for _, sink := range b.sinks { + if request.sink == sink { + found = true + break + } + } + + if !found { + b.sinks = append(b.sinks, request.sink) + } + // b.sinks[request.sink] = struct{}{} + request.response <- nil + case request := <-b.removes: + remove(request.sink) + request.response <- nil + case <-b.shutdown: + // close all the underlying sinks + for _, sink := range b.sinks { + if err := sink.Close(); err != nil && err != ErrSinkClosed { + logrus.WithField("events.sink", sink).WithError(err). + Errorf("broadcaster: closing sink failed") + } + } + return + } + } +} + +func (b *Broadcaster) String() string { + // Serialize copy of this broadcaster without the sync.Once, to avoid + // a data race. + + b2 := map[string]interface{}{ + "sinks": b.sinks, + "events": b.events, + "adds": b.adds, + "removes": b.removes, + + "shutdown": b.shutdown, + "closed": b.closed, + } + + return fmt.Sprint(b2) +} diff --git a/src/runtime/vendor/github.com/docker/go-events/channel.go b/src/runtime/vendor/github.com/docker/go-events/channel.go new file mode 100644 index 000000000..802cf51ff --- /dev/null +++ b/src/runtime/vendor/github.com/docker/go-events/channel.go @@ -0,0 +1,61 @@ +package events + +import ( + "fmt" + "sync" +) + +// Channel provides a sink that can be listened on. The writer and channel +// listener must operate in separate goroutines. +// +// Consumers should listen on Channel.C until Closed is closed. +type Channel struct { + C chan Event + + closed chan struct{} + once sync.Once +} + +// NewChannel returns a channel. If buffer is zero, the channel is +// unbuffered. +func NewChannel(buffer int) *Channel { + return &Channel{ + C: make(chan Event, buffer), + closed: make(chan struct{}), + } +} + +// Done returns a channel that will always proceed once the sink is closed. +func (ch *Channel) Done() chan struct{} { + return ch.closed +} + +// Write the event to the channel. Must be called in a separate goroutine from +// the listener. +func (ch *Channel) Write(event Event) error { + select { + case ch.C <- event: + return nil + case <-ch.closed: + return ErrSinkClosed + } +} + +// Close the channel sink. +func (ch *Channel) Close() error { + ch.once.Do(func() { + close(ch.closed) + }) + + return nil +} + +func (ch *Channel) String() string { + // Serialize a copy of the Channel that doesn't contain the sync.Once, + // to avoid a data race. + ch2 := map[string]interface{}{ + "C": ch.C, + "closed": ch.closed, + } + return fmt.Sprint(ch2) +} diff --git a/src/runtime/vendor/github.com/docker/go-events/errors.go b/src/runtime/vendor/github.com/docker/go-events/errors.go new file mode 100644 index 000000000..56db7c251 --- /dev/null +++ b/src/runtime/vendor/github.com/docker/go-events/errors.go @@ -0,0 +1,10 @@ +package events + +import "fmt" + +var ( + // ErrSinkClosed is returned if a write is issued to a sink that has been + // closed. If encountered, the error should be considered terminal and + // retries will not be successful. + ErrSinkClosed = fmt.Errorf("events: sink closed") +) diff --git a/src/runtime/vendor/github.com/docker/go-events/event.go b/src/runtime/vendor/github.com/docker/go-events/event.go new file mode 100644 index 000000000..f0f1d9ea5 --- /dev/null +++ b/src/runtime/vendor/github.com/docker/go-events/event.go @@ -0,0 +1,15 @@ +package events + +// Event marks items that can be sent as events. +type Event interface{} + +// Sink accepts and sends events. +type Sink interface { + // Write an event to the Sink. If no error is returned, the caller will + // assume that all events have been committed to the sink. If an error is + // received, the caller may retry sending the event. + Write(event Event) error + + // Close the sink, possibly waiting for pending events to flush. + Close() error +} diff --git a/src/runtime/vendor/github.com/docker/go-events/filter.go b/src/runtime/vendor/github.com/docker/go-events/filter.go new file mode 100644 index 000000000..e6c0eb69d --- /dev/null +++ b/src/runtime/vendor/github.com/docker/go-events/filter.go @@ -0,0 +1,52 @@ +package events + +// Matcher matches events. +type Matcher interface { + Match(event Event) bool +} + +// MatcherFunc implements matcher with just a function. +type MatcherFunc func(event Event) bool + +// Match calls the wrapped function. +func (fn MatcherFunc) Match(event Event) bool { + return fn(event) +} + +// Filter provides an event sink that sends only events that are accepted by a +// Matcher. No methods on filter are goroutine safe. +type Filter struct { + dst Sink + matcher Matcher + closed bool +} + +// NewFilter returns a new filter that will send to events to dst that return +// true for Matcher. +func NewFilter(dst Sink, matcher Matcher) Sink { + return &Filter{dst: dst, matcher: matcher} +} + +// Write an event to the filter. +func (f *Filter) Write(event Event) error { + if f.closed { + return ErrSinkClosed + } + + if f.matcher.Match(event) { + return f.dst.Write(event) + } + + return nil +} + +// Close the filter and allow no more events to pass through. +func (f *Filter) Close() error { + // TODO(stevvooe): Not all sinks should have Close. + if f.closed { + return nil + } + + f.closed = true + return f.dst.Close() +} diff --git a/src/runtime/vendor/github.com/docker/go-events/queue.go b/src/runtime/vendor/github.com/docker/go-events/queue.go new file mode 100644 index 000000000..4bb770afc --- /dev/null +++ b/src/runtime/vendor/github.com/docker/go-events/queue.go @@ -0,0 +1,111 @@ +package events + +import ( + "container/list" + "sync" + + "github.com/sirupsen/logrus" +) + +// Queue accepts all messages into a queue for asynchronous consumption +// by a sink. It is unbounded and thread safe but the sink must be reliable or +// events will be dropped. +type Queue struct { + dst Sink + events *list.List + cond *sync.Cond + mu sync.Mutex + closed bool +} + +// NewQueue returns a queue to the provided Sink dst. +func NewQueue(dst Sink) *Queue { + eq := Queue{ + dst: dst, + events: list.New(), + } + + eq.cond = sync.NewCond(&eq.mu) + go eq.run() + return &eq +} + +// Write accepts the events into the queue, only failing if the queue has +// been closed. +func (eq *Queue) Write(event Event) error { + eq.mu.Lock() + defer eq.mu.Unlock() + + if eq.closed { + return ErrSinkClosed + } + + eq.events.PushBack(event) + eq.cond.Signal() // signal waiters + + return nil +} + +// Close shutsdown the event queue, flushing +func (eq *Queue) Close() error { + eq.mu.Lock() + defer eq.mu.Unlock() + + if eq.closed { + return nil + } + + // set closed flag + eq.closed = true + eq.cond.Signal() // signal flushes queue + eq.cond.Wait() // wait for signal from last flush + return eq.dst.Close() +} + +// run is the main goroutine to flush events to the target sink. +func (eq *Queue) run() { + for { + event := eq.next() + + if event == nil { + return // nil block means event queue is closed. + } + + if err := eq.dst.Write(event); err != nil { + // TODO(aaronl): Dropping events could be bad depending + // on the application. We should have a way of + // communicating this condition. However, logging + // at a log level above debug may not be appropriate. + // Eventually, go-events should not use logrus at all, + // and should bubble up conditions like this through + // error values. + logrus.WithFields(logrus.Fields{ + "event": event, + "sink": eq.dst, + }).WithError(err).Debug("eventqueue: dropped event") + } + } +} + +// next encompasses the critical section of the run loop. When the queue is +// empty, it will block on the condition. If new data arrives, it will wake +// and return a block. When closed, a nil slice will be returned. +func (eq *Queue) next() Event { + eq.mu.Lock() + defer eq.mu.Unlock() + + for eq.events.Len() < 1 { + if eq.closed { + eq.cond.Broadcast() + return nil + } + + eq.cond.Wait() + } + + front := eq.events.Front() + block := front.Value.(Event) + eq.events.Remove(front) + + return block +} diff --git a/src/runtime/vendor/github.com/docker/go-events/retry.go b/src/runtime/vendor/github.com/docker/go-events/retry.go new file mode 100644 index 000000000..b7f0a5422 --- /dev/null +++ b/src/runtime/vendor/github.com/docker/go-events/retry.go @@ -0,0 +1,260 @@ +package events + +import ( + "fmt" + "math/rand" + "sync" + "sync/atomic" + "time" + + "github.com/sirupsen/logrus" +) + +// RetryingSink retries the write until success or an ErrSinkClosed is +// returned. Underlying sink must have p > 0 of succeeding or the sink will +// block. Retry is configured with a RetryStrategy. Concurrent calls to a +// retrying sink are serialized through the sink, meaning that if one is +// in-flight, another will not proceed. +type RetryingSink struct { + sink Sink + strategy RetryStrategy + closed chan struct{} + once sync.Once +} + +// NewRetryingSink returns a sink that will retry writes to a sink, backing +// off on failure. Parameters threshold and backoff adjust the behavior of the +// circuit breaker. +func NewRetryingSink(sink Sink, strategy RetryStrategy) *RetryingSink { + rs := &RetryingSink{ + sink: sink, + strategy: strategy, + closed: make(chan struct{}), + } + + return rs +} + +// Write attempts to flush the events to the downstream sink until it succeeds +// or the sink is closed. +func (rs *RetryingSink) Write(event Event) error { + logger := logrus.WithField("event", event) + +retry: + select { + case <-rs.closed: + return ErrSinkClosed + default: + } + + if backoff := rs.strategy.Proceed(event); backoff > 0 { + select { + case <-time.After(backoff): + // TODO(stevvooe): This branch holds up the next try. Before, we + // would simply break to the "retry" label and then possibly wait + // again. However, this requires all retry strategies to have a + // large probability of probing the sync for success, rather than + // just backing off and sending the request. + case <-rs.closed: + return ErrSinkClosed + } + } + + if err := rs.sink.Write(event); err != nil { + if err == ErrSinkClosed { + // terminal! + return err + } + + logger := logger.WithError(err) // shadow!! + + if rs.strategy.Failure(event, err) { + logger.Errorf("retryingsink: dropped event") + return nil + } + + logger.Errorf("retryingsink: error writing event, retrying") + goto retry + } + + rs.strategy.Success(event) + return nil +} + +// Close closes the sink and the underlying sink. +func (rs *RetryingSink) Close() error { + rs.once.Do(func() { + close(rs.closed) + }) + + return nil +} + +func (rs *RetryingSink) String() string { + // Serialize a copy of the RetryingSink without the sync.Once, to avoid + // a data race. + rs2 := map[string]interface{}{ + "sink": rs.sink, + "strategy": rs.strategy, + "closed": rs.closed, + } + return fmt.Sprint(rs2) +} + +// RetryStrategy defines a strategy for retrying event sink writes. +// +// All methods should be goroutine safe. +type RetryStrategy interface { + // Proceed is called before every event send. If proceed returns a + // positive, non-zero integer, the retryer will back off by the provided + // duration. + // + // An event is provided, by may be ignored. + Proceed(event Event) time.Duration + + // Failure reports a failure to the strategy. If this method returns true, + // the event should be dropped. + Failure(event Event, err error) bool + + // Success should be called when an event is sent successfully. + Success(event Event) +} + +// Breaker implements a circuit breaker retry strategy. +// +// The current implementation never drops events. +type Breaker struct { + threshold int + recent int + last time.Time + backoff time.Duration // time after which we retry after failure. + mu sync.Mutex +} + +var _ RetryStrategy = &Breaker{} + +// NewBreaker returns a breaker that will backoff after the threshold has been +// tripped. A Breaker is thread safe and may be shared by many goroutines. +func NewBreaker(threshold int, backoff time.Duration) *Breaker { + return &Breaker{ + threshold: threshold, + backoff: backoff, + } +} + +// Proceed checks the failures against the threshold. +func (b *Breaker) Proceed(event Event) time.Duration { + b.mu.Lock() + defer b.mu.Unlock() + + if b.recent < b.threshold { + return 0 + } + + return b.last.Add(b.backoff).Sub(time.Now()) +} + +// Success resets the breaker. +func (b *Breaker) Success(event Event) { + b.mu.Lock() + defer b.mu.Unlock() + + b.recent = 0 + b.last = time.Time{} +} + +// Failure records the failure and latest failure time. +func (b *Breaker) Failure(event Event, err error) bool { + b.mu.Lock() + defer b.mu.Unlock() + + b.recent++ + b.last = time.Now().UTC() + return false // never drop events. +} + +var ( + // DefaultExponentialBackoffConfig provides a default configuration for + // exponential backoff. + DefaultExponentialBackoffConfig = ExponentialBackoffConfig{ + Base: time.Second, + Factor: time.Second, + Max: 20 * time.Second, + } +) + +// ExponentialBackoffConfig configures backoff parameters. +// +// Note that these parameters operate on the upper bound for choosing a random +// value. For example, at Base=1s, a random value in [0,1s) will be chosen for +// the backoff value. +type ExponentialBackoffConfig struct { + // Base is the minimum bound for backing off after failure. + Base time.Duration + + // Factor sets the amount of time by which the backoff grows with each + // failure. + Factor time.Duration + + // Max is the absolute maxiumum bound for a single backoff. + Max time.Duration +} + +// ExponentialBackoff implements random backoff with exponentially increasing +// bounds as the number consecutive failures increase. +type ExponentialBackoff struct { + failures uint64 // consecutive failure counter (needs to be 64-bit aligned) + config ExponentialBackoffConfig +} + +// NewExponentialBackoff returns an exponential backoff strategy with the +// desired config. If config is nil, the default is returned. +func NewExponentialBackoff(config ExponentialBackoffConfig) *ExponentialBackoff { + return &ExponentialBackoff{ + config: config, + } +} + +// Proceed returns the next randomly bound exponential backoff time. +func (b *ExponentialBackoff) Proceed(event Event) time.Duration { + return b.backoff(atomic.LoadUint64(&b.failures)) +} + +// Success resets the failures counter. +func (b *ExponentialBackoff) Success(event Event) { + atomic.StoreUint64(&b.failures, 0) +} + +// Failure increments the failure counter. +func (b *ExponentialBackoff) Failure(event Event, err error) bool { + atomic.AddUint64(&b.failures, 1) + return false +} + +// backoff calculates the amount of time to wait based on the number of +// consecutive failures. +func (b *ExponentialBackoff) backoff(failures uint64) time.Duration { + if failures <= 0 { + // proceed normally when there are no failures. + return 0 + } + + factor := b.config.Factor + if factor <= 0 { + factor = DefaultExponentialBackoffConfig.Factor + } + + backoff := b.config.Base + factor*time.Duration(1<<(failures-1)) + + max := b.config.Max + if max <= 0 { + max = DefaultExponentialBackoffConfig.Max + } + + if backoff > max || backoff < 0 { + backoff = max + } + + // Choose a uniformly distributed value from [0, backoff). + return time.Duration(rand.Int63n(int64(backoff))) +} diff --git a/src/runtime/vendor/github.com/go-openapi/jsonpointer/.travis.yml b/src/runtime/vendor/github.com/go-openapi/jsonpointer/.travis.yml index 9aef9184e..03a22fe06 100644 --- a/src/runtime/vendor/github.com/go-openapi/jsonpointer/.travis.yml +++ b/src/runtime/vendor/github.com/go-openapi/jsonpointer/.travis.yml @@ -1,8 +1,8 @@ after_success: - bash <(curl -s https://codecov.io/bash) go: -- 1.11.x -- 1.12.x +- 1.14.x +- 1.15.x install: - GO111MODULE=off go get -u gotest.tools/gotestsum env: diff --git a/src/runtime/vendor/github.com/go-openapi/jsonpointer/pointer.go b/src/runtime/vendor/github.com/go-openapi/jsonpointer/pointer.go index b284eb77a..7df9853de 100644 --- a/src/runtime/vendor/github.com/go-openapi/jsonpointer/pointer.go +++ b/src/runtime/vendor/github.com/go-openapi/jsonpointer/pointer.go @@ -114,16 +114,16 @@ func getSingleImpl(node interface{}, decodedToken string, nameProvider *swag.Nam rValue := reflect.Indirect(reflect.ValueOf(node)) kind := rValue.Kind() - switch kind { - - case reflect.Struct: - if rValue.Type().Implements(jsonPointableType) { - r, err := node.(JSONPointable).JSONLookup(decodedToken) - if err != nil { - return nil, kind, err - } - return r, kind, nil + if rValue.Type().Implements(jsonPointableType) { + r, err := node.(JSONPointable).JSONLookup(decodedToken) + if err != nil { + return nil, kind, err } + return r, kind, nil + } + + switch kind { + case reflect.Struct: nm, ok := nameProvider.GetGoNameForType(rValue.Type(), decodedToken) if !ok { return nil, kind, fmt.Errorf("object has no field %q", decodedToken) @@ -161,17 +161,17 @@ func getSingleImpl(node interface{}, decodedToken string, nameProvider *swag.Nam func setSingleImpl(node, data interface{}, decodedToken string, nameProvider *swag.NameProvider) error { rValue := reflect.Indirect(reflect.ValueOf(node)) + + if ns, ok := node.(JSONSetable); ok { // pointer impl + return ns.JSONSet(decodedToken, data) + } + + if rValue.Type().Implements(jsonSetableType) { + return node.(JSONSetable).JSONSet(decodedToken, data) + } + switch rValue.Kind() { - case reflect.Struct: - if ns, ok := node.(JSONSetable); ok { // pointer impl - return ns.JSONSet(decodedToken, data) - } - - if rValue.Type().Implements(jsonSetableType) { - return node.(JSONSetable).JSONSet(decodedToken, data) - } - nm, ok := nameProvider.GetGoNameForType(rValue.Type(), decodedToken) if !ok { return fmt.Errorf("object has no field %q", decodedToken) @@ -270,22 +270,22 @@ func (p *Pointer) set(node, data interface{}, nameProvider *swag.NameProvider) e rValue := reflect.Indirect(reflect.ValueOf(node)) kind := rValue.Kind() - switch kind { - - case reflect.Struct: - if rValue.Type().Implements(jsonPointableType) { - r, err := node.(JSONPointable).JSONLookup(decodedToken) - if err != nil { - return err - } - fld := reflect.ValueOf(r) - if fld.CanAddr() && fld.Kind() != reflect.Interface && fld.Kind() != reflect.Map && fld.Kind() != reflect.Slice && fld.Kind() != reflect.Ptr { - node = fld.Addr().Interface() - continue - } - node = r + if rValue.Type().Implements(jsonPointableType) { + r, err := node.(JSONPointable).JSONLookup(decodedToken) + if err != nil { + return err + } + fld := reflect.ValueOf(r) + if fld.CanAddr() && fld.Kind() != reflect.Interface && fld.Kind() != reflect.Map && fld.Kind() != reflect.Slice && fld.Kind() != reflect.Ptr { + node = fld.Addr().Interface() continue } + node = r + continue + } + + switch kind { + case reflect.Struct: nm, ok := nameProvider.GetGoNameForType(rValue.Type(), decodedToken) if !ok { return fmt.Errorf("object has no field %q", decodedToken) diff --git a/src/runtime/vendor/github.com/go-openapi/jsonreference/.golangci.yml b/src/runtime/vendor/github.com/go-openapi/jsonreference/.golangci.yml new file mode 100644 index 000000000..f9381aee5 --- /dev/null +++ b/src/runtime/vendor/github.com/go-openapi/jsonreference/.golangci.yml @@ -0,0 +1,41 @@ +linters-settings: + govet: + check-shadowing: true + golint: + min-confidence: 0 + gocyclo: + min-complexity: 30 + maligned: + suggest-new: true + dupl: + threshold: 100 + goconst: + min-len: 2 + min-occurrences: 4 +linters: + enable-all: true + disable: + - maligned + - lll + - gochecknoglobals + - godox + - gocognit + - whitespace + - wsl + - funlen + - gochecknoglobals + - gochecknoinits + - scopelint + - wrapcheck + - exhaustivestruct + - exhaustive + - nlreturn + - testpackage + - gci + - gofumpt + - goerr113 + - gomnd + - tparallel + - nestif + - godot + - errorlint diff --git a/src/runtime/vendor/github.com/go-openapi/jsonreference/.travis.yml b/src/runtime/vendor/github.com/go-openapi/jsonreference/.travis.yml index 40b90757d..05482f4b9 100644 --- a/src/runtime/vendor/github.com/go-openapi/jsonreference/.travis.yml +++ b/src/runtime/vendor/github.com/go-openapi/jsonreference/.travis.yml @@ -1,10 +1,19 @@ after_success: - bash <(curl -s https://codecov.io/bash) go: -- 1.11.x -- 1.12.x +- 1.14.x +- 1.x install: -- GO111MODULE=off go get -u gotest.tools/gotestsum +- go get gotest.tools/gotestsum +jobs: + include: + # include linting job, but only for latest go version and amd64 arch + - go: 1.x + arch: amd64 + install: + go get github.com/golangci/golangci-lint/cmd/golangci-lint + script: + - golangci-lint run --new-from-rev master env: - GO111MODULE=on language: go diff --git a/src/runtime/vendor/github.com/go-openapi/jsonreference/README.md b/src/runtime/vendor/github.com/go-openapi/jsonreference/README.md index 66345f4c6..b94753aa5 100644 --- a/src/runtime/vendor/github.com/go-openapi/jsonreference/README.md +++ b/src/runtime/vendor/github.com/go-openapi/jsonreference/README.md @@ -4,7 +4,7 @@ An implementation of JSON Reference - Go language ## Status -Work in progress ( 90% done ) +Feature complete. Stable API ## Dependencies https://github.com/go-openapi/jsonpointer diff --git a/src/runtime/vendor/github.com/go-openapi/jsonreference/go.mod b/src/runtime/vendor/github.com/go-openapi/jsonreference/go.mod index aff1d0163..e6c2ec4d9 100644 --- a/src/runtime/vendor/github.com/go-openapi/jsonreference/go.mod +++ b/src/runtime/vendor/github.com/go-openapi/jsonreference/go.mod @@ -6,7 +6,7 @@ require ( github.com/go-openapi/jsonpointer v0.19.3 github.com/stretchr/testify v1.3.0 golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297 // indirect - golang.org/x/text v0.3.2 // indirect + golang.org/x/text v0.3.3 // indirect ) go 1.13 diff --git a/src/runtime/vendor/github.com/go-openapi/jsonreference/go.sum b/src/runtime/vendor/github.com/go-openapi/jsonreference/go.sum index c7ceab580..b37f873e5 100644 --- a/src/runtime/vendor/github.com/go-openapi/jsonreference/go.sum +++ b/src/runtime/vendor/github.com/go-openapi/jsonreference/go.sum @@ -5,12 +5,8 @@ github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdko 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/go-openapi/jsonpointer v0.19.2 h1:A9+F4Dc/MCNB5jibxf6rRvOvR/iFgQdyNx9eIhnGqq0= -github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= github.com/go-openapi/jsonpointer v0.19.3 h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/swag v0.19.2 h1:jvO6bCMBEilGwMfHhrd61zIID4oIFdwb76V17SM88dE= -github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= @@ -28,14 +24,12 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980 h1:dfGZHvZk057jK2MCeWus/TowKpJ8y4AmooUzdBSR9GU= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297 h1:k7pJ2yAPLPgbskkFdhRCsA77k2fySZ1zf2zCjvQCiIM= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= diff --git a/src/runtime/vendor/github.com/go-openapi/swag/.golangci.yml b/src/runtime/vendor/github.com/go-openapi/swag/.golangci.yml index 625c3d6af..813c47aa6 100644 --- a/src/runtime/vendor/github.com/go-openapi/swag/.golangci.yml +++ b/src/runtime/vendor/github.com/go-openapi/swag/.golangci.yml @@ -20,3 +20,20 @@ linters: - lll - gochecknoinits - gochecknoglobals + - nlreturn + - testpackage + - wrapcheck + - gomnd + - exhaustive + - exhaustivestruct + - goerr113 + - wsl + - whitespace + - gofumpt + - godot + - nestif + - godox + - funlen + - gci + - gocognit + - paralleltest diff --git a/src/runtime/vendor/github.com/go-openapi/swag/.travis.yml b/src/runtime/vendor/github.com/go-openapi/swag/.travis.yml index aa26d8763..fc25a8872 100644 --- a/src/runtime/vendor/github.com/go-openapi/swag/.travis.yml +++ b/src/runtime/vendor/github.com/go-openapi/swag/.travis.yml @@ -1,12 +1,34 @@ after_success: - bash <(curl -s https://codecov.io/bash) go: -- 1.11.x -- 1.12.x +- 1.14.x +- 1.x +arch: +- amd64 +jobs: + include: + # include arch ppc, but only for latest go version - skip testing for race + - go: 1.x + arch: ppc64le + install: ~ + script: + - go test -v + + #- go: 1.x + # arch: arm + # install: ~ + # script: + # - go test -v + + # include linting job, but only for latest go version and amd64 arch + - go: 1.x + arch: amd64 + install: + go get github.com/golangci/golangci-lint/cmd/golangci-lint + script: + - golangci-lint run --new-from-rev master install: - GO111MODULE=off go get -u gotest.tools/gotestsum -env: -- GO111MODULE=on language: go notifications: slack: diff --git a/src/runtime/vendor/github.com/go-openapi/swag/README.md b/src/runtime/vendor/github.com/go-openapi/swag/README.md index eb60ae80a..217f6fa50 100644 --- a/src/runtime/vendor/github.com/go-openapi/swag/README.md +++ b/src/runtime/vendor/github.com/go-openapi/swag/README.md @@ -2,7 +2,6 @@ [![license](http://img.shields.io/badge/license-Apache%20v2-orange.svg)](https://raw.githubusercontent.com/go-openapi/swag/master/LICENSE) [![GoDoc](https://godoc.org/github.com/go-openapi/swag?status.svg)](http://godoc.org/github.com/go-openapi/swag) -[![GolangCI](https://golangci.com/badges/github.com/go-openapi/swag.svg)](https://golangci.com) [![Go Report Card](https://goreportcard.com/badge/github.com/go-openapi/swag)](https://goreportcard.com/report/github.com/go-openapi/swag) Contains a bunch of helper functions for go-openapi and go-swagger projects. diff --git a/src/runtime/vendor/github.com/go-openapi/swag/convert.go b/src/runtime/vendor/github.com/go-openapi/swag/convert.go index 7da35c316..fc085aeb8 100644 --- a/src/runtime/vendor/github.com/go-openapi/swag/convert.go +++ b/src/runtime/vendor/github.com/go-openapi/swag/convert.go @@ -88,7 +88,7 @@ func ConvertFloat64(str string) (float64, error) { return strconv.ParseFloat(str, 64) } -// ConvertInt8 turn a string into int8 boolean +// ConvertInt8 turn a string into an int8 func ConvertInt8(str string) (int8, error) { i, err := strconv.ParseInt(str, 10, 8) if err != nil { @@ -97,7 +97,7 @@ func ConvertInt8(str string) (int8, error) { return int8(i), nil } -// ConvertInt16 turn a string into a int16 +// ConvertInt16 turn a string into an int16 func ConvertInt16(str string) (int16, error) { i, err := strconv.ParseInt(str, 10, 16) if err != nil { @@ -106,7 +106,7 @@ func ConvertInt16(str string) (int16, error) { return int16(i), nil } -// ConvertInt32 turn a string into a int32 +// ConvertInt32 turn a string into an int32 func ConvertInt32(str string) (int32, error) { i, err := strconv.ParseInt(str, 10, 32) if err != nil { @@ -115,12 +115,12 @@ func ConvertInt32(str string) (int32, error) { return int32(i), nil } -// ConvertInt64 turn a string into a int64 +// ConvertInt64 turn a string into an int64 func ConvertInt64(str string) (int64, error) { return strconv.ParseInt(str, 10, 64) } -// ConvertUint8 turn a string into a uint8 +// ConvertUint8 turn a string into an uint8 func ConvertUint8(str string) (uint8, error) { i, err := strconv.ParseUint(str, 10, 8) if err != nil { @@ -129,7 +129,7 @@ func ConvertUint8(str string) (uint8, error) { return uint8(i), nil } -// ConvertUint16 turn a string into a uint16 +// ConvertUint16 turn a string into an uint16 func ConvertUint16(str string) (uint16, error) { i, err := strconv.ParseUint(str, 10, 16) if err != nil { @@ -138,7 +138,7 @@ func ConvertUint16(str string) (uint16, error) { return uint16(i), nil } -// ConvertUint32 turn a string into a uint32 +// ConvertUint32 turn a string into an uint32 func ConvertUint32(str string) (uint32, error) { i, err := strconv.ParseUint(str, 10, 32) if err != nil { @@ -147,7 +147,7 @@ func ConvertUint32(str string) (uint32, error) { return uint32(i), nil } -// ConvertUint64 turn a string into a uint64 +// ConvertUint64 turn a string into an uint64 func ConvertUint64(str string) (uint64, error) { return strconv.ParseUint(str, 10, 64) } diff --git a/src/runtime/vendor/github.com/go-openapi/swag/convert_types.go b/src/runtime/vendor/github.com/go-openapi/swag/convert_types.go index c95e4e78b..c49cc473a 100644 --- a/src/runtime/vendor/github.com/go-openapi/swag/convert_types.go +++ b/src/runtime/vendor/github.com/go-openapi/swag/convert_types.go @@ -181,12 +181,12 @@ func IntValueMap(src map[string]*int) map[string]int { return dst } -// Int32 returns a pointer to of the int64 value passed in. +// Int32 returns a pointer to of the int32 value passed in. func Int32(v int32) *int32 { return &v } -// Int32Value returns the value of the int64 pointer passed in or +// Int32Value returns the value of the int32 pointer passed in or // 0 if the pointer is nil. func Int32Value(v *int32) int32 { if v != nil { @@ -195,7 +195,7 @@ func Int32Value(v *int32) int32 { return 0 } -// Int32Slice converts a slice of int64 values into a slice of +// Int32Slice converts a slice of int32 values into a slice of // int32 pointers func Int32Slice(src []int32) []*int32 { dst := make([]*int32, len(src)) @@ -299,13 +299,80 @@ func Int64ValueMap(src map[string]*int64) map[string]int64 { return dst } -// Uint returns a pouinter to of the uint value passed in. +// Uint16 returns a pointer to of the uint16 value passed in. +func Uint16(v uint16) *uint16 { + return &v +} + +// Uint16Value returns the value of the uint16 pointer passed in or +// 0 if the pointer is nil. +func Uint16Value(v *uint16) uint16 { + if v != nil { + return *v + } + + return 0 +} + +// Uint16Slice converts a slice of uint16 values into a slice of +// uint16 pointers +func Uint16Slice(src []uint16) []*uint16 { + dst := make([]*uint16, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + + return dst +} + +// Uint16ValueSlice converts a slice of uint16 pointers into a slice of +// uint16 values +func Uint16ValueSlice(src []*uint16) []uint16 { + dst := make([]uint16, len(src)) + + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + + return dst +} + +// Uint16Map converts a string map of uint16 values into a string +// map of uint16 pointers +func Uint16Map(src map[string]uint16) map[string]*uint16 { + dst := make(map[string]*uint16) + + for k, val := range src { + v := val + dst[k] = &v + } + + return dst +} + +// Uint16ValueMap converts a string map of uint16 pointers into a string +// map of uint16 values +func Uint16ValueMap(src map[string]*uint16) map[string]uint16 { + dst := make(map[string]uint16) + + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + + return dst +} + +// Uint returns a pointer to of the uint value passed in. func Uint(v uint) *uint { return &v } -// UintValue returns the value of the uint pouinter passed in or -// 0 if the pouinter is nil. +// UintValue returns the value of the uint pointer passed in or +// 0 if the pointer is nil. func UintValue(v *uint) uint { if v != nil { return *v @@ -313,8 +380,8 @@ func UintValue(v *uint) uint { return 0 } -// UintSlice converts a slice of uint values uinto a slice of -// uint pouinters +// UintSlice converts a slice of uint values into a slice of +// uint pointers func UintSlice(src []uint) []*uint { dst := make([]*uint, len(src)) for i := 0; i < len(src); i++ { @@ -323,7 +390,7 @@ func UintSlice(src []uint) []*uint { return dst } -// UintValueSlice converts a slice of uint pouinters uinto a slice of +// UintValueSlice converts a slice of uint pointers into a slice of // uint values func UintValueSlice(src []*uint) []uint { dst := make([]uint, len(src)) @@ -335,8 +402,8 @@ func UintValueSlice(src []*uint) []uint { return dst } -// UintMap converts a string map of uint values uinto a string -// map of uint pouinters +// UintMap converts a string map of uint values into a string +// map of uint pointers func UintMap(src map[string]uint) map[string]*uint { dst := make(map[string]*uint) for k, val := range src { @@ -346,7 +413,7 @@ func UintMap(src map[string]uint) map[string]*uint { return dst } -// UintValueMap converts a string map of uint pouinters uinto a string +// UintValueMap converts a string map of uint pointers into a string // map of uint values func UintValueMap(src map[string]*uint) map[string]uint { dst := make(map[string]uint) @@ -358,13 +425,13 @@ func UintValueMap(src map[string]*uint) map[string]uint { return dst } -// Uint32 returns a pouinter to of the uint64 value passed in. +// Uint32 returns a pointer to of the uint32 value passed in. func Uint32(v uint32) *uint32 { return &v } -// Uint32Value returns the value of the uint64 pouinter passed in or -// 0 if the pouinter is nil. +// Uint32Value returns the value of the uint32 pointer passed in or +// 0 if the pointer is nil. func Uint32Value(v *uint32) uint32 { if v != nil { return *v @@ -372,8 +439,8 @@ func Uint32Value(v *uint32) uint32 { return 0 } -// Uint32Slice converts a slice of uint64 values uinto a slice of -// uint32 pouinters +// Uint32Slice converts a slice of uint32 values into a slice of +// uint32 pointers func Uint32Slice(src []uint32) []*uint32 { dst := make([]*uint32, len(src)) for i := 0; i < len(src); i++ { @@ -382,7 +449,7 @@ func Uint32Slice(src []uint32) []*uint32 { return dst } -// Uint32ValueSlice converts a slice of uint32 pouinters uinto a slice of +// Uint32ValueSlice converts a slice of uint32 pointers into a slice of // uint32 values func Uint32ValueSlice(src []*uint32) []uint32 { dst := make([]uint32, len(src)) @@ -394,8 +461,8 @@ func Uint32ValueSlice(src []*uint32) []uint32 { return dst } -// Uint32Map converts a string map of uint32 values uinto a string -// map of uint32 pouinters +// Uint32Map converts a string map of uint32 values into a string +// map of uint32 pointers func Uint32Map(src map[string]uint32) map[string]*uint32 { dst := make(map[string]*uint32) for k, val := range src { @@ -405,7 +472,7 @@ func Uint32Map(src map[string]uint32) map[string]*uint32 { return dst } -// Uint32ValueMap converts a string map of uint32 pouinters uinto a string +// Uint32ValueMap converts a string map of uint32 pointers into a string // map of uint32 values func Uint32ValueMap(src map[string]*uint32) map[string]uint32 { dst := make(map[string]uint32) @@ -417,13 +484,13 @@ func Uint32ValueMap(src map[string]*uint32) map[string]uint32 { return dst } -// Uint64 returns a pouinter to of the uint64 value passed in. +// Uint64 returns a pointer to of the uint64 value passed in. func Uint64(v uint64) *uint64 { return &v } -// Uint64Value returns the value of the uint64 pouinter passed in or -// 0 if the pouinter is nil. +// Uint64Value returns the value of the uint64 pointer passed in or +// 0 if the pointer is nil. func Uint64Value(v *uint64) uint64 { if v != nil { return *v @@ -431,8 +498,8 @@ func Uint64Value(v *uint64) uint64 { return 0 } -// Uint64Slice converts a slice of uint64 values uinto a slice of -// uint64 pouinters +// Uint64Slice converts a slice of uint64 values into a slice of +// uint64 pointers func Uint64Slice(src []uint64) []*uint64 { dst := make([]*uint64, len(src)) for i := 0; i < len(src); i++ { @@ -441,7 +508,7 @@ func Uint64Slice(src []uint64) []*uint64 { return dst } -// Uint64ValueSlice converts a slice of uint64 pouinters uinto a slice of +// Uint64ValueSlice converts a slice of uint64 pointers into a slice of // uint64 values func Uint64ValueSlice(src []*uint64) []uint64 { dst := make([]uint64, len(src)) @@ -453,8 +520,8 @@ func Uint64ValueSlice(src []*uint64) []uint64 { return dst } -// Uint64Map converts a string map of uint64 values uinto a string -// map of uint64 pouinters +// Uint64Map converts a string map of uint64 values into a string +// map of uint64 pointers func Uint64Map(src map[string]uint64) map[string]*uint64 { dst := make(map[string]*uint64) for k, val := range src { @@ -464,7 +531,7 @@ func Uint64Map(src map[string]uint64) map[string]*uint64 { return dst } -// Uint64ValueMap converts a string map of uint64 pouinters uinto a string +// Uint64ValueMap converts a string map of uint64 pointers into a string // map of uint64 values func Uint64ValueMap(src map[string]*uint64) map[string]uint64 { dst := make(map[string]uint64) @@ -476,6 +543,74 @@ func Uint64ValueMap(src map[string]*uint64) map[string]uint64 { return dst } +// Float32 returns a pointer to of the float32 value passed in. +func Float32(v float32) *float32 { + return &v +} + +// Float32Value returns the value of the float32 pointer passed in or +// 0 if the pointer is nil. +func Float32Value(v *float32) float32 { + if v != nil { + return *v + } + + return 0 +} + +// Float32Slice converts a slice of float32 values into a slice of +// float32 pointers +func Float32Slice(src []float32) []*float32 { + dst := make([]*float32, len(src)) + + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + + return dst +} + +// Float32ValueSlice converts a slice of float32 pointers into a slice of +// float32 values +func Float32ValueSlice(src []*float32) []float32 { + dst := make([]float32, len(src)) + + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + + return dst +} + +// Float32Map converts a string map of float32 values into a string +// map of float32 pointers +func Float32Map(src map[string]float32) map[string]*float32 { + dst := make(map[string]*float32) + + for k, val := range src { + v := val + dst[k] = &v + } + + return dst +} + +// Float32ValueMap converts a string map of float32 pointers into a string +// map of float32 values +func Float32ValueMap(src map[string]*float32) map[string]float32 { + dst := make(map[string]float32) + + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + + return dst +} + // Float64 returns a pointer to of the float64 value passed in. func Float64(v float64) *float64 { return &v diff --git a/src/runtime/vendor/github.com/go-openapi/swag/go.mod b/src/runtime/vendor/github.com/go-openapi/swag/go.mod index 15bbb0822..fb29b65b2 100644 --- a/src/runtime/vendor/github.com/go-openapi/swag/go.mod +++ b/src/runtime/vendor/github.com/go-openapi/swag/go.mod @@ -2,13 +2,17 @@ module github.com/go-openapi/swag require ( github.com/davecgh/go-spew v1.1.1 // indirect - github.com/kr/pretty v0.1.0 // indirect - github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63 - github.com/stretchr/testify v1.3.0 - gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect - gopkg.in/yaml.v2 v2.2.2 + github.com/kr/text v0.2.0 // indirect + github.com/mailru/easyjson v0.7.6 + github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect + github.com/stretchr/testify v1.6.1 + gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect + gopkg.in/yaml.v2 v2.4.0 + gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 // indirect ) replace github.com/golang/lint => golang.org/x/lint v0.0.0-20190409202823-959b441ac422 replace sourcegraph.com/sourcegraph/go-diff => github.com/sourcegraph/go-diff v0.5.1 + +go 1.11 diff --git a/src/runtime/vendor/github.com/go-openapi/swag/go.sum b/src/runtime/vendor/github.com/go-openapi/swag/go.sum index 33469f54a..a45da809a 100644 --- a/src/runtime/vendor/github.com/go-openapi/swag/go.sum +++ b/src/runtime/vendor/github.com/go-openapi/swag/go.sum @@ -1,20 +1,29 @@ +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= 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/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63 h1:nTT4s92Dgz2HlrB2NaMgvlfqHH39OgMhA7z3PK7PGD4= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= 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/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4= 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/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/src/runtime/vendor/github.com/go-openapi/swag/json.go b/src/runtime/vendor/github.com/go-openapi/swag/json.go index edf93d84c..7e9902ca3 100644 --- a/src/runtime/vendor/github.com/go-openapi/swag/json.go +++ b/src/runtime/vendor/github.com/go-openapi/swag/json.go @@ -51,7 +51,7 @@ type ejUnmarshaler interface { UnmarshalEasyJSON(w *jlexer.Lexer) } -// WriteJSON writes json data, prefers finding an appropriate interface to short-circuit the marshaller +// WriteJSON writes json data, prefers finding an appropriate interface to short-circuit the marshaler // so it takes the fastest option available. func WriteJSON(data interface{}) ([]byte, error) { if d, ok := data.(ejMarshaler); ok { @@ -65,8 +65,8 @@ func WriteJSON(data interface{}) ([]byte, error) { return json.Marshal(data) } -// ReadJSON reads json data, prefers finding an appropriate interface to short-circuit the unmarshaller -// so it takes the fastes option available +// ReadJSON reads json data, prefers finding an appropriate interface to short-circuit the unmarshaler +// so it takes the fastest option available func ReadJSON(data []byte, value interface{}) error { trimmedData := bytes.Trim(data, "\x00") if d, ok := value.(ejUnmarshaler); ok { @@ -189,7 +189,7 @@ func FromDynamicJSON(data, target interface{}) error { return json.Unmarshal(b, target) } -// NameProvider represents an object capabale of translating from go property names +// NameProvider represents an object capable of translating from go property names // to json property names // This type is thread-safe. type NameProvider struct { diff --git a/src/runtime/vendor/github.com/go-openapi/swag/loading.go b/src/runtime/vendor/github.com/go-openapi/swag/loading.go index 70f4fb361..9a6040972 100644 --- a/src/runtime/vendor/github.com/go-openapi/swag/loading.go +++ b/src/runtime/vendor/github.com/go-openapi/swag/loading.go @@ -19,7 +19,9 @@ import ( "io/ioutil" "log" "net/http" + "net/url" "path/filepath" + "runtime" "strings" "time" ) @@ -27,6 +29,15 @@ import ( // LoadHTTPTimeout the default timeout for load requests var LoadHTTPTimeout = 30 * time.Second +// LoadHTTPBasicAuthUsername the username to use when load requests require basic auth +var LoadHTTPBasicAuthUsername = "" + +// LoadHTTPBasicAuthPassword the password to use when load requests require basic auth +var LoadHTTPBasicAuthPassword = "" + +// LoadHTTPCustomHeaders an optional collection of custom HTTP headers for load requests +var LoadHTTPCustomHeaders = map[string]string{} + // LoadFromFileOrHTTP loads the bytes from a file or a remote http server based on the path passed in func LoadFromFileOrHTTP(path string) ([]byte, error) { return LoadStrategy(path, ioutil.ReadFile, loadHTTPBytes(LoadHTTPTimeout))(path) @@ -48,6 +59,26 @@ func LoadStrategy(path string, local, remote func(string) ([]byte, error)) func( if err != nil { return nil, err } + + if strings.HasPrefix(pth, `file://`) { + if runtime.GOOS == "windows" { + // support for canonical file URIs on windows. + // Zero tolerance here for dodgy URIs. + u, _ := url.Parse(upth) + if u.Host != "" { + // assume UNC name (volume share) + // file://host/share/folder\... ==> \\host\share\path\folder + // NOTE: UNC port not yet supported + upth = strings.Join([]string{`\`, u.Host, u.Path}, `\`) + } else { + // file:///c:/folder/... ==> just remove the leading slash + upth = strings.TrimPrefix(upth, `file:///`) + } + } else { + upth = strings.TrimPrefix(upth, `file://`) + } + } + return local(filepath.FromSlash(upth)) } } @@ -55,10 +86,19 @@ func LoadStrategy(path string, local, remote func(string) ([]byte, error)) func( func loadHTTPBytes(timeout time.Duration) func(path string) ([]byte, error) { return func(path string) ([]byte, error) { client := &http.Client{Timeout: timeout} - req, err := http.NewRequest("GET", path, nil) + req, err := http.NewRequest("GET", path, nil) // nolint: noctx if err != nil { return nil, err } + + if LoadHTTPBasicAuthUsername != "" && LoadHTTPBasicAuthPassword != "" { + req.SetBasicAuth(LoadHTTPBasicAuthUsername, LoadHTTPBasicAuthPassword) + } + + for key, val := range LoadHTTPCustomHeaders { + req.Header.Set(key, val) + } + resp, err := client.Do(req) defer func() { if resp != nil { diff --git a/src/runtime/vendor/github.com/go-openapi/swag/util.go b/src/runtime/vendor/github.com/go-openapi/swag/util.go index 9eac16afb..193702f2c 100644 --- a/src/runtime/vendor/github.com/go-openapi/swag/util.go +++ b/src/runtime/vendor/github.com/go-openapi/swag/util.go @@ -31,7 +31,7 @@ var isInitialism func(string) bool // GoNamePrefixFunc sets an optional rule to prefix go names // which do not start with a letter. // -// e.g. to help converting "123" into "{prefix}123" +// e.g. to help convert "123" into "{prefix}123" // // The default is to prefix with "X" var GoNamePrefixFunc func(string) string @@ -91,7 +91,7 @@ func init() { } const ( - //collectionFormatComma = "csv" + // collectionFormatComma = "csv" collectionFormatSpace = "ssv" collectionFormatTab = "tsv" collectionFormatPipe = "pipes" @@ -370,7 +370,7 @@ func IsZero(data interface{}) bool { // AddInitialisms add additional initialisms func AddInitialisms(words ...string) { for _, word := range words { - //commonInitialisms[upper(word)] = true + // commonInitialisms[upper(word)] = true commonInitialisms.add(upper(word)) } // sort again diff --git a/src/runtime/vendor/github.com/josharian/intern/README.md b/src/runtime/vendor/github.com/josharian/intern/README.md new file mode 100644 index 000000000..ffc44b219 --- /dev/null +++ b/src/runtime/vendor/github.com/josharian/intern/README.md @@ -0,0 +1,5 @@ +Docs: https://godoc.org/github.com/josharian/intern + +See also [Go issue 5160](https://golang.org/issue/5160). + +License: MIT diff --git a/src/runtime/vendor/github.com/josharian/intern/go.mod b/src/runtime/vendor/github.com/josharian/intern/go.mod new file mode 100644 index 000000000..f2262ff0d --- /dev/null +++ b/src/runtime/vendor/github.com/josharian/intern/go.mod @@ -0,0 +1,3 @@ +module github.com/josharian/intern + +go 1.5 diff --git a/src/runtime/vendor/github.com/josharian/intern/intern.go b/src/runtime/vendor/github.com/josharian/intern/intern.go new file mode 100644 index 000000000..7acb1fe90 --- /dev/null +++ b/src/runtime/vendor/github.com/josharian/intern/intern.go @@ -0,0 +1,44 @@ +// Package intern interns strings. +// Interning is best effort only. +// Interned strings may be removed automatically +// at any time without notification. +// All functions may be called concurrently +// with themselves and each other. +package intern + +import "sync" + +var ( + pool sync.Pool = sync.Pool{ + New: func() interface{} { + return make(map[string]string) + }, + } +) + +// String returns s, interned. +func String(s string) string { + m := pool.Get().(map[string]string) + c, ok := m[s] + if ok { + pool.Put(m) + return c + } + m[s] = s + pool.Put(m) + return s +} + +// Bytes returns b converted to a string, interned. +func Bytes(b []byte) string { + m := pool.Get().(map[string]string) + c, ok := m[string(b)] + if ok { + pool.Put(m) + return c + } + s := string(b) + m[s] = s + pool.Put(m) + return s +} diff --git a/src/runtime/vendor/github.com/josharian/intern/license.md b/src/runtime/vendor/github.com/josharian/intern/license.md new file mode 100644 index 000000000..353d3055f --- /dev/null +++ b/src/runtime/vendor/github.com/josharian/intern/license.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Josh Bleecher Snyder + +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/src/runtime/vendor/github.com/mailru/easyjson/buffer/pool.go b/src/runtime/vendor/github.com/mailru/easyjson/buffer/pool.go index 07fb4bc1f..598a54af9 100644 --- a/src/runtime/vendor/github.com/mailru/easyjson/buffer/pool.go +++ b/src/runtime/vendor/github.com/mailru/easyjson/buffer/pool.go @@ -4,6 +4,7 @@ package buffer import ( "io" + "net" "sync" ) @@ -52,14 +53,12 @@ func putBuf(buf []byte) { // getBuf gets a chunk from reuse pool or creates a new one if reuse failed. func getBuf(size int) []byte { - if size < config.PooledSize { - return make([]byte, 0, size) - } - - if c := buffers[size]; c != nil { - v := c.Get() - if v != nil { - return v.([]byte) + if size >= config.PooledSize { + if c := buffers[size]; c != nil { + v := c.Get() + if v != nil { + return v.([]byte) + } } } return make([]byte, 0, size) @@ -78,9 +77,12 @@ type Buffer struct { // EnsureSpace makes sure that the current chunk contains at least s free bytes, // possibly creating a new chunk. func (b *Buffer) EnsureSpace(s int) { - if cap(b.Buf)-len(b.Buf) >= s { - return + if cap(b.Buf)-len(b.Buf) < s { + b.ensureSpaceSlow(s) } +} + +func (b *Buffer) ensureSpaceSlow(s int) { l := len(b.Buf) if l > 0 { if cap(b.toPool) != cap(b.Buf) { @@ -105,18 +107,22 @@ func (b *Buffer) EnsureSpace(s int) { // AppendByte appends a single byte to buffer. func (b *Buffer) AppendByte(data byte) { - if cap(b.Buf) == len(b.Buf) { // EnsureSpace won't be inlined. - b.EnsureSpace(1) - } + b.EnsureSpace(1) b.Buf = append(b.Buf, data) } // AppendBytes appends a byte slice to buffer. func (b *Buffer) AppendBytes(data []byte) { + if len(data) <= cap(b.Buf)-len(b.Buf) { + b.Buf = append(b.Buf, data...) // fast path + } else { + b.appendBytesSlow(data) + } +} + +func (b *Buffer) appendBytesSlow(data []byte) { for len(data) > 0 { - if cap(b.Buf) == len(b.Buf) { // EnsureSpace won't be inlined. - b.EnsureSpace(1) - } + b.EnsureSpace(1) sz := cap(b.Buf) - len(b.Buf) if sz > len(data) { @@ -128,12 +134,18 @@ func (b *Buffer) AppendBytes(data []byte) { } } -// AppendBytes appends a string to buffer. +// AppendString appends a string to buffer. func (b *Buffer) AppendString(data string) { + if len(data) <= cap(b.Buf)-len(b.Buf) { + b.Buf = append(b.Buf, data...) // fast path + } else { + b.appendStringSlow(data) + } +} + +func (b *Buffer) appendStringSlow(data string) { for len(data) > 0 { - if cap(b.Buf) == len(b.Buf) { // EnsureSpace won't be inlined. - b.EnsureSpace(1) - } + b.EnsureSpace(1) sz := cap(b.Buf) - len(b.Buf) if sz > len(data) { @@ -156,18 +168,14 @@ func (b *Buffer) Size() int { // DumpTo outputs the contents of a buffer to a writer and resets the buffer. func (b *Buffer) DumpTo(w io.Writer) (written int, err error) { - var n int - for _, buf := range b.bufs { - if err == nil { - n, err = w.Write(buf) - written += n - } - putBuf(buf) + bufs := net.Buffers(b.bufs) + if len(b.Buf) > 0 { + bufs = append(bufs, b.Buf) } + n, err := bufs.WriteTo(w) - if err == nil { - n, err = w.Write(b.Buf) - written += n + for _, buf := range b.bufs { + putBuf(buf) } putBuf(b.toPool) @@ -175,7 +183,7 @@ func (b *Buffer) DumpTo(w io.Writer) (written int, err error) { b.Buf = nil b.toPool = nil - return + return int(n), err } // BuildBytes creates a single byte slice with all the contents of the buffer. Data is @@ -192,7 +200,7 @@ func (b *Buffer) BuildBytes(reuse ...[]byte) []byte { var ret []byte size := b.Size() - // If we got a buffer as argument and it is big enought, reuse it. + // If we got a buffer as argument and it is big enough, reuse it. if len(reuse) == 1 && cap(reuse[0]) >= size { ret = reuse[0][:0] } else { diff --git a/src/runtime/vendor/github.com/mailru/easyjson/jlexer/lexer.go b/src/runtime/vendor/github.com/mailru/easyjson/jlexer/lexer.go index ddd376b84..a42e9d65a 100644 --- a/src/runtime/vendor/github.com/mailru/easyjson/jlexer/lexer.go +++ b/src/runtime/vendor/github.com/mailru/easyjson/jlexer/lexer.go @@ -5,6 +5,7 @@ package jlexer import ( + "bytes" "encoding/base64" "encoding/json" "errors" @@ -14,6 +15,8 @@ import ( "unicode" "unicode/utf16" "unicode/utf8" + + "github.com/josharian/intern" ) // tokenKind determines type of a token. @@ -32,9 +35,10 @@ const ( type token struct { kind tokenKind // Type of a token. - boolValue bool // Value if a boolean literal token. - byteValue []byte // Raw value of a token. - delimValue byte + boolValue bool // Value if a boolean literal token. + byteValueCloned bool // true if byteValue was allocated and does not refer to original json body + byteValue []byte // Raw value of a token. + delimValue byte } // Lexer is a JSON lexer: it iterates over JSON tokens in a byte slice. @@ -240,23 +244,65 @@ func (r *Lexer) fetchNumber() { // findStringLen tries to scan into the string literal for ending quote char to determine required size. // The size will be exact if no escapes are present and may be inexact if there are escaped chars. -func findStringLen(data []byte) (isValid, hasEscapes bool, length int) { - delta := 0 - - for i := 0; i < len(data); i++ { - switch data[i] { - case '\\': - i++ - delta++ - if i < len(data) && data[i] == 'u' { - delta++ - } - case '"': - return true, (delta > 0), (i - delta) +func findStringLen(data []byte) (isValid bool, length int) { + for { + idx := bytes.IndexByte(data, '"') + if idx == -1 { + return false, len(data) } + if idx == 0 || (idx > 0 && data[idx-1] != '\\') { + return true, length + idx + } + + // count \\\\\\\ sequences. even number of slashes means quote is not really escaped + cnt := 1 + for idx-cnt-1 >= 0 && data[idx-cnt-1] == '\\' { + cnt++ + } + if cnt%2 == 0 { + return true, length + idx + } + + length += idx + 1 + data = data[idx+1:] + } +} + +// unescapeStringToken performs unescaping of string token. +// if no escaping is needed, original string is returned, otherwise - a new one allocated +func (r *Lexer) unescapeStringToken() (err error) { + data := r.token.byteValue + var unescapedData []byte + + for { + i := bytes.IndexByte(data, '\\') + if i == -1 { + break + } + + escapedRune, escapedBytes, err := decodeEscape(data[i:]) + if err != nil { + r.errParse(err.Error()) + return err + } + + if unescapedData == nil { + unescapedData = make([]byte, 0, len(r.token.byteValue)) + } + + var d [4]byte + s := utf8.EncodeRune(d[:], escapedRune) + unescapedData = append(unescapedData, data[:i]...) + unescapedData = append(unescapedData, d[:s]...) + + data = data[i+escapedBytes:] } - return false, false, len(data) + if unescapedData != nil { + r.token.byteValue = append(unescapedData, data...) + r.token.byteValueCloned = true + } + return } // getu4 decodes \uXXXX from the beginning of s, returning the hex value, @@ -286,36 +332,30 @@ func getu4(s []byte) rune { return val } -// processEscape processes a single escape sequence and returns number of bytes processed. -func (r *Lexer) processEscape(data []byte) (int, error) { +// decodeEscape processes a single escape sequence and returns number of bytes processed. +func decodeEscape(data []byte) (decoded rune, bytesProcessed int, err error) { if len(data) < 2 { - return 0, fmt.Errorf("syntax error at %v", string(data)) + return 0, 0, errors.New("incorrect escape symbol \\ at the end of token") } c := data[1] switch c { case '"', '/', '\\': - r.token.byteValue = append(r.token.byteValue, c) - return 2, nil + return rune(c), 2, nil case 'b': - r.token.byteValue = append(r.token.byteValue, '\b') - return 2, nil + return '\b', 2, nil case 'f': - r.token.byteValue = append(r.token.byteValue, '\f') - return 2, nil + return '\f', 2, nil case 'n': - r.token.byteValue = append(r.token.byteValue, '\n') - return 2, nil + return '\n', 2, nil case 'r': - r.token.byteValue = append(r.token.byteValue, '\r') - return 2, nil + return '\r', 2, nil case 't': - r.token.byteValue = append(r.token.byteValue, '\t') - return 2, nil + return '\t', 2, nil case 'u': rr := getu4(data) if rr < 0 { - return 0, errors.New("syntax error") + return 0, 0, errors.New("incorrectly escaped \\uXXXX sequence") } read := 6 @@ -328,13 +368,10 @@ func (r *Lexer) processEscape(data []byte) (int, error) { rr = unicode.ReplacementChar } } - var d [4]byte - s := utf8.EncodeRune(d[:], rr) - r.token.byteValue = append(r.token.byteValue, d[:s]...) - return read, nil + return rr, read, nil } - return 0, errors.New("syntax error") + return 0, 0, errors.New("incorrectly escaped bytes") } // fetchString scans a string literal token. @@ -342,43 +379,14 @@ func (r *Lexer) fetchString() { r.pos++ data := r.Data[r.pos:] - isValid, hasEscapes, length := findStringLen(data) + isValid, length := findStringLen(data) if !isValid { r.pos += length r.errParse("unterminated string literal") return } - if !hasEscapes { - r.token.byteValue = data[:length] - r.pos += length + 1 - return - } - - r.token.byteValue = make([]byte, 0, length) - p := 0 - for i := 0; i < len(data); { - switch data[i] { - case '"': - r.pos += i + 1 - r.token.byteValue = append(r.token.byteValue, data[p:i]...) - i++ - return - - case '\\': - r.token.byteValue = append(r.token.byteValue, data[p:i]...) - off, err := r.processEscape(data[i:]) - if err != nil { - r.errParse(err.Error()) - return - } - i += off - p = i - - default: - i++ - } - } - r.errParse("unterminated string literal") + r.token.byteValue = data[:length] + r.pos += length + 1 // skip closing '"' as well } // scanToken scans the next token if no token is currently available in the lexer. @@ -602,7 +610,7 @@ func (r *Lexer) Consumed() { } } -func (r *Lexer) unsafeString() (string, []byte) { +func (r *Lexer) unsafeString(skipUnescape bool) (string, []byte) { if r.token.kind == tokenUndef && r.Ok() { r.FetchToken() } @@ -610,6 +618,13 @@ func (r *Lexer) unsafeString() (string, []byte) { r.errInvalidToken("string") return "", nil } + if !skipUnescape { + if err := r.unescapeStringToken(); err != nil { + r.errInvalidToken("string") + return "", nil + } + } + bytes := r.token.byteValue ret := bytesToStr(r.token.byteValue) r.consume() @@ -621,13 +636,19 @@ func (r *Lexer) unsafeString() (string, []byte) { // Warning: returned string may point to the input buffer, so the string should not outlive // the input buffer. Intended pattern of usage is as an argument to a switch statement. func (r *Lexer) UnsafeString() string { - ret, _ := r.unsafeString() + ret, _ := r.unsafeString(false) return ret } // UnsafeBytes returns the byte slice if the token is a string literal. func (r *Lexer) UnsafeBytes() []byte { - _, ret := r.unsafeString() + _, ret := r.unsafeString(false) + return ret +} + +// UnsafeFieldName returns current member name string token +func (r *Lexer) UnsafeFieldName(skipUnescape bool) string { + ret, _ := r.unsafeString(skipUnescape) return ret } @@ -640,7 +661,34 @@ func (r *Lexer) String() string { r.errInvalidToken("string") return "" } - ret := string(r.token.byteValue) + if err := r.unescapeStringToken(); err != nil { + r.errInvalidToken("string") + return "" + } + var ret string + if r.token.byteValueCloned { + ret = bytesToStr(r.token.byteValue) + } else { + ret = string(r.token.byteValue) + } + r.consume() + return ret +} + +// StringIntern reads a string literal, and performs string interning on it. +func (r *Lexer) StringIntern() string { + if r.token.kind == tokenUndef && r.Ok() { + r.FetchToken() + } + if !r.Ok() || r.token.kind != tokenString { + r.errInvalidToken("string") + return "" + } + if err := r.unescapeStringToken(); err != nil { + r.errInvalidToken("string") + return "" + } + ret := intern.Bytes(r.token.byteValue) r.consume() return ret } @@ -839,7 +887,7 @@ func (r *Lexer) Int() int { } func (r *Lexer) Uint8Str() uint8 { - s, b := r.unsafeString() + s, b := r.unsafeString(false) if !r.Ok() { return 0 } @@ -856,7 +904,7 @@ func (r *Lexer) Uint8Str() uint8 { } func (r *Lexer) Uint16Str() uint16 { - s, b := r.unsafeString() + s, b := r.unsafeString(false) if !r.Ok() { return 0 } @@ -873,7 +921,7 @@ func (r *Lexer) Uint16Str() uint16 { } func (r *Lexer) Uint32Str() uint32 { - s, b := r.unsafeString() + s, b := r.unsafeString(false) if !r.Ok() { return 0 } @@ -890,7 +938,7 @@ func (r *Lexer) Uint32Str() uint32 { } func (r *Lexer) Uint64Str() uint64 { - s, b := r.unsafeString() + s, b := r.unsafeString(false) if !r.Ok() { return 0 } @@ -915,7 +963,7 @@ func (r *Lexer) UintptrStr() uintptr { } func (r *Lexer) Int8Str() int8 { - s, b := r.unsafeString() + s, b := r.unsafeString(false) if !r.Ok() { return 0 } @@ -932,7 +980,7 @@ func (r *Lexer) Int8Str() int8 { } func (r *Lexer) Int16Str() int16 { - s, b := r.unsafeString() + s, b := r.unsafeString(false) if !r.Ok() { return 0 } @@ -949,7 +997,7 @@ func (r *Lexer) Int16Str() int16 { } func (r *Lexer) Int32Str() int32 { - s, b := r.unsafeString() + s, b := r.unsafeString(false) if !r.Ok() { return 0 } @@ -966,7 +1014,7 @@ func (r *Lexer) Int32Str() int32 { } func (r *Lexer) Int64Str() int64 { - s, b := r.unsafeString() + s, b := r.unsafeString(false) if !r.Ok() { return 0 } @@ -1004,7 +1052,7 @@ func (r *Lexer) Float32() float32 { } func (r *Lexer) Float32Str() float32 { - s, b := r.unsafeString() + s, b := r.unsafeString(false) if !r.Ok() { return 0 } @@ -1037,7 +1085,7 @@ func (r *Lexer) Float64() float64 { } func (r *Lexer) Float64Str() float64 { - s, b := r.unsafeString() + s, b := r.unsafeString(false) if !r.Ok() { return 0 } diff --git a/src/runtime/vendor/github.com/mailru/easyjson/jwriter/writer.go b/src/runtime/vendor/github.com/mailru/easyjson/jwriter/writer.go index b9ed7ccaa..2c5b20105 100644 --- a/src/runtime/vendor/github.com/mailru/easyjson/jwriter/writer.go +++ b/src/runtime/vendor/github.com/mailru/easyjson/jwriter/writer.go @@ -270,16 +270,25 @@ func (w *Writer) Bool(v bool) { const chars = "0123456789abcdef" -func isNotEscapedSingleChar(c byte, escapeHTML bool) bool { - // Note: might make sense to use a table if there are more chars to escape. With 4 chars - // it benchmarks the same. - if escapeHTML { - return c != '<' && c != '>' && c != '&' && c != '\\' && c != '"' && c >= 0x20 && c < utf8.RuneSelf - } else { - return c != '\\' && c != '"' && c >= 0x20 && c < utf8.RuneSelf +func getTable(falseValues ...int) [128]bool { + table := [128]bool{} + + for i := 0; i < 128; i++ { + table[i] = true } + + for _, v := range falseValues { + table[v] = false + } + + return table } +var ( + htmlEscapeTable = getTable(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, '"', '&', '<', '>', '\\') + htmlNoEscapeTable = getTable(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, '"', '\\') +) + func (w *Writer) String(s string) { w.Buffer.AppendByte('"') @@ -288,15 +297,21 @@ func (w *Writer) String(s string) { p := 0 // last non-escape symbol + escapeTable := &htmlEscapeTable + if w.NoEscapeHTML { + escapeTable = &htmlNoEscapeTable + } + for i := 0; i < len(s); { c := s[i] - if isNotEscapedSingleChar(c, !w.NoEscapeHTML) { - // single-width character, no escaping is required - i++ - continue - } else if c < utf8.RuneSelf { - // single-with character, need to escape + if c < utf8.RuneSelf { + if escapeTable[c] { + // single-width character, no escaping is required + i++ + continue + } + w.Buffer.AppendString(s[p:i]) switch c { case '\t': diff --git a/src/runtime/vendor/github.com/moby/sys/mountinfo/go.mod b/src/runtime/vendor/github.com/moby/sys/mountinfo/go.mod index 9749ea96d..1cc3efcf7 100644 --- a/src/runtime/vendor/github.com/moby/sys/mountinfo/go.mod +++ b/src/runtime/vendor/github.com/moby/sys/mountinfo/go.mod @@ -1,5 +1,5 @@ module github.com/moby/sys/mountinfo -go 1.14 +go 1.16 -require golang.org/x/sys v0.0.0-20200909081042-eff7692f9009 +require golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359 diff --git a/src/runtime/vendor/github.com/moby/sys/mountinfo/go.sum b/src/runtime/vendor/github.com/moby/sys/mountinfo/go.sum index 2a5be7ea8..c257a6a29 100644 --- a/src/runtime/vendor/github.com/moby/sys/mountinfo/go.sum +++ b/src/runtime/vendor/github.com/moby/sys/mountinfo/go.sum @@ -1,2 +1,2 @@ -golang.org/x/sys v0.0.0-20200909081042-eff7692f9009 h1:W0lCpv29Hv0UaM1LXb9QlBHLNP8UFfcKjblhVCWftOM= -golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359 h1:2B5p2L5IfGiD7+b9BOoRMC6DgObAVZV+Fsp050NqXik= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/src/runtime/vendor/github.com/moby/sys/mountinfo/mounted_linux.go b/src/runtime/vendor/github.com/moby/sys/mountinfo/mounted_linux.go index bc9f6b2ad..5c9e3e30e 100644 --- a/src/runtime/vendor/github.com/moby/sys/mountinfo/mounted_linux.go +++ b/src/runtime/vendor/github.com/moby/sys/mountinfo/mounted_linux.go @@ -16,9 +16,6 @@ func mountedByOpenat2(path string) (bool, error) { Flags: unix.O_PATH | unix.O_CLOEXEC, }) if err != nil { - if err == unix.ENOENT { // not a mount - return false, nil - } return false, &os.PathError{Op: "openat2", Path: dir, Err: err} } fd, err := unix.Openat2(dirfd, last, &unix.OpenHow{ @@ -26,20 +23,22 @@ func mountedByOpenat2(path string) (bool, error) { Resolve: unix.RESOLVE_NO_XDEV, }) _ = unix.Close(dirfd) - switch err { + switch err { //nolint:errorlint // unix errors are bare case nil: // definitely not a mount _ = unix.Close(fd) return false, nil case unix.EXDEV: // definitely a mount return true, nil - case unix.ENOENT: // not a mount - return false, nil } // not sure return false, &os.PathError{Op: "openat2", Path: path, Err: err} } func mounted(path string) (bool, error) { + path, err := normalizePath(path) + if err != nil { + return false, err + } // Try a fast path, using openat2() with RESOLVE_NO_XDEV. mounted, err := mountedByOpenat2(path) if err == nil { diff --git a/src/runtime/vendor/github.com/moby/sys/mountinfo/mounted_unix.go b/src/runtime/vendor/github.com/moby/sys/mountinfo/mounted_unix.go index efb03978b..45ddad236 100644 --- a/src/runtime/vendor/github.com/moby/sys/mountinfo/mounted_unix.go +++ b/src/runtime/vendor/github.com/moby/sys/mountinfo/mounted_unix.go @@ -1,9 +1,9 @@ -// +build linux freebsd,cgo openbsd,cgo +//go:build linux || (freebsd && cgo) || (openbsd && cgo) || (darwin && cgo) +// +build linux freebsd,cgo openbsd,cgo darwin,cgo package mountinfo import ( - "errors" "fmt" "os" "path/filepath" @@ -15,10 +15,6 @@ func mountedByStat(path string) (bool, error) { var st unix.Stat_t if err := unix.Lstat(path, &st); err != nil { - if err == unix.ENOENT { - // Treat ENOENT as "not mounted". - return false, nil - } return false, &os.PathError{Op: "stat", Path: path, Err: err} } dev := st.Dev @@ -49,14 +45,6 @@ func normalizePath(path string) (realPath string, err error) { } func mountedByMountinfo(path string) (bool, error) { - path, err := normalizePath(path) - if err != nil { - if errors.Is(err, unix.ENOENT) { - // treat ENOENT as "not mounted" - return false, nil - } - return false, err - } entries, err := GetMounts(SingleEntryFilter(path)) if err != nil { return false, err diff --git a/src/runtime/vendor/github.com/moby/sys/mountinfo/mountinfo.go b/src/runtime/vendor/github.com/moby/sys/mountinfo/mountinfo.go index 403a89331..9867a66dd 100644 --- a/src/runtime/vendor/github.com/moby/sys/mountinfo/mountinfo.go +++ b/src/runtime/vendor/github.com/moby/sys/mountinfo/mountinfo.go @@ -10,11 +10,12 @@ func GetMounts(f FilterFunc) ([]*Info, error) { return parseMountTable(f) } -// Mounted determines if a specified path is a mount point. +// Mounted determines if a specified path is a mount point. In case of any +// error, false (and an error) is returned. // -// The argument must be an absolute path, with all symlinks resolved, and clean. -// One way to ensure it is to process the path using filepath.Abs followed by -// filepath.EvalSymlinks before calling this function. +// The non-existent path returns an error. If a caller is not interested +// in this particular error, it should handle it separately using e.g. +// errors.Is(err, os.ErrNotExist). func Mounted(path string) (bool, error) { // root is always mounted if path == string(os.PathSeparator) { diff --git a/src/runtime/vendor/github.com/moby/sys/mountinfo/mountinfo_bsd.go b/src/runtime/vendor/github.com/moby/sys/mountinfo/mountinfo_bsd.go index b1c12d02b..d5513a26d 100644 --- a/src/runtime/vendor/github.com/moby/sys/mountinfo/mountinfo_bsd.go +++ b/src/runtime/vendor/github.com/moby/sys/mountinfo/mountinfo_bsd.go @@ -1,4 +1,5 @@ -// +build freebsd,cgo openbsd,cgo +//go:build (freebsd && cgo) || (openbsd && cgo) || (darwin && cgo) +// +build freebsd,cgo openbsd,cgo darwin,cgo package mountinfo @@ -21,7 +22,7 @@ func parseMountTable(filter FilterFunc) ([]*Info, error) { count := int(C.getmntinfo(&rawEntries, C.MNT_WAIT)) if count == 0 { - return nil, fmt.Errorf("Failed to call getmntinfo") + return nil, fmt.Errorf("failed to call getmntinfo") } var entries []C.struct_statfs @@ -55,6 +56,10 @@ func parseMountTable(filter FilterFunc) ([]*Info, error) { } func mounted(path string) (bool, error) { + path, err := normalizePath(path) + if err != nil { + return false, err + } // Fast path: compare st.st_dev fields. // This should always work for FreeBSD and OpenBSD. mounted, err := mountedByStat(path) diff --git a/src/runtime/vendor/github.com/moby/sys/mountinfo/mountinfo_linux.go b/src/runtime/vendor/github.com/moby/sys/mountinfo/mountinfo_linux.go index f09a70fa0..59332b07b 100644 --- a/src/runtime/vendor/github.com/moby/sys/mountinfo/mountinfo_linux.go +++ b/src/runtime/vendor/github.com/moby/sys/mountinfo/mountinfo_linux.go @@ -52,7 +52,7 @@ func GetMountsFromReader(r io.Reader, filter FilterFunc) ([]*Info, error) { numFields := len(fields) if numFields < 10 { // should be at least 10 fields - return nil, fmt.Errorf("Parsing '%s' failed: not enough fields (%d)", text, numFields) + return nil, fmt.Errorf("parsing '%s' failed: not enough fields (%d)", text, numFields) } // separator field @@ -67,7 +67,7 @@ func GetMountsFromReader(r io.Reader, filter FilterFunc) ([]*Info, error) { for fields[sepIdx] != "-" { sepIdx-- if sepIdx == 5 { - return nil, fmt.Errorf("Parsing '%s' failed: missing - separator", text) + return nil, fmt.Errorf("parsing '%s' failed: missing - separator", text) } } @@ -75,46 +75,39 @@ func GetMountsFromReader(r io.Reader, filter FilterFunc) ([]*Info, error) { p.Mountpoint, err = unescape(fields[4]) if err != nil { - return nil, fmt.Errorf("Parsing '%s' failed: mount point: %w", fields[4], err) + return nil, fmt.Errorf("parsing '%s' failed: mount point: %w", fields[4], err) } p.FSType, err = unescape(fields[sepIdx+1]) if err != nil { - return nil, fmt.Errorf("Parsing '%s' failed: fstype: %w", fields[sepIdx+1], err) + return nil, fmt.Errorf("parsing '%s' failed: fstype: %w", fields[sepIdx+1], err) } p.Source, err = unescape(fields[sepIdx+2]) if err != nil { - return nil, fmt.Errorf("Parsing '%s' failed: source: %w", fields[sepIdx+2], err) + return nil, fmt.Errorf("parsing '%s' failed: source: %w", fields[sepIdx+2], err) } p.VFSOptions = fields[sepIdx+3] // ignore any numbers parsing errors, as there should not be any p.ID, _ = strconv.Atoi(fields[0]) p.Parent, _ = strconv.Atoi(fields[1]) - mm := strings.Split(fields[2], ":") + mm := strings.SplitN(fields[2], ":", 3) if len(mm) != 2 { - return nil, fmt.Errorf("Parsing '%s' failed: unexpected minor:major pair %s", text, mm) + return nil, fmt.Errorf("parsing '%s' failed: unexpected major:minor pair %s", text, mm) } p.Major, _ = strconv.Atoi(mm[0]) p.Minor, _ = strconv.Atoi(mm[1]) p.Root, err = unescape(fields[3]) if err != nil { - return nil, fmt.Errorf("Parsing '%s' failed: root: %w", fields[3], err) + return nil, fmt.Errorf("parsing '%s' failed: root: %w", fields[3], err) } p.Options = fields[5] // zero or more optional fields - switch { - case sepIdx == 6: - // zero, do nothing - case sepIdx == 7: - p.Optional = fields[6] - default: - p.Optional = strings.Join(fields[6:sepIdx-1], " ") - } + p.Optional = strings.Join(fields[6:sepIdx], " ") - // Run the filter after parsing all of the fields. + // Run the filter after parsing all fields. var skip, stop bool if filter != nil { skip, stop = filter(p) diff --git a/src/runtime/vendor/github.com/moby/sys/mountinfo/mountinfo_unsupported.go b/src/runtime/vendor/github.com/moby/sys/mountinfo/mountinfo_unsupported.go index d33ebca09..95769a76d 100644 --- a/src/runtime/vendor/github.com/moby/sys/mountinfo/mountinfo_unsupported.go +++ b/src/runtime/vendor/github.com/moby/sys/mountinfo/mountinfo_unsupported.go @@ -1,4 +1,5 @@ -// +build !windows,!linux,!freebsd,!openbsd freebsd,!cgo openbsd,!cgo +//go:build (!windows && !linux && !freebsd && !openbsd && !darwin) || (freebsd && !cgo) || (openbsd && !cgo) || (darwin && !cgo) +// +build !windows,!linux,!freebsd,!openbsd,!darwin freebsd,!cgo openbsd,!cgo darwin,!cgo package mountinfo diff --git a/src/runtime/vendor/github.com/opencontainers/image-spec/LICENSE b/src/runtime/vendor/github.com/opencontainers/image-spec/LICENSE new file mode 100644 index 000000000..9fdc20fdb --- /dev/null +++ b/src/runtime/vendor/github.com/opencontainers/image-spec/LICENSE @@ -0,0 +1,191 @@ + + 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 2016 The Linux Foundation. + + 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/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/annotations.go b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/annotations.go new file mode 100644 index 000000000..581cf7cdf --- /dev/null +++ b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/annotations.go @@ -0,0 +1,62 @@ +// Copyright 2016 The Linux Foundation +// +// 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. + +package v1 + +const ( + // AnnotationCreated is the annotation key for the date and time on which the image was built (date-time string as defined by RFC 3339). + AnnotationCreated = "org.opencontainers.image.created" + + // AnnotationAuthors is the annotation key for the contact details of the people or organization responsible for the image (freeform string). + AnnotationAuthors = "org.opencontainers.image.authors" + + // AnnotationURL is the annotation key for the URL to find more information on the image. + AnnotationURL = "org.opencontainers.image.url" + + // AnnotationDocumentation is the annotation key for the URL to get documentation on the image. + AnnotationDocumentation = "org.opencontainers.image.documentation" + + // AnnotationSource is the annotation key for the URL to get source code for building the image. + AnnotationSource = "org.opencontainers.image.source" + + // AnnotationVersion is the annotation key for the version of the packaged software. + // The version MAY match a label or tag in the source code repository. + // The version MAY be Semantic versioning-compatible. + AnnotationVersion = "org.opencontainers.image.version" + + // AnnotationRevision is the annotation key for the source control revision identifier for the packaged software. + AnnotationRevision = "org.opencontainers.image.revision" + + // AnnotationVendor is the annotation key for the name of the distributing entity, organization or individual. + AnnotationVendor = "org.opencontainers.image.vendor" + + // AnnotationLicenses is the annotation key for the license(s) under which contained software is distributed as an SPDX License Expression. + AnnotationLicenses = "org.opencontainers.image.licenses" + + // AnnotationRefName is the annotation key for the name of the reference for a target. + // SHOULD only be considered valid when on descriptors on `index.json` within image layout. + AnnotationRefName = "org.opencontainers.image.ref.name" + + // AnnotationTitle is the annotation key for the human-readable title of the image. + AnnotationTitle = "org.opencontainers.image.title" + + // AnnotationDescription is the annotation key for the human-readable description of the software packaged in the image. + AnnotationDescription = "org.opencontainers.image.description" + + // AnnotationBaseImageDigest is the annotation key for the digest of the image's base image. + AnnotationBaseImageDigest = "org.opencontainers.image.base.digest" + + // AnnotationBaseImageName is the annotation key for the image reference of the image's base image. + AnnotationBaseImageName = "org.opencontainers.image.base.name" +) diff --git a/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/config.go b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/config.go new file mode 100644 index 000000000..ffff4b6d1 --- /dev/null +++ b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/config.go @@ -0,0 +1,114 @@ +// Copyright 2016 The Linux Foundation +// +// 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. + +package v1 + +import ( + "time" + + digest "github.com/opencontainers/go-digest" +) + +// ImageConfig defines the execution parameters which should be used as a base when running a container using an image. +type ImageConfig struct { + // User defines the username or UID which the process in the container should run as. + User string `json:"User,omitempty"` + + // ExposedPorts a set of ports to expose from a container running this image. + ExposedPorts map[string]struct{} `json:"ExposedPorts,omitempty"` + + // Env is a list of environment variables to be used in a container. + Env []string `json:"Env,omitempty"` + + // Entrypoint defines a list of arguments to use as the command to execute when the container starts. + Entrypoint []string `json:"Entrypoint,omitempty"` + + // Cmd defines the default arguments to the entrypoint of the container. + Cmd []string `json:"Cmd,omitempty"` + + // Volumes is a set of directories describing where the process is likely write data specific to a container instance. + Volumes map[string]struct{} `json:"Volumes,omitempty"` + + // WorkingDir sets the current working directory of the entrypoint process in the container. + WorkingDir string `json:"WorkingDir,omitempty"` + + // Labels contains arbitrary metadata for the container. + Labels map[string]string `json:"Labels,omitempty"` + + // StopSignal contains the system call signal that will be sent to the container to exit. + StopSignal string `json:"StopSignal,omitempty"` +} + +// RootFS describes a layer content addresses +type RootFS struct { + // Type is the type of the rootfs. + Type string `json:"type"` + + // DiffIDs is an array of layer content hashes (DiffIDs), in order from bottom-most to top-most. + DiffIDs []digest.Digest `json:"diff_ids"` +} + +// History describes the history of a layer. +type History struct { + // Created is the combined date and time at which the layer was created, formatted as defined by RFC 3339, section 5.6. + Created *time.Time `json:"created,omitempty"` + + // CreatedBy is the command which created the layer. + CreatedBy string `json:"created_by,omitempty"` + + // Author is the author of the build point. + Author string `json:"author,omitempty"` + + // Comment is a custom message set when creating the layer. + Comment string `json:"comment,omitempty"` + + // EmptyLayer is used to mark if the history item created a filesystem diff. + EmptyLayer bool `json:"empty_layer,omitempty"` +} + +// Image is the JSON structure which describes some basic information about the image. +// This provides the `application/vnd.oci.image.config.v1+json` mediatype when marshalled to JSON. +type Image struct { + // Created is the combined date and time at which the image was created, formatted as defined by RFC 3339, section 5.6. + Created *time.Time `json:"created,omitempty"` + + // Author defines the name and/or email address of the person or entity which created and is responsible for maintaining the image. + Author string `json:"author,omitempty"` + + // Architecture is the CPU architecture which the binaries in this image are built to run on. + Architecture string `json:"architecture"` + + // Variant is the variant of the specified CPU architecture which image binaries are intended to run on. + Variant string `json:"variant,omitempty"` + + // OS is the name of the operating system which the image is built to run on. + OS string `json:"os"` + + // OSVersion is an optional field specifying the operating system + // version, for example on Windows `10.0.14393.1066`. + OSVersion string `json:"os.version,omitempty"` + + // OSFeatures is an optional field specifying an array of strings, + // each listing a required OS feature (for example on Windows `win32k`). + OSFeatures []string `json:"os.features,omitempty"` + + // Config defines the execution parameters which should be used as a base when running a container using the image. + Config ImageConfig `json:"config,omitempty"` + + // RootFS references the layer content addresses used by the image. + RootFS RootFS `json:"rootfs"` + + // History describes the history of each layer. + History []History `json:"history,omitempty"` +} diff --git a/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/descriptor.go b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/descriptor.go new file mode 100644 index 000000000..6e442a085 --- /dev/null +++ b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/descriptor.go @@ -0,0 +1,64 @@ +// Copyright 2016 The Linux Foundation +// +// 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. + +package v1 + +import digest "github.com/opencontainers/go-digest" + +// Descriptor describes the disposition of targeted content. +// This structure provides `application/vnd.oci.descriptor.v1+json` mediatype +// when marshalled to JSON. +type Descriptor struct { + // MediaType is the media type of the object this schema refers to. + MediaType string `json:"mediaType,omitempty"` + + // Digest is the digest of the targeted content. + Digest digest.Digest `json:"digest"` + + // Size specifies the size in bytes of the blob. + Size int64 `json:"size"` + + // URLs specifies a list of URLs from which this object MAY be downloaded + URLs []string `json:"urls,omitempty"` + + // Annotations contains arbitrary metadata relating to the targeted content. + Annotations map[string]string `json:"annotations,omitempty"` + + // Platform describes the platform which the image in the manifest runs on. + // + // This should only be used when referring to a manifest. + Platform *Platform `json:"platform,omitempty"` +} + +// Platform describes the platform which the image in the manifest runs on. +type Platform struct { + // Architecture field specifies the CPU architecture, for example + // `amd64` or `ppc64`. + Architecture string `json:"architecture"` + + // OS specifies the operating system, for example `linux` or `windows`. + OS string `json:"os"` + + // OSVersion is an optional field specifying the operating system + // version, for example on Windows `10.0.14393.1066`. + OSVersion string `json:"os.version,omitempty"` + + // OSFeatures is an optional field specifying an array of strings, + // each listing a required OS feature (for example on Windows `win32k`). + OSFeatures []string `json:"os.features,omitempty"` + + // Variant is an optional field specifying a variant of the CPU, for + // example `v7` to specify ARMv7 when architecture is `arm`. + Variant string `json:"variant,omitempty"` +} diff --git a/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/index.go b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/index.go new file mode 100644 index 000000000..82da6c6a8 --- /dev/null +++ b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/index.go @@ -0,0 +1,32 @@ +// Copyright 2016 The Linux Foundation +// +// 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. + +package v1 + +import "github.com/opencontainers/image-spec/specs-go" + +// Index references manifests for various platforms. +// This structure provides `application/vnd.oci.image.index.v1+json` mediatype when marshalled to JSON. +type Index struct { + specs.Versioned + + // MediaType specificies the type of this document data structure e.g. `application/vnd.oci.image.index.v1+json` + MediaType string `json:"mediaType,omitempty"` + + // Manifests references platform specific manifests. + Manifests []Descriptor `json:"manifests"` + + // Annotations contains arbitrary metadata for the image index. + Annotations map[string]string `json:"annotations,omitempty"` +} diff --git a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/build_info.go b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/layout.go similarity index 51% rename from src/runtime/vendor/github.com/prometheus/client_golang/prometheus/build_info.go rename to src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/layout.go index 288f0e854..fc79e9e0d 100644 --- a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/build_info.go +++ b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/layout.go @@ -1,9 +1,10 @@ -// Copyright 2019 The Prometheus Authors +// Copyright 2016 The Linux Foundation +// // 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 +// 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, @@ -11,19 +12,17 @@ // See the License for the specific language governing permissions and // limitations under the License. -// +build go1.12 +package v1 -package prometheus +const ( + // ImageLayoutFile is the file name of oci image layout file + ImageLayoutFile = "oci-layout" + // ImageLayoutVersion is the version of ImageLayout + ImageLayoutVersion = "1.0.0" +) -import "runtime/debug" - -// readBuildInfo is a wrapper around debug.ReadBuildInfo for Go 1.12+. -func readBuildInfo() (path, version, sum string) { - path, version, sum = "unknown", "unknown", "unknown" - if bi, ok := debug.ReadBuildInfo(); ok { - path = bi.Main.Path - version = bi.Main.Version - sum = bi.Main.Sum - } - return +// ImageLayout is the structure in the "oci-layout" file, found in the root +// of an OCI Image-layout directory. +type ImageLayout struct { + Version string `json:"imageLayoutVersion"` } diff --git a/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/manifest.go b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/manifest.go new file mode 100644 index 000000000..d72d15ce4 --- /dev/null +++ b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/manifest.go @@ -0,0 +1,35 @@ +// Copyright 2016 The Linux Foundation +// +// 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. + +package v1 + +import "github.com/opencontainers/image-spec/specs-go" + +// Manifest provides `application/vnd.oci.image.manifest.v1+json` mediatype structure when marshalled to JSON. +type Manifest struct { + specs.Versioned + + // MediaType specificies the type of this document data structure e.g. `application/vnd.oci.image.manifest.v1+json` + MediaType string `json:"mediaType,omitempty"` + + // Config references a configuration object for a container, by digest. + // The referenced configuration object is a JSON blob that the runtime uses to set up the container. + Config Descriptor `json:"config"` + + // Layers is an indexed list of layers referenced by the manifest. + Layers []Descriptor `json:"layers"` + + // Annotations contains arbitrary metadata for the image manifest. + Annotations map[string]string `json:"annotations,omitempty"` +} diff --git a/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/mediatype.go b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/mediatype.go new file mode 100644 index 000000000..4f35ac134 --- /dev/null +++ b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/mediatype.go @@ -0,0 +1,57 @@ +// Copyright 2016 The Linux Foundation +// +// 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. + +package v1 + +const ( + // MediaTypeDescriptor specifies the media type for a content descriptor. + MediaTypeDescriptor = "application/vnd.oci.descriptor.v1+json" + + // MediaTypeLayoutHeader specifies the media type for the oci-layout. + MediaTypeLayoutHeader = "application/vnd.oci.layout.header.v1+json" + + // MediaTypeImageManifest specifies the media type for an image manifest. + MediaTypeImageManifest = "application/vnd.oci.image.manifest.v1+json" + + // MediaTypeImageIndex specifies the media type for an image index. + MediaTypeImageIndex = "application/vnd.oci.image.index.v1+json" + + // MediaTypeImageLayer is the media type used for layers referenced by the manifest. + MediaTypeImageLayer = "application/vnd.oci.image.layer.v1.tar" + + // MediaTypeImageLayerGzip is the media type used for gzipped layers + // referenced by the manifest. + MediaTypeImageLayerGzip = "application/vnd.oci.image.layer.v1.tar+gzip" + + // MediaTypeImageLayerZstd is the media type used for zstd compressed + // layers referenced by the manifest. + MediaTypeImageLayerZstd = "application/vnd.oci.image.layer.v1.tar+zstd" + + // MediaTypeImageLayerNonDistributable is the media type for layers referenced by + // the manifest but with distribution restrictions. + MediaTypeImageLayerNonDistributable = "application/vnd.oci.image.layer.nondistributable.v1.tar" + + // MediaTypeImageLayerNonDistributableGzip is the media type for + // gzipped layers referenced by the manifest but with distribution + // restrictions. + MediaTypeImageLayerNonDistributableGzip = "application/vnd.oci.image.layer.nondistributable.v1.tar+gzip" + + // MediaTypeImageLayerNonDistributableZstd is the media type for zstd + // compressed layers referenced by the manifest but with distribution + // restrictions. + MediaTypeImageLayerNonDistributableZstd = "application/vnd.oci.image.layer.nondistributable.v1.tar+zstd" + + // MediaTypeImageConfig specifies the media type for the image configuration. + MediaTypeImageConfig = "application/vnd.oci.image.config.v1+json" +) diff --git a/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/version.go b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/version.go new file mode 100644 index 000000000..31f99cf64 --- /dev/null +++ b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/version.go @@ -0,0 +1,32 @@ +// Copyright 2016 The Linux Foundation +// +// 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. + +package specs + +import "fmt" + +const ( + // VersionMajor is for an API incompatible changes + VersionMajor = 1 + // VersionMinor is for functionality in a backwards-compatible manner + VersionMinor = 0 + // VersionPatch is for backwards-compatible bug fixes + VersionPatch = 2 + + // VersionDev indicates development branch. Releases will be empty string. + VersionDev = "-dev" +) + +// Version is the specification version that the package types support. +var Version = fmt.Sprintf("%d.%d.%d%s", VersionMajor, VersionMinor, VersionPatch, VersionDev) diff --git a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/build_info_pre_1.12.go b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/versioned.go similarity index 54% rename from src/runtime/vendor/github.com/prometheus/client_golang/prometheus/build_info_pre_1.12.go rename to src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/versioned.go index 6609e2877..58a1510f3 100644 --- a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/build_info_pre_1.12.go +++ b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/versioned.go @@ -1,9 +1,10 @@ -// Copyright 2019 The Prometheus Authors +// Copyright 2016 The Linux Foundation +// // 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 +// 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, @@ -11,12 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. -// +build !go1.12 +package specs -package prometheus - -// readBuildInfo is a wrapper around debug.ReadBuildInfo for Go versions before -// 1.12. Remove this whole file once the minimum supported Go version is 1.12. -func readBuildInfo() (path, version, sum string) { - return "unknown", "unknown", "unknown" +// Versioned provides a struct with the manifest schemaVersion and mediaType. +// Incoming content with unknown schema version can be decoded against this +// struct to check the version. +type Versioned struct { + // SchemaVersion is the image manifest schema that this image follows + SchemaVersion int `json:"schemaVersion"` } diff --git a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/counter.go b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/counter.go index 0e1b48c03..3f8fd790d 100644 --- a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/counter.go +++ b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/counter.go @@ -163,7 +163,7 @@ func (c *counter) updateExemplar(v float64, l Labels) { // (e.g. number of HTTP requests, partitioned by response code and // method). Create instances with NewCounterVec. type CounterVec struct { - *metricVec + *MetricVec } // NewCounterVec creates a new CounterVec based on the provided CounterOpts and @@ -176,11 +176,11 @@ func NewCounterVec(opts CounterOpts, labelNames []string) *CounterVec { opts.ConstLabels, ) return &CounterVec{ - metricVec: newMetricVec(desc, func(lvs ...string) Metric { + MetricVec: NewMetricVec(desc, func(lvs ...string) Metric { if len(lvs) != len(desc.variableLabels) { panic(makeInconsistentCardinalityError(desc.fqName, desc.variableLabels, lvs)) } - result := &counter{desc: desc, labelPairs: makeLabelPairs(desc, lvs), now: time.Now} + result := &counter{desc: desc, labelPairs: MakeLabelPairs(desc, lvs), now: time.Now} result.init(result) // Init self-collection. return result }), @@ -188,7 +188,7 @@ func NewCounterVec(opts CounterOpts, labelNames []string) *CounterVec { } // GetMetricWithLabelValues returns the Counter for the given slice of label -// values (same order as the VariableLabels in Desc). If that combination of +// values (same order as the variable labels in Desc). If that combination of // label values is accessed for the first time, a new Counter is created. // // It is possible to call this method without using the returned Counter to only @@ -202,7 +202,7 @@ func NewCounterVec(opts CounterOpts, labelNames []string) *CounterVec { // Counter with the same label values is created later. // // An error is returned if the number of label values is not the same as the -// number of VariableLabels in Desc (minus any curried labels). +// number of variable labels in Desc (minus any curried labels). // // Note that for more than one label value, this method is prone to mistakes // caused by an incorrect order of arguments. Consider GetMetricWith(Labels) as @@ -211,7 +211,7 @@ func NewCounterVec(opts CounterOpts, labelNames []string) *CounterVec { // with a performance overhead (for creating and processing the Labels map). // See also the GaugeVec example. func (v *CounterVec) GetMetricWithLabelValues(lvs ...string) (Counter, error) { - metric, err := v.metricVec.getMetricWithLabelValues(lvs...) + metric, err := v.MetricVec.GetMetricWithLabelValues(lvs...) if metric != nil { return metric.(Counter), err } @@ -219,19 +219,19 @@ func (v *CounterVec) GetMetricWithLabelValues(lvs ...string) (Counter, error) { } // GetMetricWith returns the Counter for the given Labels map (the label names -// must match those of the VariableLabels in Desc). If that label map is +// must match those of the variable labels in Desc). If that label map is // accessed for the first time, a new Counter is created. Implications of // creating a Counter without using it and keeping the Counter for later use are // the same as for GetMetricWithLabelValues. // // An error is returned if the number and names of the Labels are inconsistent -// with those of the VariableLabels in Desc (minus any curried labels). +// with those of the variable labels in Desc (minus any curried labels). // // This method is used for the same purpose as // GetMetricWithLabelValues(...string). See there for pros and cons of the two // methods. func (v *CounterVec) GetMetricWith(labels Labels) (Counter, error) { - metric, err := v.metricVec.getMetricWith(labels) + metric, err := v.MetricVec.GetMetricWith(labels) if metric != nil { return metric.(Counter), err } @@ -275,7 +275,7 @@ func (v *CounterVec) With(labels Labels) Counter { // registered with a given registry (usually the uncurried version). The Reset // method deletes all metrics, even if called on a curried vector. func (v *CounterVec) CurryWith(labels Labels) (*CounterVec, error) { - vec, err := v.curryWith(labels) + vec, err := v.MetricVec.CurryWith(labels) if vec != nil { return &CounterVec{vec}, err } diff --git a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/desc.go b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/desc.go index 2f19f5e1e..4bb816ab7 100644 --- a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/desc.go +++ b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/desc.go @@ -20,7 +20,7 @@ import ( "strings" "github.com/cespare/xxhash/v2" - //lint:ignore SA1019 Need to keep deprecated package for compatibility. + //nolint:staticcheck // Ignore SA1019. Need to keep deprecated package for compatibility. "github.com/golang/protobuf/proto" "github.com/prometheus/common/model" @@ -51,7 +51,7 @@ type Desc struct { // constLabelPairs contains precalculated DTO label pairs based on // the constant labels. constLabelPairs []*dto.LabelPair - // VariableLabels contains names of labels for which the metric + // variableLabels contains names of labels for which the metric // maintains variable values. variableLabels []string // id is a hash of the values of the ConstLabels and fqName. This diff --git a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/expvar_collector.go b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/expvar_collector.go index 18a99d5fa..c41ab37f3 100644 --- a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/expvar_collector.go +++ b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/expvar_collector.go @@ -22,43 +22,10 @@ type expvarCollector struct { exports map[string]*Desc } -// NewExpvarCollector returns a newly allocated expvar Collector that still has -// to be registered with a Prometheus registry. +// NewExpvarCollector is the obsolete version of collectors.NewExpvarCollector. +// See there for documentation. // -// An expvar Collector collects metrics from the expvar interface. It provides a -// quick way to expose numeric values that are already exported via expvar as -// Prometheus metrics. Note that the data models of expvar and Prometheus are -// fundamentally different, and that the expvar Collector is inherently slower -// than native Prometheus metrics. Thus, the expvar Collector is probably great -// for experiments and prototying, but you should seriously consider a more -// direct implementation of Prometheus metrics for monitoring production -// systems. -// -// The exports map has the following meaning: -// -// The keys in the map correspond to expvar keys, i.e. for every expvar key you -// want to export as Prometheus metric, you need an entry in the exports -// map. The descriptor mapped to each key describes how to export the expvar -// value. It defines the name and the help string of the Prometheus metric -// proxying the expvar value. The type will always be Untyped. -// -// For descriptors without variable labels, the expvar value must be a number or -// a bool. The number is then directly exported as the Prometheus sample -// value. (For a bool, 'false' translates to 0 and 'true' to 1). Expvar values -// that are not numbers or bools are silently ignored. -// -// If the descriptor has one variable label, the expvar value must be an expvar -// map. The keys in the expvar map become the various values of the one -// Prometheus label. The values in the expvar map must be numbers or bools again -// as above. -// -// For descriptors with more than one variable label, the expvar must be a -// nested expvar map, i.e. where the values of the topmost map are maps again -// etc. until a depth is reached that corresponds to the number of labels. The -// leaves of that structure must be numbers or bools as above to serve as the -// sample values. -// -// Anything that does not fit into the scheme above is silently ignored. +// Deprecated: Use collectors.NewExpvarCollector instead. func NewExpvarCollector(exports map[string]*Desc) Collector { return &expvarCollector{ exports: exports, diff --git a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/gauge.go b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/gauge.go index d67573f76..bd0733d6a 100644 --- a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/gauge.go +++ b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/gauge.go @@ -132,7 +132,7 @@ func (g *gauge) Write(out *dto.Metric) error { // (e.g. number of operations queued, partitioned by user and operation // type). Create instances with NewGaugeVec. type GaugeVec struct { - *metricVec + *MetricVec } // NewGaugeVec creates a new GaugeVec based on the provided GaugeOpts and @@ -145,11 +145,11 @@ func NewGaugeVec(opts GaugeOpts, labelNames []string) *GaugeVec { opts.ConstLabels, ) return &GaugeVec{ - metricVec: newMetricVec(desc, func(lvs ...string) Metric { + MetricVec: NewMetricVec(desc, func(lvs ...string) Metric { if len(lvs) != len(desc.variableLabels) { panic(makeInconsistentCardinalityError(desc.fqName, desc.variableLabels, lvs)) } - result := &gauge{desc: desc, labelPairs: makeLabelPairs(desc, lvs)} + result := &gauge{desc: desc, labelPairs: MakeLabelPairs(desc, lvs)} result.init(result) // Init self-collection. return result }), @@ -157,7 +157,7 @@ func NewGaugeVec(opts GaugeOpts, labelNames []string) *GaugeVec { } // GetMetricWithLabelValues returns the Gauge for the given slice of label -// values (same order as the VariableLabels in Desc). If that combination of +// values (same order as the variable labels in Desc). If that combination of // label values is accessed for the first time, a new Gauge is created. // // It is possible to call this method without using the returned Gauge to only @@ -172,7 +172,7 @@ func NewGaugeVec(opts GaugeOpts, labelNames []string) *GaugeVec { // example. // // An error is returned if the number of label values is not the same as the -// number of VariableLabels in Desc (minus any curried labels). +// number of variable labels in Desc (minus any curried labels). // // Note that for more than one label value, this method is prone to mistakes // caused by an incorrect order of arguments. Consider GetMetricWith(Labels) as @@ -180,7 +180,7 @@ func NewGaugeVec(opts GaugeOpts, labelNames []string) *GaugeVec { // latter has a much more readable (albeit more verbose) syntax, but it comes // with a performance overhead (for creating and processing the Labels map). func (v *GaugeVec) GetMetricWithLabelValues(lvs ...string) (Gauge, error) { - metric, err := v.metricVec.getMetricWithLabelValues(lvs...) + metric, err := v.MetricVec.GetMetricWithLabelValues(lvs...) if metric != nil { return metric.(Gauge), err } @@ -188,19 +188,19 @@ func (v *GaugeVec) GetMetricWithLabelValues(lvs ...string) (Gauge, error) { } // GetMetricWith returns the Gauge for the given Labels map (the label names -// must match those of the VariableLabels in Desc). If that label map is +// must match those of the variable labels in Desc). If that label map is // accessed for the first time, a new Gauge is created. Implications of // creating a Gauge without using it and keeping the Gauge for later use are // the same as for GetMetricWithLabelValues. // // An error is returned if the number and names of the Labels are inconsistent -// with those of the VariableLabels in Desc (minus any curried labels). +// with those of the variable labels in Desc (minus any curried labels). // // This method is used for the same purpose as // GetMetricWithLabelValues(...string). See there for pros and cons of the two // methods. func (v *GaugeVec) GetMetricWith(labels Labels) (Gauge, error) { - metric, err := v.metricVec.getMetricWith(labels) + metric, err := v.MetricVec.GetMetricWith(labels) if metric != nil { return metric.(Gauge), err } @@ -244,7 +244,7 @@ func (v *GaugeVec) With(labels Labels) Gauge { // registered with a given registry (usually the uncurried version). The Reset // method deletes all metrics, even if called on a curried vector. func (v *GaugeVec) CurryWith(labels Labels) (*GaugeVec, error) { - vec, err := v.curryWith(labels) + vec, err := v.MetricVec.CurryWith(labels) if vec != nil { return &GaugeVec{vec}, err } diff --git a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go index ea05cf429..a96ed1cee 100644 --- a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go +++ b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go @@ -36,31 +36,10 @@ type goCollector struct { msMaxAge time.Duration // Maximum allowed age of old memstats. } -// NewGoCollector returns a collector that exports metrics about the current Go -// process. This includes memory stats. To collect those, runtime.ReadMemStats -// is called. This requires to “stop the world”, which usually only happens for -// garbage collection (GC). Take the following implications into account when -// deciding whether to use the Go collector: +// NewGoCollector is the obsolete version of collectors.NewGoCollector. +// See there for documentation. // -// 1. The performance impact of stopping the world is the more relevant the more -// frequently metrics are collected. However, with Go1.9 or later the -// stop-the-world time per metrics collection is very short (~25µs) so that the -// performance impact will only matter in rare cases. However, with older Go -// versions, the stop-the-world duration depends on the heap size and can be -// quite significant (~1.7 ms/GiB as per -// https://go-review.googlesource.com/c/go/+/34937). -// -// 2. During an ongoing GC, nothing else can stop the world. Therefore, if the -// metrics collection happens to coincide with GC, it will only complete after -// GC has finished. Usually, GC is fast enough to not cause problems. However, -// with a very large heap, GC might take multiple seconds, which is enough to -// cause scrape timeouts in common setups. To avoid this problem, the Go -// collector will use the memstats from a previous collection if -// runtime.ReadMemStats takes more than 1s. However, if there are no previously -// collected memstats, or their collection is more than 5m ago, the collection -// will block until runtime.ReadMemStats succeeds. (The problem might be solved -// in Go1.13, see https://github.com/golang/go/issues/19812 for the related Go -// issue.) +// Deprecated: Use collectors.NewGoCollector instead. func NewGoCollector() Collector { return &goCollector{ goroutinesDesc: NewDesc( @@ -365,25 +344,17 @@ type memStatsMetrics []struct { valType ValueType } -// NewBuildInfoCollector returns a collector collecting a single metric -// "go_build_info" with the constant value 1 and three labels "path", "version", -// and "checksum". Their label values contain the main module path, version, and -// checksum, respectively. The labels will only have meaningful values if the -// binary is built with Go module support and from source code retrieved from -// the source repository (rather than the local file system). This is usually -// accomplished by building from outside of GOPATH, specifying the full address -// of the main package, e.g. "GO111MODULE=on go run -// github.com/prometheus/client_golang/examples/random". If built without Go -// module support, all label values will be "unknown". If built with Go module -// support but using the source code from the local file system, the "path" will -// be set appropriately, but "checksum" will be empty and "version" will be -// "(devel)". +// NewBuildInfoCollector is the obsolete version of collectors.NewBuildInfoCollector. +// See there for documentation. // -// This collector uses only the build information for the main module. See -// https://github.com/povilasv/prommod for an example of a collector for the -// module dependencies. +// Deprecated: Use collectors.NewBuildInfoCollector instead. func NewBuildInfoCollector() Collector { - path, version, sum := readBuildInfo() + path, version, sum := "unknown", "unknown", "unknown" + if bi, ok := debug.ReadBuildInfo(); ok { + path = bi.Main.Path + version = bi.Main.Version + sum = bi.Main.Sum + } c := &selfCollector{MustNewConstMetric( NewDesc( "go_build_info", diff --git a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/histogram.go b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/histogram.go index d4ea301a3..8425640b3 100644 --- a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/histogram.go +++ b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/histogram.go @@ -22,7 +22,7 @@ import ( "sync/atomic" "time" - //lint:ignore SA1019 Need to keep deprecated package for compatibility. + //nolint:staticcheck // Ignore SA1019. Need to keep deprecated package for compatibility. "github.com/golang/protobuf/proto" dto "github.com/prometheus/client_model/go" @@ -47,7 +47,12 @@ type Histogram interface { Metric Collector - // Observe adds a single observation to the histogram. + // Observe adds a single observation to the histogram. Observations are + // usually positive or zero. Negative observations are accepted but + // prevent current versions of Prometheus from properly detecting + // counter resets in the sum of observations. See + // https://prometheus.io/docs/practices/histograms/#count-and-sum-of-observations + // for details. Observe(float64) } @@ -192,7 +197,7 @@ func newHistogram(desc *Desc, opts HistogramOpts, labelValues ...string) Histogr h := &histogram{ desc: desc, upperBounds: opts.Buckets, - labelPairs: makeLabelPairs(desc, labelValues), + labelPairs: MakeLabelPairs(desc, labelValues), counts: [2]*histogramCounts{{}, {}}, now: time.Now, } @@ -409,7 +414,7 @@ func (h *histogram) updateExemplar(v float64, bucket int, l Labels) { // (e.g. HTTP request latencies, partitioned by status code and method). Create // instances with NewHistogramVec. type HistogramVec struct { - *metricVec + *MetricVec } // NewHistogramVec creates a new HistogramVec based on the provided HistogramOpts and @@ -422,14 +427,14 @@ func NewHistogramVec(opts HistogramOpts, labelNames []string) *HistogramVec { opts.ConstLabels, ) return &HistogramVec{ - metricVec: newMetricVec(desc, func(lvs ...string) Metric { + MetricVec: NewMetricVec(desc, func(lvs ...string) Metric { return newHistogram(desc, opts, lvs...) }), } } // GetMetricWithLabelValues returns the Histogram for the given slice of label -// values (same order as the VariableLabels in Desc). If that combination of +// values (same order as the variable labels in Desc). If that combination of // label values is accessed for the first time, a new Histogram is created. // // It is possible to call this method without using the returned Histogram to only @@ -444,7 +449,7 @@ func NewHistogramVec(opts HistogramOpts, labelNames []string) *HistogramVec { // example. // // An error is returned if the number of label values is not the same as the -// number of VariableLabels in Desc (minus any curried labels). +// number of variable labels in Desc (minus any curried labels). // // Note that for more than one label value, this method is prone to mistakes // caused by an incorrect order of arguments. Consider GetMetricWith(Labels) as @@ -453,7 +458,7 @@ func NewHistogramVec(opts HistogramOpts, labelNames []string) *HistogramVec { // with a performance overhead (for creating and processing the Labels map). // See also the GaugeVec example. func (v *HistogramVec) GetMetricWithLabelValues(lvs ...string) (Observer, error) { - metric, err := v.metricVec.getMetricWithLabelValues(lvs...) + metric, err := v.MetricVec.GetMetricWithLabelValues(lvs...) if metric != nil { return metric.(Observer), err } @@ -461,19 +466,19 @@ func (v *HistogramVec) GetMetricWithLabelValues(lvs ...string) (Observer, error) } // GetMetricWith returns the Histogram for the given Labels map (the label names -// must match those of the VariableLabels in Desc). If that label map is +// must match those of the variable labels in Desc). If that label map is // accessed for the first time, a new Histogram is created. Implications of // creating a Histogram without using it and keeping the Histogram for later use // are the same as for GetMetricWithLabelValues. // // An error is returned if the number and names of the Labels are inconsistent -// with those of the VariableLabels in Desc (minus any curried labels). +// with those of the variable labels in Desc (minus any curried labels). // // This method is used for the same purpose as // GetMetricWithLabelValues(...string). See there for pros and cons of the two // methods. func (v *HistogramVec) GetMetricWith(labels Labels) (Observer, error) { - metric, err := v.metricVec.getMetricWith(labels) + metric, err := v.MetricVec.GetMetricWith(labels) if metric != nil { return metric.(Observer), err } @@ -517,7 +522,7 @@ func (v *HistogramVec) With(labels Labels) Observer { // registered with a given registry (usually the uncurried version). The Reset // method deletes all metrics, even if called on a curried vector. func (v *HistogramVec) CurryWith(labels Labels) (ObserverVec, error) { - vec, err := v.curryWith(labels) + vec, err := v.MetricVec.CurryWith(labels) if vec != nil { return &HistogramVec{vec}, err } @@ -602,7 +607,7 @@ func NewConstHistogram( count: count, sum: sum, buckets: buckets, - labelPairs: makeLabelPairs(desc, labelValues), + labelPairs: MakeLabelPairs(desc, labelValues), }, nil } diff --git a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/metric.go b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/metric.go index 35bd8bde3..dc121910a 100644 --- a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/metric.go +++ b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/metric.go @@ -17,7 +17,7 @@ import ( "strings" "time" - //lint:ignore SA1019 Need to keep deprecated package for compatibility. + //nolint:staticcheck // Ignore SA1019. Need to keep deprecated package for compatibility. "github.com/golang/protobuf/proto" "github.com/prometheus/common/model" @@ -58,7 +58,7 @@ type Metric interface { } // Opts bundles the options for creating most Metric types. Each metric -// implementation XXX has its own XXXOpts type, but in most cases, it is just be +// implementation XXX has its own XXXOpts type, but in most cases, it is just // an alias of this type (which might change when the requirement arises.) // // It is mandatory to set Name to a non-empty string. All other fields are @@ -89,7 +89,7 @@ type Opts struct { // better covered by target labels set by the scraping Prometheus // server, or by one specific metric (e.g. a build_info or a // machine_role metric). See also - // https://prometheus.io/docs/instrumenting/writing_exporters/#target-labels,-not-static-scraped-labels + // https://prometheus.io/docs/instrumenting/writing_exporters/#target-labels-not-static-scraped-labels ConstLabels Labels } diff --git a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/process_collector.go b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/process_collector.go index 9b8097942..5bfe0ff5b 100644 --- a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/process_collector.go +++ b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/process_collector.go @@ -15,7 +15,11 @@ package prometheus import ( "errors" + "fmt" + "io/ioutil" "os" + "strconv" + "strings" ) type processCollector struct { @@ -50,16 +54,10 @@ type ProcessCollectorOpts struct { ReportErrors bool } -// NewProcessCollector returns a collector which exports the current state of -// process metrics including CPU, memory and file descriptor usage as well as -// the process start time. The detailed behavior is defined by the provided -// ProcessCollectorOpts. The zero value of ProcessCollectorOpts creates a -// collector for the current process with an empty namespace string and no error -// reporting. +// NewProcessCollector is the obsolete version of collectors.NewProcessCollector. +// See there for documentation. // -// The collector only works on operating systems with a Linux-style proc -// filesystem and on Microsoft Windows. On other operating systems, it will not -// collect any metrics. +// Deprecated: Use collectors.NewProcessCollector instead. func NewProcessCollector(opts ProcessCollectorOpts) Collector { ns := "" if len(opts.Namespace) > 0 { @@ -149,3 +147,20 @@ func (c *processCollector) reportError(ch chan<- Metric, desc *Desc, err error) } ch <- NewInvalidMetric(desc, err) } + +// NewPidFileFn returns a function that retrieves a pid from the specified file. +// It is meant to be used for the PidFn field in ProcessCollectorOpts. +func NewPidFileFn(pidFilePath string) func() (int, error) { + return func() (int, error) { + content, err := ioutil.ReadFile(pidFilePath) + if err != nil { + return 0, fmt.Errorf("can't read pid file %q: %+v", pidFilePath, err) + } + pid, err := strconv.Atoi(strings.TrimSpace(string(content))) + if err != nil { + return 0, fmt.Errorf("can't parse pid file %q: %+v", pidFilePath, err) + } + + return pid, nil + } +} diff --git a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/registry.go b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/registry.go index ba94405af..383a7f594 100644 --- a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/registry.go +++ b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/registry.go @@ -26,7 +26,7 @@ import ( "unicode/utf8" "github.com/cespare/xxhash/v2" - //lint:ignore SA1019 Need to keep deprecated package for compatibility. + //nolint:staticcheck // Ignore SA1019. Need to keep deprecated package for compatibility. "github.com/golang/protobuf/proto" "github.com/prometheus/common/expfmt" @@ -215,6 +215,8 @@ func (err AlreadyRegisteredError) Error() string { // by a Gatherer to report multiple errors during MetricFamily gathering. type MultiError []error +// Error formats the contained errors as a bullet point list, preceded by the +// total number of errors. Note that this results in a multi-line string. func (errs MultiError) Error() string { if len(errs) == 0 { return "" diff --git a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/summary.go b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/summary.go index f3c1440d1..c5fa8ed7c 100644 --- a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/summary.go +++ b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/summary.go @@ -23,7 +23,7 @@ import ( "time" "github.com/beorn7/perks/quantile" - //lint:ignore SA1019 Need to keep deprecated package for compatibility. + //nolint:staticcheck // Ignore SA1019. Need to keep deprecated package for compatibility. "github.com/golang/protobuf/proto" dto "github.com/prometheus/client_model/go" @@ -55,7 +55,12 @@ type Summary interface { Metric Collector - // Observe adds a single observation to the summary. + // Observe adds a single observation to the summary. Observations are + // usually positive or zero. Negative observations are accepted but + // prevent current versions of Prometheus from properly detecting + // counter resets in the sum of observations. See + // https://prometheus.io/docs/practices/histograms/#count-and-sum-of-observations + // for details. Observe(float64) } @@ -110,7 +115,7 @@ type SummaryOpts struct { // better covered by target labels set by the scraping Prometheus // server, or by one specific metric (e.g. a build_info or a // machine_role metric). See also - // https://prometheus.io/docs/instrumenting/writing_exporters/#target-labels,-not-static-scraped-labels + // https://prometheus.io/docs/instrumenting/writing_exporters/#target-labels-not-static-scraped-labels ConstLabels Labels // Objectives defines the quantile rank estimates with their respective @@ -121,7 +126,9 @@ type SummaryOpts struct { Objectives map[float64]float64 // MaxAge defines the duration for which an observation stays relevant - // for the summary. Must be positive. The default value is DefMaxAge. + // for the summary. Only applies to pre-calculated quantiles, does not + // apply to _sum and _count. Must be positive. The default value is + // DefMaxAge. MaxAge time.Duration // AgeBuckets is the number of buckets used to exclude observations that @@ -208,7 +215,7 @@ func newSummary(desc *Desc, opts SummaryOpts, labelValues ...string) Summary { // Use the lock-free implementation of a Summary without objectives. s := &noObjectivesSummary{ desc: desc, - labelPairs: makeLabelPairs(desc, labelValues), + labelPairs: MakeLabelPairs(desc, labelValues), counts: [2]*summaryCounts{{}, {}}, } s.init(s) // Init self-collection. @@ -221,7 +228,7 @@ func newSummary(desc *Desc, opts SummaryOpts, labelValues ...string) Summary { objectives: opts.Objectives, sortedObjectives: make([]float64, 0, len(opts.Objectives)), - labelPairs: makeLabelPairs(desc, labelValues), + labelPairs: MakeLabelPairs(desc, labelValues), hotBuf: make([]float64, 0, opts.BufCap), coldBuf: make([]float64, 0, opts.BufCap), @@ -513,7 +520,7 @@ func (s quantSort) Less(i, j int) bool { // (e.g. HTTP request latencies, partitioned by status code and method). Create // instances with NewSummaryVec. type SummaryVec struct { - *metricVec + *MetricVec } // NewSummaryVec creates a new SummaryVec based on the provided SummaryOpts and @@ -535,14 +542,14 @@ func NewSummaryVec(opts SummaryOpts, labelNames []string) *SummaryVec { opts.ConstLabels, ) return &SummaryVec{ - metricVec: newMetricVec(desc, func(lvs ...string) Metric { + MetricVec: NewMetricVec(desc, func(lvs ...string) Metric { return newSummary(desc, opts, lvs...) }), } } // GetMetricWithLabelValues returns the Summary for the given slice of label -// values (same order as the VariableLabels in Desc). If that combination of +// values (same order as the variable labels in Desc). If that combination of // label values is accessed for the first time, a new Summary is created. // // It is possible to call this method without using the returned Summary to only @@ -557,7 +564,7 @@ func NewSummaryVec(opts SummaryOpts, labelNames []string) *SummaryVec { // example. // // An error is returned if the number of label values is not the same as the -// number of VariableLabels in Desc (minus any curried labels). +// number of variable labels in Desc (minus any curried labels). // // Note that for more than one label value, this method is prone to mistakes // caused by an incorrect order of arguments. Consider GetMetricWith(Labels) as @@ -566,7 +573,7 @@ func NewSummaryVec(opts SummaryOpts, labelNames []string) *SummaryVec { // with a performance overhead (for creating and processing the Labels map). // See also the GaugeVec example. func (v *SummaryVec) GetMetricWithLabelValues(lvs ...string) (Observer, error) { - metric, err := v.metricVec.getMetricWithLabelValues(lvs...) + metric, err := v.MetricVec.GetMetricWithLabelValues(lvs...) if metric != nil { return metric.(Observer), err } @@ -574,19 +581,19 @@ func (v *SummaryVec) GetMetricWithLabelValues(lvs ...string) (Observer, error) { } // GetMetricWith returns the Summary for the given Labels map (the label names -// must match those of the VariableLabels in Desc). If that label map is +// must match those of the variable labels in Desc). If that label map is // accessed for the first time, a new Summary is created. Implications of // creating a Summary without using it and keeping the Summary for later use are // the same as for GetMetricWithLabelValues. // // An error is returned if the number and names of the Labels are inconsistent -// with those of the VariableLabels in Desc (minus any curried labels). +// with those of the variable labels in Desc (minus any curried labels). // // This method is used for the same purpose as // GetMetricWithLabelValues(...string). See there for pros and cons of the two // methods. func (v *SummaryVec) GetMetricWith(labels Labels) (Observer, error) { - metric, err := v.metricVec.getMetricWith(labels) + metric, err := v.MetricVec.GetMetricWith(labels) if metric != nil { return metric.(Observer), err } @@ -630,7 +637,7 @@ func (v *SummaryVec) With(labels Labels) Observer { // registered with a given registry (usually the uncurried version). The Reset // method deletes all metrics, even if called on a curried vector. func (v *SummaryVec) CurryWith(labels Labels) (ObserverVec, error) { - vec, err := v.curryWith(labels) + vec, err := v.MetricVec.CurryWith(labels) if vec != nil { return &SummaryVec{vec}, err } @@ -716,7 +723,7 @@ func NewConstSummary( count: count, sum: sum, quantiles: quantiles, - labelPairs: makeLabelPairs(desc, labelValues), + labelPairs: MakeLabelPairs(desc, labelValues), }, nil } diff --git a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/value.go b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/value.go index 6206928cc..c778711b8 100644 --- a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/value.go +++ b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/value.go @@ -19,7 +19,7 @@ import ( "time" "unicode/utf8" - //lint:ignore SA1019 Need to keep deprecated package for compatibility. + //nolint:staticcheck // Ignore SA1019. Need to keep deprecated package for compatibility. "github.com/golang/protobuf/proto" "github.com/golang/protobuf/ptypes" @@ -63,7 +63,7 @@ func newValueFunc(desc *Desc, valueType ValueType, function func() float64) *val desc: desc, valType: valueType, function: function, - labelPairs: makeLabelPairs(desc, nil), + labelPairs: MakeLabelPairs(desc, nil), } result.init(result) return result @@ -95,7 +95,7 @@ func NewConstMetric(desc *Desc, valueType ValueType, value float64, labelValues desc: desc, valType: valueType, val: value, - labelPairs: makeLabelPairs(desc, labelValues), + labelPairs: MakeLabelPairs(desc, labelValues), }, nil } @@ -145,7 +145,14 @@ func populateMetric( return nil } -func makeLabelPairs(desc *Desc, labelValues []string) []*dto.LabelPair { +// MakeLabelPairs is a helper function to create protobuf LabelPairs from the +// variable and constant labels in the provided Desc. The values for the +// variable labels are defined by the labelValues slice, which must be in the +// same order as the corresponding variable labels in the Desc. +// +// This function is only needed for custom Metric implementations. See MetricVec +// example. +func MakeLabelPairs(desc *Desc, labelValues []string) []*dto.LabelPair { totalLen := len(desc.variableLabels) + len(desc.constLabelPairs) if totalLen == 0 { // Super fast path. diff --git a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/vec.go b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/vec.go index d53848dc4..4ababe6c9 100644 --- a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/vec.go +++ b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/vec.go @@ -20,12 +20,20 @@ import ( "github.com/prometheus/common/model" ) -// metricVec is a Collector to bundle metrics of the same name that differ in -// their label values. metricVec is not used directly (and therefore -// unexported). It is used as a building block for implementations of vectors of -// a given metric type, like GaugeVec, CounterVec, SummaryVec, and HistogramVec. -// It also handles label currying. -type metricVec struct { +// MetricVec is a Collector to bundle metrics of the same name that differ in +// their label values. MetricVec is not used directly but as a building block +// for implementations of vectors of a given metric type, like GaugeVec, +// CounterVec, SummaryVec, and HistogramVec. It is exported so that it can be +// used for custom Metric implementations. +// +// To create a FooVec for custom Metric Foo, embed a pointer to MetricVec in +// FooVec and initialize it with NewMetricVec. Implement wrappers for +// GetMetricWithLabelValues and GetMetricWith that return (Foo, error) rather +// than (Metric, error). Similarly, create a wrapper for CurryWith that returns +// (*FooVec, error) rather than (*MetricVec, error). It is recommended to also +// add the convenience methods WithLabelValues, With, and MustCurryWith, which +// panic instead of returning errors. See also the MetricVec example. +type MetricVec struct { *metricMap curry []curriedLabelValue @@ -35,9 +43,9 @@ type metricVec struct { hashAddByte func(h uint64, b byte) uint64 } -// newMetricVec returns an initialized metricVec. -func newMetricVec(desc *Desc, newMetric func(lvs ...string) Metric) *metricVec { - return &metricVec{ +// NewMetricVec returns an initialized metricVec. +func NewMetricVec(desc *Desc, newMetric func(lvs ...string) Metric) *MetricVec { + return &MetricVec{ metricMap: &metricMap{ metrics: map[uint64][]metricWithLabelValues{}, desc: desc, @@ -63,7 +71,7 @@ func newMetricVec(desc *Desc, newMetric func(lvs ...string) Metric) *metricVec { // latter has a much more readable (albeit more verbose) syntax, but it comes // with a performance overhead (for creating and processing the Labels map). // See also the CounterVec example. -func (m *metricVec) DeleteLabelValues(lvs ...string) bool { +func (m *MetricVec) DeleteLabelValues(lvs ...string) bool { h, err := m.hashLabelValues(lvs) if err != nil { return false @@ -82,7 +90,7 @@ func (m *metricVec) DeleteLabelValues(lvs ...string) bool { // // This method is used for the same purpose as DeleteLabelValues(...string). See // there for pros and cons of the two methods. -func (m *metricVec) Delete(labels Labels) bool { +func (m *MetricVec) Delete(labels Labels) bool { h, err := m.hashLabels(labels) if err != nil { return false @@ -95,15 +103,32 @@ func (m *metricVec) Delete(labels Labels) bool { // show up in GoDoc. // Describe implements Collector. -func (m *metricVec) Describe(ch chan<- *Desc) { m.metricMap.Describe(ch) } +func (m *MetricVec) Describe(ch chan<- *Desc) { m.metricMap.Describe(ch) } // Collect implements Collector. -func (m *metricVec) Collect(ch chan<- Metric) { m.metricMap.Collect(ch) } +func (m *MetricVec) Collect(ch chan<- Metric) { m.metricMap.Collect(ch) } // Reset deletes all metrics in this vector. -func (m *metricVec) Reset() { m.metricMap.Reset() } +func (m *MetricVec) Reset() { m.metricMap.Reset() } -func (m *metricVec) curryWith(labels Labels) (*metricVec, error) { +// CurryWith returns a vector curried with the provided labels, i.e. the +// returned vector has those labels pre-set for all labeled operations performed +// on it. The cardinality of the curried vector is reduced accordingly. The +// order of the remaining labels stays the same (just with the curried labels +// taken out of the sequence – which is relevant for the +// (GetMetric)WithLabelValues methods). It is possible to curry a curried +// vector, but only with labels not yet used for currying before. +// +// The metrics contained in the MetricVec are shared between the curried and +// uncurried vectors. They are just accessed differently. Curried and uncurried +// vectors behave identically in terms of collection. Only one must be +// registered with a given registry (usually the uncurried version). The Reset +// method deletes all metrics, even if called on a curried vector. +// +// Note that CurryWith is usually not called directly but through a wrapper +// around MetricVec, implementing a vector for a specific Metric +// implementation, for example GaugeVec. +func (m *MetricVec) CurryWith(labels Labels) (*MetricVec, error) { var ( newCurry []curriedLabelValue oldCurry = m.curry @@ -128,7 +153,7 @@ func (m *metricVec) curryWith(labels Labels) (*metricVec, error) { return nil, fmt.Errorf("%d unknown label(s) found during currying", l) } - return &metricVec{ + return &MetricVec{ metricMap: m.metricMap, curry: newCurry, hashAdd: m.hashAdd, @@ -136,7 +161,34 @@ func (m *metricVec) curryWith(labels Labels) (*metricVec, error) { }, nil } -func (m *metricVec) getMetricWithLabelValues(lvs ...string) (Metric, error) { +// GetMetricWithLabelValues returns the Metric for the given slice of label +// values (same order as the variable labels in Desc). If that combination of +// label values is accessed for the first time, a new Metric is created (by +// calling the newMetric function provided during construction of the +// MetricVec). +// +// It is possible to call this method without using the returned Metric to only +// create the new Metric but leave it in its initial state. +// +// Keeping the Metric for later use is possible (and should be considered if +// performance is critical), but keep in mind that Reset, DeleteLabelValues and +// Delete can be used to delete the Metric from the MetricVec. In that case, the +// Metric will still exist, but it will not be exported anymore, even if a +// Metric with the same label values is created later. +// +// An error is returned if the number of label values is not the same as the +// number of variable labels in Desc (minus any curried labels). +// +// Note that for more than one label value, this method is prone to mistakes +// caused by an incorrect order of arguments. Consider GetMetricWith(Labels) as +// an alternative to avoid that type of mistake. For higher label numbers, the +// latter has a much more readable (albeit more verbose) syntax, but it comes +// with a performance overhead (for creating and processing the Labels map). +// +// Note that GetMetricWithLabelValues is usually not called directly but through +// a wrapper around MetricVec, implementing a vector for a specific Metric +// implementation, for example GaugeVec. +func (m *MetricVec) GetMetricWithLabelValues(lvs ...string) (Metric, error) { h, err := m.hashLabelValues(lvs) if err != nil { return nil, err @@ -145,7 +197,23 @@ func (m *metricVec) getMetricWithLabelValues(lvs ...string) (Metric, error) { return m.metricMap.getOrCreateMetricWithLabelValues(h, lvs, m.curry), nil } -func (m *metricVec) getMetricWith(labels Labels) (Metric, error) { +// GetMetricWith returns the Metric for the given Labels map (the label names +// must match those of the variable labels in Desc). If that label map is +// accessed for the first time, a new Metric is created. Implications of +// creating a Metric without using it and keeping the Metric for later use +// are the same as for GetMetricWithLabelValues. +// +// An error is returned if the number and names of the Labels are inconsistent +// with those of the variable labels in Desc (minus any curried labels). +// +// This method is used for the same purpose as +// GetMetricWithLabelValues(...string). See there for pros and cons of the two +// methods. +// +// Note that GetMetricWith is usually not called directly but through a wrapper +// around MetricVec, implementing a vector for a specific Metric implementation, +// for example GaugeVec. +func (m *MetricVec) GetMetricWith(labels Labels) (Metric, error) { h, err := m.hashLabels(labels) if err != nil { return nil, err @@ -154,7 +222,7 @@ func (m *metricVec) getMetricWith(labels Labels) (Metric, error) { return m.metricMap.getOrCreateMetricWithLabels(h, labels, m.curry), nil } -func (m *metricVec) hashLabelValues(vals []string) (uint64, error) { +func (m *MetricVec) hashLabelValues(vals []string) (uint64, error) { if err := validateLabelValues(vals, len(m.desc.variableLabels)-len(m.curry)); err != nil { return 0, err } @@ -177,7 +245,7 @@ func (m *metricVec) hashLabelValues(vals []string) (uint64, error) { return h, nil } -func (m *metricVec) hashLabels(labels Labels) (uint64, error) { +func (m *MetricVec) hashLabels(labels Labels) (uint64, error) { if err := validateValuesInLabels(labels, len(m.desc.variableLabels)-len(m.curry)); err != nil { return 0, err } @@ -276,7 +344,9 @@ func (m *metricMap) deleteByHashWithLabelValues( } if len(metrics) > 1 { + old := metrics m.metrics[h] = append(metrics[:i], metrics[i+1:]...) + old[len(old)-1] = metricWithLabelValues{} } else { delete(m.metrics, h) } @@ -302,7 +372,9 @@ func (m *metricMap) deleteByHashWithLabels( } if len(metrics) > 1 { + old := metrics m.metrics[h] = append(metrics[:i], metrics[i+1:]...) + old[len(old)-1] = metricWithLabelValues{} } else { delete(m.metrics, h) } diff --git a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/wrap.go b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/wrap.go index 438aa5e92..74ee93280 100644 --- a/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/wrap.go +++ b/src/runtime/vendor/github.com/prometheus/client_golang/prometheus/wrap.go @@ -17,7 +17,7 @@ import ( "fmt" "sort" - //lint:ignore SA1019 Need to keep deprecated package for compatibility. + //nolint:staticcheck // Ignore SA1019. Need to keep deprecated package for compatibility. "github.com/golang/protobuf/proto" dto "github.com/prometheus/client_model/go" @@ -32,7 +32,9 @@ import ( // in a no-op Registerer. // // WrapRegistererWith provides a way to add fixed labels to a subset of -// Collectors. It should not be used to add fixed labels to all metrics exposed. +// Collectors. It should not be used to add fixed labels to all metrics +// exposed. See also +// https://prometheus.io/docs/instrumenting/writing_exporters/#target-labels-not-static-scraped-labels // // Conflicts between Collectors registered through the original Registerer with // Collectors registered through the wrapping Registerer will still be diff --git a/src/runtime/vendor/github.com/prometheus/common/expfmt/decode.go b/src/runtime/vendor/github.com/prometheus/common/expfmt/decode.go index c092723e8..7657f841d 100644 --- a/src/runtime/vendor/github.com/prometheus/common/expfmt/decode.go +++ b/src/runtime/vendor/github.com/prometheus/common/expfmt/decode.go @@ -164,7 +164,7 @@ func (sd *SampleDecoder) Decode(s *model.Vector) error { } // ExtractSamples builds a slice of samples from the provided metric -// families. If an error occurrs during sample extraction, it continues to +// families. If an error occurs during sample extraction, it continues to // extract from the remaining metric families. The returned error is the last // error that has occurred. func ExtractSamples(o *DecodeOptions, fams ...*dto.MetricFamily) (model.Vector, error) { diff --git a/src/runtime/vendor/github.com/prometheus/common/expfmt/text_parse.go b/src/runtime/vendor/github.com/prometheus/common/expfmt/text_parse.go index 342e5940d..b6079b31e 100644 --- a/src/runtime/vendor/github.com/prometheus/common/expfmt/text_parse.go +++ b/src/runtime/vendor/github.com/prometheus/common/expfmt/text_parse.go @@ -299,6 +299,17 @@ func (p *TextParser) startLabelName() stateFn { p.parseError(fmt.Sprintf("expected '=' after label name, found %q", p.currentByte)) return nil } + // Check for duplicate label names. + labels := make(map[string]struct{}) + for _, l := range p.currentMetric.Label { + lName := l.GetName() + if _, exists := labels[lName]; !exists { + labels[lName] = struct{}{} + } else { + p.parseError(fmt.Sprintf("duplicate label names for metric %q", p.currentMF.GetName())) + return nil + } + } return p.startLabelValue } diff --git a/src/runtime/vendor/github.com/prometheus/common/model/fnv.go b/src/runtime/vendor/github.com/prometheus/common/model/fnv.go index 038fc1c90..367afecd3 100644 --- a/src/runtime/vendor/github.com/prometheus/common/model/fnv.go +++ b/src/runtime/vendor/github.com/prometheus/common/model/fnv.go @@ -20,7 +20,7 @@ const ( prime64 = 1099511628211 ) -// hashNew initializies a new fnv64a hash value. +// hashNew initializes a new fnv64a hash value. func hashNew() uint64 { return offset64 } diff --git a/src/runtime/vendor/github.com/prometheus/common/model/labels.go b/src/runtime/vendor/github.com/prometheus/common/model/labels.go index 41051a01a..ef8956335 100644 --- a/src/runtime/vendor/github.com/prometheus/common/model/labels.go +++ b/src/runtime/vendor/github.com/prometheus/common/model/labels.go @@ -45,6 +45,14 @@ const ( // scrape a target. MetricsPathLabel = "__metrics_path__" + // ScrapeIntervalLabel is the name of the label that holds the scrape interval + // used to scrape a target. + ScrapeIntervalLabel = "__scrape_interval__" + + // ScrapeTimeoutLabel is the name of the label that holds the scrape + // timeout used to scrape a target. + ScrapeTimeoutLabel = "__scrape_timeout__" + // ReservedLabelPrefix is a prefix which is not legal in user-supplied // label names. ReservedLabelPrefix = "__" diff --git a/src/runtime/vendor/github.com/prometheus/common/model/time.go b/src/runtime/vendor/github.com/prometheus/common/model/time.go index 490a0240c..7f67b16e4 100644 --- a/src/runtime/vendor/github.com/prometheus/common/model/time.go +++ b/src/runtime/vendor/github.com/prometheus/common/model/time.go @@ -14,6 +14,8 @@ package model import ( + "encoding/json" + "errors" "fmt" "math" "regexp" @@ -181,77 +183,118 @@ func (d *Duration) Type() string { return "duration" } -var durationRE = regexp.MustCompile("^([0-9]+)(y|w|d|h|m|s|ms)$") +var durationRE = regexp.MustCompile("^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$") // ParseDuration parses a string into a time.Duration, assuming that a year // always has 365d, a week always has 7d, and a day always has 24h. func ParseDuration(durationStr string) (Duration, error) { - // Allow 0 without a unit. - if durationStr == "0" { + switch durationStr { + case "0": + // Allow 0 without a unit. return 0, nil + case "": + return 0, fmt.Errorf("empty duration string") } matches := durationRE.FindStringSubmatch(durationStr) - if len(matches) != 3 { + if matches == nil { return 0, fmt.Errorf("not a valid duration string: %q", durationStr) } - var ( - n, _ = strconv.Atoi(matches[1]) - dur = time.Duration(n) * time.Millisecond - ) - switch unit := matches[2]; unit { - case "y": - dur *= 1000 * 60 * 60 * 24 * 365 - case "w": - dur *= 1000 * 60 * 60 * 24 * 7 - case "d": - dur *= 1000 * 60 * 60 * 24 - case "h": - dur *= 1000 * 60 * 60 - case "m": - dur *= 1000 * 60 - case "s": - dur *= 1000 - case "ms": - // Value already correct - default: - return 0, fmt.Errorf("invalid time unit in duration string: %q", unit) + var dur time.Duration + + // Parse the match at pos `pos` in the regex and use `mult` to turn that + // into ms, then add that value to the total parsed duration. + var overflowErr error + m := func(pos int, mult time.Duration) { + if matches[pos] == "" { + return + } + n, _ := strconv.Atoi(matches[pos]) + + // Check if the provided duration overflows time.Duration (> ~ 290years). + if n > int((1<<63-1)/mult/time.Millisecond) { + overflowErr = errors.New("duration out of range") + } + d := time.Duration(n) * time.Millisecond + dur += d * mult + + if dur < 0 { + overflowErr = errors.New("duration out of range") + } } - return Duration(dur), nil + + m(2, 1000*60*60*24*365) // y + m(4, 1000*60*60*24*7) // w + m(6, 1000*60*60*24) // d + m(8, 1000*60*60) // h + m(10, 1000*60) // m + m(12, 1000) // s + m(14, 1) // ms + + return Duration(dur), overflowErr } func (d Duration) String() string { var ( - ms = int64(time.Duration(d) / time.Millisecond) - unit = "ms" + ms = int64(time.Duration(d) / time.Millisecond) + r = "" ) if ms == 0 { return "0s" } - factors := map[string]int64{ - "y": 1000 * 60 * 60 * 24 * 365, - "w": 1000 * 60 * 60 * 24 * 7, - "d": 1000 * 60 * 60 * 24, - "h": 1000 * 60 * 60, - "m": 1000 * 60, - "s": 1000, - "ms": 1, + + f := func(unit string, mult int64, exact bool) { + if exact && ms%mult != 0 { + return + } + if v := ms / mult; v > 0 { + r += fmt.Sprintf("%d%s", v, unit) + ms -= v * mult + } } - switch int64(0) { - case ms % factors["y"]: - unit = "y" - case ms % factors["w"]: - unit = "w" - case ms % factors["d"]: - unit = "d" - case ms % factors["h"]: - unit = "h" - case ms % factors["m"]: - unit = "m" - case ms % factors["s"]: - unit = "s" + // Only format years and weeks if the remainder is zero, as it is often + // easier to read 90d than 12w6d. + f("y", 1000*60*60*24*365, true) + f("w", 1000*60*60*24*7, true) + + f("d", 1000*60*60*24, false) + f("h", 1000*60*60, false) + f("m", 1000*60, false) + f("s", 1000, false) + f("ms", 1, false) + + return r +} + +// MarshalJSON implements the json.Marshaler interface. +func (d Duration) MarshalJSON() ([]byte, error) { + return json.Marshal(d.String()) +} + +// UnmarshalJSON implements the json.Unmarshaler interface. +func (d *Duration) UnmarshalJSON(bytes []byte) error { + var s string + if err := json.Unmarshal(bytes, &s); err != nil { + return err } - return fmt.Sprintf("%v%v", ms/factors[unit], unit) + dur, err := ParseDuration(s) + if err != nil { + return err + } + *d = dur + return nil +} + +// MarshalText implements the encoding.TextMarshaler interface. +func (d *Duration) MarshalText() ([]byte, error) { + return []byte(d.String()), nil +} + +// UnmarshalText implements the encoding.TextUnmarshaler interface. +func (d *Duration) UnmarshalText(text []byte) error { + var err error + *d, err = ParseDuration(string(text)) + return err } // MarshalYAML implements the yaml.Marshaler interface. diff --git a/src/runtime/vendor/github.com/safchain/ethtool/.travis.yml b/src/runtime/vendor/github.com/safchain/ethtool/.travis.yml index 4f2ee4d97..fbfdf13ea 100644 --- a/src/runtime/vendor/github.com/safchain/ethtool/.travis.yml +++ b/src/runtime/vendor/github.com/safchain/ethtool/.travis.yml @@ -1 +1,7 @@ +arch: + - amd64 + - ppc64le language: go + +before_script: + - go get golang.org/x/sys/unix diff --git a/src/runtime/vendor/github.com/safchain/ethtool/ethtool.go b/src/runtime/vendor/github.com/safchain/ethtool/ethtool.go index 8dcc78c05..d1cd4d31f 100644 --- a/src/runtime/vendor/github.com/safchain/ethtool/ethtool.go +++ b/src/runtime/vendor/github.com/safchain/ethtool/ethtool.go @@ -30,8 +30,9 @@ import ( "encoding/hex" "fmt" "strings" - "syscall" "unsafe" + + "golang.org/x/sys/unix" ) // Maximum size of an interface name @@ -53,12 +54,15 @@ const ( ETHTOOL_GSTRINGS = 0x0000001b ETHTOOL_GSTATS = 0x0000001d // other CMDs from ethtool-copy.h of ethtool-3.5 package - ETHTOOL_GSET = 0x00000001 /* Get settings. */ - ETHTOOL_SSET = 0x00000002 /* Set settings. */ - ETHTOOL_GMSGLVL = 0x00000007 /* Get driver message level */ - ETHTOOL_SMSGLVL = 0x00000008 /* Set driver msg level. */ + ETHTOOL_GSET = 0x00000001 /* Get settings. */ + ETHTOOL_SSET = 0x00000002 /* Set settings. */ + ETHTOOL_GMSGLVL = 0x00000007 /* Get driver message level */ + ETHTOOL_SMSGLVL = 0x00000008 /* Set driver msg level. */ + ETHTOOL_GCHANNELS = 0x0000003c /* Get no of channels */ + ETHTOOL_SCHANNELS = 0x0000003d /* Set no of channels */ + ETHTOOL_GCOALESCE = 0x0000000e /* Get coalesce config */ /* Get link status for host, i.e. whether the interface *and* the - * physical port (if there is one) are up (ethtool_value). */ + * physical port (if there is one) are up (ethtool_value). */ ETHTOOL_GLINK = 0x0000000a ETHTOOL_GMODULEINFO = 0x00000042 /* Get plug-in module information */ ETHTOOL_GMODULEEEPROM = 0x00000043 /* Get plug-in module eeprom */ @@ -72,7 +76,7 @@ const ( // MAX_GSTRINGS maximum number of stats entries that ethtool can // retrieve currently. const ( - MAX_GSTRINGS = 1000 + MAX_GSTRINGS = 16384 MAX_FEATURE_BLOCKS = (MAX_GSTRINGS + 32 - 1) / 32 EEPROM_LEN = 640 PERMADDR_LEN = 32 @@ -130,6 +134,63 @@ type ethtoolDrvInfo struct { regdump_len uint32 } +// DrvInfo contains driver information +// ethtool.h v3.5: struct ethtool_drvinfo +type DrvInfo struct { + Cmd uint32 + Driver string + Version string + FwVersion string + BusInfo string + EromVersion string + Reserved2 string + NPrivFlags uint32 + NStats uint32 + TestInfoLen uint32 + EedumpLen uint32 + RegdumpLen uint32 +} + +// Channels contains the number of channels for a given interface. +type Channels struct { + Cmd uint32 + MaxRx uint32 + MaxTx uint32 + MaxOther uint32 + MaxCombined uint32 + RxCount uint32 + TxCount uint32 + OtherCount uint32 + CombinedCount uint32 +} + +// Coalesce is a coalesce config for an interface +type Coalesce struct { + Cmd uint32 + RxCoalesceUsecs uint32 + RxMaxCoalescedFrames uint32 + RxCoalesceUsecsIrq uint32 + RxMaxCoalescedFramesIrq uint32 + TxCoalesceUsecs uint32 + TxMaxCoalescedFrames uint32 + TxCoalesceUsecsIrq uint32 + TxMaxCoalescedFramesIrq uint32 + StatsBlockCoalesceUsecs uint32 + UseAdaptiveRxCoalesce uint32 + UseAdaptiveTxCoalesce uint32 + PktRateLow uint32 + RxCoalesceUsecsLow uint32 + RxMaxCoalescedFramesLow uint32 + TxCoalesceUsecsLow uint32 + TxMaxCoalescedFramesLow uint32 + PktRateHigh uint32 + RxCoalesceUsecsHigh uint32 + RxMaxCoalescedFramesHigh uint32 + TxCoalesceUsecsHigh uint32 + TxMaxCoalescedFramesHigh uint32 + RateSampleInterval uint32 +} + type ethtoolGStrings struct { cmd uint32 string_set uint32 @@ -159,8 +220,8 @@ type ethtoolModInfo struct { } type ethtoolLink struct { - cmd uint32 - data uint32 + cmd uint32 + data uint32 } type ethtoolPermAddr struct { @@ -212,15 +273,60 @@ func (e *Ethtool) ModuleEepromHex(intf string) (string, error) { } // DriverInfo returns driver information of the given interface name. -func (e *Ethtool) DriverInfo(intf string) (ethtoolDrvInfo, error) { - drvInfo, err := e.getDriverInfo(intf) +func (e *Ethtool) DriverInfo(intf string) (DrvInfo, error) { + i, err := e.getDriverInfo(intf) if err != nil { - return ethtoolDrvInfo{}, err + return DrvInfo{}, err + } + + drvInfo := DrvInfo{ + Cmd: i.cmd, + Driver: string(bytes.Trim(i.driver[:], "\x00")), + Version: string(bytes.Trim(i.version[:], "\x00")), + FwVersion: string(bytes.Trim(i.fw_version[:], "\x00")), + BusInfo: string(bytes.Trim(i.bus_info[:], "\x00")), + EromVersion: string(bytes.Trim(i.erom_version[:], "\x00")), + Reserved2: string(bytes.Trim(i.reserved2[:], "\x00")), + NPrivFlags: i.n_priv_flags, + NStats: i.n_stats, + TestInfoLen: i.testinfo_len, + EedumpLen: i.eedump_len, + RegdumpLen: i.regdump_len, } return drvInfo, nil } +// GetChannels returns the number of channels for the given interface name. +func (e *Ethtool) GetChannels(intf string) (Channels, error) { + channels, err := e.getChannels(intf) + if err != nil { + return Channels{}, err + } + + return channels, nil +} + +// SetChannels sets the number of channels for the given interface name and +// returns the new number of channels. +func (e *Ethtool) SetChannels(intf string, channels Channels) (Channels, error) { + channels, err := e.setChannels(intf, channels) + if err != nil { + return Channels{}, err + } + + return channels, nil +} + +// GetCoalesce returns the coalesce config for the given interface name. +func (e *Ethtool) GetCoalesce(intf string) (Coalesce, error) { + coalesce, err := e.getCoalesce(intf) + if err != nil { + return Coalesce{}, err + } + return coalesce, nil +} + // PermAddr returns permanent address of the given interface name. func (e *Ethtool) PermAddr(intf string) (string, error) { permAddr, err := e.getPermAddr(intf) @@ -253,9 +359,9 @@ func (e *Ethtool) ioctl(intf string, data uintptr) error { ifr_data: data, } - _, _, ep := syscall.Syscall(syscall.SYS_IOCTL, uintptr(e.fd), SIOCETHTOOL, uintptr(unsafe.Pointer(&ifr))) + _, _, ep := unix.Syscall(unix.SYS_IOCTL, uintptr(e.fd), SIOCETHTOOL, uintptr(unsafe.Pointer(&ifr))) if ep != 0 { - return syscall.Errno(ep) + return ep } return nil @@ -273,6 +379,40 @@ func (e *Ethtool) getDriverInfo(intf string) (ethtoolDrvInfo, error) { return drvinfo, nil } +func (e *Ethtool) getChannels(intf string) (Channels, error) { + channels := Channels{ + Cmd: ETHTOOL_GCHANNELS, + } + + if err := e.ioctl(intf, uintptr(unsafe.Pointer(&channels))); err != nil { + return Channels{}, err + } + + return channels, nil +} + +func (e *Ethtool) setChannels(intf string, channels Channels) (Channels, error) { + channels.Cmd = ETHTOOL_SCHANNELS + + if err := e.ioctl(intf, uintptr(unsafe.Pointer(&channels))); err != nil { + return Channels{}, err + } + + return channels, nil +} + +func (e *Ethtool) getCoalesce(intf string) (Coalesce, error) { + coalesce := Coalesce{ + Cmd: ETHTOOL_GCOALESCE, + } + + if err := e.ioctl(intf, uintptr(unsafe.Pointer(&coalesce))); err != nil { + return Coalesce{}, err + } + + return coalesce, nil +} + func (e *Ethtool) getPermAddr(intf string) (ethtoolPermAddr, error) { permAddr := ethtoolPermAddr{ cmd: ETHTOOL_GPERMADDR, @@ -423,7 +563,7 @@ func (e *Ethtool) Change(intf string, config map[string]bool) error { return e.ioctl(intf, uintptr(unsafe.Pointer(&features))) } -// Get state of a link. +// Get state of a link. func (e *Ethtool) LinkState(intf string) (uint32, error) { x := ethtoolLink{ cmd: ETHTOOL_GLINK, @@ -474,7 +614,11 @@ func (e *Ethtool) Stats(intf string) (map[string]uint64, error) { var result = make(map[string]uint64) for i := 0; i != int(drvinfo.n_stats); i++ { b := gstrings.data[i*ETH_GSTRING_LEN : i*ETH_GSTRING_LEN+ETH_GSTRING_LEN] - key := string(b[:strings.Index(string(b), "\x00")]) + strEnd := strings.Index(string(b), "\x00") + if strEnd == -1 { + strEnd = ETH_GSTRING_LEN + } + key := string(b[:strEnd]) if len(key) != 0 { result[key] = stats.data[i] } @@ -485,12 +629,12 @@ func (e *Ethtool) Stats(intf string) (map[string]uint64, error) { // Close closes the ethool handler func (e *Ethtool) Close() { - syscall.Close(e.fd) + unix.Close(e.fd) } // NewEthtool returns a new ethtool handler func NewEthtool() (*Ethtool, error) { - fd, err := syscall.Socket(syscall.AF_INET, syscall.SOCK_DGRAM, syscall.IPPROTO_IP) + fd, err := unix.Socket(unix.AF_INET, unix.SOCK_DGRAM, unix.IPPROTO_IP) if err != nil { return nil, err } diff --git a/src/runtime/vendor/github.com/safchain/ethtool/ethtool_cmd.go b/src/runtime/vendor/github.com/safchain/ethtool/ethtool_cmd.go index d0c35e476..ee52cd8f8 100644 --- a/src/runtime/vendor/github.com/safchain/ethtool/ethtool_cmd.go +++ b/src/runtime/vendor/github.com/safchain/ethtool/ethtool_cmd.go @@ -28,8 +28,9 @@ package ethtool import ( "math" "reflect" - "syscall" "unsafe" + + "golang.org/x/sys/unix" ) type EthtoolCmd struct { /* ethtool.c: struct ethtool_cmd */ @@ -121,10 +122,10 @@ func (e *Ethtool) CmdGet(ecmd *EthtoolCmd, intf string) (uint32, error) { ifr_data: uintptr(unsafe.Pointer(ecmd)), } - _, _, ep := syscall.Syscall(syscall.SYS_IOCTL, uintptr(e.fd), + _, _, ep := unix.Syscall(unix.SYS_IOCTL, uintptr(e.fd), SIOCETHTOOL, uintptr(unsafe.Pointer(&ifr))) if ep != 0 { - return 0, syscall.Errno(ep) + return 0, ep } var speedval uint32 = (uint32(ecmd.Speed_hi) << 16) | @@ -149,10 +150,10 @@ func (e *Ethtool) CmdSet(ecmd *EthtoolCmd, intf string) (uint32, error) { ifr_data: uintptr(unsafe.Pointer(ecmd)), } - _, _, ep := syscall.Syscall(syscall.SYS_IOCTL, uintptr(e.fd), + _, _, ep := unix.Syscall(unix.SYS_IOCTL, uintptr(e.fd), SIOCETHTOOL, uintptr(unsafe.Pointer(&ifr))) if ep != 0 { - return 0, syscall.Errno(ep) + return 0, unix.Errno(ep) } var speedval uint32 = (uint32(ecmd.Speed_hi) << 16) | @@ -178,10 +179,10 @@ func (e *Ethtool) CmdGetMapped(intf string) (map[string]uint64, error) { ifr_data: uintptr(unsafe.Pointer(&ecmd)), } - _, _, ep := syscall.Syscall(syscall.SYS_IOCTL, uintptr(e.fd), + _, _, ep := unix.Syscall(unix.SYS_IOCTL, uintptr(e.fd), SIOCETHTOOL, uintptr(unsafe.Pointer(&ifr))) if ep != 0 { - return nil, syscall.Errno(ep) + return nil, ep } var result = make(map[string]uint64) diff --git a/src/runtime/vendor/github.com/safchain/ethtool/ethtool_msglvl.go b/src/runtime/vendor/github.com/safchain/ethtool/ethtool_msglvl.go index 91836f019..1f6e338cf 100644 --- a/src/runtime/vendor/github.com/safchain/ethtool/ethtool_msglvl.go +++ b/src/runtime/vendor/github.com/safchain/ethtool/ethtool_msglvl.go @@ -26,8 +26,9 @@ package ethtool import ( - "syscall" "unsafe" + + "golang.org/x/sys/unix" ) type ethtoolValue struct { /* ethtool.c: struct ethtool_value */ @@ -49,10 +50,10 @@ func (e *Ethtool) MsglvlGet(intf string) (uint32, error) { ifr_data: uintptr(unsafe.Pointer(&edata)), } - _, _, ep := syscall.Syscall(syscall.SYS_IOCTL, uintptr(e.fd), + _, _, ep := unix.Syscall(unix.SYS_IOCTL, uintptr(e.fd), SIOCETHTOOL, uintptr(unsafe.Pointer(&ifr))) if ep != 0 { - return 0, syscall.Errno(ep) + return 0, ep } return edata.data, nil @@ -72,10 +73,10 @@ func (e *Ethtool) MsglvlSet(intf string, valset uint32) (uint32, uint32, error) ifr_data: uintptr(unsafe.Pointer(&edata)), } - _, _, ep := syscall.Syscall(syscall.SYS_IOCTL, uintptr(e.fd), + _, _, ep := unix.Syscall(unix.SYS_IOCTL, uintptr(e.fd), SIOCETHTOOL, uintptr(unsafe.Pointer(&ifr))) if ep != 0 { - return 0, 0, syscall.Errno(ep) + return 0, 0, ep } readval := edata.data @@ -83,10 +84,10 @@ func (e *Ethtool) MsglvlSet(intf string, valset uint32) (uint32, uint32, error) edata.cmd = ETHTOOL_SMSGLVL edata.data = valset - _, _, ep = syscall.Syscall(syscall.SYS_IOCTL, uintptr(e.fd), + _, _, ep = unix.Syscall(unix.SYS_IOCTL, uintptr(e.fd), SIOCETHTOOL, uintptr(unsafe.Pointer(&ifr))) if ep != 0 { - return 0, 0, syscall.Errno(ep) + return 0, 0, ep } return readval, edata.data, nil diff --git a/src/runtime/vendor/github.com/vishvananda/netns/README.md b/src/runtime/vendor/github.com/vishvananda/netns/README.md index 6b45cfb89..1fdb2d3e4 100644 --- a/src/runtime/vendor/github.com/vishvananda/netns/README.md +++ b/src/runtime/vendor/github.com/vishvananda/netns/README.md @@ -48,3 +48,14 @@ func main() { } ``` + +## NOTE + +The library can be safely used only with Go >= 1.10 due to [golang/go#20676](https://github.com/golang/go/issues/20676). + +After locking a goroutine to its current OS thread with `runtime.LockOSThread()` +and changing its network namespace, any new subsequent goroutine won't be +scheduled on that thread while it's locked. Therefore, the new goroutine +will run in a different namespace leading to unexpected results. + +See [here](https://www.weave.works/blog/linux-namespaces-golang-followup) for more details. diff --git a/src/runtime/vendor/github.com/vishvananda/netns/netns_linux.go b/src/runtime/vendor/github.com/vishvananda/netns/netns_linux.go index c76acd087..36e64906b 100644 --- a/src/runtime/vendor/github.com/vishvananda/netns/netns_linux.go +++ b/src/runtime/vendor/github.com/vishvananda/netns/netns_linux.go @@ -1,4 +1,4 @@ -// +build linux +// +build linux,go1.10 package netns @@ -218,12 +218,18 @@ func getPidForContainer(id string) (int, error) { filepath.Join(cgroupRoot, "system.slice", "docker-"+id+".scope", "tasks"), // Even more recent docker versions under cgroup/systemd/docker// filepath.Join(cgroupRoot, "..", "systemd", "docker", id, "tasks"), - // Kubernetes with docker and CNI is even more different + // Kubernetes with docker and CNI is even more different. Works for BestEffort and Burstable QoS filepath.Join(cgroupRoot, "..", "systemd", "kubepods", "*", "pod*", id, "tasks"), - // Another flavor of containers location in recent kubernetes 1.11+ - filepath.Join(cgroupRoot, cgroupThis, "kubepods.slice", "kubepods-besteffort.slice", "*", "docker-"+id+".scope", "tasks"), - // When runs inside of a container with recent kubernetes 1.11+ - filepath.Join(cgroupRoot, "kubepods.slice", "kubepods-besteffort.slice", "*", "docker-"+id+".scope", "tasks"), + // Same as above but for Guaranteed QoS + filepath.Join(cgroupRoot, "..", "systemd", "kubepods", "pod*", id, "tasks"), + // Another flavor of containers location in recent kubernetes 1.11+. Works for BestEffort and Burstable QoS + filepath.Join(cgroupRoot, cgroupThis, "kubepods.slice", "*.slice", "*", "docker-"+id+".scope", "tasks"), + // Same as above but for Guaranteed QoS + filepath.Join(cgroupRoot, cgroupThis, "kubepods.slice", "*", "docker-"+id+".scope", "tasks"), + // When runs inside of a container with recent kubernetes 1.11+. Works for BestEffort and Burstable QoS + filepath.Join(cgroupRoot, "kubepods.slice", "*.slice", "*", "docker-"+id+".scope", "tasks"), + // Same as above but for Guaranteed QoS + filepath.Join(cgroupRoot, "kubepods.slice", "*", "docker-"+id+".scope", "tasks"), } var filename string diff --git a/src/runtime/vendor/go.opentelemetry.io/otel/CHANGELOG.md b/src/runtime/vendor/go.opentelemetry.io/otel/CHANGELOG.md index 2cb46459c..fb1227860 100644 --- a/src/runtime/vendor/go.opentelemetry.io/otel/CHANGELOG.md +++ b/src/runtime/vendor/go.opentelemetry.io/otel/CHANGELOG.md @@ -8,9 +8,20 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm ## [Unreleased] +## [1.0.1] - 2021-10-01 + +### Fixed + +- json stdout exporter no longer crashes due to concurrency bug. (#2265) + +## [Metrics 0.24.0] - 2021-10-01 + ### Changed - NoopMeterProvider is now private and NewNoopMeterProvider must be used to obtain a noopMeterProvider. (#2237) +- The Metric SDK `Export()` function takes a new two-level reader interface for iterating over results one instrumentation library at a time. (#2197) + - The former `"go.opentelemetry.io/otel/sdk/export/metric".CheckpointSet` is renamed `Reader`. + - The new interface is named `"go.opentelemetry.io/otel/sdk/export/metric".InstrumentationLibraryReader`. ## [1.0.0] - 2021-09-20 @@ -1539,7 +1550,9 @@ It contains api and sdk for trace and meter. - CircleCI build CI manifest files. - CODEOWNERS file to track owners of this project. -[Unreleased]: https://github.com/open-telemetry/opentelemetry-go/compare/v1.0.0...HEAD +[Unreleased]: https://github.com/open-telemetry/opentelemetry-go/compare/v1.0.1...HEAD +[1.0.1]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.0.1 +[Metrics 0.24.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/metric/v0.24.0 [1.0.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.0.0 [1.0.0-RC3]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.0.0-RC3 [1.0.0-RC2]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.0.0-RC2 diff --git a/src/runtime/vendor/go.opentelemetry.io/otel/Makefile b/src/runtime/vendor/go.opentelemetry.io/otel/Makefile index d5f52c638..8e3a27179 100644 --- a/src/runtime/vendor/go.opentelemetry.io/otel/Makefile +++ b/src/runtime/vendor/go.opentelemetry.io/otel/Makefile @@ -40,6 +40,9 @@ $(TOOLS)/%: | $(TOOLS) cd $(TOOLS_MOD_DIR) && \ $(GO) build -o $@ $(PACKAGE) +MULTIMOD = $(TOOLS)/multimod +$(TOOLS)/multimod: PACKAGE=go.opentelemetry.io/build-tools/multimod + SEMCONVGEN = $(TOOLS)/semconvgen $(TOOLS)/semconvgen: PACKAGE=go.opentelemetry.io/build-tools/semconvgen @@ -50,19 +53,22 @@ GOLANGCI_LINT = $(TOOLS)/golangci-lint $(TOOLS)/golangci-lint: PACKAGE=github.com/golangci/golangci-lint/cmd/golangci-lint MISSPELL = $(TOOLS)/misspell -$(TOOLS)/misspell: PACKAGE= github.com/client9/misspell/cmd/misspell +$(TOOLS)/misspell: PACKAGE=github.com/client9/misspell/cmd/misspell GOCOVMERGE = $(TOOLS)/gocovmerge -$(TOOLS)/gocovmerge: PACKAGE= github.com/wadey/gocovmerge +$(TOOLS)/gocovmerge: PACKAGE=github.com/wadey/gocovmerge STRINGER = $(TOOLS)/stringer $(TOOLS)/stringer: PACKAGE=golang.org/x/tools/cmd/stringer +PORTO = $(TOOLS)/porto +$(TOOLS)/porto: PACKAGE=github.com/jcchavezs/porto/cmd/porto + +GOJQ = $(TOOLS)/gojq $(TOOLS)/gojq: PACKAGE=github.com/itchyny/gojq/cmd/gojq .PHONY: tools -tools: $(CROSSLINK) $(GOLANGCI_LINT) $(MISSPELL) $(GOCOVMERGE) $(STRINGER) $(TOOLS)/gojq $(SEMCONVGEN) - +tools: $(CROSSLINK) $(GOLANGCI_LINT) $(MISSPELL) $(GOCOVMERGE) $(STRINGER) $(PORTO) $(GOJQ) $(SEMCONVGEN) $(MULTIMOD) # Build @@ -78,7 +84,8 @@ generate: $(STRINGER) set -e; for dir in $(ALL_GO_MOD_DIRS); do \ echo "$(GO) generate $${dir}/..."; \ (cd "$${dir}" && \ - PATH="$(TOOLS):$${PATH}" $(GO) generate ./...); \ + PATH="$(TOOLS):$${PATH}" $(GO) generate ./... && \ + $(PORTO) -w .); \ done build: generate @@ -136,6 +143,10 @@ lint: misspell lint-modules | $(GOLANGCI_LINT) $(GOLANGCI_LINT) run); \ done +.PHONY: vanity-import-check +vanity-import-check: | $(PORTO) + $(PORTO) -l . + .PHONY: misspell misspell: | $(MISSPELL) $(MISSPELL) -w $(ALL_DOCS) @@ -183,3 +194,14 @@ check-clean-work-tree: git status; \ exit 1; \ fi + +.PHONY: prerelease +prerelease: | $(MULTIMOD) + @[ "${MODSET}" ] || ( echo ">> env var MODSET is not set"; exit 1 ) + $(MULTIMOD) verify && $(MULTIMOD) prerelease -m ${MODSET} + +COMMIT ?= "HEAD" +.PHONY: add-tags +add-tags: | $(MULTIMOD) + @[ "${MODSET}" ] || ( echo ">> env var MODSET is not set"; exit 1 ) + $(MULTIMOD) verify && $(MULTIMOD) tag -m ${MODSET} -c ${COMMIT} diff --git a/src/runtime/vendor/go.opentelemetry.io/otel/RELEASING.md b/src/runtime/vendor/go.opentelemetry.io/otel/RELEASING.md index 730436672..aef6510a2 100644 --- a/src/runtime/vendor/go.opentelemetry.io/otel/RELEASING.md +++ b/src/runtime/vendor/go.opentelemetry.io/otel/RELEASING.md @@ -34,21 +34,30 @@ pipeline if you like living on the edge. ## Pre-Release +First, decide which module sets will be released and update their versions +in `versions.yaml`. Commit this change to a new branch. + Update go.mod for submodules to depend on the new release which will happen in the next step. -1. Run the pre-release script. It creates a branch `pre_release_` that will contain all release changes. +1. Run the `prerelease` make target. It creates a branch + `prerelease__` that will contain all release changes. ``` - ./pre_release.sh -t + make prerelease MODSET= ``` 2. Verify the changes. ``` - git diff main + git diff ...prerelease__ ``` This should have changed the version for all modules to be ``. + If these changes look correct, merge them into your pre-release branch: + + ```go + git merge prerelease__ + ``` 3. Update the [Changelog](./CHANGELOG.md). - Make sure all relevant changes for this release are included and are in language that non-contributors to the project can understand. @@ -69,18 +78,23 @@ Update go.mod for submodules to depend on the new release which will happen in t Once the Pull Request with all the version changes has been approved and merged it is time to tag the merged commit. ***IMPORTANT***: It is critical you use the same tag that you used in the Pre-Release step! -Failure to do so will leave things in a broken state. +Failure to do so will leave things in a broken state. As long as you do not +change `versions.yaml` between pre-release and this step, things should be fine. ***IMPORTANT***: [There is currently no way to remove an incorrectly tagged version of a Go module](https://github.com/golang/go/issues/34189). It is critical you make sure the version you push upstream is correct. [Failure to do so will lead to minor emergencies and tough to work around](https://github.com/open-telemetry/opentelemetry-go/issues/331). -1. Run the tag.sh script using the `` of the commit on the main branch for the merged Pull Request. +1. For each module set that will be released, run the `add-tags` make target + using the `` of the commit on the main branch for the merged Pull Request. ``` - ./tag.sh + make add-tags MODSET= COMMIT= ``` + It should only be necessary to provide an explicit `COMMIT` value if the + current `HEAD` of your working directory is not the correct commit. + 2. Push tags to the upstream remote (not your fork: `github.com/open-telemetry/opentelemetry-go.git`). Make sure you push all sub-modules as well. diff --git a/src/runtime/vendor/go.opentelemetry.io/otel/attribute/type_string.go b/src/runtime/vendor/go.opentelemetry.io/otel/attribute/type_string.go index e584b2477..642e26951 100644 --- a/src/runtime/vendor/go.opentelemetry.io/otel/attribute/type_string.go +++ b/src/runtime/vendor/go.opentelemetry.io/otel/attribute/type_string.go @@ -1,6 +1,6 @@ // Code generated by "stringer -type=Type"; DO NOT EDIT. -package attribute +package attribute // import "go.opentelemetry.io/otel/attribute" import "strconv" diff --git a/src/runtime/vendor/go.opentelemetry.io/otel/baggage/baggage.go b/src/runtime/vendor/go.opentelemetry.io/otel/baggage/baggage.go index 8de2bc9df..3427c51b4 100644 --- a/src/runtime/vendor/go.opentelemetry.io/otel/baggage/baggage.go +++ b/src/runtime/vendor/go.opentelemetry.io/otel/baggage/baggage.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package baggage +package baggage // import "go.opentelemetry.io/otel/baggage" import ( "errors" diff --git a/src/runtime/vendor/go.opentelemetry.io/otel/go.mod b/src/runtime/vendor/go.opentelemetry.io/otel/go.mod index 447addf6b..7e567e7bb 100644 --- a/src/runtime/vendor/go.opentelemetry.io/otel/go.mod +++ b/src/runtime/vendor/go.opentelemetry.io/otel/go.mod @@ -5,7 +5,7 @@ go 1.15 require ( github.com/google/go-cmp v0.5.6 github.com/stretchr/testify v1.7.0 - go.opentelemetry.io/otel/trace v1.0.0 + go.opentelemetry.io/otel/trace v1.0.1 ) replace go.opentelemetry.io/otel => ./ diff --git a/src/runtime/vendor/go.opentelemetry.io/otel/sdk/resource/os_unix.go b/src/runtime/vendor/go.opentelemetry.io/otel/sdk/resource/os_unix.go index cb0252d7e..42894a15b 100644 --- a/src/runtime/vendor/go.opentelemetry.io/otel/sdk/resource/os_unix.go +++ b/src/runtime/vendor/go.opentelemetry.io/otel/sdk/resource/os_unix.go @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos package resource // import "go.opentelemetry.io/otel/sdk/resource" diff --git a/src/runtime/vendor/go.opentelemetry.io/otel/sdk/trace/event.go b/src/runtime/vendor/go.opentelemetry.io/otel/sdk/trace/event.go index 4eb556c53..1e3b42675 100644 --- a/src/runtime/vendor/go.opentelemetry.io/otel/sdk/trace/event.go +++ b/src/runtime/vendor/go.opentelemetry.io/otel/sdk/trace/event.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package trace +package trace // import "go.opentelemetry.io/otel/sdk/trace" import ( "time" diff --git a/src/runtime/vendor/go.opentelemetry.io/otel/sdk/trace/snapshot.go b/src/runtime/vendor/go.opentelemetry.io/otel/sdk/trace/snapshot.go index 68670bb0b..53aac61f5 100644 --- a/src/runtime/vendor/go.opentelemetry.io/otel/sdk/trace/snapshot.go +++ b/src/runtime/vendor/go.opentelemetry.io/otel/sdk/trace/snapshot.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package trace +package trace // import "go.opentelemetry.io/otel/sdk/trace" import ( "time" diff --git a/src/runtime/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/exception.go b/src/runtime/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/exception.go index ee13cfdbd..311cbf218 100644 --- a/src/runtime/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/exception.go +++ b/src/runtime/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/exception.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package semconv +package semconv // import "go.opentelemetry.io/otel/semconv/v1.4.0" const ( // ExceptionEventName is the name of the Span event representing an exception. diff --git a/src/runtime/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/schema.go b/src/runtime/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/schema.go index 41079980e..467a30b9e 100644 --- a/src/runtime/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/schema.go +++ b/src/runtime/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/schema.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package semconv +package semconv // import "go.opentelemetry.io/otel/semconv/v1.4.0" // SchemaURL is the schema URL that matches the version of the semantic conventions // that this package defines. Semconv packages starting from v1.4.0 must declare diff --git a/src/runtime/vendor/go.opentelemetry.io/otel/trace/go.mod b/src/runtime/vendor/go.opentelemetry.io/otel/trace/go.mod index fac348c9f..15a525d29 100644 --- a/src/runtime/vendor/go.opentelemetry.io/otel/trace/go.mod +++ b/src/runtime/vendor/go.opentelemetry.io/otel/trace/go.mod @@ -43,7 +43,7 @@ replace go.opentelemetry.io/otel/trace => ./ require ( github.com/google/go-cmp v0.5.6 github.com/stretchr/testify v1.7.0 - go.opentelemetry.io/otel v1.0.0 + go.opentelemetry.io/otel v1.0.1 ) replace go.opentelemetry.io/otel/example/passthrough => ../example/passthrough diff --git a/src/runtime/vendor/go.opentelemetry.io/otel/trace/tracestate.go b/src/runtime/vendor/go.opentelemetry.io/otel/trace/tracestate.go index f457466a2..9fad16fd2 100644 --- a/src/runtime/vendor/go.opentelemetry.io/otel/trace/tracestate.go +++ b/src/runtime/vendor/go.opentelemetry.io/otel/trace/tracestate.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package trace +package trace // import "go.opentelemetry.io/otel/trace" import ( "encoding/json" diff --git a/src/runtime/vendor/go.opentelemetry.io/otel/version.go b/src/runtime/vendor/go.opentelemetry.io/otel/version.go index e99407cac..7f298db90 100644 --- a/src/runtime/vendor/go.opentelemetry.io/otel/version.go +++ b/src/runtime/vendor/go.opentelemetry.io/otel/version.go @@ -16,5 +16,5 @@ package otel // import "go.opentelemetry.io/otel" // Version is the current release version of OpenTelemetry in use. func Version() string { - return "1.0.0" + return "1.0.1" } diff --git a/src/runtime/vendor/go.opentelemetry.io/otel/versions.yaml b/src/runtime/vendor/go.opentelemetry.io/otel/versions.yaml index 8ebf02503..8b393bd8b 100644 --- a/src/runtime/vendor/go.opentelemetry.io/otel/versions.yaml +++ b/src/runtime/vendor/go.opentelemetry.io/otel/versions.yaml @@ -14,7 +14,7 @@ module-sets: stable-v1: - version: v1.0.0 + version: v1.0.1 modules: - go.opentelemetry.io/otel - go.opentelemetry.io/otel/bridge/opentracing @@ -33,7 +33,7 @@ module-sets: - go.opentelemetry.io/otel/trace - go.opentelemetry.io/otel/sdk experimental-metrics: - version: v0.23.0 + version: v0.24.0 modules: - go.opentelemetry.io/otel/example/prometheus - go.opentelemetry.io/otel/exporters/otlp/otlpmetric @@ -46,7 +46,7 @@ module-sets: - go.opentelemetry.io/otel/sdk/export/metric - go.opentelemetry.io/otel/sdk/metric bridge: - version: v0.23.0 + version: v0.24.0 modules: - go.opentelemetry.io/otel/bridge/opencensus - go.opentelemetry.io/otel/bridge/opencensus/test diff --git a/src/runtime/vendor/golang.org/x/net/http/httpguts/httplex.go b/src/runtime/vendor/golang.org/x/net/http/httpguts/httplex.go index e7de24ee6..c79aa73f2 100644 --- a/src/runtime/vendor/golang.org/x/net/http/httpguts/httplex.go +++ b/src/runtime/vendor/golang.org/x/net/http/httpguts/httplex.go @@ -137,11 +137,13 @@ func trimOWS(x string) string { // contains token amongst its comma-separated tokens, ASCII // case-insensitively. func headerValueContainsToken(v string, token string) bool { - v = trimOWS(v) - if comma := strings.IndexByte(v, ','); comma != -1 { - return tokenEqual(trimOWS(v[:comma]), token) || headerValueContainsToken(v[comma+1:], token) + for comma := strings.IndexByte(v, ','); comma != -1; comma = strings.IndexByte(v, ',') { + if tokenEqual(trimOWS(v[:comma]), token) { + return true + } + v = v[comma+1:] } - return tokenEqual(v, token) + return tokenEqual(trimOWS(v), token) } // lowerASCII returns the ASCII lowercase version of b. diff --git a/src/runtime/vendor/golang.org/x/net/http2/Dockerfile b/src/runtime/vendor/golang.org/x/net/http2/Dockerfile index 53fc52579..851224595 100644 --- a/src/runtime/vendor/golang.org/x/net/http2/Dockerfile +++ b/src/runtime/vendor/golang.org/x/net/http2/Dockerfile @@ -38,7 +38,7 @@ RUN make RUN make install WORKDIR /root -RUN wget http://curl.haxx.se/download/curl-7.45.0.tar.gz +RUN wget https://curl.se/download/curl-7.45.0.tar.gz RUN tar -zxvf curl-7.45.0.tar.gz WORKDIR /root/curl-7.45.0 RUN ./configure --with-ssl --with-nghttp2=/usr/local diff --git a/src/runtime/vendor/golang.org/x/net/http2/README b/src/runtime/vendor/golang.org/x/net/http2/README deleted file mode 100644 index 360d5aa37..000000000 --- a/src/runtime/vendor/golang.org/x/net/http2/README +++ /dev/null @@ -1,20 +0,0 @@ -This is a work-in-progress HTTP/2 implementation for Go. - -It will eventually live in the Go standard library and won't require -any changes to your code to use. It will just be automatic. - -Status: - -* The server support is pretty good. A few things are missing - but are being worked on. -* The client work has just started but shares a lot of code - is coming along much quicker. - -Docs are at https://godoc.org/golang.org/x/net/http2 - -Demo test server at https://http2.golang.org/ - -Help & bug reports welcome! - -Contributing: https://golang.org/doc/contribute.html -Bugs: https://golang.org/issue/new?title=x/net/http2:+ diff --git a/src/runtime/vendor/golang.org/x/net/http2/ascii.go b/src/runtime/vendor/golang.org/x/net/http2/ascii.go new file mode 100644 index 000000000..17caa2058 --- /dev/null +++ b/src/runtime/vendor/golang.org/x/net/http2/ascii.go @@ -0,0 +1,53 @@ +// Copyright 2021 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 http2 + +import "strings" + +// The HTTP protocols are defined in terms of ASCII, not Unicode. This file +// contains helper functions which may use Unicode-aware functions which would +// otherwise be unsafe and could introduce vulnerabilities if used improperly. + +// asciiEqualFold is strings.EqualFold, ASCII only. It reports whether s and t +// are equal, ASCII-case-insensitively. +func asciiEqualFold(s, t string) bool { + if len(s) != len(t) { + return false + } + for i := 0; i < len(s); i++ { + if lower(s[i]) != lower(t[i]) { + return false + } + } + return true +} + +// lower returns the ASCII lowercase version of b. +func lower(b byte) byte { + if 'A' <= b && b <= 'Z' { + return b + ('a' - 'A') + } + return b +} + +// isASCIIPrint returns whether s is ASCII and printable according to +// https://tools.ietf.org/html/rfc20#section-4.2. +func isASCIIPrint(s string) bool { + for i := 0; i < len(s); i++ { + if s[i] < ' ' || s[i] > '~' { + return false + } + } + return true +} + +// asciiToLower returns the lowercase version of s if s is ASCII and printable, +// and whether or not it was. +func asciiToLower(s string) (lower string, ok bool) { + if !isASCIIPrint(s) { + return "", false + } + return strings.ToLower(s), true +} diff --git a/src/runtime/vendor/golang.org/x/net/http2/client_conn_pool.go b/src/runtime/vendor/golang.org/x/net/http2/client_conn_pool.go index 3a67636fe..652bc11a0 100644 --- a/src/runtime/vendor/golang.org/x/net/http2/client_conn_pool.go +++ b/src/runtime/vendor/golang.org/x/net/http2/client_conn_pool.go @@ -7,7 +7,9 @@ package http2 import ( + "context" "crypto/tls" + "errors" "net/http" "sync" ) @@ -78,61 +80,69 @@ func (p *clientConnPool) getClientConn(req *http.Request, addr string, dialOnMis // It gets its own connection. traceGetConn(req, addr) const singleUse = true - cc, err := p.t.dialClientConn(addr, singleUse) + cc, err := p.t.dialClientConn(req.Context(), addr, singleUse) if err != nil { return nil, err } return cc, nil } - p.mu.Lock() - for _, cc := range p.conns[addr] { - if st := cc.idleState(); st.canTakeNewRequest { - if p.shouldTraceGetConn(st) { - traceGetConn(req, addr) + for { + p.mu.Lock() + for _, cc := range p.conns[addr] { + if st := cc.idleState(); st.canTakeNewRequest { + if p.shouldTraceGetConn(st) { + traceGetConn(req, addr) + } + p.mu.Unlock() + return cc, nil } - p.mu.Unlock() - return cc, nil } - } - if !dialOnMiss { + if !dialOnMiss { + p.mu.Unlock() + return nil, ErrNoCachedConn + } + traceGetConn(req, addr) + call := p.getStartDialLocked(req.Context(), addr) p.mu.Unlock() - return nil, ErrNoCachedConn + <-call.done + if shouldRetryDial(call, req) { + continue + } + return call.res, call.err } - traceGetConn(req, addr) - call := p.getStartDialLocked(addr) - p.mu.Unlock() - <-call.done - return call.res, call.err } // dialCall is an in-flight Transport dial call to a host. type dialCall struct { - _ incomparable - p *clientConnPool + _ incomparable + p *clientConnPool + // the context associated with the request + // that created this dialCall + ctx context.Context done chan struct{} // closed when done res *ClientConn // valid after done is closed err error // valid after done is closed } // requires p.mu is held. -func (p *clientConnPool) getStartDialLocked(addr string) *dialCall { +func (p *clientConnPool) getStartDialLocked(ctx context.Context, addr string) *dialCall { if call, ok := p.dialing[addr]; ok { // A dial is already in-flight. Don't start another. return call } - call := &dialCall{p: p, done: make(chan struct{})} + call := &dialCall{p: p, done: make(chan struct{}), ctx: ctx} if p.dialing == nil { p.dialing = make(map[string]*dialCall) } p.dialing[addr] = call - go call.dial(addr) + go call.dial(call.ctx, addr) return call } // run in its own goroutine. -func (c *dialCall) dial(addr string) { +func (c *dialCall) dial(ctx context.Context, addr string) { const singleUse = false // shared conn - c.res, c.err = c.p.t.dialClientConn(addr, singleUse) + c.res, c.err = c.p.t.dialClientConn(ctx, addr, singleUse) close(c.done) c.p.mu.Lock() @@ -276,3 +286,28 @@ type noDialClientConnPool struct{ *clientConnPool } func (p noDialClientConnPool) GetClientConn(req *http.Request, addr string) (*ClientConn, error) { return p.getClientConn(req, addr, noDialOnMiss) } + +// shouldRetryDial reports whether the current request should +// retry dialing after the call finished unsuccessfully, for example +// if the dial was canceled because of a context cancellation or +// deadline expiry. +func shouldRetryDial(call *dialCall, req *http.Request) bool { + if call.err == nil { + // No error, no need to retry + return false + } + if call.ctx == req.Context() { + // If the call has the same context as the request, the dial + // should not be retried, since any cancellation will have come + // from this request. + return false + } + if !errors.Is(call.err, context.Canceled) && !errors.Is(call.err, context.DeadlineExceeded) { + // If the call error is not because of a context cancellation or a deadline expiry, + // the dial should not be retried. + return false + } + // Only retry if the error is a context cancellation error or deadline expiry + // and the context associated with the call was canceled or expired. + return call.ctx.Err() != nil +} diff --git a/src/runtime/vendor/golang.org/x/net/http2/go115.go b/src/runtime/vendor/golang.org/x/net/http2/go115.go new file mode 100644 index 000000000..908af1ab9 --- /dev/null +++ b/src/runtime/vendor/golang.org/x/net/http2/go115.go @@ -0,0 +1,27 @@ +// Copyright 2021 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. + +//go:build go1.15 +// +build go1.15 + +package http2 + +import ( + "context" + "crypto/tls" +) + +// dialTLSWithContext uses tls.Dialer, added in Go 1.15, to open a TLS +// connection. +func (t *Transport) dialTLSWithContext(ctx context.Context, network, addr string, cfg *tls.Config) (*tls.Conn, error) { + dialer := &tls.Dialer{ + Config: cfg, + } + cn, err := dialer.DialContext(ctx, network, addr) + if err != nil { + return nil, err + } + tlsCn := cn.(*tls.Conn) // DialContext comment promises this will always succeed + return tlsCn, nil +} diff --git a/src/runtime/vendor/golang.org/x/net/http2/headermap.go b/src/runtime/vendor/golang.org/x/net/http2/headermap.go index c3ff3fa1c..9e12941da 100644 --- a/src/runtime/vendor/golang.org/x/net/http2/headermap.go +++ b/src/runtime/vendor/golang.org/x/net/http2/headermap.go @@ -6,7 +6,6 @@ package http2 import ( "net/http" - "strings" "sync" ) @@ -79,10 +78,10 @@ func buildCommonHeaderMaps() { } } -func lowerHeader(v string) string { +func lowerHeader(v string) (lower string, ascii bool) { buildCommonHeaderMapsOnce() if s, ok := commonLowerHeader[v]; ok { - return s + return s, true } - return strings.ToLower(v) + return asciiToLower(v) } diff --git a/src/runtime/vendor/golang.org/x/net/http2/not_go115.go b/src/runtime/vendor/golang.org/x/net/http2/not_go115.go new file mode 100644 index 000000000..e6c04cf7a --- /dev/null +++ b/src/runtime/vendor/golang.org/x/net/http2/not_go115.go @@ -0,0 +1,31 @@ +// Copyright 2021 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. + +//go:build !go1.15 +// +build !go1.15 + +package http2 + +import ( + "context" + "crypto/tls" +) + +// dialTLSWithContext opens a TLS connection. +func (t *Transport) dialTLSWithContext(ctx context.Context, network, addr string, cfg *tls.Config) (*tls.Conn, error) { + cn, err := tls.Dial(network, addr, cfg) + if err != nil { + return nil, err + } + if err := cn.Handshake(); err != nil { + return nil, err + } + if cfg.InsecureSkipVerify { + return cn, nil + } + if err := cn.VerifyHostname(cfg.ServerName); err != nil { + return nil, err + } + return cn, nil +} diff --git a/src/runtime/vendor/golang.org/x/net/http2/server.go b/src/runtime/vendor/golang.org/x/net/http2/server.go index e125bbd2a..19e449cfa 100644 --- a/src/runtime/vendor/golang.org/x/net/http2/server.go +++ b/src/runtime/vendor/golang.org/x/net/http2/server.go @@ -231,13 +231,12 @@ func ConfigureServer(s *http.Server, conf *Server) error { if s.TLSConfig == nil { s.TLSConfig = new(tls.Config) - } else if s.TLSConfig.CipherSuites != nil { - // If they already provided a CipherSuite list, return - // an error if it has a bad order or is missing - // ECDHE_RSA_WITH_AES_128_GCM_SHA256 or ECDHE_ECDSA_WITH_AES_128_GCM_SHA256. + } else if s.TLSConfig.CipherSuites != nil && s.TLSConfig.MinVersion < tls.VersionTLS13 { + // If they already provided a TLS 1.0–1.2 CipherSuite list, return an + // error if it is missing ECDHE_RSA_WITH_AES_128_GCM_SHA256 or + // ECDHE_ECDSA_WITH_AES_128_GCM_SHA256. haveRequired := false - sawBad := false - for i, cs := range s.TLSConfig.CipherSuites { + for _, cs := range s.TLSConfig.CipherSuites { switch cs { case tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, // Alternative MTI cipher to not discourage ECDSA-only servers. @@ -245,14 +244,9 @@ func ConfigureServer(s *http.Server, conf *Server) error { tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256: haveRequired = true } - if isBadCipher(cs) { - sawBad = true - } else if sawBad { - return fmt.Errorf("http2: TLSConfig.CipherSuites index %d contains an HTTP/2-approved cipher suite (%#04x), but it comes after unapproved cipher suites. With this configuration, clients that don't support previous, approved cipher suites may be given an unapproved one and reject the connection.", i, cs) - } } if !haveRequired { - return fmt.Errorf("http2: TLSConfig.CipherSuites is missing an HTTP/2-required AES_128_GCM_SHA256 cipher (need at least one of TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 or TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256).") + return fmt.Errorf("http2: TLSConfig.CipherSuites is missing an HTTP/2-required AES_128_GCM_SHA256 cipher (need at least one of TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 or TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256)") } } @@ -265,16 +259,12 @@ func ConfigureServer(s *http.Server, conf *Server) error { s.TLSConfig.PreferServerCipherSuites = true - haveNPN := false - for _, p := range s.TLSConfig.NextProtos { - if p == NextProtoTLS { - haveNPN = true - break - } - } - if !haveNPN { + if !strSliceContains(s.TLSConfig.NextProtos, NextProtoTLS) { s.TLSConfig.NextProtos = append(s.TLSConfig.NextProtos, NextProtoTLS) } + if !strSliceContains(s.TLSConfig.NextProtos, "http/1.1") { + s.TLSConfig.NextProtos = append(s.TLSConfig.NextProtos, "http/1.1") + } if s.TLSNextProto == nil { s.TLSNextProto = map[string]func(*http.Server, *tls.Conn, http.Handler){} @@ -826,7 +816,7 @@ func (sc *serverConn) serve() { }) sc.unackedSettings++ - // Each connection starts with intialWindowSize inflow tokens. + // Each connection starts with initialWindowSize inflow tokens. // If a higher value is configured, we add more tokens. if diff := sc.srv.initialConnRecvWindowSize() - initialWindowSize; diff > 0 { sc.sendWindowUpdate(nil, int(diff)) @@ -866,6 +856,15 @@ func (sc *serverConn) serve() { case res := <-sc.wroteFrameCh: sc.wroteFrame(res) case res := <-sc.readFrameCh: + // Process any written frames before reading new frames from the client since a + // written frame could have triggered a new stream to be started. + if sc.writingFrameAsync { + select { + case wroteRes := <-sc.wroteFrameCh: + sc.wroteFrame(wroteRes) + default: + } + } if !sc.processFrameFromReader(res) { return } @@ -2789,8 +2788,12 @@ func (w *responseWriter) Push(target string, opts *http.PushOptions) error { // but PUSH_PROMISE requests cannot have a body. // http://tools.ietf.org/html/rfc7540#section-8.2 // Also disallow Host, since the promised URL must be absolute. - switch strings.ToLower(k) { - case "content-length", "content-encoding", "trailer", "te", "expect", "host": + if asciiEqualFold(k, "content-length") || + asciiEqualFold(k, "content-encoding") || + asciiEqualFold(k, "trailer") || + asciiEqualFold(k, "te") || + asciiEqualFold(k, "expect") || + asciiEqualFold(k, "host") { return fmt.Errorf("promised request headers cannot include %q", k) } } diff --git a/src/runtime/vendor/golang.org/x/net/http2/transport.go b/src/runtime/vendor/golang.org/x/net/http2/transport.go index 7688d72c3..b261beb1d 100644 --- a/src/runtime/vendor/golang.org/x/net/http2/transport.go +++ b/src/runtime/vendor/golang.org/x/net/http2/transport.go @@ -264,9 +264,8 @@ type ClientConn struct { peerMaxHeaderListSize uint64 initialWindowSize uint32 - hbuf bytes.Buffer // HPACK encoder writes into this - henc *hpack.Encoder - freeBuf [][]byte + hbuf bytes.Buffer // HPACK encoder writes into this + henc *hpack.Encoder wmu sync.Mutex // held while writing; acquire AFTER mu if holding both werr error // first write error that has occurred @@ -386,8 +385,13 @@ func (cs *clientStream) abortRequestBodyWrite(err error) { } cc := cs.cc cc.mu.Lock() - cs.stopReqBody = err - cc.cond.Broadcast() + if cs.stopReqBody == nil { + cs.stopReqBody = err + if cs.req.Body != nil { + cs.req.Body.Close() + } + cc.cond.Broadcast() + } cc.mu.Unlock() } @@ -564,12 +568,12 @@ func canRetryError(err error) bool { return false } -func (t *Transport) dialClientConn(addr string, singleUse bool) (*ClientConn, error) { +func (t *Transport) dialClientConn(ctx context.Context, addr string, singleUse bool) (*ClientConn, error) { host, _, err := net.SplitHostPort(addr) if err != nil { return nil, err } - tconn, err := t.dialTLS()("tcp", addr, t.newTLSConfig(host)) + tconn, err := t.dialTLS(ctx)("tcp", addr, t.newTLSConfig(host)) if err != nil { return nil, err } @@ -590,34 +594,24 @@ func (t *Transport) newTLSConfig(host string) *tls.Config { return cfg } -func (t *Transport) dialTLS() func(string, string, *tls.Config) (net.Conn, error) { +func (t *Transport) dialTLS(ctx context.Context) func(string, string, *tls.Config) (net.Conn, error) { if t.DialTLS != nil { return t.DialTLS } - return t.dialTLSDefault -} - -func (t *Transport) dialTLSDefault(network, addr string, cfg *tls.Config) (net.Conn, error) { - cn, err := tls.Dial(network, addr, cfg) - if err != nil { - return nil, err - } - if err := cn.Handshake(); err != nil { - return nil, err - } - if !cfg.InsecureSkipVerify { - if err := cn.VerifyHostname(cfg.ServerName); err != nil { + return func(network, addr string, cfg *tls.Config) (net.Conn, error) { + tlsCn, err := t.dialTLSWithContext(ctx, network, addr, cfg) + if err != nil { return nil, err } + state := tlsCn.ConnectionState() + if p := state.NegotiatedProtocol; p != NextProtoTLS { + return nil, fmt.Errorf("http2: unexpected ALPN protocol %q; want %q", p, NextProtoTLS) + } + if !state.NegotiatedProtocolIsMutual { + return nil, errors.New("http2: could not negotiate protocol mutually") + } + return tlsCn, nil } - state := cn.ConnectionState() - if p := state.NegotiatedProtocol; p != NextProtoTLS { - return nil, fmt.Errorf("http2: unexpected ALPN protocol %q; want %q", p, NextProtoTLS) - } - if !state.NegotiatedProtocolIsMutual { - return nil, errors.New("http2: could not negotiate protocol mutually") - } - return cn, nil } // disableKeepAlives reports whether connections should be closed as @@ -923,46 +917,6 @@ func (cc *ClientConn) closeForLostPing() error { return cc.closeForError(err) } -const maxAllocFrameSize = 512 << 10 - -// frameBuffer returns a scratch buffer suitable for writing DATA frames. -// They're capped at the min of the peer's max frame size or 512KB -// (kinda arbitrarily), but definitely capped so we don't allocate 4GB -// bufers. -func (cc *ClientConn) frameScratchBuffer() []byte { - cc.mu.Lock() - size := cc.maxFrameSize - if size > maxAllocFrameSize { - size = maxAllocFrameSize - } - for i, buf := range cc.freeBuf { - if len(buf) >= int(size) { - cc.freeBuf[i] = nil - cc.mu.Unlock() - return buf[:size] - } - } - cc.mu.Unlock() - return make([]byte, size) -} - -func (cc *ClientConn) putFrameScratchBuffer(buf []byte) { - cc.mu.Lock() - defer cc.mu.Unlock() - const maxBufs = 4 // arbitrary; 4 concurrent requests per conn? investigate. - if len(cc.freeBuf) < maxBufs { - cc.freeBuf = append(cc.freeBuf, buf) - return - } - for i, old := range cc.freeBuf { - if old == nil { - cc.freeBuf[i] = buf - return - } - } - // forget about it. -} - // errRequestCanceled is a copy of net/http's errRequestCanceled because it's not // exported. At least they'll be DeepEqual for h1-vs-h2 comparisons tests. var errRequestCanceled = errors.New("net/http: request canceled") @@ -1005,7 +959,7 @@ func checkConnHeaders(req *http.Request) error { if vv := req.Header["Transfer-Encoding"]; len(vv) > 0 && (len(vv) > 1 || vv[0] != "" && vv[0] != "chunked") { return fmt.Errorf("http2: invalid Transfer-Encoding request header: %q", vv) } - if vv := req.Header["Connection"]; len(vv) > 0 && (len(vv) > 1 || vv[0] != "" && !strings.EqualFold(vv[0], "close") && !strings.EqualFold(vv[0], "keep-alive")) { + if vv := req.Header["Connection"]; len(vv) > 0 && (len(vv) > 1 || vv[0] != "" && !asciiEqualFold(vv[0], "close") && !asciiEqualFold(vv[0], "keep-alive")) { return fmt.Errorf("http2: invalid Connection request header: %q", vv) } return nil @@ -1161,40 +1115,28 @@ func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAf return res, false, nil } + handleError := func(err error) (*http.Response, bool, error) { + if !hasBody || bodyWritten { + cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) + } else { + bodyWriter.cancel() + cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel) + <-bodyWriter.resc + } + cc.forgetStreamID(cs.ID) + return nil, cs.getStartedWrite(), err + } + for { select { case re := <-readLoopResCh: return handleReadLoopResponse(re) case <-respHeaderTimer: - if !hasBody || bodyWritten { - cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) - } else { - bodyWriter.cancel() - cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel) - <-bodyWriter.resc - } - cc.forgetStreamID(cs.ID) - return nil, cs.getStartedWrite(), errTimeout + return handleError(errTimeout) case <-ctx.Done(): - if !hasBody || bodyWritten { - cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) - } else { - bodyWriter.cancel() - cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel) - <-bodyWriter.resc - } - cc.forgetStreamID(cs.ID) - return nil, cs.getStartedWrite(), ctx.Err() + return handleError(ctx.Err()) case <-req.Cancel: - if !hasBody || bodyWritten { - cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) - } else { - bodyWriter.cancel() - cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel) - <-bodyWriter.resc - } - cc.forgetStreamID(cs.ID) - return nil, cs.getStartedWrite(), errRequestCanceled + return handleError(errRequestCanceled) case <-cs.peerReset: // processResetStream already removed the // stream from the streams map; no need for @@ -1305,11 +1247,35 @@ var ( errReqBodyTooLong = errors.New("http2: request body larger than specified content length") ) +// frameScratchBufferLen returns the length of a buffer to use for +// outgoing request bodies to read/write to/from. +// +// It returns max(1, min(peer's advertised max frame size, +// Request.ContentLength+1, 512KB)). +func (cs *clientStream) frameScratchBufferLen(maxFrameSize int) int { + const max = 512 << 10 + n := int64(maxFrameSize) + if n > max { + n = max + } + if cl := actualContentLength(cs.req); cl != -1 && cl+1 < n { + // Add an extra byte past the declared content-length to + // give the caller's Request.Body io.Reader a chance to + // give us more bytes than they declared, so we can catch it + // early. + n = cl + 1 + } + if n < 1 { + return 1 + } + return int(n) // doesn't truncate; max is 512K +} + +var bufPool sync.Pool // of *[]byte + func (cs *clientStream) writeRequestBody(body io.Reader, bodyCloser io.Closer) (err error) { cc := cs.cc sentEnd := false // whether we sent the final DATA frame w/ END_STREAM - buf := cc.frameScratchBuffer() - defer cc.putFrameScratchBuffer(buf) defer func() { traceWroteRequest(cs.trace, err) @@ -1317,7 +1283,13 @@ func (cs *clientStream) writeRequestBody(body io.Reader, bodyCloser io.Closer) ( // Request.Body is closed by the Transport, // and in multiple cases: server replies <=299 and >299 // while still writing request body - cerr := bodyCloser.Close() + var cerr error + cc.mu.Lock() + if cs.stopReqBody == nil { + cs.stopReqBody = errStopReqBodyWrite + cerr = bodyCloser.Close() + } + cc.mu.Unlock() if err == nil { err = cerr } @@ -1328,9 +1300,24 @@ func (cs *clientStream) writeRequestBody(body io.Reader, bodyCloser io.Closer) ( remainLen := actualContentLength(req) hasContentLen := remainLen != -1 + cc.mu.Lock() + maxFrameSize := int(cc.maxFrameSize) + cc.mu.Unlock() + + // Scratch buffer for reading into & writing from. + scratchLen := cs.frameScratchBufferLen(maxFrameSize) + var buf []byte + if bp, ok := bufPool.Get().(*[]byte); ok && len(*bp) >= scratchLen { + defer bufPool.Put(bp) + buf = *bp + } else { + buf = make([]byte, scratchLen) + defer bufPool.Put(&buf) + } + var sawEOF bool for !sawEOF { - n, err := body.Read(buf[:len(buf)-1]) + n, err := body.Read(buf[:len(buf)]) if hasContentLen { remainLen -= int64(n) if remainLen == 0 && err == nil { @@ -1341,8 +1328,9 @@ func (cs *clientStream) writeRequestBody(body io.Reader, bodyCloser io.Closer) ( // to send the END_STREAM bit early, double-check that we're actually // at EOF. Subsequent reads should return (0, EOF) at this point. // If either value is different, we return an error in one of two ways below. + var scratch [1]byte var n1 int - n1, err = body.Read(buf[n:]) + n1, err = body.Read(scratch[:]) remainLen -= int64(n1) } if remainLen < 0 { @@ -1412,10 +1400,6 @@ func (cs *clientStream) writeRequestBody(body io.Reader, bodyCloser io.Closer) ( } } - cc.mu.Lock() - maxFrameSize := int(cc.maxFrameSize) - cc.mu.Unlock() - cc.wmu.Lock() defer cc.wmu.Unlock() @@ -1531,19 +1515,21 @@ func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trail var didUA bool for k, vv := range req.Header { - if strings.EqualFold(k, "host") || strings.EqualFold(k, "content-length") { + if asciiEqualFold(k, "host") || asciiEqualFold(k, "content-length") { // Host is :authority, already sent. // Content-Length is automatic, set below. continue - } else if strings.EqualFold(k, "connection") || strings.EqualFold(k, "proxy-connection") || - strings.EqualFold(k, "transfer-encoding") || strings.EqualFold(k, "upgrade") || - strings.EqualFold(k, "keep-alive") { + } else if asciiEqualFold(k, "connection") || + asciiEqualFold(k, "proxy-connection") || + asciiEqualFold(k, "transfer-encoding") || + asciiEqualFold(k, "upgrade") || + asciiEqualFold(k, "keep-alive") { // Per 8.1.2.2 Connection-Specific Header // Fields, don't send connection-specific // fields. We have already checked if any // are error-worthy so just ignore the rest. continue - } else if strings.EqualFold(k, "user-agent") { + } else if asciiEqualFold(k, "user-agent") { // Match Go's http1 behavior: at most one // User-Agent. If set to nil or empty string, // then omit it. Otherwise if not mentioned, @@ -1556,7 +1542,7 @@ func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trail if vv[0] == "" { continue } - } else if strings.EqualFold(k, "cookie") { + } else if asciiEqualFold(k, "cookie") { // Per 8.1.2.5 To allow for better compression efficiency, the // Cookie header field MAY be split into separate header fields, // each with one or more cookie-pairs. @@ -1615,7 +1601,12 @@ func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trail // Header list size is ok. Write the headers. enumerateHeaders(func(name, value string) { - name = strings.ToLower(name) + name, ascii := asciiToLower(name) + if !ascii { + // Skip writing invalid headers. Per RFC 7540, Section 8.1.2, header + // field names have to be ASCII characters (just as in HTTP/1.x). + return + } cc.writeHeader(name, value) if traceHeaders { traceWroteHeaderField(trace, name, value) @@ -1663,9 +1654,14 @@ func (cc *ClientConn) encodeTrailers(req *http.Request) ([]byte, error) { } for k, vv := range req.Trailer { + lowKey, ascii := asciiToLower(k) + if !ascii { + // Skip writing invalid headers. Per RFC 7540, Section 8.1.2, header + // field names have to be ASCII characters (just as in HTTP/1.x). + continue + } // Transfer-Encoding, etc.. have already been filtered at the // start of RoundTrip - lowKey := strings.ToLower(k) for _, v := range vv { cc.writeHeader(lowKey, v) } diff --git a/src/runtime/vendor/golang.org/x/net/http2/write.go b/src/runtime/vendor/golang.org/x/net/http2/write.go index 3849bc263..33f61398a 100644 --- a/src/runtime/vendor/golang.org/x/net/http2/write.go +++ b/src/runtime/vendor/golang.org/x/net/http2/write.go @@ -341,7 +341,12 @@ func encodeHeaders(enc *hpack.Encoder, h http.Header, keys []string) { } for _, k := range keys { vv := h[k] - k = lowerHeader(k) + k, ascii := lowerHeader(k) + if !ascii { + // Skip writing invalid headers. Per RFC 7540, Section 8.1.2, header + // field names have to be ASCII characters (just as in HTTP/1.x). + continue + } if !validWireHeaderFieldName(k) { // Skip it as backup paranoia. Per // golang.org/issue/14048, these should diff --git a/src/runtime/vendor/golang.org/x/net/idna/idna10.0.0.go b/src/runtime/vendor/golang.org/x/net/idna/idna10.0.0.go index 7e69ee1b2..5208ba6cb 100644 --- a/src/runtime/vendor/golang.org/x/net/idna/idna10.0.0.go +++ b/src/runtime/vendor/golang.org/x/net/idna/idna10.0.0.go @@ -67,15 +67,14 @@ func Transitional(transitional bool) Option { // VerifyDNSLength sets whether a Profile should fail if any of the IDN parts // are longer than allowed by the RFC. +// +// This option corresponds to the VerifyDnsLength flag in UTS #46. func VerifyDNSLength(verify bool) Option { return func(o *options) { o.verifyDNSLength = verify } } // RemoveLeadingDots removes leading label separators. Leading runes that map to // dots, such as U+3002 IDEOGRAPHIC FULL STOP, are removed as well. -// -// This is the behavior suggested by the UTS #46 and is adopted by some -// browsers. func RemoveLeadingDots(remove bool) Option { return func(o *options) { o.removeLeadingDots = remove } } @@ -83,6 +82,8 @@ func RemoveLeadingDots(remove bool) Option { // ValidateLabels sets whether to check the mandatory label validation criteria // as defined in Section 5.4 of RFC 5891. This includes testing for correct use // of hyphens ('-'), normalization, validity of runes, and the context rules. +// In particular, ValidateLabels also sets the CheckHyphens and CheckJoiners flags +// in UTS #46. func ValidateLabels(enable bool) Option { return func(o *options) { // Don't override existing mappings, but set one that at least checks @@ -91,25 +92,48 @@ func ValidateLabels(enable bool) Option { o.mapping = normalize } o.trie = trie - o.validateLabels = enable - o.fromPuny = validateFromPunycode + o.checkJoiners = enable + o.checkHyphens = enable + if enable { + o.fromPuny = validateFromPunycode + } else { + o.fromPuny = nil + } + } +} + +// CheckHyphens sets whether to check for correct use of hyphens ('-') in +// labels. Most web browsers do not have this option set, since labels such as +// "r3---sn-apo3qvuoxuxbt-j5pe" are in common use. +// +// This option corresponds to the CheckHyphens flag in UTS #46. +func CheckHyphens(enable bool) Option { + return func(o *options) { o.checkHyphens = enable } +} + +// CheckJoiners sets whether to check the ContextJ rules as defined in Appendix +// A of RFC 5892, concerning the use of joiner runes. +// +// This option corresponds to the CheckJoiners flag in UTS #46. +func CheckJoiners(enable bool) Option { + return func(o *options) { + o.trie = trie + o.checkJoiners = enable } } // StrictDomainName limits the set of permissible ASCII characters to those // allowed in domain names as defined in RFC 1034 (A-Z, a-z, 0-9 and the -// hyphen). This is set by default for MapForLookup and ValidateForRegistration. +// hyphen). This is set by default for MapForLookup and ValidateForRegistration, +// but is only useful if ValidateLabels is set. // // This option is useful, for instance, for browsers that allow characters // outside this range, for example a '_' (U+005F LOW LINE). See -// http://www.rfc-editor.org/std/std3.txt for more details This option -// corresponds to the UseSTD3ASCIIRules option in UTS #46. +// http://www.rfc-editor.org/std/std3.txt for more details. +// +// This option corresponds to the UseSTD3ASCIIRules flag in UTS #46. func StrictDomainName(use bool) Option { - return func(o *options) { - o.trie = trie - o.useSTD3Rules = use - o.fromPuny = validateFromPunycode - } + return func(o *options) { o.useSTD3Rules = use } } // NOTE: the following options pull in tables. The tables should not be linked @@ -117,6 +141,8 @@ func StrictDomainName(use bool) Option { // BidiRule enables the Bidi rule as defined in RFC 5893. Any application // that relies on proper validation of labels should include this rule. +// +// This option corresponds to the CheckBidi flag in UTS #46. func BidiRule() Option { return func(o *options) { o.bidirule = bidirule.ValidString } } @@ -152,7 +178,8 @@ func MapForLookup() Option { type options struct { transitional bool useSTD3Rules bool - validateLabels bool + checkHyphens bool + checkJoiners bool verifyDNSLength bool removeLeadingDots bool @@ -225,8 +252,11 @@ func (p *Profile) String() string { if p.useSTD3Rules { s += ":UseSTD3Rules" } - if p.validateLabels { - s += ":ValidateLabels" + if p.checkHyphens { + s += ":CheckHyphens" + } + if p.checkJoiners { + s += ":CheckJoiners" } if p.verifyDNSLength { s += ":VerifyDNSLength" @@ -254,26 +284,29 @@ var ( punycode = &Profile{} lookup = &Profile{options{ - transitional: true, - useSTD3Rules: true, - validateLabels: true, - trie: trie, - fromPuny: validateFromPunycode, - mapping: validateAndMap, - bidirule: bidirule.ValidString, + transitional: true, + useSTD3Rules: true, + checkHyphens: true, + checkJoiners: true, + trie: trie, + fromPuny: validateFromPunycode, + mapping: validateAndMap, + bidirule: bidirule.ValidString, }} display = &Profile{options{ - useSTD3Rules: true, - validateLabels: true, - trie: trie, - fromPuny: validateFromPunycode, - mapping: validateAndMap, - bidirule: bidirule.ValidString, + useSTD3Rules: true, + checkHyphens: true, + checkJoiners: true, + trie: trie, + fromPuny: validateFromPunycode, + mapping: validateAndMap, + bidirule: bidirule.ValidString, }} registration = &Profile{options{ useSTD3Rules: true, - validateLabels: true, verifyDNSLength: true, + checkHyphens: true, + checkJoiners: true, trie: trie, fromPuny: validateFromPunycode, mapping: validateRegistration, @@ -340,7 +373,7 @@ func (p *Profile) process(s string, toASCII bool) (string, error) { } isBidi = isBidi || bidirule.DirectionString(u) != bidi.LeftToRight labels.set(u) - if err == nil && p.validateLabels { + if err == nil && p.fromPuny != nil { err = p.fromPuny(p, u) } if err == nil { @@ -681,16 +714,18 @@ func (p *Profile) validateLabel(s string) (err error) { } return nil } - if !p.validateLabels { + if p.checkHyphens { + if len(s) > 4 && s[2] == '-' && s[3] == '-' { + return &labelError{s, "V2"} + } + if s[0] == '-' || s[len(s)-1] == '-' { + return &labelError{s, "V3"} + } + } + if !p.checkJoiners { return nil } - trie := p.trie // p.validateLabels is only set if trie is set. - if len(s) > 4 && s[2] == '-' && s[3] == '-' { - return &labelError{s, "V2"} - } - if s[0] == '-' || s[len(s)-1] == '-' { - return &labelError{s, "V3"} - } + trie := p.trie // p.checkJoiners is only set if trie is set. // TODO: merge the use of this in the trie. v, sz := trie.lookupString(s) x := info(v) diff --git a/src/runtime/vendor/golang.org/x/net/idna/idna9.0.0.go b/src/runtime/vendor/golang.org/x/net/idna/idna9.0.0.go index 7c7456374..55f718f12 100644 --- a/src/runtime/vendor/golang.org/x/net/idna/idna9.0.0.go +++ b/src/runtime/vendor/golang.org/x/net/idna/idna9.0.0.go @@ -66,15 +66,14 @@ func Transitional(transitional bool) Option { // VerifyDNSLength sets whether a Profile should fail if any of the IDN parts // are longer than allowed by the RFC. +// +// This option corresponds to the VerifyDnsLength flag in UTS #46. func VerifyDNSLength(verify bool) Option { return func(o *options) { o.verifyDNSLength = verify } } // RemoveLeadingDots removes leading label separators. Leading runes that map to // dots, such as U+3002 IDEOGRAPHIC FULL STOP, are removed as well. -// -// This is the behavior suggested by the UTS #46 and is adopted by some -// browsers. func RemoveLeadingDots(remove bool) Option { return func(o *options) { o.removeLeadingDots = remove } } @@ -82,6 +81,8 @@ func RemoveLeadingDots(remove bool) Option { // ValidateLabels sets whether to check the mandatory label validation criteria // as defined in Section 5.4 of RFC 5891. This includes testing for correct use // of hyphens ('-'), normalization, validity of runes, and the context rules. +// In particular, ValidateLabels also sets the CheckHyphens and CheckJoiners flags +// in UTS #46. func ValidateLabels(enable bool) Option { return func(o *options) { // Don't override existing mappings, but set one that at least checks @@ -90,25 +91,48 @@ func ValidateLabels(enable bool) Option { o.mapping = normalize } o.trie = trie - o.validateLabels = enable - o.fromPuny = validateFromPunycode + o.checkJoiners = enable + o.checkHyphens = enable + if enable { + o.fromPuny = validateFromPunycode + } else { + o.fromPuny = nil + } + } +} + +// CheckHyphens sets whether to check for correct use of hyphens ('-') in +// labels. Most web browsers do not have this option set, since labels such as +// "r3---sn-apo3qvuoxuxbt-j5pe" are in common use. +// +// This option corresponds to the CheckHyphens flag in UTS #46. +func CheckHyphens(enable bool) Option { + return func(o *options) { o.checkHyphens = enable } +} + +// CheckJoiners sets whether to check the ContextJ rules as defined in Appendix +// A of RFC 5892, concerning the use of joiner runes. +// +// This option corresponds to the CheckJoiners flag in UTS #46. +func CheckJoiners(enable bool) Option { + return func(o *options) { + o.trie = trie + o.checkJoiners = enable } } // StrictDomainName limits the set of permissable ASCII characters to those // allowed in domain names as defined in RFC 1034 (A-Z, a-z, 0-9 and the -// hyphen). This is set by default for MapForLookup and ValidateForRegistration. +// hyphen). This is set by default for MapForLookup and ValidateForRegistration, +// but is only useful if ValidateLabels is set. // // This option is useful, for instance, for browsers that allow characters // outside this range, for example a '_' (U+005F LOW LINE). See -// http://www.rfc-editor.org/std/std3.txt for more details This option -// corresponds to the UseSTD3ASCIIRules option in UTS #46. +// http://www.rfc-editor.org/std/std3.txt for more details. +// +// This option corresponds to the UseSTD3ASCIIRules flag in UTS #46. func StrictDomainName(use bool) Option { - return func(o *options) { - o.trie = trie - o.useSTD3Rules = use - o.fromPuny = validateFromPunycode - } + return func(o *options) { o.useSTD3Rules = use } } // NOTE: the following options pull in tables. The tables should not be linked @@ -116,6 +140,8 @@ func StrictDomainName(use bool) Option { // BidiRule enables the Bidi rule as defined in RFC 5893. Any application // that relies on proper validation of labels should include this rule. +// +// This option corresponds to the CheckBidi flag in UTS #46. func BidiRule() Option { return func(o *options) { o.bidirule = bidirule.ValidString } } @@ -152,7 +178,8 @@ func MapForLookup() Option { type options struct { transitional bool useSTD3Rules bool - validateLabels bool + checkHyphens bool + checkJoiners bool verifyDNSLength bool removeLeadingDots bool @@ -225,8 +252,11 @@ func (p *Profile) String() string { if p.useSTD3Rules { s += ":UseSTD3Rules" } - if p.validateLabels { - s += ":ValidateLabels" + if p.checkHyphens { + s += ":CheckHyphens" + } + if p.checkJoiners { + s += ":CheckJoiners" } if p.verifyDNSLength { s += ":VerifyDNSLength" @@ -255,9 +285,10 @@ var ( punycode = &Profile{} lookup = &Profile{options{ transitional: true, - useSTD3Rules: true, - validateLabels: true, removeLeadingDots: true, + useSTD3Rules: true, + checkHyphens: true, + checkJoiners: true, trie: trie, fromPuny: validateFromPunycode, mapping: validateAndMap, @@ -265,8 +296,9 @@ var ( }} display = &Profile{options{ useSTD3Rules: true, - validateLabels: true, removeLeadingDots: true, + checkHyphens: true, + checkJoiners: true, trie: trie, fromPuny: validateFromPunycode, mapping: validateAndMap, @@ -274,8 +306,9 @@ var ( }} registration = &Profile{options{ useSTD3Rules: true, - validateLabels: true, verifyDNSLength: true, + checkHyphens: true, + checkJoiners: true, trie: trie, fromPuny: validateFromPunycode, mapping: validateRegistration, @@ -339,7 +372,7 @@ func (p *Profile) process(s string, toASCII bool) (string, error) { continue } labels.set(u) - if err == nil && p.validateLabels { + if err == nil && p.fromPuny != nil { err = p.fromPuny(p, u) } if err == nil { @@ -629,16 +662,18 @@ func (p *Profile) validateLabel(s string) error { if p.bidirule != nil && !p.bidirule(s) { return &labelError{s, "B"} } - if !p.validateLabels { + if p.checkHyphens { + if len(s) > 4 && s[2] == '-' && s[3] == '-' { + return &labelError{s, "V2"} + } + if s[0] == '-' || s[len(s)-1] == '-' { + return &labelError{s, "V3"} + } + } + if !p.checkJoiners { return nil } - trie := p.trie // p.validateLabels is only set if trie is set. - if len(s) > 4 && s[2] == '-' && s[3] == '-' { - return &labelError{s, "V2"} - } - if s[0] == '-' || s[len(s)-1] == '-' { - return &labelError{s, "V3"} - } + trie := p.trie // p.checkJoiners is only set if trie is set. // TODO: merge the use of this in the trie. v, sz := trie.lookupString(s) x := info(v) diff --git a/src/runtime/vendor/golang.org/x/sync/AUTHORS b/src/runtime/vendor/golang.org/x/sync/AUTHORS new file mode 100644 index 000000000..15167cd74 --- /dev/null +++ b/src/runtime/vendor/golang.org/x/sync/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/src/runtime/vendor/golang.org/x/sync/CONTRIBUTORS b/src/runtime/vendor/golang.org/x/sync/CONTRIBUTORS new file mode 100644 index 000000000..1c4577e96 --- /dev/null +++ b/src/runtime/vendor/golang.org/x/sync/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/src/runtime/vendor/golang.org/x/sync/LICENSE b/src/runtime/vendor/golang.org/x/sync/LICENSE new file mode 100644 index 000000000..6a66aea5e --- /dev/null +++ b/src/runtime/vendor/golang.org/x/sync/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/src/runtime/vendor/golang.org/x/sync/PATENTS b/src/runtime/vendor/golang.org/x/sync/PATENTS new file mode 100644 index 000000000..733099041 --- /dev/null +++ b/src/runtime/vendor/golang.org/x/sync/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/src/runtime/vendor/golang.org/x/sync/errgroup/errgroup.go b/src/runtime/vendor/golang.org/x/sync/errgroup/errgroup.go new file mode 100644 index 000000000..9857fe53d --- /dev/null +++ b/src/runtime/vendor/golang.org/x/sync/errgroup/errgroup.go @@ -0,0 +1,66 @@ +// 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 errgroup provides synchronization, error propagation, and Context +// cancelation for groups of goroutines working on subtasks of a common task. +package errgroup + +import ( + "context" + "sync" +) + +// A Group is a collection of goroutines working on subtasks that are part of +// the same overall task. +// +// A zero Group is valid and does not cancel on error. +type Group struct { + cancel func() + + wg sync.WaitGroup + + errOnce sync.Once + err error +} + +// WithContext returns a new Group and an associated Context derived from ctx. +// +// The derived Context is canceled the first time a function passed to Go +// returns a non-nil error or the first time Wait returns, whichever occurs +// first. +func WithContext(ctx context.Context) (*Group, context.Context) { + ctx, cancel := context.WithCancel(ctx) + return &Group{cancel: cancel}, ctx +} + +// Wait blocks until all function calls from the Go method have returned, then +// returns the first non-nil error (if any) from them. +func (g *Group) Wait() error { + g.wg.Wait() + if g.cancel != nil { + g.cancel() + } + return g.err +} + +// Go calls the given function in a new goroutine. +// +// The first call to return a non-nil error cancels the group; its error will be +// returned by Wait. +func (g *Group) Go(f func() error) { + g.wg.Add(1) + + go func() { + defer g.wg.Done() + + if err := f(); err != nil { + g.errOnce.Do(func() { + g.err = err + if g.cancel != nil { + g.cancel() + } + }) + } + }() +} diff --git a/src/runtime/vendor/golang.org/x/sys/execabs/execabs.go b/src/runtime/vendor/golang.org/x/sys/execabs/execabs.go new file mode 100644 index 000000000..78192498d --- /dev/null +++ b/src/runtime/vendor/golang.org/x/sys/execabs/execabs.go @@ -0,0 +1,102 @@ +// Copyright 2020 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 execabs is a drop-in replacement for os/exec +// that requires PATH lookups to find absolute paths. +// That is, execabs.Command("cmd") runs the same PATH lookup +// as exec.Command("cmd"), but if the result is a path +// which is relative, the Run and Start methods will report +// an error instead of running the executable. +// +// See https://blog.golang.org/path-security for more information +// about when it may be necessary or appropriate to use this package. +package execabs + +import ( + "context" + "fmt" + "os/exec" + "path/filepath" + "reflect" + "unsafe" +) + +// ErrNotFound is the error resulting if a path search failed to find an executable file. +// It is an alias for exec.ErrNotFound. +var ErrNotFound = exec.ErrNotFound + +// Cmd represents an external command being prepared or run. +// It is an alias for exec.Cmd. +type Cmd = exec.Cmd + +// Error is returned by LookPath when it fails to classify a file as an executable. +// It is an alias for exec.Error. +type Error = exec.Error + +// An ExitError reports an unsuccessful exit by a command. +// It is an alias for exec.ExitError. +type ExitError = exec.ExitError + +func relError(file, path string) error { + return fmt.Errorf("%s resolves to executable in current directory (.%c%s)", file, filepath.Separator, path) +} + +// LookPath searches for an executable named file in the directories +// named by the PATH environment variable. If file contains a slash, +// it is tried directly and the PATH is not consulted. The result will be +// an absolute path. +// +// LookPath differs from exec.LookPath in its handling of PATH lookups, +// which are used for file names without slashes. If exec.LookPath's +// PATH lookup would have returned an executable from the current directory, +// LookPath instead returns an error. +func LookPath(file string) (string, error) { + path, err := exec.LookPath(file) + if err != nil { + return "", err + } + if filepath.Base(file) == file && !filepath.IsAbs(path) { + return "", relError(file, path) + } + return path, nil +} + +func fixCmd(name string, cmd *exec.Cmd) { + if filepath.Base(name) == name && !filepath.IsAbs(cmd.Path) { + // exec.Command was called with a bare binary name and + // exec.LookPath returned a path which is not absolute. + // Set cmd.lookPathErr and clear cmd.Path so that it + // cannot be run. + lookPathErr := (*error)(unsafe.Pointer(reflect.ValueOf(cmd).Elem().FieldByName("lookPathErr").Addr().Pointer())) + if *lookPathErr == nil { + *lookPathErr = relError(name, cmd.Path) + } + cmd.Path = "" + } +} + +// CommandContext is like Command but includes a context. +// +// The provided context is used to kill the process (by calling os.Process.Kill) +// if the context becomes done before the command completes on its own. +func CommandContext(ctx context.Context, name string, arg ...string) *exec.Cmd { + cmd := exec.CommandContext(ctx, name, arg...) + fixCmd(name, cmd) + return cmd + +} + +// Command returns the Cmd struct to execute the named program with the given arguments. +// See exec.Command for most details. +// +// Command differs from exec.Command in its handling of PATH lookups, +// which are used when the program name contains no slashes. +// If exec.Command would have returned an exec.Cmd configured to run an +// executable from the current directory, Command instead +// returns an exec.Cmd that will return an error from Start or Run. +func Command(name string, arg ...string) *exec.Cmd { + cmd := exec.Command(name, arg...) + fixCmd(name, cmd) + return cmd +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/README.md b/src/runtime/vendor/golang.org/x/sys/unix/README.md index 579d2d735..474efad0e 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/README.md +++ b/src/runtime/vendor/golang.org/x/sys/unix/README.md @@ -76,7 +76,7 @@ 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 +When porting Go to a new architecture/OS, this file must be implemented for each GOOS/GOARCH pair. ### mksysnum @@ -107,7 +107,7 @@ 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 +unexported `//sys` prototype, and then write a custom wrapper in `syscall_${GOOS}.go`. ### types files @@ -137,7 +137,7 @@ some `#if/#elif` macros in your include statements. 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 +and 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 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/asm_bsd_386.s b/src/runtime/vendor/golang.org/x/sys/unix/asm_bsd_386.s index 7f29275fa..e0fcd9b3d 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/asm_bsd_386.s +++ b/src/runtime/vendor/golang.org/x/sys/unix/asm_bsd_386.s @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build (darwin || freebsd || netbsd || openbsd) && gc -// +build darwin freebsd netbsd openbsd +//go:build (freebsd || netbsd || openbsd) && gc +// +build freebsd netbsd openbsd // +build gc #include "textflag.h" diff --git a/src/runtime/vendor/golang.org/x/sys/unix/asm_bsd_arm.s b/src/runtime/vendor/golang.org/x/sys/unix/asm_bsd_arm.s index 98ebfad9d..d702d4adc 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/asm_bsd_arm.s +++ b/src/runtime/vendor/golang.org/x/sys/unix/asm_bsd_arm.s @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build (darwin || freebsd || netbsd || openbsd) && gc -// +build darwin freebsd netbsd openbsd +//go:build (freebsd || netbsd || openbsd) && gc +// +build freebsd netbsd openbsd // +build gc #include "textflag.h" diff --git a/src/runtime/vendor/golang.org/x/sys/unix/fdset.go b/src/runtime/vendor/golang.org/x/sys/unix/fdset.go index b1e07b220..a8068f94f 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/fdset.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/fdset.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos package unix diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ifreq_linux.go b/src/runtime/vendor/golang.org/x/sys/unix/ifreq_linux.go new file mode 100644 index 000000000..934af313c --- /dev/null +++ b/src/runtime/vendor/golang.org/x/sys/unix/ifreq_linux.go @@ -0,0 +1,149 @@ +// Copyright 2021 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. + +//go:build linux +// +build linux + +package unix + +import ( + "bytes" + "unsafe" +) + +// Helpers for dealing with ifreq since it contains a union and thus requires a +// lot of unsafe.Pointer casts to use properly. + +// An Ifreq is a type-safe wrapper around the raw ifreq struct. An Ifreq +// contains an interface name and a union of arbitrary data which can be +// accessed using the Ifreq's methods. To create an Ifreq, use the NewIfreq +// function. +// +// Use the Name method to access the stored interface name. The union data +// fields can be get and set using the following methods: +// - Uint16/SetUint16: flags +// - Uint32/SetUint32: ifindex, metric, mtu +type Ifreq struct{ raw ifreq } + +// NewIfreq creates an Ifreq with the input network interface name after +// validating the name does not exceed IFNAMSIZ-1 (trailing NULL required) +// bytes. +func NewIfreq(name string) (*Ifreq, error) { + // Leave room for terminating NULL byte. + if len(name) >= IFNAMSIZ { + return nil, EINVAL + } + + var ifr ifreq + copy(ifr.Ifrn[:], name) + + return &Ifreq{raw: ifr}, nil +} + +// TODO(mdlayher): get/set methods for hardware address sockaddr, char array, etc. + +// Name returns the interface name associated with the Ifreq. +func (ifr *Ifreq) Name() string { + // BytePtrToString requires a NULL terminator or the program may crash. If + // one is not present, just return the empty string. + if !bytes.Contains(ifr.raw.Ifrn[:], []byte{0x00}) { + return "" + } + + return BytePtrToString(&ifr.raw.Ifrn[0]) +} + +// According to netdevice(7), only AF_INET addresses are returned for numerous +// sockaddr ioctls. For convenience, we expose these as Inet4Addr since the Port +// field and other data is always empty. + +// Inet4Addr returns the Ifreq union data from an embedded sockaddr as a C +// in_addr/Go []byte (4-byte IPv4 address) value. If the sockaddr family is not +// AF_INET, an error is returned. +func (ifr *Ifreq) Inet4Addr() ([]byte, error) { + raw := *(*RawSockaddrInet4)(unsafe.Pointer(&ifr.raw.Ifru[:SizeofSockaddrInet4][0])) + if raw.Family != AF_INET { + // Cannot safely interpret raw.Addr bytes as an IPv4 address. + return nil, EINVAL + } + + return raw.Addr[:], nil +} + +// SetInet4Addr sets a C in_addr/Go []byte (4-byte IPv4 address) value in an +// embedded sockaddr within the Ifreq's union data. v must be 4 bytes in length +// or an error will be returned. +func (ifr *Ifreq) SetInet4Addr(v []byte) error { + if len(v) != 4 { + return EINVAL + } + + var addr [4]byte + copy(addr[:], v) + + ifr.clear() + *(*RawSockaddrInet4)( + unsafe.Pointer(&ifr.raw.Ifru[:SizeofSockaddrInet4][0]), + ) = RawSockaddrInet4{ + // Always set IP family as ioctls would require it anyway. + Family: AF_INET, + Addr: addr, + } + + return nil +} + +// Uint16 returns the Ifreq union data as a C short/Go uint16 value. +func (ifr *Ifreq) Uint16() uint16 { + return *(*uint16)(unsafe.Pointer(&ifr.raw.Ifru[:2][0])) +} + +// SetUint16 sets a C short/Go uint16 value as the Ifreq's union data. +func (ifr *Ifreq) SetUint16(v uint16) { + ifr.clear() + *(*uint16)(unsafe.Pointer(&ifr.raw.Ifru[:2][0])) = v +} + +// Uint32 returns the Ifreq union data as a C int/Go uint32 value. +func (ifr *Ifreq) Uint32() uint32 { + return *(*uint32)(unsafe.Pointer(&ifr.raw.Ifru[:4][0])) +} + +// SetUint32 sets a C int/Go uint32 value as the Ifreq's union data. +func (ifr *Ifreq) SetUint32(v uint32) { + ifr.clear() + *(*uint32)(unsafe.Pointer(&ifr.raw.Ifru[:4][0])) = v +} + +// clear zeroes the ifreq's union field to prevent trailing garbage data from +// being sent to the kernel if an ifreq is reused. +func (ifr *Ifreq) clear() { + for i := range ifr.raw.Ifru { + ifr.raw.Ifru[i] = 0 + } +} + +// TODO(mdlayher): export as IfreqData? For now we can provide helpers such as +// IoctlGetEthtoolDrvinfo which use these APIs under the hood. + +// An ifreqData is an Ifreq which carries pointer data. To produce an ifreqData, +// use the Ifreq.withData method. +type ifreqData struct { + name [IFNAMSIZ]byte + // A type separate from ifreq is required in order to comply with the + // unsafe.Pointer rules since the "pointer-ness" of data would not be + // preserved if it were cast into the byte array of a raw ifreq. + data unsafe.Pointer + // Pad to the same size as ifreq. + _ [len(ifreq{}.Ifru) - SizeofPtr]byte +} + +// withData produces an ifreqData with the pointer p set for ioctls which require +// arbitrary pointer data. +func (ifr Ifreq) withData(p unsafe.Pointer) ifreqData { + return ifreqData{ + name: ifr.raw.Ifrn, + data: p, + } +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ioctl_linux.go b/src/runtime/vendor/golang.org/x/sys/unix/ioctl_linux.go index 48773f730..1dadead21 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ioctl_linux.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ioctl_linux.go @@ -5,7 +5,6 @@ package unix import ( - "runtime" "unsafe" ) @@ -22,56 +21,42 @@ func IoctlRetInt(fd int, req uint) (int, error) { func IoctlGetUint32(fd int, req uint) (uint32, error) { var value uint32 - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + err := ioctlPtr(fd, req, 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))) + err := ioctlPtr(fd, RTC_RD_TIME, unsafe.Pointer(&value)) return &value, err } func IoctlSetRTCTime(fd int, value *RTCTime) error { - err := ioctl(fd, RTC_SET_TIME, uintptr(unsafe.Pointer(value))) - runtime.KeepAlive(value) - return err + return ioctlPtr(fd, RTC_SET_TIME, unsafe.Pointer(value)) } func IoctlGetRTCWkAlrm(fd int) (*RTCWkAlrm, error) { var value RTCWkAlrm - err := ioctl(fd, RTC_WKALM_RD, uintptr(unsafe.Pointer(&value))) + err := ioctlPtr(fd, RTC_WKALM_RD, unsafe.Pointer(&value)) return &value, err } func IoctlSetRTCWkAlrm(fd int, value *RTCWkAlrm) error { - err := ioctl(fd, RTC_WKALM_SET, uintptr(unsafe.Pointer(value))) - runtime.KeepAlive(value) - return err -} - -type ifreqEthtool struct { - name [IFNAMSIZ]byte - data unsafe.Pointer + return ioctlPtr(fd, RTC_WKALM_SET, unsafe.Pointer(value)) } // IoctlGetEthtoolDrvinfo fetches ethtool driver information for the network // device specified by ifname. func IoctlGetEthtoolDrvinfo(fd int, ifname string) (*EthtoolDrvinfo, error) { - // Leave room for terminating NULL byte. - if len(ifname) >= IFNAMSIZ { - return nil, EINVAL + ifr, err := NewIfreq(ifname) + if err != nil { + return nil, err } - value := EthtoolDrvinfo{ - Cmd: ETHTOOL_GDRVINFO, - } - ifreq := ifreqEthtool{ - data: unsafe.Pointer(&value), - } - copy(ifreq.name[:], ifname) - err := ioctl(fd, SIOCETHTOOL, uintptr(unsafe.Pointer(&ifreq))) - runtime.KeepAlive(ifreq) + value := EthtoolDrvinfo{Cmd: ETHTOOL_GDRVINFO} + ifrd := ifr.withData(unsafe.Pointer(&value)) + + err = ioctlIfreqData(fd, SIOCETHTOOL, &ifrd) return &value, err } @@ -80,7 +65,7 @@ func IoctlGetEthtoolDrvinfo(fd int, ifname string) (*EthtoolDrvinfo, error) { // https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html. func IoctlGetWatchdogInfo(fd int) (*WatchdogInfo, error) { var value WatchdogInfo - err := ioctl(fd, WDIOC_GETSUPPORT, uintptr(unsafe.Pointer(&value))) + err := ioctlPtr(fd, WDIOC_GETSUPPORT, unsafe.Pointer(&value)) return &value, err } @@ -88,6 +73,7 @@ func IoctlGetWatchdogInfo(fd int) (*WatchdogInfo, error) { // more information, see: // https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html. func IoctlWatchdogKeepalive(fd int) error { + // arg is ignored and not a pointer, so ioctl is fine instead of ioctlPtr. return ioctl(fd, WDIOC_KEEPALIVE, 0) } @@ -95,9 +81,7 @@ func IoctlWatchdogKeepalive(fd int) error { // range of data conveyed in value to the file associated with the file // descriptor destFd. See the ioctl_ficlonerange(2) man page for details. func IoctlFileCloneRange(destFd int, value *FileCloneRange) error { - err := ioctl(destFd, FICLONERANGE, uintptr(unsafe.Pointer(value))) - runtime.KeepAlive(value) - return err + return ioctlPtr(destFd, FICLONERANGE, unsafe.Pointer(value)) } // IoctlFileClone performs an FICLONE ioctl operation to clone the entire file @@ -148,7 +132,7 @@ func IoctlFileDedupeRange(srcFd int, value *FileDedupeRange) error { rawinfo.Reserved = value.Info[i].Reserved } - err := ioctl(srcFd, FIDEDUPERANGE, uintptr(unsafe.Pointer(&buf[0]))) + err := ioctlPtr(srcFd, FIDEDUPERANGE, unsafe.Pointer(&buf[0])) // Output for i := range value.Info { @@ -166,31 +150,47 @@ func IoctlFileDedupeRange(srcFd int, value *FileDedupeRange) error { } func IoctlHIDGetDesc(fd int, value *HIDRawReportDescriptor) error { - err := ioctl(fd, HIDIOCGRDESC, uintptr(unsafe.Pointer(value))) - runtime.KeepAlive(value) - return err + return ioctlPtr(fd, HIDIOCGRDESC, unsafe.Pointer(value)) } func IoctlHIDGetRawInfo(fd int) (*HIDRawDevInfo, error) { var value HIDRawDevInfo - err := ioctl(fd, HIDIOCGRAWINFO, uintptr(unsafe.Pointer(&value))) + err := ioctlPtr(fd, HIDIOCGRAWINFO, unsafe.Pointer(&value)) return &value, err } func IoctlHIDGetRawName(fd int) (string, error) { var value [_HIDIOCGRAWNAME_LEN]byte - err := ioctl(fd, _HIDIOCGRAWNAME, uintptr(unsafe.Pointer(&value[0]))) + err := ioctlPtr(fd, _HIDIOCGRAWNAME, unsafe.Pointer(&value[0])) return ByteSliceToString(value[:]), err } func IoctlHIDGetRawPhys(fd int) (string, error) { var value [_HIDIOCGRAWPHYS_LEN]byte - err := ioctl(fd, _HIDIOCGRAWPHYS, uintptr(unsafe.Pointer(&value[0]))) + err := ioctlPtr(fd, _HIDIOCGRAWPHYS, unsafe.Pointer(&value[0])) return ByteSliceToString(value[:]), err } func IoctlHIDGetRawUniq(fd int) (string, error) { var value [_HIDIOCGRAWUNIQ_LEN]byte - err := ioctl(fd, _HIDIOCGRAWUNIQ, uintptr(unsafe.Pointer(&value[0]))) + err := ioctlPtr(fd, _HIDIOCGRAWUNIQ, unsafe.Pointer(&value[0])) return ByteSliceToString(value[:]), err } + +// IoctlIfreq performs an ioctl using an Ifreq structure for input and/or +// output. See the netdevice(7) man page for details. +func IoctlIfreq(fd int, req uint, value *Ifreq) error { + // It is possible we will add more fields to *Ifreq itself later to prevent + // misuse, so pass the raw *ifreq directly. + return ioctlPtr(fd, req, unsafe.Pointer(&value.raw)) +} + +// TODO(mdlayher): export if and when IfreqData is exported. + +// ioctlIfreqData performs an ioctl using an ifreqData structure for input +// and/or output. See the netdevice(7) man page for details. +func ioctlIfreqData(fd int, req uint, value *ifreqData) error { + // The memory layout of IfreqData (type-safe) and ifreq (not type-safe) are + // identical so pass *IfreqData directly. + return ioctlPtr(fd, req, unsafe.Pointer(value)) +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/mkall.sh b/src/runtime/vendor/golang.org/x/sys/unix/mkall.sh index d727cad19..396aadf86 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/mkall.sh +++ b/src/runtime/vendor/golang.org/x/sys/unix/mkall.sh @@ -70,23 +70,11 @@ aix_ppc64) 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" - mktypes="GOARCH=$GOARCH go tool cgo -godefs" - mkasm="go run mkasm_darwin.go" - ;; darwin_amd64) mkerrors="$mkerrors -m64" mktypes="GOARCH=$GOARCH go tool cgo -godefs" mkasm="go run mkasm_darwin.go" ;; -darwin_arm) - mkerrors="$mkerrors" - mksyscall="go run mksyscall.go -l32" - mktypes="GOARCH=$GOARCH go tool cgo -godefs" - mkasm="go run mkasm_darwin.go" - ;; darwin_arm64) mkerrors="$mkerrors -m64" mktypes="GOARCH=$GOARCH go tool cgo -godefs" diff --git a/src/runtime/vendor/golang.org/x/sys/unix/mkerrors.sh b/src/runtime/vendor/golang.org/x/sys/unix/mkerrors.sh index 007358af8..a74ef58f8 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/mkerrors.sh +++ b/src/runtime/vendor/golang.org/x/sys/unix/mkerrors.sh @@ -54,7 +54,7 @@ includes_AIX=' includes_Darwin=' #define _DARWIN_C_SOURCE -#define KERNEL +#define KERNEL 1 #define _DARWIN_USE_64_BIT_INODE #define __APPLE_USE_RFC_3542 #include @@ -75,6 +75,7 @@ includes_Darwin=' #include #include #include +#include #include #include #include @@ -82,6 +83,9 @@ includes_Darwin=' #include #include #include + +// for backwards compatibility because moved TIOCREMOTE to Kernel.framework after MacOSX12.0.sdk. +#define TIOCREMOTE 0x80047469 ' includes_DragonFly=' @@ -217,8 +221,6 @@ struct ltchars { #include #include #include -#include -#include #include #include #include @@ -231,6 +233,7 @@ struct ltchars { #include #include #include +#include #include #include #include @@ -239,6 +242,7 @@ struct ltchars { #include #include #include +#include #include #include #include @@ -258,6 +262,7 @@ struct ltchars { #include #include +#include #include #if defined(__sparc__) @@ -465,7 +470,6 @@ ccflags="$@" $2 !~ /^EQUIV_/ && $2 !~ /^EXPR_/ && $2 !~ /^EVIOC/ && - $2 !~ /^EV_/ && $2 ~ /^E[A-Z0-9_]+$/ || $2 ~ /^B[0-9_]+$/ || $2 ~ /^(OLD|NEW)DEV$/ || @@ -497,10 +501,14 @@ ccflags="$@" $2 ~ /^O?XTABS$/ || $2 ~ /^TC[IO](ON|OFF)$/ || $2 ~ /^IN_/ || + $2 ~ /^LANDLOCK_/ || $2 ~ /^LOCK_(SH|EX|NB|UN)$/ || $2 ~ /^LO_(KEY|NAME)_SIZE$/ || $2 ~ /^LOOP_(CLR|CTL|GET|SET)_/ || - $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|TCP|MCAST|EVFILT|NOTE|SHUT|PROT|MAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR|LOCAL)_/ || + $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|TCP|MCAST|EVFILT|NOTE|SHUT|PROT|MAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR|LOCAL|TCPOPT)_/ || + $2 ~ /^NFC_(GENL|PROTO|COMM|RF|SE|DIRECTION|LLCP|SOCKPROTO)_/ || + $2 ~ /^NFC_.*_(MAX)?SIZE$/ || + $2 ~ /^RAW_PAYLOAD_/ || $2 ~ /^TP_STATUS_/ || $2 ~ /^FALLOC_/ || $2 ~ /^ICMPV?6?_(FILTER|SEC)/ || @@ -558,6 +566,7 @@ ccflags="$@" $2 ~ /^KEYCTL_/ || $2 ~ /^PERF_/ || $2 ~ /^SECCOMP_MODE_/ || + $2 ~ /^SEEK_/ || $2 ~ /^SPLICE_/ || $2 ~ /^SYNC_FILE_RANGE_/ || $2 !~ /^AUDIT_RECORD_MAGIC/ && @@ -593,6 +602,9 @@ ccflags="$@" $2 == "HID_MAX_DESCRIPTOR_SIZE" || $2 ~ /^_?HIDIOC/ || $2 ~ /^BUS_(USB|HIL|BLUETOOTH|VIRTUAL)$/ || + $2 ~ /^MTD/ || + $2 ~ /^OTP/ || + $2 ~ /^MEM/ || $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)} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/sockcmsg_linux.go b/src/runtime/vendor/golang.org/x/sys/unix/sockcmsg_linux.go index 8bf457059..326fb04a5 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/sockcmsg_linux.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/sockcmsg_linux.go @@ -34,3 +34,56 @@ func ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) { ucred := *(*Ucred)(unsafe.Pointer(&m.Data[0])) return &ucred, nil } + +// PktInfo4 encodes Inet4Pktinfo into a socket control message of type IP_PKTINFO. +func PktInfo4(info *Inet4Pktinfo) []byte { + b := make([]byte, CmsgSpace(SizeofInet4Pktinfo)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_IP + h.Type = IP_PKTINFO + h.SetLen(CmsgLen(SizeofInet4Pktinfo)) + *(*Inet4Pktinfo)(h.data(0)) = *info + return b +} + +// PktInfo6 encodes Inet6Pktinfo into a socket control message of type IPV6_PKTINFO. +func PktInfo6(info *Inet6Pktinfo) []byte { + b := make([]byte, CmsgSpace(SizeofInet6Pktinfo)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_IPV6 + h.Type = IPV6_PKTINFO + h.SetLen(CmsgLen(SizeofInet6Pktinfo)) + *(*Inet6Pktinfo)(h.data(0)) = *info + return b +} + +// ParseOrigDstAddr decodes a socket control message containing the original +// destination address. To receive such a message the IP_RECVORIGDSTADDR or +// IPV6_RECVORIGDSTADDR option must be enabled on the socket. +func ParseOrigDstAddr(m *SocketControlMessage) (Sockaddr, error) { + switch { + case m.Header.Level == SOL_IP && m.Header.Type == IP_ORIGDSTADDR: + pp := (*RawSockaddrInet4)(unsafe.Pointer(&m.Data[0])) + 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 m.Header.Level == SOL_IPV6 && m.Header.Type == IPV6_ORIGDSTADDR: + pp := (*RawSockaddrInet6)(unsafe.Pointer(&m.Data[0])) + 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 + + default: + return nil, EINVAL + } +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go b/src/runtime/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go index 5fc3cda6f..1596426b1 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go @@ -17,7 +17,7 @@ import ( //sys readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) func fdopendir(fd int) (dir uintptr, err error) { - r0, _, e1 := syscall_syscallPtr(funcPC(libc_fdopendir_trampoline), uintptr(fd), 0, 0) + r0, _, e1 := syscall_syscallPtr(libc_fdopendir_trampoline_addr, uintptr(fd), 0, 0) dir = uintptr(r0) if e1 != 0 { err = errnoErr(e1) @@ -25,7 +25,7 @@ func fdopendir(fd int) (dir uintptr, err error) { return } -func libc_fdopendir_trampoline() +var libc_fdopendir_trampoline_addr uintptr //go:cgo_import_dynamic libc_fdopendir fdopendir "/usr/lib/libSystem.B.dylib" diff --git a/src/runtime/vendor/golang.org/x/sys/unix/syscall_darwin.go b/src/runtime/vendor/golang.org/x/sys/unix/syscall_darwin.go index 9945e5f96..a8c13317d 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/syscall_darwin.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -13,6 +13,7 @@ package unix import ( + "fmt" "runtime" "syscall" "unsafe" @@ -47,6 +48,30 @@ func (sa *SockaddrCtl) sockaddr() (unsafe.Pointer, _Socklen, error) { return unsafe.Pointer(&sa.raw), SizeofSockaddrCtl, nil } +// SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets. +// SockaddrVM provides access to Darwin 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_LOCAL: refers to local communication (loopback). + // - 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.Len = SizeofSockaddrVM + sa.raw.Family = AF_VSOCK + sa.raw.Port = sa.Port + sa.raw.Cid = sa.CID + + return unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil +} + func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { switch rsa.Addr.Family { case AF_SYSTEM: @@ -57,6 +82,13 @@ func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { sa.Unit = pp.Sc_unit return sa, nil } + case AF_VSOCK: + pp := (*RawSockaddrVM)(unsafe.Pointer(rsa)) + sa := &SockaddrVM{ + CID: pp.Cid, + Port: pp.Port, + } + return sa, nil } return nil, EAFNOSUPPORT } @@ -398,8 +430,45 @@ func GetsockoptXucred(fd, level, opt int) (*Xucred, error) { return x, err } +func SysctlKinfoProcSlice(name string) ([]KinfoProc, error) { + mib, err := sysctlmib(name) + 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 + } + if n%SizeofKinfoProc != 0 { + return nil, fmt.Errorf("sysctl() returned a size of %d, which is not a multiple of %d", n, SizeofKinfoProc) + } + + // Read into buffer of that size. + buf := make([]KinfoProc, n/SizeofKinfoProc) + if err := sysctl(mib, (*byte)(unsafe.Pointer(&buf[0])), &n, nil, 0); err != nil { + return nil, err + } + if n%SizeofKinfoProc != 0 { + return nil, fmt.Errorf("sysctl() returned a size of %d, which is not a multiple of %d", n, SizeofKinfoProc) + } + + // The actual call may return less than the original reported required + // size so ensure we deal with that. + return buf[:n/SizeofKinfoProc], nil +} + //sys sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) +//sys shmat(id int, addr uintptr, flag int) (ret uintptr, err error) +//sys shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) +//sys shmdt(addr uintptr) (err error) +//sys shmget(key int, size int, flag int) (id int, err error) + /* * Exposed directly */ @@ -557,10 +626,6 @@ func GetsockoptXucred(fd, level, opt int) (*Xucred, error) { // Msgget // Msgsnd // Msgrcv -// Shmat -// Shmctl -// Shmdt -// Shmget // Shm_open // Shm_unlink // Sem_open diff --git a/src/runtime/vendor/golang.org/x/sys/unix/syscall_darwin_386.go b/src/runtime/vendor/golang.org/x/sys/unix/syscall_darwin_386.go deleted file mode 100644 index 647467712..000000000 --- a/src/runtime/vendor/golang.org/x/sys/unix/syscall_darwin_386.go +++ /dev/null @@ -1,51 +0,0 @@ -// 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. - -//go:build 386 && darwin -// +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)} -} - -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 (msghdr *Msghdr) SetIovlen(length int) { - msghdr.Iovlen = int32(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 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 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 ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace -//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/src/runtime/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go b/src/runtime/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go deleted file mode 100644 index d30735c5d..000000000 --- a/src/runtime/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go +++ /dev/null @@ -1,51 +0,0 @@ -// 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 ptrace1(request int, pid int, addr uintptr, data uintptr) error { - return ENOTSUP -} - -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 (msghdr *Msghdr) SetIovlen(length int) { - msghdr.Iovlen = int32(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 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) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go b/src/runtime/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go index 38bec3002..53c96641f 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go @@ -7,7 +7,7 @@ package unix -import "unsafe" +import _ "unsafe" // Implemented in the runtime package (runtime/sys_darwin.go) func syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) @@ -25,10 +25,3 @@ func syscall_syscallPtr(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) //go:linkname syscall_rawSyscall syscall.rawSyscall //go:linkname syscall_rawSyscall6 syscall.rawSyscall6 //go:linkname syscall_syscallPtr syscall.syscallPtr - -// 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/src/runtime/vendor/golang.org/x/sys/unix/syscall_illumos.go b/src/runtime/vendor/golang.org/x/sys/unix/syscall_illumos.go index 8c5357683..8d5f294c4 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/syscall_illumos.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/syscall_illumos.go @@ -162,6 +162,14 @@ func (l *Lifreq) GetLifruInt() int { return *(*int)(unsafe.Pointer(&l.Lifru[0])) } +func (l *Lifreq) SetLifruUint(d uint) { + *(*uint)(unsafe.Pointer(&l.Lifru[0])) = d +} + +func (l *Lifreq) GetLifruUint() uint { + return *(*uint)(unsafe.Pointer(&l.Lifru[0])) +} + func IoctlLifreq(fd int, req uint, l *Lifreq) error { return ioctl(fd, req, uintptr(unsafe.Pointer(l))) } diff --git a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux.go b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux.go index 2dd7c8e34..fff38a84c 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -13,7 +13,6 @@ package unix import ( "encoding/binary" - "runtime" "syscall" "unsafe" ) @@ -38,6 +37,13 @@ func Creat(path string, mode uint32) (fd int, err error) { return Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode) } +func EpollCreate(size int) (fd int, err error) { + if size <= 0 { + return -1, EINVAL + } + return EpollCreate1(0) +} + //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) @@ -66,11 +72,22 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { return fchmodat(dirfd, path, mode) } -//sys ioctl(fd int, req uint, arg uintptr) (err error) +func InotifyInit() (fd int, err error) { + return InotifyInit1(0) +} -// ioctl itself should not be exposed directly, but additional get/set -// functions for specific types are permissible. -// These are defined in ioctl.go and ioctl_linux.go. +//sys ioctl(fd int, req uint, arg uintptr) (err error) = SYS_IOCTL +//sys ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL + +// ioctl itself should not be exposed directly, but additional get/set functions +// for specific types are permissible. These are defined in ioctl.go and +// ioctl_linux.go. +// +// The third argument to ioctl is often a pointer but sometimes an integer. +// Callers should use ioctlPtr when the third argument is a pointer and ioctl +// when the third argument is an integer. +// +// TODO: some existing code incorrectly uses ioctl when it should use ioctlPtr. //sys Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) @@ -102,6 +119,23 @@ func Openat2(dirfd int, path string, how *OpenHow) (fd int, err error) { return openat2(dirfd, path, how, SizeofOpenHow) } +func Pipe(p []int) 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 +} + //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) { @@ -111,6 +145,15 @@ func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error return ppoll(&fds[0], len(fds), timeout, sigmask) } +func Poll(fds []PollFd, timeout int) (n int, err error) { + var ts *Timespec + if timeout >= 0 { + ts = new(Timespec) + *ts = NsecToTimespec(int64(timeout) * 1e6) + } + return Ppoll(fds, ts, nil) +} + //sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) func Readlink(path string, buf []byte) (n int, err error) { @@ -161,27 +204,7 @@ func Utimes(path string, tv []Timeval) error { //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]))) + return UtimesNanoAt(AT_FDCWD, path, ts, 0) } func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { @@ -904,6 +927,46 @@ func (sa *SockaddrIUCV) sockaddr() (unsafe.Pointer, _Socklen, error) { return unsafe.Pointer(&sa.raw), SizeofSockaddrIUCV, nil } +type SockaddrNFC struct { + DeviceIdx uint32 + TargetIdx uint32 + NFCProtocol uint32 + raw RawSockaddrNFC +} + +func (sa *SockaddrNFC) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Sa_family = AF_NFC + sa.raw.Dev_idx = sa.DeviceIdx + sa.raw.Target_idx = sa.TargetIdx + sa.raw.Nfc_protocol = sa.NFCProtocol + return unsafe.Pointer(&sa.raw), SizeofSockaddrNFC, nil +} + +type SockaddrNFCLLCP struct { + DeviceIdx uint32 + TargetIdx uint32 + NFCProtocol uint32 + DestinationSAP uint8 + SourceSAP uint8 + ServiceName string + raw RawSockaddrNFCLLCP +} + +func (sa *SockaddrNFCLLCP) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Sa_family = AF_NFC + sa.raw.Dev_idx = sa.DeviceIdx + sa.raw.Target_idx = sa.TargetIdx + sa.raw.Nfc_protocol = sa.NFCProtocol + sa.raw.Dsap = sa.DestinationSAP + sa.raw.Ssap = sa.SourceSAP + if len(sa.ServiceName) > len(sa.raw.Service_name) { + return nil, 0, EINVAL + } + copy(sa.raw.Service_name[:], sa.ServiceName) + sa.raw.SetServiceNameLen(len(sa.ServiceName)) + return unsafe.Pointer(&sa.raw), SizeofSockaddrNFCLLCP, nil +} + var socketProtocol = func(fd int) (int, error) { return GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL) } @@ -1144,6 +1207,37 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { } return sa, nil } + case AF_NFC: + proto, err := socketProtocol(fd) + if err != nil { + return nil, err + } + switch proto { + case NFC_SOCKPROTO_RAW: + pp := (*RawSockaddrNFC)(unsafe.Pointer(rsa)) + sa := &SockaddrNFC{ + DeviceIdx: pp.Dev_idx, + TargetIdx: pp.Target_idx, + NFCProtocol: pp.Nfc_protocol, + } + return sa, nil + case NFC_SOCKPROTO_LLCP: + pp := (*RawSockaddrNFCLLCP)(unsafe.Pointer(rsa)) + if uint64(pp.Service_name_len) > uint64(len(pp.Service_name)) { + return nil, EINVAL + } + sa := &SockaddrNFCLLCP{ + DeviceIdx: pp.Dev_idx, + TargetIdx: pp.Target_idx, + NFCProtocol: pp.Nfc_protocol, + DestinationSAP: pp.Dsap, + SourceSAP: pp.Ssap, + ServiceName: string(pp.Service_name[:pp.Service_name_len]), + } + return sa, nil + default: + return nil, EINVAL + } } return nil, EAFNOSUPPORT } @@ -1151,11 +1245,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { func Accept(fd int) (nfd int, sa Sockaddr, err error) { var rsa RawSockaddrAny var len _Socklen = SizeofSockaddrAny - // Try accept4 first for Android, then try accept for kernel older than 2.6.28 nfd, err = accept4(fd, &rsa, &len, 0) - if err == ENOSYS { - nfd, err = accept(fd, &rsa, &len) - } if err != nil { return } @@ -1277,6 +1367,13 @@ func SetsockoptTpacketReq3(fd, level, opt int, tp *TpacketReq3) error { return setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp)) } +func SetsockoptTCPRepairOpt(fd, level, opt int, o []TCPRepairOpt) (err error) { + if len(o) == 0 { + return EINVAL + } + return setsockopt(fd, level, opt, unsafe.Pointer(&o[0]), uintptr(SizeofTCPRepairOpt*len(o))) +} + // Keyctl Commands (http://man7.org/linux/man-pages/man2/keyctl.2.html) // KeyctlInt calls keyctl commands in which each argument is an int. @@ -1731,11 +1828,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Dup(oldfd int) (fd int, err error) func Dup2(oldfd, newfd int) error { - // Android O and newer blocks dup2; riscv and arm64 don't implement dup2. - if runtime.GOOS == "android" || runtime.GOARCH == "riscv64" || runtime.GOARCH == "arm64" { - return Dup3(oldfd, newfd, 0) - } - return dup2(oldfd, newfd) + return Dup3(oldfd, newfd, 0) } //sys Dup3(oldfd int, newfd int, flags int) (err error) @@ -1788,7 +1881,7 @@ func Getpgrp() (pid int) { //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 +//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) @@ -2223,6 +2316,14 @@ type RemoteIovec struct { //sys ProcessVMReadv(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_READV //sys ProcessVMWritev(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_WRITEV +//sys PidfdOpen(pid int, flags int) (fd int, err error) = SYS_PIDFD_OPEN +//sys PidfdGetfd(pidfd int, targetfd int, flags int) (fd int, err error) = SYS_PIDFD_GETFD + +//sys shmat(id int, addr uintptr, flag int) (ret uintptr, err error) +//sys shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) +//sys shmdt(addr uintptr) (err error) +//sys shmget(key int, size int, flag int) (id int, err error) + /* * Unimplemented */ @@ -2304,10 +2405,6 @@ type RemoteIovec struct { // SetRobustList // SetThreadArea // SetTidAddress -// Shmat -// Shmctl -// Shmdt -// Shmget // Sigaltstack // Swapoff // Swapon diff --git a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_386.go b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_386.go index 7b52e5d8a..5f757e8aa 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_386.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_386.go @@ -19,36 +19,8 @@ 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 @@ -59,7 +31,6 @@ func Pipe2(p []int, flags int) (err error) { //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 @@ -105,7 +76,7 @@ const rlimInf32 = ^uint32(0) const rlimInf64 = ^uint64(0) func Getrlimit(resource int, rlim *Rlimit) (err error) { - err = prlimit(0, resource, nil, rlim) + err = Prlimit(0, resource, nil, rlim) if err != ENOSYS { return err } @@ -133,7 +104,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { //sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT func Setrlimit(resource int, rlim *Rlimit) (err error) { - err = prlimit(0, resource, rlim, nil) + err = Prlimit(0, resource, rlim, nil) if err != ENOSYS { return err } @@ -378,11 +349,6 @@ 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) +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint32(length) } diff --git a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go index 28b764115..4299125aa 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go @@ -7,8 +7,6 @@ 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) @@ -21,17 +19,6 @@ package unix //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) @@ -126,32 +113,6 @@ 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 } @@ -172,13 +133,8 @@ 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) +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) } //sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_arm.go b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_arm.go index 68877728e..79edeb9cb 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_arm.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_arm.go @@ -19,36 +19,6 @@ 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 -} - func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { newoffset, errno := seek(fd, offset, whence) if errno != 0 { @@ -76,8 +46,6 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, 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 @@ -86,7 +54,6 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { //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 @@ -184,7 +151,7 @@ const rlimInf32 = ^uint32(0) const rlimInf64 = ^uint64(0) func Getrlimit(resource int, rlim *Rlimit) (err error) { - err = prlimit(0, resource, nil, rlim) + err = Prlimit(0, resource, nil, rlim) if err != ENOSYS { return err } @@ -212,7 +179,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { //sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT func Setrlimit(resource int, rlim *Rlimit) (err error) { - err = prlimit(0, resource, rlim, nil) + err = Prlimit(0, resource, rlim, nil) if err != ENOSYS { return err } @@ -256,13 +223,8 @@ 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) +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint32(length) } //sys armSyncFileRange(fd int, flags int, off int64, n int64) (err error) = SYS_ARM_SYNC_FILE_RANGE diff --git a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go index 7ed703476..862890de2 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go @@ -9,13 +9,6 @@ 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) @@ -145,33 +138,9 @@ func utimes(path string, tv *[2]Timeval) (err error) { 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 -} - // Getrlimit prefers the prlimit64 system call. See issue 38604. func Getrlimit(resource int, rlim *Rlimit) error { - err := prlimit(0, resource, nil, rlim) + err := Prlimit(0, resource, nil, rlim) if err != ENOSYS { return err } @@ -180,7 +149,7 @@ func Getrlimit(resource int, rlim *Rlimit) error { // Setrlimit prefers the prlimit64 system call. See issue 38604. func Setrlimit(resource int, rlim *Rlimit) error { - err := prlimit(0, resource, rlim, nil) + err := Prlimit(0, resource, rlim, nil) if err != ENOSYS { return err } @@ -207,31 +176,15 @@ func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint64(length) } -func InotifyInit() (fd int, err error) { - return InotifyInit1(0) +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) } -// dup2 exists because func Dup3 in syscall_linux.go references -// it in an unreachable path. dup2 isn't available on arm64. -func dup2(oldfd int, newfd int) error - 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 { diff --git a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go index 06dec06fa..8932e34ad 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go @@ -8,8 +8,6 @@ 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) @@ -94,30 +92,6 @@ 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 } @@ -217,15 +191,6 @@ func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint64(length) } -func InotifyInit() (fd int, err error) { - return InotifyInit1(0) -} - -//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 (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) } diff --git a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go index 8f0d0a5b5..7821c25d9 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go @@ -15,8 +15,6 @@ import ( 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) @@ -60,7 +58,6 @@ func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, //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) @@ -113,29 +110,6 @@ 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) { @@ -157,7 +131,7 @@ type rlimit32 struct { //sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT func Getrlimit(resource int, rlim *Rlimit) (err error) { - err = prlimit(0, resource, nil, rlim) + err = Prlimit(0, resource, nil, rlim) if err != ENOSYS { return err } @@ -185,7 +159,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { //sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT func Setrlimit(resource int, rlim *Rlimit) (err error) { - err = prlimit(0, resource, rlim, nil) + err = Prlimit(0, resource, rlim, nil) if err != ENOSYS { return err } @@ -229,11 +203,6 @@ 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) +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint32(length) } diff --git a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go index 7e65e088d..c5053a0f0 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go @@ -3,8 +3,7 @@ // license that can be found in the LICENSE file. //go:build linux && ppc -// +build linux -// +build ppc +// +build linux,ppc package unix @@ -13,8 +12,6 @@ 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 Fchown(fd int, uid int, gid int) (err error) //sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 @@ -24,7 +21,6 @@ import ( //sysnb Geteuid() (euid int) //sysnb Getgid() (gid int) //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) @@ -143,7 +139,7 @@ const rlimInf32 = ^uint32(0) const rlimInf64 = ^uint64(0) func Getrlimit(resource int, rlim *Rlimit) (err error) { - err = prlimit(0, resource, nil, rlim) + err = Prlimit(0, resource, nil, rlim) if err != ENOSYS { return err } @@ -171,7 +167,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { //sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT func Setrlimit(resource int, rlim *Rlimit) (err error) { - err = prlimit(0, resource, rlim, nil) + err = Prlimit(0, resource, rlim, nil) if err != ENOSYS { return err } @@ -215,39 +211,8 @@ func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(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) +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint32(length) } //sys syncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go index 0b1f0d6da..25786c421 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go @@ -8,8 +8,6 @@ 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) @@ -22,7 +20,6 @@ package unix //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) @@ -100,39 +97,8 @@ 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) +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) } //sys syncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go index ce9bcd317..6f9f71041 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go @@ -9,13 +9,6 @@ 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) @@ -144,30 +137,6 @@ func utimes(path string, tv *[2]Timeval) (err error) { 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 } @@ -188,8 +157,8 @@ func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint64(length) } -func InotifyInit() (fd int, err error) { - return InotifyInit1(0) +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) } func Pause() error { @@ -197,18 +166,6 @@ func Pause() error { 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) } @@ -225,7 +182,3 @@ func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error } return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) } - -// dup2 exists because func Dup3 in syscall_linux.go references -// it in an unreachable path. dup2 isn't available on arm64. -func dup2(oldfd int, newfd int) error diff --git a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go index a1e45694b..6aa59cb27 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go @@ -11,8 +11,6 @@ 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) @@ -25,7 +23,6 @@ import ( //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) @@ -77,30 +74,6 @@ 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 } @@ -129,6 +102,10 @@ func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint64(length) } +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_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) { @@ -320,15 +297,6 @@ func Shutdown(s, how int) error { 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 { diff --git a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go index 49055a3cf..bbe8d174f 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go @@ -9,7 +9,6 @@ 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 @@ -20,7 +19,6 @@ package unix //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) @@ -116,37 +114,6 @@ 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) +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) } diff --git a/src/runtime/vendor/golang.org/x/sys/unix/syscall_solaris.go b/src/runtime/vendor/golang.org/x/sys/unix/syscall_solaris.go index 77fcde7c1..d2a6495c7 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/syscall_solaris.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -13,7 +13,10 @@ package unix import ( + "fmt" + "os" "runtime" + "sync" "syscall" "unsafe" ) @@ -744,3 +747,240 @@ func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, e func Munmap(b []byte) (err error) { return mapper.Munmap(b) } + +// Event Ports + +type fileObjCookie struct { + fobj *fileObj + cookie interface{} +} + +// EventPort provides a safe abstraction on top of Solaris/illumos Event Ports. +type EventPort struct { + port int + mu sync.Mutex + fds map[uintptr]interface{} + paths map[string]*fileObjCookie +} + +// PortEvent is an abstraction of the port_event C struct. +// Compare Source against PORT_SOURCE_FILE or PORT_SOURCE_FD +// to see if Path or Fd was the event source. The other will be +// uninitialized. +type PortEvent struct { + Cookie interface{} + Events int32 + Fd uintptr + Path string + Source uint16 + fobj *fileObj +} + +// NewEventPort creates a new EventPort including the +// underlying call to port_create(3c). +func NewEventPort() (*EventPort, error) { + port, err := port_create() + if err != nil { + return nil, err + } + e := &EventPort{ + port: port, + fds: make(map[uintptr]interface{}), + paths: make(map[string]*fileObjCookie), + } + return e, nil +} + +//sys port_create() (n int, err error) +//sys port_associate(port int, source int, object uintptr, events int, user *byte) (n int, err error) +//sys port_dissociate(port int, source int, object uintptr) (n int, err error) +//sys port_get(port int, pe *portEvent, timeout *Timespec) (n int, err error) +//sys port_getn(port int, pe *portEvent, max uint32, nget *uint32, timeout *Timespec) (n int, err error) + +// Close closes the event port. +func (e *EventPort) Close() error { + e.mu.Lock() + defer e.mu.Unlock() + e.fds = nil + e.paths = nil + return Close(e.port) +} + +// PathIsWatched checks to see if path is associated with this EventPort. +func (e *EventPort) PathIsWatched(path string) bool { + e.mu.Lock() + defer e.mu.Unlock() + _, found := e.paths[path] + return found +} + +// FdIsWatched checks to see if fd is associated with this EventPort. +func (e *EventPort) FdIsWatched(fd uintptr) bool { + e.mu.Lock() + defer e.mu.Unlock() + _, found := e.fds[fd] + return found +} + +// AssociatePath wraps port_associate(3c) for a filesystem path including +// creating the necessary file_obj from the provided stat information. +func (e *EventPort) AssociatePath(path string, stat os.FileInfo, events int, cookie interface{}) error { + e.mu.Lock() + defer e.mu.Unlock() + if _, found := e.paths[path]; found { + return fmt.Errorf("%v is already associated with this Event Port", path) + } + fobj, err := createFileObj(path, stat) + if err != nil { + return err + } + fCookie := &fileObjCookie{fobj, cookie} + _, err = port_associate(e.port, PORT_SOURCE_FILE, uintptr(unsafe.Pointer(fobj)), events, (*byte)(unsafe.Pointer(&fCookie.cookie))) + if err != nil { + return err + } + e.paths[path] = fCookie + return nil +} + +// DissociatePath wraps port_dissociate(3c) for a filesystem path. +func (e *EventPort) DissociatePath(path string) error { + e.mu.Lock() + defer e.mu.Unlock() + f, ok := e.paths[path] + if !ok { + return fmt.Errorf("%v is not associated with this Event Port", path) + } + _, err := port_dissociate(e.port, PORT_SOURCE_FILE, uintptr(unsafe.Pointer(f.fobj))) + if err != nil { + return err + } + delete(e.paths, path) + return nil +} + +// AssociateFd wraps calls to port_associate(3c) on file descriptors. +func (e *EventPort) AssociateFd(fd uintptr, events int, cookie interface{}) error { + e.mu.Lock() + defer e.mu.Unlock() + if _, found := e.fds[fd]; found { + return fmt.Errorf("%v is already associated with this Event Port", fd) + } + pcookie := &cookie + _, err := port_associate(e.port, PORT_SOURCE_FD, fd, events, (*byte)(unsafe.Pointer(pcookie))) + if err != nil { + return err + } + e.fds[fd] = pcookie + return nil +} + +// DissociateFd wraps calls to port_dissociate(3c) on file descriptors. +func (e *EventPort) DissociateFd(fd uintptr) error { + e.mu.Lock() + defer e.mu.Unlock() + _, ok := e.fds[fd] + if !ok { + return fmt.Errorf("%v is not associated with this Event Port", fd) + } + _, err := port_dissociate(e.port, PORT_SOURCE_FD, fd) + if err != nil { + return err + } + delete(e.fds, fd) + return nil +} + +func createFileObj(name string, stat os.FileInfo) (*fileObj, error) { + fobj := new(fileObj) + bs, err := ByteSliceFromString(name) + if err != nil { + return nil, err + } + fobj.Name = (*int8)(unsafe.Pointer(&bs[0])) + s := stat.Sys().(*syscall.Stat_t) + fobj.Atim.Sec = s.Atim.Sec + fobj.Atim.Nsec = s.Atim.Nsec + fobj.Mtim.Sec = s.Mtim.Sec + fobj.Mtim.Nsec = s.Mtim.Nsec + fobj.Ctim.Sec = s.Ctim.Sec + fobj.Ctim.Nsec = s.Ctim.Nsec + return fobj, nil +} + +// GetOne wraps port_get(3c) and returns a single PortEvent. +func (e *EventPort) GetOne(t *Timespec) (*PortEvent, error) { + pe := new(portEvent) + _, err := port_get(e.port, pe, t) + if err != nil { + return nil, err + } + p := new(PortEvent) + p.Events = pe.Events + p.Source = pe.Source + e.mu.Lock() + defer e.mu.Unlock() + switch pe.Source { + case PORT_SOURCE_FD: + p.Fd = uintptr(pe.Object) + cookie := (*interface{})(unsafe.Pointer(pe.User)) + p.Cookie = *cookie + delete(e.fds, p.Fd) + case PORT_SOURCE_FILE: + p.fobj = (*fileObj)(unsafe.Pointer(uintptr(pe.Object))) + p.Path = BytePtrToString((*byte)(unsafe.Pointer(p.fobj.Name))) + cookie := (*interface{})(unsafe.Pointer(pe.User)) + p.Cookie = *cookie + delete(e.paths, p.Path) + } + return p, nil +} + +// Pending wraps port_getn(3c) and returns how many events are pending. +func (e *EventPort) Pending() (int, error) { + var n uint32 = 0 + _, err := port_getn(e.port, nil, 0, &n, nil) + return int(n), err +} + +// Get wraps port_getn(3c) and fills a slice of PortEvent. +// It will block until either min events have been received +// or the timeout has been exceeded. It will return how many +// events were actually received along with any error information. +func (e *EventPort) Get(s []PortEvent, min int, timeout *Timespec) (int, error) { + if min == 0 { + return 0, fmt.Errorf("need to request at least one event or use Pending() instead") + } + if len(s) < min { + return 0, fmt.Errorf("len(s) (%d) is less than min events requested (%d)", len(s), min) + } + got := uint32(min) + max := uint32(len(s)) + var err error + ps := make([]portEvent, max, max) + _, err = port_getn(e.port, &ps[0], max, &got, timeout) + // got will be trustworthy with ETIME, but not any other error. + if err != nil && err != ETIME { + return 0, err + } + e.mu.Lock() + defer e.mu.Unlock() + for i := 0; i < int(got); i++ { + s[i].Events = ps[i].Events + s[i].Source = ps[i].Source + switch ps[i].Source { + case PORT_SOURCE_FD: + s[i].Fd = uintptr(ps[i].Object) + cookie := (*interface{})(unsafe.Pointer(ps[i].User)) + s[i].Cookie = *cookie + delete(e.fds, s[i].Fd) + case PORT_SOURCE_FILE: + s[i].fobj = (*fileObj)(unsafe.Pointer(uintptr(ps[i].Object))) + s[i].Path = BytePtrToString((*byte)(unsafe.Pointer(s[i].fobj.Name))) + cookie := (*interface{})(unsafe.Pointer(ps[i].User)) + s[i].Cookie = *cookie + delete(e.paths, s[i].Path) + } + } + return int(got), err +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/syscall_unix.go b/src/runtime/vendor/golang.org/x/sys/unix/syscall_unix.go index a7618ceb5..cf296a243 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/syscall_unix.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/syscall_unix.go @@ -313,6 +313,10 @@ func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) { return } +func Send(s int, buf []byte, flags int) (err error) { + return sendto(s, buf, flags, nil, 0) +} + func Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) { ptr, n, err := to.sockaddr() if err != nil { diff --git a/src/runtime/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go b/src/runtime/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go index 13f58d2b2..1ffd8bfcf 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go @@ -222,6 +222,8 @@ func (cmsg *Cmsghdr) SetLen(length int) { //sys Creat(path string, mode uint32) (fd int, err error) = SYS___CREAT_A //sys Dup(oldfd int) (fd int, err error) //sys Dup2(oldfd int, newfd int) (err error) +//sys Errno2() (er2 int) = SYS___ERRNO2 +//sys Err2ad() (eadd *int) = SYS___ERR2AD //sys Exit(code int) //sys Fchdir(fd int) (err error) //sys Fchmod(fd int, mode uint32) (err error) @@ -245,10 +247,12 @@ func Fstat(fd int, stat *Stat_t) (err error) { //sys Poll(fds []PollFd, timeout int) (n int, err error) = SYS_POLL //sys Times(tms *Tms) (ticks uintptr, err error) = SYS_TIMES //sys W_Getmntent(buff *byte, size int) (lastsys int, err error) = SYS_W_GETMNTENT +//sys W_Getmntent_A(buff *byte, size int) (lastsys int, err error) = SYS___W_GETMNTENT_A -//sys Mount(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) = SYS___MOUNT_A -//sys Unmount(filesystem string, mtm int) (err error) = SYS___UMOUNT_A +//sys mount_LE(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) = SYS___MOUNT_A +//sys unmount(filesystem string, mtm int) (err error) = SYS___UMOUNT_A //sys Chroot(path string) (err error) = SYS___CHROOT_A +//sys Select(nmsgsfds int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (ret int, err error) = SYS_SELECT //sysnb Uname(buf *Utsname) (err error) = SYS___UNAME_A func Ptsname(fd int) (name string, err error) { @@ -1779,3 +1783,47 @@ func SetNonblock(fd int, nonblocking bool) (err error) { func Exec(argv0 string, argv []string, envv []string) error { return syscall.Exec(argv0, argv, envv) } + +func Mount(source string, target string, fstype string, flags uintptr, data string) (err error) { + if needspace := 8 - len(fstype); needspace <= 0 { + fstype = fstype[:8] + } else { + fstype += " "[:needspace] + } + return mount_LE(target, source, fstype, uint32(flags), int32(len(data)), data) +} + +func Unmount(name string, mtm int) (err error) { + // mountpoint is always a full path and starts with a '/' + // check if input string is not a mountpoint but a filesystem name + if name[0] != '/' { + return unmount(name, mtm) + } + // treat name as mountpoint + b2s := func(arr []byte) string { + nulli := bytes.IndexByte(arr, 0) + if nulli == -1 { + return string(arr) + } else { + return string(arr[:nulli]) + } + } + var buffer struct { + header W_Mnth + fsinfo [64]W_Mntent + } + fsCount, err := W_Getmntent_A((*byte)(unsafe.Pointer(&buffer)), int(unsafe.Sizeof(buffer))) + if err != nil { + return err + } + if fsCount == 0 { + return EINVAL + } + for i := 0; i < fsCount; i++ { + if b2s(buffer.fsinfo[i].Mountpoint[:]) == name { + err = unmount(b2s(buffer.fsinfo[i].Fsname[:]), mtm) + break + } + } + return err +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/sysvshm_linux.go b/src/runtime/vendor/golang.org/x/sys/unix/sysvshm_linux.go new file mode 100644 index 000000000..2c3a4437f --- /dev/null +++ b/src/runtime/vendor/golang.org/x/sys/unix/sysvshm_linux.go @@ -0,0 +1,21 @@ +// Copyright 2021 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. + +//go:build linux +// +build linux + +package unix + +import "runtime" + +// SysvShmCtl performs control operations on the shared memory segment +// specified by id. +func SysvShmCtl(id, cmd int, desc *SysvShmDesc) (result int, err error) { + if runtime.GOARCH == "arm" || + runtime.GOARCH == "mips64" || runtime.GOARCH == "mips64le" { + cmd |= ipc_64 + } + + return shmctl(id, cmd, desc) +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/sysvshm_unix.go b/src/runtime/vendor/golang.org/x/sys/unix/sysvshm_unix.go new file mode 100644 index 000000000..0bb4c8de5 --- /dev/null +++ b/src/runtime/vendor/golang.org/x/sys/unix/sysvshm_unix.go @@ -0,0 +1,61 @@ +// Copyright 2021 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. + +//go:build (darwin && !ios) || linux +// +build darwin,!ios linux + +package unix + +import ( + "unsafe" + + "golang.org/x/sys/internal/unsafeheader" +) + +// SysvShmAttach attaches the Sysv shared memory segment associated with the +// shared memory identifier id. +func SysvShmAttach(id int, addr uintptr, flag int) ([]byte, error) { + addr, errno := shmat(id, addr, flag) + if errno != nil { + return nil, errno + } + + // Retrieve the size of the shared memory to enable slice creation + var info SysvShmDesc + + _, err := SysvShmCtl(id, IPC_STAT, &info) + if err != nil { + // release the shared memory if we can't find the size + + // ignoring error from shmdt as there's nothing sensible to return here + shmdt(addr) + return nil, err + } + + // Use unsafe to convert addr into a []byte. + // TODO: convert to unsafe.Slice once we can assume Go 1.17 + var b []byte + hdr := (*unsafeheader.Slice)(unsafe.Pointer(&b)) + hdr.Data = unsafe.Pointer(addr) + hdr.Cap = int(info.Segsz) + hdr.Len = int(info.Segsz) + return b, nil +} + +// SysvShmDetach unmaps the shared memory slice returned from SysvShmAttach. +// +// It is not safe to use the slice after calling this function. +func SysvShmDetach(data []byte) error { + if len(data) == 0 { + return EINVAL + } + + return shmdt(uintptr(unsafe.Pointer(&data[0]))) +} + +// SysvShmGet returns the Sysv shared memory identifier associated with key. +// If the IPC_CREAT flag is specified a new segment is created. +func SysvShmGet(key, size, flag int) (id int, err error) { + return shmget(key, size, flag) +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go b/src/runtime/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go new file mode 100644 index 000000000..71bddefdb --- /dev/null +++ b/src/runtime/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go @@ -0,0 +1,14 @@ +// Copyright 2021 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. + +//go:build darwin && !ios +// +build darwin,!ios + +package unix + +// SysvShmCtl performs control operations on the shared memory segment +// specified by id. +func SysvShmCtl(id, cmd int, desc *SysvShmDesc) (result int, err error) { + return shmctl(id, cmd, desc) +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go deleted file mode 100644 index 7ee196f7f..000000000 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go +++ /dev/null @@ -1,1789 +0,0 @@ -// mkerrors.sh -m32 -// Code generated by the command above; see README.md. DO NOT EDIT. - -//go:build 386 && darwin -// +build 386,darwin - -// Code generated by cmd/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_SYS_CONTROL = 0x2 - 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 - CLONE_NOFOLLOW = 0x1 - CLONE_NOOWNERCOPY = 0x2 - 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 - CTLIOCGINFO = 0xc0644e03 - 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 - NFDBITS = 0x20 - 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/src/runtime/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go index 991996b60..476a1c7e7 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go @@ -12,1550 +12,1582 @@ 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 = 0x29 - 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_SYS_CONTROL = 0x2 - AF_UNIX = 0x1 - AF_UNSPEC = 0x0 - AF_UTUN = 0x26 - AF_VSOCK = 0x28 - 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 = 0x51c7ff00 - 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 - CLONE_NOFOLLOW = 0x1 - CLONE_NOOWNERCOPY = 0x2 - 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 - CTLIOCGINFO = 0xc0644e03 - 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 = 0x10a - 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_DARWIN = 0x10a - 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 = 0x11 - EVFILT_THREADMARKER = 0x11 - 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 - FSOPT_RETURN_REALDEV = 0x200 - F_ADDFILESIGS = 0x3d - F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 - F_ADDFILESIGS_INFO = 0x67 - F_ADDFILESIGS_RETURN = 0x61 - F_ADDFILESUPPL = 0x68 - 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_GETPATH_NOFIRMLINK = 0x66 - F_GETPROTECTIONCLASS = 0x3f - F_GETPROTECTIONLEVEL = 0x4d - F_GETSIGSINFO = 0x69 - 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_SPECULATIVE_READ = 0x65 - 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_6LOWPAN = 0x40 - 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_3542DSTOPTS = 0x32 - IPV6_3542HOPLIMIT = 0x2f - IPV6_3542HOPOPTS = 0x31 - IPV6_3542NEXTHOP = 0x30 - IPV6_3542PKTINFO = 0x2e - IPV6_3542RTHDR = 0x33 - IPV6_ADDR_MC_FLAGS_PREFIX = 0x20 - IPV6_ADDR_MC_FLAGS_TRANSIENT = 0x10 - IPV6_ADDR_MC_FLAGS_UNICAST_BASED = 0x30 - IPV6_AUTOFLOWLABEL = 0x3b - IPV6_BINDV6ONLY = 0x1b - IPV6_BOUND_IF = 0x7d - 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_FLOW_ECN_MASK = 0x3000 - 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_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_RECVHOPLIMIT = 0x25 - IPV6_RECVHOPOPTS = 0x27 - IPV6_RECVPATHMTU = 0x2b - IPV6_RECVPKTINFO = 0x3d - IPV6_RECVRTHDR = 0x26 - IPV6_RECVTCLASS = 0x23 - IPV6_RTHDR = 0x33 - IPV6_RTHDRDSTOPTS = 0x39 - 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_USE_MIN_MTU = 0x2a - 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_DONTFRAG = 0x1c - 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 - LOCAL_PEERCRED = 0x1 - LOCAL_PEEREPID = 0x3 - LOCAL_PEEREUUID = 0x5 - LOCAL_PEERPID = 0x2 - LOCAL_PEERTOKEN = 0x6 - LOCAL_PEERUUID = 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_32BIT = 0x8000 - 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 - MAP_TRANSLATED_ALLOW_EXECUTE = 0x20000 - MAP_UNIX03 = 0x40000 - MCAST_BLOCK_SOURCE = 0x54 - MCAST_EXCLUDE = 0x2 - MCAST_INCLUDE = 0x1 - MCAST_JOIN_GROUP = 0x50 - MCAST_JOIN_SOURCE_GROUP = 0x52 - MCAST_LEAVE_GROUP = 0x51 - MCAST_LEAVE_SOURCE_GROUP = 0x53 - MCAST_UNBLOCK_SOURCE = 0x55 - MCAST_UNDEFINED = 0x0 - 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_EXT_ROOT_DATA_VOL = 0x1 - 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_REMOVABLE = 0x200 - MNT_ROOTFS = 0x4000 - MNT_SNAPSHOT = 0x40000000 - MNT_STRICTATIME = 0x80000000 - MNT_SYNCHRONOUS = 0x2 - MNT_UNION = 0x20 - MNT_UNKNOWNPERMISSIONS = 0x200000 - MNT_UPDATE = 0x10000 - MNT_VISFLAGMASK = 0xd7f0f7ff - 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_NOSIGNAL = 0x80000 - 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_FLAGS_PRIV = 0xa - NET_RT_IFLIST = 0x3 - NET_RT_IFLIST2 = 0x6 - NET_RT_MAXID = 0xb - NET_RT_STAT = 0x4 - NET_RT_TRASH = 0x5 - NFDBITS = 0x20 - 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_MACHTIME = 0x100 - 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_NOFOLLOW_ANY = 0x20000000 - 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_DEAD = 0x20000000 - RTF_DELCLONE = 0x80 - RTF_DONE = 0x40 - RTF_DYNAMIC = 0x10 - RTF_GATEWAY = 0x2 - RTF_HOST = 0x4 - RTF_IFREF = 0x4000000 - RTF_IFSCOPE = 0x1000000 - RTF_LLDATA = 0x400 - 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 - SIOCGIF6LOWPAN = 0xc02069c5 - SIOCGIFADDR = 0xc0206921 - SIOCGIFALTMTU = 0xc0206948 - SIOCGIFASYNCMAP = 0xc020697c - SIOCGIFBOND = 0xc0206947 - SIOCGIFBRDADDR = 0xc0206923 - SIOCGIFCAP = 0xc020695b - SIOCGIFCONF = 0xc00c6924 - SIOCGIFDEVMTU = 0xc0206944 - SIOCGIFDSTADDR = 0xc0206922 - SIOCGIFFLAGS = 0xc0206911 - SIOCGIFFUNCTIONALTYPE = 0xc02069ad - 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 - SIOCGIFXMEDIA = 0xc02c6948 - SIOCGLOWAT = 0x40047303 - SIOCGPGRP = 0x40047309 - SIOCIFCREATE = 0xc0206978 - SIOCIFCREATE2 = 0xc020697a - SIOCIFDESTROY = 0x80206979 - SIOCIFGCLONERS = 0xc0106981 - SIOCRSLVMULTI = 0xc010693b - SIOCSDRVSPEC = 0x8028697b - SIOCSETVLAN = 0x8020697e - SIOCSHIWAT = 0x80047300 - SIOCSIF6LOWPAN = 0x802069c4 - 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_LOCAL = 0x0 - 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 + 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 = 0x29 + 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_SYS_CONTROL = 0x2 + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_UTUN = 0x26 + AF_VSOCK = 0x28 + 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 = 0x51c7ff00 + 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_SPACEUSED = 0x800000 + ATTR_VOL_UUID = 0x40000 + ATTR_VOL_VALIDMASK = 0xf087ffff + 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 + CLONE_NOFOLLOW = 0x1 + CLONE_NOOWNERCOPY = 0x2 + 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 + CTLIOCGINFO = 0xc0644e03 + 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 = 0x10a + 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_DARWIN = 0x10a + 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 = 0x11 + EVFILT_THREADMARKER = 0x11 + 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 + FSOPT_RETURN_REALDEV = 0x200 + F_ADDFILESIGS = 0x3d + F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_INFO = 0x67 + F_ADDFILESIGS_RETURN = 0x61 + F_ADDFILESUPPL = 0x68 + 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_GETPATH_NOFIRMLINK = 0x66 + F_GETPROTECTIONCLASS = 0x3f + F_GETPROTECTIONLEVEL = 0x4d + F_GETSIGSINFO = 0x69 + 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_SPECULATIVE_READ = 0x65 + 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_6LOWPAN = 0x40 + 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 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x400473d1 + 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_3542DSTOPTS = 0x32 + IPV6_3542HOPLIMIT = 0x2f + IPV6_3542HOPOPTS = 0x31 + IPV6_3542NEXTHOP = 0x30 + IPV6_3542PKTINFO = 0x2e + IPV6_3542RTHDR = 0x33 + IPV6_ADDR_MC_FLAGS_PREFIX = 0x20 + IPV6_ADDR_MC_FLAGS_TRANSIENT = 0x10 + IPV6_ADDR_MC_FLAGS_UNICAST_BASED = 0x30 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDV6ONLY = 0x1b + IPV6_BOUND_IF = 0x7d + 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_FLOW_ECN_MASK = 0x3000 + 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_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_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x3d + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x23 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x39 + 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_USE_MIN_MTU = 0x2a + 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_DONTFRAG = 0x1c + 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 + LOCAL_PEERCRED = 0x1 + LOCAL_PEEREPID = 0x3 + LOCAL_PEEREUUID = 0x5 + LOCAL_PEERPID = 0x2 + LOCAL_PEERTOKEN = 0x6 + LOCAL_PEERUUID = 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_32BIT = 0x8000 + 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 + MAP_TRANSLATED_ALLOW_EXECUTE = 0x20000 + MAP_UNIX03 = 0x40000 + MCAST_BLOCK_SOURCE = 0x54 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x50 + MCAST_JOIN_SOURCE_GROUP = 0x52 + MCAST_LEAVE_GROUP = 0x51 + MCAST_LEAVE_SOURCE_GROUP = 0x53 + MCAST_UNBLOCK_SOURCE = 0x55 + MCAST_UNDEFINED = 0x0 + 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_EXT_ROOT_DATA_VOL = 0x1 + 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_REMOVABLE = 0x200 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x40000000 + MNT_STRICTATIME = 0x80000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNKNOWNPERMISSIONS = 0x200000 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xd7f0f7ff + 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_NOSIGNAL = 0x80000 + 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_FLAGS_PRIV = 0xa + NET_RT_IFLIST = 0x3 + NET_RT_IFLIST2 = 0x6 + NET_RT_MAXID = 0xb + NET_RT_STAT = 0x4 + NET_RT_TRASH = 0x5 + NFDBITS = 0x20 + 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_MACHTIME = 0x100 + 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_NOFOLLOW_ANY = 0x20000000 + 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_DEAD = 0x20000000 + RTF_DELCLONE = 0x80 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_GLOBAL = 0x40000000 + RTF_HOST = 0x4 + RTF_IFREF = 0x4000000 + RTF_IFSCOPE = 0x1000000 + RTF_LLDATA = 0x400 + 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 + SEEK_CUR = 0x1 + SEEK_DATA = 0x4 + SEEK_END = 0x2 + SEEK_HOLE = 0x3 + SEEK_SET = 0x0 + 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 + SIOCGIF6LOWPAN = 0xc02069c5 + SIOCGIFADDR = 0xc0206921 + SIOCGIFALTMTU = 0xc0206948 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBOND = 0xc0206947 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020695b + SIOCGIFCONF = 0xc00c6924 + SIOCGIFDEVMTU = 0xc0206944 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFFUNCTIONALTYPE = 0xc02069ad + 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 + SIOCGIFXMEDIA = 0xc02c6948 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCIFCREATE = 0xc0206978 + SIOCIFCREATE2 = 0xc020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106981 + SIOCRSLVMULTI = 0xc010693b + SIOCSDRVSPEC = 0x8028697b + SIOCSETVLAN = 0x8020697e + SIOCSHIWAT = 0x80047300 + SIOCSIF6LOWPAN = 0x802069c4 + 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_LOCAL = 0x0 + 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_TRACKER_ATTRIBUTE_FLAGS_APP_APPROVED = 0x1 + SO_TRACKER_ATTRIBUTE_FLAGS_DOMAIN_SHORT = 0x4 + SO_TRACKER_ATTRIBUTE_FLAGS_TRACKER = 0x2 + SO_TRACKER_TRANSPARENCY_VERSION = 0x3 + 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 + TCPOPT_CC = 0xb + TCPOPT_CCECHO = 0xd + TCPOPT_CCNEW = 0xc + TCPOPT_EOL = 0x0 + TCPOPT_FASTOPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_HDR = 0x1010500 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SACK_PERMIT_HDR = 0x1010402 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 + 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 + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + 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 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go deleted file mode 100644 index e748cb110..000000000 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go +++ /dev/null @@ -1,1789 +0,0 @@ -// mkerrors.sh -// Code generated by the command above; see README.md. DO NOT EDIT. - -//go:build arm && darwin -// +build arm,darwin - -// Code generated by cmd/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_SYS_CONTROL = 0x2 - 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 - CLONE_NOFOLLOW = 0x1 - CLONE_NOOWNERCOPY = 0x2 - 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 - CTLIOCGINFO = 0xc0644e03 - 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 - NFDBITS = 0x20 - 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/src/runtime/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go index e644eaf5e..e36f5178d 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go @@ -12,1550 +12,1582 @@ 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 = 0x29 - 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_SYS_CONTROL = 0x2 - AF_UNIX = 0x1 - AF_UNSPEC = 0x0 - AF_UTUN = 0x26 - AF_VSOCK = 0x28 - 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 = 0x51c7ff00 - 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 - CLONE_NOFOLLOW = 0x1 - CLONE_NOOWNERCOPY = 0x2 - 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 - CTLIOCGINFO = 0xc0644e03 - 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 = 0x10a - 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_DARWIN = 0x10a - 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 = 0x11 - EVFILT_THREADMARKER = 0x11 - 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 - FSOPT_RETURN_REALDEV = 0x200 - F_ADDFILESIGS = 0x3d - F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 - F_ADDFILESIGS_INFO = 0x67 - F_ADDFILESIGS_RETURN = 0x61 - F_ADDFILESUPPL = 0x68 - 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_GETPATH_NOFIRMLINK = 0x66 - F_GETPROTECTIONCLASS = 0x3f - F_GETPROTECTIONLEVEL = 0x4d - F_GETSIGSINFO = 0x69 - 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_SPECULATIVE_READ = 0x65 - 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_6LOWPAN = 0x40 - 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_3542DSTOPTS = 0x32 - IPV6_3542HOPLIMIT = 0x2f - IPV6_3542HOPOPTS = 0x31 - IPV6_3542NEXTHOP = 0x30 - IPV6_3542PKTINFO = 0x2e - IPV6_3542RTHDR = 0x33 - IPV6_ADDR_MC_FLAGS_PREFIX = 0x20 - IPV6_ADDR_MC_FLAGS_TRANSIENT = 0x10 - IPV6_ADDR_MC_FLAGS_UNICAST_BASED = 0x30 - IPV6_AUTOFLOWLABEL = 0x3b - IPV6_BINDV6ONLY = 0x1b - IPV6_BOUND_IF = 0x7d - 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_FLOW_ECN_MASK = 0x3000 - 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_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_RECVHOPLIMIT = 0x25 - IPV6_RECVHOPOPTS = 0x27 - IPV6_RECVPATHMTU = 0x2b - IPV6_RECVPKTINFO = 0x3d - IPV6_RECVRTHDR = 0x26 - IPV6_RECVTCLASS = 0x23 - IPV6_RTHDR = 0x33 - IPV6_RTHDRDSTOPTS = 0x39 - 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_USE_MIN_MTU = 0x2a - 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_DONTFRAG = 0x1c - 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 - LOCAL_PEERCRED = 0x1 - LOCAL_PEEREPID = 0x3 - LOCAL_PEEREUUID = 0x5 - LOCAL_PEERPID = 0x2 - LOCAL_PEERTOKEN = 0x6 - LOCAL_PEERUUID = 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_32BIT = 0x8000 - 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 - MAP_TRANSLATED_ALLOW_EXECUTE = 0x20000 - MAP_UNIX03 = 0x40000 - MCAST_BLOCK_SOURCE = 0x54 - MCAST_EXCLUDE = 0x2 - MCAST_INCLUDE = 0x1 - MCAST_JOIN_GROUP = 0x50 - MCAST_JOIN_SOURCE_GROUP = 0x52 - MCAST_LEAVE_GROUP = 0x51 - MCAST_LEAVE_SOURCE_GROUP = 0x53 - MCAST_UNBLOCK_SOURCE = 0x55 - MCAST_UNDEFINED = 0x0 - 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_EXT_ROOT_DATA_VOL = 0x1 - 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_REMOVABLE = 0x200 - MNT_ROOTFS = 0x4000 - MNT_SNAPSHOT = 0x40000000 - MNT_STRICTATIME = 0x80000000 - MNT_SYNCHRONOUS = 0x2 - MNT_UNION = 0x20 - MNT_UNKNOWNPERMISSIONS = 0x200000 - MNT_UPDATE = 0x10000 - MNT_VISFLAGMASK = 0xd7f0f7ff - 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_NOSIGNAL = 0x80000 - 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_FLAGS_PRIV = 0xa - NET_RT_IFLIST = 0x3 - NET_RT_IFLIST2 = 0x6 - NET_RT_MAXID = 0xb - NET_RT_STAT = 0x4 - NET_RT_TRASH = 0x5 - NFDBITS = 0x20 - 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_MACHTIME = 0x100 - 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_NOFOLLOW_ANY = 0x20000000 - 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_DEAD = 0x20000000 - RTF_DELCLONE = 0x80 - RTF_DONE = 0x40 - RTF_DYNAMIC = 0x10 - RTF_GATEWAY = 0x2 - RTF_HOST = 0x4 - RTF_IFREF = 0x4000000 - RTF_IFSCOPE = 0x1000000 - RTF_LLDATA = 0x400 - 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 - SIOCGIF6LOWPAN = 0xc02069c5 - SIOCGIFADDR = 0xc0206921 - SIOCGIFALTMTU = 0xc0206948 - SIOCGIFASYNCMAP = 0xc020697c - SIOCGIFBOND = 0xc0206947 - SIOCGIFBRDADDR = 0xc0206923 - SIOCGIFCAP = 0xc020695b - SIOCGIFCONF = 0xc00c6924 - SIOCGIFDEVMTU = 0xc0206944 - SIOCGIFDSTADDR = 0xc0206922 - SIOCGIFFLAGS = 0xc0206911 - SIOCGIFFUNCTIONALTYPE = 0xc02069ad - 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 - SIOCGIFXMEDIA = 0xc02c6948 - SIOCGLOWAT = 0x40047303 - SIOCGPGRP = 0x40047309 - SIOCIFCREATE = 0xc0206978 - SIOCIFCREATE2 = 0xc020697a - SIOCIFDESTROY = 0x80206979 - SIOCIFGCLONERS = 0xc0106981 - SIOCRSLVMULTI = 0xc010693b - SIOCSDRVSPEC = 0x8028697b - SIOCSETVLAN = 0x8020697e - SIOCSHIWAT = 0x80047300 - SIOCSIF6LOWPAN = 0x802069c4 - 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_LOCAL = 0x0 - 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 + 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 = 0x29 + 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_SYS_CONTROL = 0x2 + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_UTUN = 0x26 + AF_VSOCK = 0x28 + 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 = 0x51c7ff00 + 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_SPACEUSED = 0x800000 + ATTR_VOL_UUID = 0x40000 + ATTR_VOL_VALIDMASK = 0xf087ffff + 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 + CLONE_NOFOLLOW = 0x1 + CLONE_NOOWNERCOPY = 0x2 + 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 + CTLIOCGINFO = 0xc0644e03 + 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 = 0x10a + 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_DARWIN = 0x10a + 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 = 0x11 + EVFILT_THREADMARKER = 0x11 + 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 + FSOPT_RETURN_REALDEV = 0x200 + F_ADDFILESIGS = 0x3d + F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_INFO = 0x67 + F_ADDFILESIGS_RETURN = 0x61 + F_ADDFILESUPPL = 0x68 + 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_GETPATH_NOFIRMLINK = 0x66 + F_GETPROTECTIONCLASS = 0x3f + F_GETPROTECTIONLEVEL = 0x4d + F_GETSIGSINFO = 0x69 + 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_SPECULATIVE_READ = 0x65 + 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_6LOWPAN = 0x40 + 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 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x400473d1 + 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_3542DSTOPTS = 0x32 + IPV6_3542HOPLIMIT = 0x2f + IPV6_3542HOPOPTS = 0x31 + IPV6_3542NEXTHOP = 0x30 + IPV6_3542PKTINFO = 0x2e + IPV6_3542RTHDR = 0x33 + IPV6_ADDR_MC_FLAGS_PREFIX = 0x20 + IPV6_ADDR_MC_FLAGS_TRANSIENT = 0x10 + IPV6_ADDR_MC_FLAGS_UNICAST_BASED = 0x30 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDV6ONLY = 0x1b + IPV6_BOUND_IF = 0x7d + 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_FLOW_ECN_MASK = 0x3000 + 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_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_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x3d + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x23 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x39 + 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_USE_MIN_MTU = 0x2a + 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_DONTFRAG = 0x1c + 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 + LOCAL_PEERCRED = 0x1 + LOCAL_PEEREPID = 0x3 + LOCAL_PEEREUUID = 0x5 + LOCAL_PEERPID = 0x2 + LOCAL_PEERTOKEN = 0x6 + LOCAL_PEERUUID = 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_32BIT = 0x8000 + 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 + MAP_TRANSLATED_ALLOW_EXECUTE = 0x20000 + MAP_UNIX03 = 0x40000 + MCAST_BLOCK_SOURCE = 0x54 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x50 + MCAST_JOIN_SOURCE_GROUP = 0x52 + MCAST_LEAVE_GROUP = 0x51 + MCAST_LEAVE_SOURCE_GROUP = 0x53 + MCAST_UNBLOCK_SOURCE = 0x55 + MCAST_UNDEFINED = 0x0 + 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_EXT_ROOT_DATA_VOL = 0x1 + 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_REMOVABLE = 0x200 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x40000000 + MNT_STRICTATIME = 0x80000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNKNOWNPERMISSIONS = 0x200000 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xd7f0f7ff + 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_NOSIGNAL = 0x80000 + 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_FLAGS_PRIV = 0xa + NET_RT_IFLIST = 0x3 + NET_RT_IFLIST2 = 0x6 + NET_RT_MAXID = 0xb + NET_RT_STAT = 0x4 + NET_RT_TRASH = 0x5 + NFDBITS = 0x20 + 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_MACHTIME = 0x100 + 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_NOFOLLOW_ANY = 0x20000000 + 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_DEAD = 0x20000000 + RTF_DELCLONE = 0x80 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_GLOBAL = 0x40000000 + RTF_HOST = 0x4 + RTF_IFREF = 0x4000000 + RTF_IFSCOPE = 0x1000000 + RTF_LLDATA = 0x400 + 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 + SEEK_CUR = 0x1 + SEEK_DATA = 0x4 + SEEK_END = 0x2 + SEEK_HOLE = 0x3 + SEEK_SET = 0x0 + 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 + SIOCGIF6LOWPAN = 0xc02069c5 + SIOCGIFADDR = 0xc0206921 + SIOCGIFALTMTU = 0xc0206948 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBOND = 0xc0206947 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020695b + SIOCGIFCONF = 0xc00c6924 + SIOCGIFDEVMTU = 0xc0206944 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFFUNCTIONALTYPE = 0xc02069ad + 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 + SIOCGIFXMEDIA = 0xc02c6948 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCIFCREATE = 0xc0206978 + SIOCIFCREATE2 = 0xc020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106981 + SIOCRSLVMULTI = 0xc010693b + SIOCSDRVSPEC = 0x8028697b + SIOCSETVLAN = 0x8020697e + SIOCSHIWAT = 0x80047300 + SIOCSIF6LOWPAN = 0x802069c4 + 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_LOCAL = 0x0 + 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_TRACKER_ATTRIBUTE_FLAGS_APP_APPROVED = 0x1 + SO_TRACKER_ATTRIBUTE_FLAGS_DOMAIN_SHORT = 0x4 + SO_TRACKER_ATTRIBUTE_FLAGS_TRACKER = 0x2 + SO_TRACKER_TRANSPARENCY_VERSION = 0x3 + 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 + TCPOPT_CC = 0xb + TCPOPT_CCECHO = 0xd + TCPOPT_CCNEW = 0xc + TCPOPT_EOL = 0x0 + TCPOPT_FASTOPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_HDR = 0x1010500 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SACK_PERMIT_HDR = 0x1010402 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 + 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 + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + 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 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go index 9c7c5e165..440900112 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go @@ -1297,6 +1297,11 @@ const ( SCM_RIGHTS = 0x1 SCM_TIMESTAMP = 0x2 SCM_TIME_INFO = 0x7 + SEEK_CUR = 0x1 + SEEK_DATA = 0x3 + SEEK_END = 0x2 + SEEK_HOLE = 0x4 + SEEK_SET = 0x0 SHUT_RD = 0x0 SHUT_RDWR = 0x2 SHUT_WR = 0x1 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go index b265abb25..64520d312 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go @@ -1298,6 +1298,11 @@ const ( SCM_RIGHTS = 0x1 SCM_TIMESTAMP = 0x2 SCM_TIME_INFO = 0x7 + SEEK_CUR = 0x1 + SEEK_DATA = 0x3 + SEEK_END = 0x2 + SEEK_HOLE = 0x4 + SEEK_SET = 0x0 SHUT_RD = 0x0 SHUT_RDWR = 0x2 SHUT_WR = 0x1 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go index 3df99f285..99e9a0e06 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go @@ -1276,6 +1276,11 @@ const ( SCM_CREDS = 0x3 SCM_RIGHTS = 0x1 SCM_TIMESTAMP = 0x2 + SEEK_CUR = 0x1 + SEEK_DATA = 0x3 + SEEK_END = 0x2 + SEEK_HOLE = 0x4 + SEEK_SET = 0x0 SHUT_RD = 0x0 SHUT_RDWR = 0x2 SHUT_WR = 0x1 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go index 218d39906..4c8377114 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go @@ -1298,6 +1298,11 @@ const ( SCM_RIGHTS = 0x1 SCM_TIMESTAMP = 0x2 SCM_TIME_INFO = 0x7 + SEEK_CUR = 0x1 + SEEK_DATA = 0x3 + SEEK_END = 0x2 + SEEK_HOLE = 0x4 + SEEK_SET = 0x0 SHUT_RD = 0x0 SHUT_RDWR = 0x2 SHUT_WR = 0x1 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux.go index 47572aaa6..78d4b85ec 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux.go @@ -228,7 +228,11 @@ const ( BPF_OR = 0x40 BPF_PSEUDO_BTF_ID = 0x3 BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_FUNC = 0x4 + BPF_PSEUDO_KFUNC_CALL = 0x2 BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_IDX = 0x5 + BPF_PSEUDO_MAP_IDX_VALUE = 0x6 BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 @@ -475,6 +479,8 @@ const ( DM_LIST_VERSIONS = 0xc138fd0d DM_MAX_TYPE_NAME = 0x10 DM_NAME_LEN = 0x80 + DM_NAME_LIST_FLAG_DOESNT_HAVE_UUID = 0x2 + DM_NAME_LIST_FLAG_HAS_UUID = 0x1 DM_NOFLUSH_FLAG = 0x800 DM_PERSISTENT_DEV_FLAG = 0x8 DM_QUERY_INACTIVE_TABLE_FLAG = 0x1000 @@ -494,9 +500,9 @@ const ( DM_UUID_FLAG = 0x4000 DM_UUID_LEN = 0x81 DM_VERSION = 0xc138fd00 - DM_VERSION_EXTRA = "-ioctl (2021-02-01)" + DM_VERSION_EXTRA = "-ioctl (2021-03-22)" DM_VERSION_MAJOR = 0x4 - DM_VERSION_MINOR = 0x2c + DM_VERSION_MINOR = 0x2d DM_VERSION_PATCHLEVEL = 0x0 DT_BLK = 0x6 DT_CHR = 0x2 @@ -981,12 +987,6 @@ const ( HPFS_SUPER_MAGIC = 0xf995e849 HUGETLBFS_MAGIC = 0x958458f6 IBSHIFT = 0x10 - ICMPV6_FILTER = 0x1 - ICMPV6_FILTER_BLOCK = 0x1 - ICMPV6_FILTER_BLOCKOTHERS = 0x3 - ICMPV6_FILTER_PASS = 0x2 - ICMPV6_FILTER_PASSONLY = 0x4 - ICMP_FILTER = 0x1 ICRNL = 0x100 IFA_F_DADFAILED = 0x8 IFA_F_DEPRECATED = 0x20 @@ -1257,6 +1257,7 @@ const ( KEXEC_ARCH_PARISC = 0xf0000 KEXEC_ARCH_PPC = 0x140000 KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_RISCV = 0xf30000 KEXEC_ARCH_S390 = 0x160000 KEXEC_ARCH_SH = 0x2a0000 KEXEC_ARCH_X86_64 = 0x3e0000 @@ -1332,6 +1333,20 @@ const ( KEY_SPEC_THREAD_KEYRING = -0x1 KEY_SPEC_USER_KEYRING = -0x4 KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LANDLOCK_ACCESS_FS_EXECUTE = 0x1 + LANDLOCK_ACCESS_FS_MAKE_BLOCK = 0x800 + LANDLOCK_ACCESS_FS_MAKE_CHAR = 0x40 + LANDLOCK_ACCESS_FS_MAKE_DIR = 0x80 + LANDLOCK_ACCESS_FS_MAKE_FIFO = 0x400 + LANDLOCK_ACCESS_FS_MAKE_REG = 0x100 + LANDLOCK_ACCESS_FS_MAKE_SOCK = 0x200 + LANDLOCK_ACCESS_FS_MAKE_SYM = 0x1000 + LANDLOCK_ACCESS_FS_READ_DIR = 0x8 + LANDLOCK_ACCESS_FS_READ_FILE = 0x4 + LANDLOCK_ACCESS_FS_REMOVE_DIR = 0x10 + LANDLOCK_ACCESS_FS_REMOVE_FILE = 0x20 + LANDLOCK_ACCESS_FS_WRITE_FILE = 0x2 + LANDLOCK_CREATE_RULESET_VERSION = 0x1 LINUX_REBOOT_CMD_CAD_OFF = 0x0 LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef LINUX_REBOOT_CMD_HALT = 0xcdef0123 @@ -1382,6 +1397,8 @@ const ( MADV_NOHUGEPAGE = 0xf MADV_NORMAL = 0x0 MADV_PAGEOUT = 0x15 + MADV_POPULATE_READ = 0x16 + MADV_POPULATE_WRITE = 0x17 MADV_RANDOM = 0x1 MADV_REMOVE = 0x9 MADV_SEQUENTIAL = 0x2 @@ -1406,6 +1423,10 @@ const ( MCAST_LEAVE_SOURCE_GROUP = 0x2f MCAST_MSFILTER = 0x30 MCAST_UNBLOCK_SOURCE = 0x2c + MEMGETREGIONINFO = 0xc0104d08 + MEMREADOOB64 = 0xc0184d16 + MEMWRITE = 0xc0304d18 + MEMWRITEOOB64 = 0xc0184d15 MFD_ALLOW_SEALING = 0x2 MFD_CLOEXEC = 0x1 MFD_HUGETLB = 0x4 @@ -1494,7 +1515,35 @@ const ( MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 MS_VERBOSE = 0x8000 + MTD_ABSENT = 0x0 + MTD_BIT_WRITEABLE = 0x800 + MTD_CAP_NANDFLASH = 0x400 + MTD_CAP_NORFLASH = 0xc00 + MTD_CAP_NVRAM = 0x1c00 + MTD_CAP_RAM = 0x1c00 + MTD_CAP_ROM = 0x0 + MTD_DATAFLASH = 0x6 MTD_INODE_FS_MAGIC = 0x11307854 + MTD_MAX_ECCPOS_ENTRIES = 0x40 + MTD_MAX_OOBFREE_ENTRIES = 0x8 + MTD_MLCNANDFLASH = 0x8 + MTD_NANDECC_AUTOPLACE = 0x2 + MTD_NANDECC_AUTOPL_USR = 0x4 + MTD_NANDECC_OFF = 0x0 + MTD_NANDECC_PLACE = 0x1 + MTD_NANDECC_PLACEONLY = 0x3 + MTD_NANDFLASH = 0x4 + MTD_NORFLASH = 0x3 + MTD_NO_ERASE = 0x1000 + MTD_OTP_FACTORY = 0x1 + MTD_OTP_OFF = 0x0 + MTD_OTP_USER = 0x2 + MTD_POWERUP_LOCK = 0x2000 + MTD_RAM = 0x1 + MTD_ROM = 0x2 + MTD_SLC_ON_MLC_EMULATION = 0x4000 + MTD_UBIVOLUME = 0x7 + MTD_WRITEABLE = 0x400 NAME_MAX = 0xff NCP_SUPER_MAGIC = 0x564c NETLINK_ADD_MEMBERSHIP = 0x1 @@ -1534,6 +1583,59 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFC_ATR_REQ_GB_MAXSIZE = 0x30 + NFC_ATR_REQ_MAXSIZE = 0x40 + NFC_ATR_RES_GB_MAXSIZE = 0x2f + NFC_ATR_RES_MAXSIZE = 0x40 + NFC_COMM_ACTIVE = 0x0 + NFC_COMM_PASSIVE = 0x1 + NFC_DEVICE_NAME_MAXSIZE = 0x8 + NFC_DIRECTION_RX = 0x0 + NFC_DIRECTION_TX = 0x1 + NFC_FIRMWARE_NAME_MAXSIZE = 0x20 + NFC_GB_MAXSIZE = 0x30 + NFC_GENL_MCAST_EVENT_NAME = "events" + NFC_GENL_NAME = "nfc" + NFC_GENL_VERSION = 0x1 + NFC_HEADER_SIZE = 0x1 + NFC_ISO15693_UID_MAXSIZE = 0x8 + NFC_LLCP_MAX_SERVICE_NAME = 0x3f + NFC_LLCP_MIUX = 0x1 + NFC_LLCP_REMOTE_LTO = 0x3 + NFC_LLCP_REMOTE_MIU = 0x2 + NFC_LLCP_REMOTE_RW = 0x4 + NFC_LLCP_RW = 0x0 + NFC_NFCID1_MAXSIZE = 0xa + NFC_NFCID2_MAXSIZE = 0x8 + NFC_NFCID3_MAXSIZE = 0xa + NFC_PROTO_FELICA = 0x3 + NFC_PROTO_FELICA_MASK = 0x8 + NFC_PROTO_ISO14443 = 0x4 + NFC_PROTO_ISO14443_B = 0x6 + NFC_PROTO_ISO14443_B_MASK = 0x40 + NFC_PROTO_ISO14443_MASK = 0x10 + NFC_PROTO_ISO15693 = 0x7 + NFC_PROTO_ISO15693_MASK = 0x80 + NFC_PROTO_JEWEL = 0x1 + NFC_PROTO_JEWEL_MASK = 0x2 + NFC_PROTO_MAX = 0x8 + NFC_PROTO_MIFARE = 0x2 + NFC_PROTO_MIFARE_MASK = 0x4 + NFC_PROTO_NFC_DEP = 0x5 + NFC_PROTO_NFC_DEP_MASK = 0x20 + NFC_RAW_HEADER_SIZE = 0x2 + NFC_RF_INITIATOR = 0x0 + NFC_RF_NONE = 0x2 + NFC_RF_TARGET = 0x1 + NFC_SENSB_RES_MAXSIZE = 0xc + NFC_SENSF_RES_MAXSIZE = 0x12 + NFC_SE_DISABLED = 0x0 + NFC_SE_EMBEDDED = 0x2 + NFC_SE_ENABLED = 0x1 + NFC_SE_UICC = 0x1 + NFC_SOCKPROTO_LLCP = 0x1 + NFC_SOCKPROTO_MAX = 0x2 + NFC_SOCKPROTO_RAW = 0x0 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1551,11 +1653,12 @@ const ( NFNL_MSG_BATCH_END = 0x11 NFNL_NFA_NEST = 0x8000 NFNL_SUBSYS_ACCT = 0x7 - NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_COUNT = 0xd NFNL_SUBSYS_CTHELPER = 0x9 NFNL_SUBSYS_CTNETLINK = 0x1 NFNL_SUBSYS_CTNETLINK_EXP = 0x2 NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_HOOK = 0xc NFNL_SUBSYS_IPSET = 0x6 NFNL_SUBSYS_NFTABLES = 0xa NFNL_SUBSYS_NFT_COMPAT = 0xb @@ -1671,14 +1774,19 @@ const ( PERF_ATTR_SIZE_VER4 = 0x68 PERF_ATTR_SIZE_VER5 = 0x70 PERF_ATTR_SIZE_VER6 = 0x78 + PERF_ATTR_SIZE_VER7 = 0x80 PERF_AUX_FLAG_COLLISION = 0x8 + PERF_AUX_FLAG_CORESIGHT_FORMAT_CORESIGHT = 0x0 + PERF_AUX_FLAG_CORESIGHT_FORMAT_RAW = 0x100 PERF_AUX_FLAG_OVERWRITE = 0x2 PERF_AUX_FLAG_PARTIAL = 0x4 + PERF_AUX_FLAG_PMU_FORMAT_TYPE_MASK = 0xff00 PERF_AUX_FLAG_TRUNCATED = 0x1 PERF_FLAG_FD_CLOEXEC = 0x8 PERF_FLAG_FD_NO_GROUP = 0x1 PERF_FLAG_FD_OUTPUT = 0x2 PERF_FLAG_PID_CGROUP = 0x4 + PERF_HW_EVENT_MASK = 0xffffffff PERF_MAX_CONTEXTS_PER_STACK = 0x8 PERF_MAX_STACK_DEPTH = 0x7f PERF_MEM_BLK_ADDR = 0x4 @@ -1737,6 +1845,7 @@ const ( PERF_MEM_TLB_OS = 0x40 PERF_MEM_TLB_SHIFT = 0x1a PERF_MEM_TLB_WK = 0x20 + PERF_PMU_TYPE_SHIFT = 0x20 PERF_RECORD_KSYMBOL_FLAGS_UNREGISTER = 0x1 PERF_RECORD_MISC_COMM_EXEC = 0x2000 PERF_RECORD_MISC_CPUMODE_MASK = 0x7 @@ -1836,7 +1945,15 @@ const ( PR_PAC_APGAKEY = 0x10 PR_PAC_APIAKEY = 0x1 PR_PAC_APIBKEY = 0x2 + PR_PAC_GET_ENABLED_KEYS = 0x3d PR_PAC_RESET_KEYS = 0x36 + PR_PAC_SET_ENABLED_KEYS = 0x3c + PR_SCHED_CORE = 0x3e + PR_SCHED_CORE_CREATE = 0x1 + PR_SCHED_CORE_GET = 0x0 + PR_SCHED_CORE_MAX = 0x4 + PR_SCHED_CORE_SHARE_FROM = 0x3 + PR_SCHED_CORE_SHARE_TO = 0x2 PR_SET_CHILD_SUBREAPER = 0x24 PR_SET_DUMPABLE = 0x4 PR_SET_ENDIAN = 0x14 @@ -1918,6 +2035,7 @@ const ( PTRACE_GETREGSET = 0x4204 PTRACE_GETSIGINFO = 0x4202 PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_RSEQ_CONFIGURATION = 0x420f PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_INTERRUPT = 0x4207 PTRACE_KILL = 0x8 @@ -1959,6 +2077,11 @@ const ( QNX4_SUPER_MAGIC = 0x2f QNX6_SUPER_MAGIC = 0x68191122 RAMFS_MAGIC = 0x858458f6 + RAW_PAYLOAD_DIGITAL = 0x3 + RAW_PAYLOAD_HCI = 0x2 + RAW_PAYLOAD_LLCP = 0x0 + RAW_PAYLOAD_NCI = 0x1 + RAW_PAYLOAD_PROPRIETARY = 0x4 RDTGROUP_SUPER_MAGIC = 0x7655821 REISERFS_SUPER_MAGIC = 0x52654973 RENAME_EXCHANGE = 0x2 @@ -2073,6 +2196,7 @@ const ( RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 RTM_DELNEXTHOP = 0x69 + RTM_DELNEXTHOPBUCKET = 0x75 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -2103,6 +2227,7 @@ const ( RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 RTM_GETNEXTHOP = 0x6a + RTM_GETNEXTHOPBUCKET = 0x76 RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -2111,7 +2236,7 @@ const ( RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e RTM_GETVLAN = 0x72 - RTM_MAX = 0x73 + RTM_MAX = 0x77 RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -2125,6 +2250,7 @@ const ( RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 RTM_NEWNEXTHOP = 0x68 + RTM_NEWNEXTHOPBUCKET = 0x74 RTM_NEWNSID = 0x58 RTM_NEWNVLAN = 0x70 RTM_NEWPREFIX = 0x34 @@ -2134,8 +2260,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x19 - RTM_NR_MSGTYPES = 0x64 + RTM_NR_FAMILIES = 0x1a + RTM_NR_MSGTYPES = 0x68 RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -2163,6 +2289,7 @@ const ( RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OPENR = 0x63 RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 @@ -2193,7 +2320,14 @@ const ( SECCOMP_MODE_DISABLED = 0x0 SECCOMP_MODE_FILTER = 0x2 SECCOMP_MODE_STRICT = 0x1 + SECRETMEM_MAGIC = 0x5345434d SECURITYFS_MAGIC = 0x73636673 + SEEK_CUR = 0x1 + SEEK_DATA = 0x3 + SEEK_END = 0x2 + SEEK_HOLE = 0x4 + SEEK_MAX = 0x4 + SEEK_SET = 0x0 SELINUX_MAGIC = 0xf97cff8c SHUT_RD = 0x0 SHUT_RDWR = 0x2 @@ -2440,6 +2574,14 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCPOPT_EOL = 0x0 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_386.go index e91a1a957..697811a46 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -60,6 +60,8 @@ const ( CS8 = 0x30 CSIZE = 0x30 CSTOPB = 0x40 + ECCGETLAYOUT = 0x81484d11 + ECCGETSTATS = 0x80104d12 ECHOCTL = 0x200 ECHOE = 0x10 ECHOK = 0x20 @@ -123,6 +125,19 @@ const ( MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 + MEMERASE = 0x40084d02 + MEMERASE64 = 0x40104d14 + MEMGETBADBLOCK = 0x40084d0b + MEMGETINFO = 0x80204d01 + MEMGETOOBSEL = 0x80c84d0a + MEMGETREGIONCOUNT = 0x80044d07 + MEMISLOCKED = 0x80084d17 + MEMLOCK = 0x40084d05 + MEMREADOOB = 0xc00c4d04 + MEMSETBADBLOCK = 0x40084d0c + MEMUNLOCK = 0x40084d06 + MEMWRITEOOB = 0xc00c4d03 + MTDFILEMODE = 0x4d13 NFDBITS = 0x20 NLDLY = 0x100 NOFLSH = 0x80 @@ -132,6 +147,11 @@ const ( NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 + OTPERASE = 0x400c4d19 + OTPGETREGIONCOUNT = 0x40044d0e + OTPGETREGIONINFO = 0x400c4d0f + OTPLOCK = 0x800c4d10 + OTPSELECT = 0x80044d0d O_APPEND = 0x400 O_ASYNC = 0x2000 O_CLOEXEC = 0x80000 @@ -289,6 +309,7 @@ const ( SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 SO_NOFCS = 0x2b SO_OOBINLINE = 0xa SO_PASSCRED = 0x10 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go index a9cbac644..7d8d93bfc 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -60,6 +60,8 @@ const ( CS8 = 0x30 CSIZE = 0x30 CSTOPB = 0x40 + ECCGETLAYOUT = 0x81484d11 + ECCGETSTATS = 0x80104d12 ECHOCTL = 0x200 ECHOE = 0x10 ECHOK = 0x20 @@ -123,6 +125,19 @@ const ( MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 + MEMERASE = 0x40084d02 + MEMERASE64 = 0x40104d14 + MEMGETBADBLOCK = 0x40084d0b + MEMGETINFO = 0x80204d01 + MEMGETOOBSEL = 0x80c84d0a + MEMGETREGIONCOUNT = 0x80044d07 + MEMISLOCKED = 0x80084d17 + MEMLOCK = 0x40084d05 + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x40084d0c + MEMUNLOCK = 0x40084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x4d13 NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 @@ -132,6 +147,11 @@ const ( NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 + OTPERASE = 0x400c4d19 + OTPGETREGIONCOUNT = 0x40044d0e + OTPGETREGIONINFO = 0x400c4d0f + OTPLOCK = 0x800c4d10 + OTPSELECT = 0x80044d0d O_APPEND = 0x400 O_ASYNC = 0x2000 O_CLOEXEC = 0x80000 @@ -290,6 +310,7 @@ const ( SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 SO_NOFCS = 0x2b SO_OOBINLINE = 0xa SO_PASSCRED = 0x10 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go index d74f3c15a..f707d5089 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -60,6 +60,8 @@ const ( CS8 = 0x30 CSIZE = 0x30 CSTOPB = 0x40 + ECCGETLAYOUT = 0x81484d11 + ECCGETSTATS = 0x80104d12 ECHOCTL = 0x200 ECHOE = 0x10 ECHOK = 0x20 @@ -121,6 +123,19 @@ const ( MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 + MEMERASE = 0x40084d02 + MEMERASE64 = 0x40104d14 + MEMGETBADBLOCK = 0x40084d0b + MEMGETINFO = 0x80204d01 + MEMGETOOBSEL = 0x80c84d0a + MEMGETREGIONCOUNT = 0x80044d07 + MEMISLOCKED = 0x80084d17 + MEMLOCK = 0x40084d05 + MEMREADOOB = 0xc00c4d04 + MEMSETBADBLOCK = 0x40084d0c + MEMUNLOCK = 0x40084d06 + MEMWRITEOOB = 0xc00c4d03 + MTDFILEMODE = 0x4d13 NFDBITS = 0x20 NLDLY = 0x100 NOFLSH = 0x80 @@ -130,6 +145,11 @@ const ( NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 + OTPERASE = 0x400c4d19 + OTPGETREGIONCOUNT = 0x40044d0e + OTPGETREGIONINFO = 0x400c4d0f + OTPLOCK = 0x800c4d10 + OTPSELECT = 0x80044d0d O_APPEND = 0x400 O_ASYNC = 0x2000 O_CLOEXEC = 0x80000 @@ -296,6 +316,7 @@ const ( SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 SO_NOFCS = 0x2b SO_OOBINLINE = 0xa SO_PASSCRED = 0x10 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go index e1538995b..3a67a9c85 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -60,6 +60,8 @@ const ( CS8 = 0x30 CSIZE = 0x30 CSTOPB = 0x40 + ECCGETLAYOUT = 0x81484d11 + ECCGETSTATS = 0x80104d12 ECHOCTL = 0x200 ECHOE = 0x10 ECHOK = 0x20 @@ -124,6 +126,19 @@ const ( MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 + MEMERASE = 0x40084d02 + MEMERASE64 = 0x40104d14 + MEMGETBADBLOCK = 0x40084d0b + MEMGETINFO = 0x80204d01 + MEMGETOOBSEL = 0x80c84d0a + MEMGETREGIONCOUNT = 0x80044d07 + MEMISLOCKED = 0x80084d17 + MEMLOCK = 0x40084d05 + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x40084d0c + MEMUNLOCK = 0x40084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x4d13 NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 @@ -133,6 +148,11 @@ const ( NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 + OTPERASE = 0x400c4d19 + OTPGETREGIONCOUNT = 0x40044d0e + OTPGETREGIONINFO = 0x400c4d0f + OTPLOCK = 0x800c4d10 + OTPSELECT = 0x80044d0d O_APPEND = 0x400 O_ASYNC = 0x2000 O_CLOEXEC = 0x80000 @@ -286,6 +306,7 @@ const ( SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 SO_NOFCS = 0x2b SO_OOBINLINE = 0xa SO_PASSCRED = 0x10 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go index 5e8e71ff8..a7ccef56c 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -60,6 +60,8 @@ const ( CS8 = 0x30 CSIZE = 0x30 CSTOPB = 0x40 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 ECHOCTL = 0x200 ECHOE = 0x10 ECHOK = 0x20 @@ -121,6 +123,19 @@ const ( MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREADOOB = 0xc00c4d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc00c4d03 + MTDFILEMODE = 0x20004d13 NFDBITS = 0x20 NLDLY = 0x100 NOFLSH = 0x80 @@ -130,6 +145,11 @@ const ( NS_GET_USERNS = 0x2000b701 OLCUC = 0x2 ONLCR = 0x4 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d O_APPEND = 0x8 O_ASYNC = 0x1000 O_CLOEXEC = 0x80000 @@ -289,6 +309,7 @@ const ( SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 SO_NOFCS = 0x2b SO_OOBINLINE = 0x100 SO_PASSCRED = 0x11 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go index e670ee148..f7b7cec91 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -60,6 +60,8 @@ const ( CS8 = 0x30 CSIZE = 0x30 CSTOPB = 0x40 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 ECHOCTL = 0x200 ECHOE = 0x10 ECHOK = 0x20 @@ -121,6 +123,19 @@ const ( MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x20004d13 NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 @@ -130,6 +145,11 @@ const ( NS_GET_USERNS = 0x2000b701 OLCUC = 0x2 ONLCR = 0x4 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d O_APPEND = 0x8 O_ASYNC = 0x1000 O_CLOEXEC = 0x80000 @@ -289,6 +309,7 @@ const ( SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 SO_NOFCS = 0x2b SO_OOBINLINE = 0x100 SO_PASSCRED = 0x11 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go index dd11eacb8..4fcacf958 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -60,6 +60,8 @@ const ( CS8 = 0x30 CSIZE = 0x30 CSTOPB = 0x40 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 ECHOCTL = 0x200 ECHOE = 0x10 ECHOK = 0x20 @@ -121,6 +123,19 @@ const ( MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x20004d13 NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 @@ -130,6 +145,11 @@ const ( NS_GET_USERNS = 0x2000b701 OLCUC = 0x2 ONLCR = 0x4 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d O_APPEND = 0x8 O_ASYNC = 0x1000 O_CLOEXEC = 0x80000 @@ -289,6 +309,7 @@ const ( SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 SO_NOFCS = 0x2b SO_OOBINLINE = 0x100 SO_PASSCRED = 0x11 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go index a0a5b22ae..6f6c223a2 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -60,6 +60,8 @@ const ( CS8 = 0x30 CSIZE = 0x30 CSTOPB = 0x40 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 ECHOCTL = 0x200 ECHOE = 0x10 ECHOK = 0x20 @@ -121,6 +123,19 @@ const ( MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREADOOB = 0xc00c4d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc00c4d03 + MTDFILEMODE = 0x20004d13 NFDBITS = 0x20 NLDLY = 0x100 NOFLSH = 0x80 @@ -130,6 +145,11 @@ const ( NS_GET_USERNS = 0x2000b701 OLCUC = 0x2 ONLCR = 0x4 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d O_APPEND = 0x8 O_ASYNC = 0x1000 O_CLOEXEC = 0x80000 @@ -289,6 +309,7 @@ const ( SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 SO_NOFCS = 0x2b SO_OOBINLINE = 0x100 SO_PASSCRED = 0x11 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go index d9530e5fb..59e522bcf 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go @@ -60,6 +60,8 @@ const ( CS8 = 0x300 CSIZE = 0x300 CSTOPB = 0x400 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 ECHOCTL = 0x40 ECHOE = 0x2 ECHOK = 0x4 @@ -121,6 +123,19 @@ const ( MCL_CURRENT = 0x2000 MCL_FUTURE = 0x4000 MCL_ONFAULT = 0x8000 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREADOOB = 0xc00c4d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc00c4d03 + MTDFILEMODE = 0x20004d13 NFDBITS = 0x20 NL2 = 0x200 NL3 = 0x300 @@ -132,6 +147,11 @@ const ( NS_GET_USERNS = 0x2000b701 OLCUC = 0x4 ONLCR = 0x2 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d O_APPEND = 0x400 O_ASYNC = 0x2000 O_CLOEXEC = 0x80000 @@ -344,6 +364,7 @@ const ( SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 SO_NOFCS = 0x2b SO_OOBINLINE = 0xa SO_PASSCRED = 0x14 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go index e60102f6a..d4264a0f7 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -60,6 +60,8 @@ const ( CS8 = 0x300 CSIZE = 0x300 CSTOPB = 0x400 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 ECHOCTL = 0x40 ECHOE = 0x2 ECHOK = 0x4 @@ -121,6 +123,19 @@ const ( MCL_CURRENT = 0x2000 MCL_FUTURE = 0x4000 MCL_ONFAULT = 0x8000 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x20004d13 NFDBITS = 0x40 NL2 = 0x200 NL3 = 0x300 @@ -132,6 +147,11 @@ const ( NS_GET_USERNS = 0x2000b701 OLCUC = 0x4 ONLCR = 0x2 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d O_APPEND = 0x400 O_ASYNC = 0x2000 O_CLOEXEC = 0x80000 @@ -348,6 +368,7 @@ const ( SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 SO_NOFCS = 0x2b SO_OOBINLINE = 0xa SO_PASSCRED = 0x14 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go index 838ff4ea6..21cbec1dd 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -60,6 +60,8 @@ const ( CS8 = 0x300 CSIZE = 0x300 CSTOPB = 0x400 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 ECHOCTL = 0x40 ECHOE = 0x2 ECHOK = 0x4 @@ -121,6 +123,19 @@ const ( MCL_CURRENT = 0x2000 MCL_FUTURE = 0x4000 MCL_ONFAULT = 0x8000 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x20004d13 NFDBITS = 0x40 NL2 = 0x200 NL3 = 0x300 @@ -132,6 +147,11 @@ const ( NS_GET_USERNS = 0x2000b701 OLCUC = 0x4 ONLCR = 0x2 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d O_APPEND = 0x400 O_ASYNC = 0x2000 O_CLOEXEC = 0x80000 @@ -348,6 +368,7 @@ const ( SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 SO_NOFCS = 0x2b SO_OOBINLINE = 0xa SO_PASSCRED = 0x14 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go index 7cc98f09c..9b05bf12f 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -60,6 +60,8 @@ const ( CS8 = 0x30 CSIZE = 0x30 CSTOPB = 0x40 + ECCGETLAYOUT = 0x81484d11 + ECCGETSTATS = 0x80104d12 ECHOCTL = 0x200 ECHOE = 0x10 ECHOK = 0x20 @@ -121,6 +123,19 @@ const ( MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 + MEMERASE = 0x40084d02 + MEMERASE64 = 0x40104d14 + MEMGETBADBLOCK = 0x40084d0b + MEMGETINFO = 0x80204d01 + MEMGETOOBSEL = 0x80c84d0a + MEMGETREGIONCOUNT = 0x80044d07 + MEMISLOCKED = 0x80084d17 + MEMLOCK = 0x40084d05 + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x40084d0c + MEMUNLOCK = 0x40084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x4d13 NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 @@ -130,6 +145,11 @@ const ( NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 + OTPERASE = 0x400c4d19 + OTPGETREGIONCOUNT = 0x40044d0e + OTPGETREGIONINFO = 0x400c4d0f + OTPLOCK = 0x800c4d10 + OTPSELECT = 0x80044d0d O_APPEND = 0x400 O_ASYNC = 0x2000 O_CLOEXEC = 0x80000 @@ -277,6 +297,7 @@ const ( SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 SO_NOFCS = 0x2b SO_OOBINLINE = 0xa SO_PASSCRED = 0x10 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go index 6d30e6fd8..bd82ace09 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -60,6 +60,8 @@ const ( CS8 = 0x30 CSIZE = 0x30 CSTOPB = 0x40 + ECCGETLAYOUT = 0x81484d11 + ECCGETSTATS = 0x80104d12 ECHOCTL = 0x200 ECHOE = 0x10 ECHOK = 0x20 @@ -121,6 +123,19 @@ const ( MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 + MEMERASE = 0x40084d02 + MEMERASE64 = 0x40104d14 + MEMGETBADBLOCK = 0x40084d0b + MEMGETINFO = 0x80204d01 + MEMGETOOBSEL = 0x80c84d0a + MEMGETREGIONCOUNT = 0x80044d07 + MEMISLOCKED = 0x80084d17 + MEMLOCK = 0x40084d05 + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x40084d0c + MEMUNLOCK = 0x40084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x4d13 NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 @@ -130,6 +145,11 @@ const ( NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 + OTPERASE = 0x400c4d19 + OTPGETREGIONCOUNT = 0x40044d0e + OTPGETREGIONINFO = 0x400c4d0f + OTPLOCK = 0x800c4d10 + OTPSELECT = 0x80044d0d O_APPEND = 0x400 O_ASYNC = 0x2000 O_CLOEXEC = 0x80000 @@ -352,6 +372,7 @@ const ( SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 SO_NOFCS = 0x2b SO_OOBINLINE = 0xa SO_PASSCRED = 0x10 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go index d5e2dc94f..1f8bded56 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -63,6 +63,8 @@ const ( CS8 = 0x30 CSIZE = 0x30 CSTOPB = 0x40 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 ECHOCTL = 0x200 ECHOE = 0x10 ECHOK = 0x20 @@ -126,6 +128,19 @@ const ( MCL_CURRENT = 0x2000 MCL_FUTURE = 0x4000 MCL_ONFAULT = 0x8000 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x20004d13 NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 @@ -135,6 +150,11 @@ const ( NS_GET_USERNS = 0x2000b701 OLCUC = 0x2 ONLCR = 0x4 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d O_APPEND = 0x8 O_ASYNC = 0x40 O_CLOEXEC = 0x400000 @@ -343,6 +363,7 @@ const ( SO_MARK = 0x22 SO_MAX_PACING_RATE = 0x31 SO_MEMINFO = 0x39 + SO_NETNS_COOKIE = 0x50 SO_NOFCS = 0x27 SO_OOBINLINE = 0x100 SO_PASSCRED = 0x2 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go index 593cc0fef..6d56edc05 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go @@ -1020,7 +1020,10 @@ const ( 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 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go index a4e4c2231..aef6c0856 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go @@ -1020,7 +1020,10 @@ const ( 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 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go index 4e87b4beb..fc7d0506f 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go @@ -67,24 +67,43 @@ const ( IPPORT_RESERVED = 1024 IPPORT_USERRESERVED = 5000 IPPROTO_AH = 51 + SOL_AH = 51 IPPROTO_DSTOPTS = 60 + SOL_DSTOPTS = 60 IPPROTO_EGP = 8 + SOL_EGP = 8 IPPROTO_ESP = 50 + SOL_ESP = 50 IPPROTO_FRAGMENT = 44 + SOL_FRAGMENT = 44 IPPROTO_GGP = 2 + SOL_GGP = 2 IPPROTO_HOPOPTS = 0 + SOL_HOPOPTS = 0 IPPROTO_ICMP = 1 + SOL_ICMP = 1 IPPROTO_ICMPV6 = 58 + SOL_ICMPV6 = 58 IPPROTO_IDP = 22 + SOL_IDP = 22 IPPROTO_IP = 0 + SOL_IP = 0 IPPROTO_IPV6 = 41 + SOL_IPV6 = 41 IPPROTO_MAX = 256 + SOL_MAX = 256 IPPROTO_NONE = 59 + SOL_NONE = 59 IPPROTO_PUP = 12 + SOL_PUP = 12 IPPROTO_RAW = 255 + SOL_RAW = 255 IPPROTO_ROUTING = 43 + SOL_ROUTING = 43 IPPROTO_TCP = 6 + SOL_TCP = 6 IPPROTO_UDP = 17 + SOL_UDP = 17 IPV6_ADDR_PREFERENCES = 32 IPV6_CHECKSUM = 19 IPV6_DONTFRAG = 29 @@ -186,6 +205,7 @@ const ( MTM_SYNCHONLY = 0x00000200 MTM_REMOUNT = 0x00000100 MTM_NOSECURITY = 0x00000080 + NFDBITS = 0x20 O_ACCMODE = 0x03 O_APPEND = 0x08 O_ASYNCSIG = 0x0200 @@ -359,6 +379,8 @@ const ( S_IFMST = 0x00FF0000 TCP_KEEPALIVE = 0x8 TCP_NODELAY = 0x1 + TCP_INFO = 0xb + TCP_USER_TIMEOUT = 0x1 TIOCGWINSZ = 0x4008a368 TIOCSWINSZ = 0x8008a367 TIOCSBRK = 0x2000a77b diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go deleted file mode 100644 index 48a62e390..000000000 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go +++ /dev/null @@ -1,40 +0,0 @@ -// go run mksyscall.go -l32 -tags darwin,386,go1.13 syscall_darwin.1_13.go -// Code generated by the command above; see README.md. DO NOT EDIT. - -//go:build darwin && 386 && go1.13 -// +build darwin,386,go1.13 - -package unix - -import ( - "syscall" - "unsafe" -) - -var _ syscall.Errno - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func closedir(dir uintptr) (err error) { - _, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_closedir_trampoline() - -//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { - r0, _, _ := syscall_syscall(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) - res = Errno(r0) - return -} - -func libc_readdir_r_trampoline() - -//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.s b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.s deleted file mode 100644 index 1c73a1921..000000000 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.s +++ /dev/null @@ -1,13 +0,0 @@ -// go run mkasm_darwin.go 386 -// Code generated by the command above; DO NOT EDIT. - -//go:build go1.13 -// +build go1.13 - -#include "textflag.h" -TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0 - JMP libc_fdopendir(SB) -TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0 - JMP libc_closedir(SB) -TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0 - JMP libc_readdir_r(SB) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go deleted file mode 100644 index a266636af..000000000 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go +++ /dev/null @@ -1,2431 +0,0 @@ -// 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. - -//go:build darwin && 386 && go1.12 -// +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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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 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: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: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 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: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: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: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: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: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: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: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: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 pipe(p *[2]int32) (err error) { - _, _, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), uintptr(unsafe.Pointer(p)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_pipe_trampoline() - -//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: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: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: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: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: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: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: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: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: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 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: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 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: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: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 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: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 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: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: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: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: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: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: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: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: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: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: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 Clonefile(src string, dst string, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(src) - if err != nil { - return - } - var _p1 *byte - _p1, err = BytePtrFromString(dst) - if err != nil { - return - } - _, _, e1 := syscall_syscall(funcPC(libc_clonefile_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_clonefile_trampoline() - -//go:cgo_import_dynamic libc_clonefile clonefile "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(src) - if err != nil { - return - } - var _p1 *byte - _p1, err = BytePtrFromString(dst) - if err != nil { - return - } - _, _, e1 := syscall_syscall6(funcPC(libc_clonefileat_trampoline), uintptr(srcDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_clonefileat_trampoline() - -//go:cgo_import_dynamic libc_clonefileat clonefileat "/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: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: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: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: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: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: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: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: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: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: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: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 Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(dst) - if err != nil { - return - } - _, _, e1 := syscall_syscall6(funcPC(libc_fclonefileat_trampoline), uintptr(srcDirfd), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_fclonefileat_trampoline() - -//go:cgo_import_dynamic libc_fclonefileat fclonefileat "/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: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: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: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: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 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_syscall(funcPC(libc_getcwd_trampoline), uintptr(_p0), uintptr(len(buf)), 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_getcwd_trampoline() - -//go:cgo_import_dynamic libc_getcwd getcwd "/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: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: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: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: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: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: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: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: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: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: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: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: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 Gettimeofday(tp *Timeval) (err error) { - _, _, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_gettimeofday_trampoline() - -//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 Getuid() (uid int) { - r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0) - uid = int(r0) - return -} - -func libc_getuid_trampoline() - -//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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { - r0, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), 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 -} - -func libc_select_trampoline() - -//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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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 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: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: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: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 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: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: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 ptrace1(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: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 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: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:cgo_import_dynamic libc_statfs64 statfs64 "/usr/lib/libSystem.B.dylib" diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s deleted file mode 100644 index 8cc7928d9..000000000 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s +++ /dev/null @@ -1,291 +0,0 @@ -// go run mkasm_darwin.go 386 -// Code generated by the command above; DO NOT EDIT. - -//go:build go1.12 -// +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_utimes_trampoline(SB),NOSPLIT,$0-0 - JMP libc_utimes(SB) -TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 - JMP libc_futimes(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_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_fcntl_trampoline(SB),NOSPLIT,$0-0 - JMP libc_fcntl(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_sysctl_trampoline(SB),NOSPLIT,$0-0 - JMP libc_sysctl(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_clonefile_trampoline(SB),NOSPLIT,$0-0 - JMP libc_clonefile(SB) -TEXT ·libc_clonefileat_trampoline(SB),NOSPLIT,$0-0 - JMP libc_clonefileat(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_fclonefileat_trampoline(SB),NOSPLIT,$0-0 - JMP libc_fclonefileat(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_getcwd_trampoline(SB),NOSPLIT,$0-0 - JMP libc_getcwd(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_gettimeofday_trampoline(SB),NOSPLIT,$0-0 - JMP libc_gettimeofday(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_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_getfsstat64_trampoline(SB),NOSPLIT,$0-0 - JMP libc_getfsstat64(SB) -TEXT ·libc_lstat64_trampoline(SB),NOSPLIT,$0-0 - JMP libc_lstat64(SB) -TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 - JMP libc_ptrace(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/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go index e36299ead..a06eb0932 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go @@ -16,25 +16,25 @@ var _ syscall.Errno // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func closedir(dir uintptr) (err error) { - _, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0) + _, _, e1 := syscall_syscall(libc_closedir_trampoline_addr, uintptr(dir), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_closedir_trampoline() +var libc_closedir_trampoline_addr uintptr //go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { - r0, _, _ := syscall_syscall(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) + r0, _, _ := syscall_syscall(libc_readdir_r_trampoline_addr, uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) res = Errno(r0) return } -func libc_readdir_r_trampoline() +var libc_readdir_r_trampoline_addr uintptr //go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s index ab59833fc..d6c3e25c0 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s @@ -5,9 +5,21 @@ // +build go1.13 #include "textflag.h" -TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0 + +TEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fdopendir(SB) -TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fdopendir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB) + +TEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_closedir(SB) -TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_closedir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB) + +TEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_readdir_r(SB) + +GLOBL ·libc_readdir_r_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go index f41116288..0ae0ed4cb 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -16,7 +16,7 @@ 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) + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -24,28 +24,28 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) { return } -func libc_getgroups_trampoline() +var libc_getgroups_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setgroups_trampoline() +var libc_setgroups_trampoline_addr uintptr //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) + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) wpid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -53,14 +53,14 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err return } -func libc_wait4_trampoline() +var libc_wait4_trampoline_addr uintptr //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))) + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -68,42 +68,42 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { return } -func libc_accept_trampoline() +var libc_accept_trampoline_addr uintptr //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)) + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_bind_trampoline() +var libc_bind_trampoline_addr uintptr //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)) + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_connect_trampoline() +var libc_connect_trampoline_addr uintptr //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)) + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -111,91 +111,91 @@ func socket(domain int, typ int, proto int) (fd int, err error) { return } -func libc_socket_trampoline() +var libc_socket_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_getsockopt_trampoline() +var libc_getsockopt_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setsockopt_trampoline() +var libc_setsockopt_trampoline_addr uintptr //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))) + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) if e1 != 0 { err = errnoErr(e1) } return } -func libc_getpeername_trampoline() +var libc_getpeername_trampoline_addr uintptr //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))) + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) if e1 != 0 { err = errnoErr(e1) } return } -func libc_getsockname_trampoline() +var libc_getsockname_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_shutdown_trampoline() +var libc_shutdown_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_socketpair_trampoline() +var libc_socketpair_trampoline_addr uintptr //go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib" @@ -208,7 +208,7 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl } 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))) + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, 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) @@ -216,7 +216,7 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl return } -func libc_recvfrom_trampoline() +var libc_recvfrom_trampoline_addr uintptr //go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib" @@ -229,21 +229,21 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) ( } 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)) + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_sendto_trampoline() +var libc_sendto_trampoline_addr uintptr //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)) + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -251,14 +251,14 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { return } -func libc_recvmsg_trampoline() +var libc_recvmsg_trampoline_addr uintptr //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)) + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -266,14 +266,14 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { return } -func libc_sendmsg_trampoline() +var libc_sendmsg_trampoline_addr uintptr //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))) + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -281,7 +281,7 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne return } -func libc_kevent_trampoline() +var libc_kevent_trampoline_addr uintptr //go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" @@ -293,35 +293,35 @@ func utimes(path string, timeval *[2]Timeval) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_utimes_trampoline() +var libc_utimes_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_futimes_trampoline() +var libc_futimes_trampoline_addr uintptr //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 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)) + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -329,7 +329,7 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { return } -func libc_poll_trampoline() +var libc_poll_trampoline_addr uintptr //go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" @@ -342,14 +342,14 @@ func Madvise(b []byte, behav int) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := syscall_syscall(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav)) + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_madvise_trampoline() +var libc_madvise_trampoline_addr uintptr //go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib" @@ -362,28 +362,28 @@ func Mlock(b []byte) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := syscall_syscall(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_mlock_trampoline() +var libc_mlock_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_mlockall_trampoline() +var libc_mlockall_trampoline_addr uintptr //go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib" @@ -396,14 +396,14 @@ func Mprotect(b []byte, prot int) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := syscall_syscall(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot)) + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_mprotect_trampoline() +var libc_mprotect_trampoline_addr uintptr //go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib" @@ -416,14 +416,14 @@ func Msync(b []byte, flags int) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := syscall_syscall(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags)) + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_msync_trampoline() +var libc_msync_trampoline_addr uintptr //go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib" @@ -436,42 +436,42 @@ func Munlock(b []byte) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := syscall_syscall(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_munlock_trampoline() +var libc_munlock_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_munlockall_trampoline() +var libc_munlockall_trampoline_addr uintptr //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 pipe(p *[2]int32) (err error) { - _, _, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), uintptr(unsafe.Pointer(p)), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_pipe_trampoline_addr, uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_pipe_trampoline() +var libc_pipe_trampoline_addr uintptr //go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" @@ -488,7 +488,7 @@ func getxattr(path string, attr string, dest *byte, size int, position uint32, o 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)) + r0, _, e1 := syscall_syscall6(libc_getxattr_trampoline_addr, 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) @@ -496,7 +496,7 @@ func getxattr(path string, attr string, dest *byte, size int, position uint32, o return } -func libc_getxattr_trampoline() +var libc_getxattr_trampoline_addr uintptr //go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib" @@ -508,7 +508,7 @@ func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, optio 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)) + r0, _, e1 := syscall_syscall6(libc_fgetxattr_trampoline_addr, 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) @@ -516,7 +516,7 @@ func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, optio return } -func libc_fgetxattr_trampoline() +var libc_fgetxattr_trampoline_addr uintptr //go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib" @@ -533,14 +533,14 @@ func setxattr(path string, attr string, data *byte, size int, position uint32, o 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)) + _, _, e1 := syscall_syscall6(libc_setxattr_trampoline_addr, 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() +var libc_setxattr_trampoline_addr uintptr //go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib" @@ -552,14 +552,14 @@ func fsetxattr(fd int, attr string, data *byte, size int, position uint32, optio 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)) + _, _, e1 := syscall_syscall6(libc_fsetxattr_trampoline_addr, 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() +var libc_fsetxattr_trampoline_addr uintptr //go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib" @@ -576,14 +576,14 @@ func removexattr(path string, attr string, options int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_removexattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + _, _, e1 := syscall_syscall(libc_removexattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_removexattr_trampoline() +var libc_removexattr_trampoline_addr uintptr //go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib" @@ -595,14 +595,14 @@ func fremovexattr(fd int, attr string, options int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + _, _, e1 := syscall_syscall(libc_fremovexattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_fremovexattr_trampoline() +var libc_fremovexattr_trampoline_addr uintptr //go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib" @@ -614,7 +614,7 @@ func listxattr(path string, dest *byte, size int, options int) (sz int, err erro 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) + r0, _, e1 := syscall_syscall6(libc_listxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) sz = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -622,14 +622,14 @@ func listxattr(path string, dest *byte, size int, options int) (sz int, err erro return } -func libc_listxattr_trampoline() +var libc_listxattr_trampoline_addr uintptr //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) + r0, _, e1 := syscall_syscall6(libc_flistxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) sz = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -637,28 +637,28 @@ func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { return } -func libc_flistxattr_trampoline() +var libc_flistxattr_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall6(libc_setattrlist_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setattrlist_trampoline() +var libc_setattrlist_trampoline_addr uintptr //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 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)) + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -666,35 +666,35 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { return } -func libc_fcntl_trampoline() +var libc_fcntl_trampoline_addr uintptr //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 kill(pid int, signum int, posix int) (err error) { - _, _, e1 := syscall_syscall(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix)) + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), uintptr(posix)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_kill_trampoline() +var libc_kill_trampoline_addr uintptr //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)) + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_ioctl_trampoline() +var libc_ioctl_trampoline_addr uintptr //go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" @@ -707,61 +707,120 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) } 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)) + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, 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() +var libc_sysctl_trampoline_addr uintptr //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 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)) + _, _, e1 := syscall_syscall6(libc_sendfile_trampoline_addr, 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() +var libc_sendfile_trampoline_addr uintptr //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 shmat(id int, addr uintptr, flag int) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall(libc_shmat_trampoline_addr, uintptr(id), uintptr(addr), uintptr(flag)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmat shmat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) { + r0, _, e1 := syscall_syscall(libc_shmctl_trampoline_addr, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf))) + result = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmctl shmctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmdt(addr uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_shmdt_trampoline_addr, uintptr(addr), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmdt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmdt shmdt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmget(key int, size int, flag int) (id int, err error) { + r0, _, e1 := syscall_syscall(libc_shmget_trampoline_addr, uintptr(key), uintptr(size), uintptr(flag)) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmget_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmget shmget "/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) + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_access_trampoline() +var libc_access_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_adjtime_trampoline() +var libc_adjtime_trampoline_addr uintptr //go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib" @@ -773,14 +832,14 @@ func Chdir(path string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_chdir_trampoline() +var libc_chdir_trampoline_addr uintptr //go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" @@ -792,14 +851,14 @@ func Chflags(path string, flags int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_chflags_trampoline() +var libc_chflags_trampoline_addr uintptr //go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib" @@ -811,14 +870,14 @@ func Chmod(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_chmod_trampoline() +var libc_chmod_trampoline_addr uintptr //go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib" @@ -830,14 +889,14 @@ func Chown(path string, uid int, gid int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_chown_trampoline() +var libc_chown_trampoline_addr uintptr //go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib" @@ -849,42 +908,42 @@ func Chroot(path string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_chroot_trampoline() +var libc_chroot_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_clock_gettime_trampoline() +var libc_clock_gettime_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_close_trampoline() +var libc_close_trampoline_addr uintptr //go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" @@ -901,14 +960,14 @@ func Clonefile(src string, dst string, flags int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_clonefile_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags)) + _, _, e1 := syscall_syscall(libc_clonefile_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_clonefile_trampoline() +var libc_clonefile_trampoline_addr uintptr //go:cgo_import_dynamic libc_clonefile clonefile "/usr/lib/libSystem.B.dylib" @@ -925,21 +984,21 @@ func Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) if err != nil { return } - _, _, e1 := syscall_syscall6(funcPC(libc_clonefileat_trampoline), uintptr(srcDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + _, _, e1 := syscall_syscall6(libc_clonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_clonefileat_trampoline() +var libc_clonefileat_trampoline_addr uintptr //go:cgo_import_dynamic libc_clonefileat clonefileat "/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) + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) nfd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -947,21 +1006,21 @@ func Dup(fd int) (nfd int, err error) { return } -func libc_dup_trampoline() +var libc_dup_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_dup2_trampoline() +var libc_dup2_trampoline_addr uintptr //go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib" @@ -978,25 +1037,25 @@ func Exchangedata(path1 string, path2 string, options int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_exchangedata_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + _, _, e1 := syscall_syscall(libc_exchangedata_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_exchangedata_trampoline() +var libc_exchangedata_trampoline_addr uintptr //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) + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) return } -func libc_exit_trampoline() +var libc_exit_trampoline_addr uintptr //go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib" @@ -1008,56 +1067,56 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall6(funcPC(libc_faccessat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_faccessat_trampoline() +var libc_faccessat_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_fchdir_trampoline() +var libc_fchdir_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_fchflags_trampoline() +var libc_fchflags_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_fchmod_trampoline() +var libc_fchmod_trampoline_addr uintptr //go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib" @@ -1069,28 +1128,28 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall6(funcPC(libc_fchmodat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_fchmodat_trampoline() +var libc_fchmodat_trampoline_addr uintptr //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)) + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_fchown_trampoline() +var libc_fchown_trampoline_addr uintptr //go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib" @@ -1102,14 +1161,14 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall6(funcPC(libc_fchownat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_fchownat_trampoline() +var libc_fchownat_trampoline_addr uintptr //go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib" @@ -1121,35 +1180,35 @@ func Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) if err != nil { return } - _, _, e1 := syscall_syscall6(funcPC(libc_fclonefileat_trampoline), uintptr(srcDirfd), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall6(libc_fclonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_fclonefileat_trampoline() +var libc_fclonefileat_trampoline_addr uintptr //go:cgo_import_dynamic libc_fclonefileat fclonefileat "/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) + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_flock_trampoline() +var libc_flock_trampoline_addr uintptr //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) + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1157,35 +1216,35 @@ func Fpathconf(fd int, name int) (val int, err error) { return } -func libc_fpathconf_trampoline() +var libc_fpathconf_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_fsync_trampoline() +var libc_fsync_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_ftruncate_trampoline() +var libc_ftruncate_trampoline_addr uintptr //go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib" @@ -1198,7 +1257,7 @@ func Getcwd(buf []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := syscall_syscall(funcPC(libc_getcwd_trampoline), uintptr(_p0), uintptr(len(buf)), 0) + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1206,62 +1265,62 @@ func Getcwd(buf []byte) (n int, err error) { return } -func libc_getcwd_trampoline() +var libc_getcwd_trampoline_addr uintptr //go:cgo_import_dynamic libc_getcwd getcwd "/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) + r0, _, _ := syscall_syscall(libc_getdtablesize_trampoline_addr, 0, 0, 0) size = int(r0) return } -func libc_getdtablesize_trampoline() +var libc_getdtablesize_trampoline_addr uintptr //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) + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) egid = int(r0) return } -func libc_getegid_trampoline() +var libc_getegid_trampoline_addr uintptr //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) + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) uid = int(r0) return } -func libc_geteuid_trampoline() +var libc_geteuid_trampoline_addr uintptr //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) + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) gid = int(r0) return } -func libc_getgid_trampoline() +var libc_getgid_trampoline_addr uintptr //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) + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) pgid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1269,50 +1328,50 @@ func Getpgid(pid int) (pgid int, err error) { return } -func libc_getpgid_trampoline() +var libc_getpgid_trampoline_addr uintptr //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) + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) pgrp = int(r0) return } -func libc_getpgrp_trampoline() +var libc_getpgrp_trampoline_addr uintptr //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) + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) pid = int(r0) return } -func libc_getpid_trampoline() +var libc_getpid_trampoline_addr uintptr //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) + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) ppid = int(r0) return } -func libc_getppid_trampoline() +var libc_getppid_trampoline_addr uintptr //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) + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) prio = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1320,42 +1379,42 @@ func Getpriority(which int, who int) (prio int, err error) { return } -func libc_getpriority_trampoline() +var libc_getpriority_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_getrlimit_trampoline() +var libc_getrlimit_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_getrusage_trampoline() +var libc_getrusage_trampoline_addr uintptr //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) + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) sid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1363,52 +1422,52 @@ func Getsid(pid int) (sid int, err error) { return } -func libc_getsid_trampoline() +var libc_getsid_trampoline_addr uintptr //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 Gettimeofday(tp *Timeval) (err error) { - _, _, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_gettimeofday_trampoline() +var libc_gettimeofday_trampoline_addr uintptr //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 Getuid() (uid int) { - r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) uid = int(r0) return } -func libc_getuid_trampoline() +var libc_getuid_trampoline_addr uintptr //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) + r0, _, _ := syscall_rawSyscall(libc_issetugid_trampoline_addr, 0, 0, 0) tainted = bool(r0 != 0) return } -func libc_issetugid_trampoline() +var libc_issetugid_trampoline_addr uintptr //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) + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1416,7 +1475,7 @@ func Kqueue() (fd int, err error) { return } -func libc_kqueue_trampoline() +var libc_kqueue_trampoline_addr uintptr //go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" @@ -1428,14 +1487,14 @@ func Lchown(path string, uid int, gid int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_lchown_trampoline() +var libc_lchown_trampoline_addr uintptr //go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib" @@ -1452,14 +1511,14 @@ func Link(path string, link string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_link_trampoline() +var libc_link_trampoline_addr uintptr //go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib" @@ -1476,28 +1535,28 @@ func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err er 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) + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, 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() +var libc_linkat_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_listen_trampoline() +var libc_listen_trampoline_addr uintptr //go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib" @@ -1509,14 +1568,14 @@ func Mkdir(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_mkdir_trampoline() +var libc_mkdir_trampoline_addr uintptr //go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib" @@ -1528,14 +1587,14 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_mkdirat_trampoline() +var libc_mkdirat_trampoline_addr uintptr //go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib" @@ -1547,14 +1606,14 @@ func Mkfifo(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_mkfifo_trampoline() +var libc_mkfifo_trampoline_addr uintptr //go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib" @@ -1566,14 +1625,14 @@ func Mknod(path string, mode uint32, dev int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_mknod_trampoline() +var libc_mknod_trampoline_addr uintptr //go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib" @@ -1585,7 +1644,7 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { if err != nil { return } - r0, _, e1 := syscall_syscall(funcPC(libc_open_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1593,7 +1652,7 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { return } -func libc_open_trampoline() +var libc_open_trampoline_addr uintptr //go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib" @@ -1605,7 +1664,7 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { if err != nil { return } - r0, _, e1 := syscall_syscall6(funcPC(libc_openat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1613,7 +1672,7 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { return } -func libc_openat_trampoline() +var libc_openat_trampoline_addr uintptr //go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib" @@ -1625,7 +1684,7 @@ func Pathconf(path string, name int) (val int, err error) { if err != nil { return } - r0, _, e1 := syscall_syscall(funcPC(libc_pathconf_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1633,7 +1692,7 @@ func Pathconf(path string, name int) (val int, err error) { return } -func libc_pathconf_trampoline() +var libc_pathconf_trampoline_addr uintptr //go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib" @@ -1646,7 +1705,7 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := syscall_syscall6(funcPC(libc_pread_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1654,7 +1713,7 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) { return } -func libc_pread_trampoline() +var libc_pread_trampoline_addr uintptr //go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib" @@ -1667,7 +1726,7 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := syscall_syscall6(funcPC(libc_pwrite_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1675,7 +1734,7 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) { return } -func libc_pwrite_trampoline() +var libc_pwrite_trampoline_addr uintptr //go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib" @@ -1688,7 +1747,7 @@ func read(fd int, p []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1696,7 +1755,7 @@ func read(fd int, p []byte) (n int, err error) { return } -func libc_read_trampoline() +var libc_read_trampoline_addr uintptr //go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" @@ -1714,7 +1773,7 @@ func Readlink(path string, buf []byte) (n int, err error) { } else { _p1 = unsafe.Pointer(&_zero) } - r0, _, e1 := syscall_syscall(funcPC(libc_readlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1722,7 +1781,7 @@ func Readlink(path string, buf []byte) (n int, err error) { return } -func libc_readlink_trampoline() +var libc_readlink_trampoline_addr uintptr //go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib" @@ -1740,7 +1799,7 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { } 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) + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1748,7 +1807,7 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { return } -func libc_readlinkat_trampoline() +var libc_readlinkat_trampoline_addr uintptr //go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib" @@ -1765,14 +1824,14 @@ func Rename(from string, to string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_rename_trampoline() +var libc_rename_trampoline_addr uintptr //go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib" @@ -1789,14 +1848,14 @@ func Renameat(fromfd int, from string, tofd int, to string) (err error) { 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) + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, 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() +var libc_renameat_trampoline_addr uintptr //go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib" @@ -1808,14 +1867,14 @@ func Revoke(path string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_revoke_trampoline() +var libc_revoke_trampoline_addr uintptr //go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib" @@ -1827,21 +1886,21 @@ func Rmdir(path string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_rmdir_trampoline() +var libc_rmdir_trampoline_addr uintptr //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)) + r0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence)) newoffset = int64(r0) if e1 != 0 { err = errnoErr(e1) @@ -1849,14 +1908,14 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { return } -func libc_lseek_trampoline() +var libc_lseek_trampoline_addr uintptr //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(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { - r0, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, 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) @@ -1864,49 +1923,49 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err return } -func libc_select_trampoline() +var libc_select_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setegid_trampoline() +var libc_setegid_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_seteuid_trampoline() +var libc_seteuid_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setgid_trampoline() +var libc_setgid_trampoline_addr uintptr //go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib" @@ -1918,105 +1977,105 @@ func Setlogin(name string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setlogin_trampoline() +var libc_setlogin_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setpgid_trampoline() +var libc_setpgid_trampoline_addr uintptr //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)) + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setpriority_trampoline() +var libc_setpriority_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_setprivexec_trampoline_addr, uintptr(flag), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setprivexec_trampoline() +var libc_setprivexec_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setregid_trampoline() +var libc_setregid_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setreuid_trampoline() +var libc_setreuid_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall(libc_setrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setrlimit_trampoline() +var libc_setrlimit_trampoline_addr uintptr //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) + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) pid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -2024,35 +2083,35 @@ func Setsid() (pid int, err error) { return } -func libc_setsid_trampoline() +var libc_setsid_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_settimeofday_trampoline() +var libc_settimeofday_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setuid_trampoline() +var libc_setuid_trampoline_addr uintptr //go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib" @@ -2069,14 +2128,14 @@ func Symlink(path string, link string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_symlink_trampoline() +var libc_symlink_trampoline_addr uintptr //go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib" @@ -2093,28 +2152,28 @@ func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_symlinkat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) if e1 != 0 { err = errnoErr(e1) } return } -func libc_symlinkat_trampoline() +var libc_symlinkat_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_sync_trampoline() +var libc_sync_trampoline_addr uintptr //go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib" @@ -2126,26 +2185,26 @@ func Truncate(path string, length int64) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + _, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_truncate_trampoline() +var libc_truncate_trampoline_addr uintptr //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) + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) oldmask = int(r0) return } -func libc_umask_trampoline() +var libc_umask_trampoline_addr uintptr //go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib" @@ -2157,14 +2216,14 @@ func Undelete(path string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_undelete_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_undelete_trampoline() +var libc_undelete_trampoline_addr uintptr //go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib" @@ -2176,14 +2235,14 @@ func Unlink(path string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_unlink_trampoline() +var libc_unlink_trampoline_addr uintptr //go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib" @@ -2195,14 +2254,14 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_unlinkat_trampoline() +var libc_unlinkat_trampoline_addr uintptr //go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib" @@ -2214,14 +2273,14 @@ func Unmount(path string, flags int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_unmount_trampoline() +var libc_unmount_trampoline_addr uintptr //go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib" @@ -2234,7 +2293,7 @@ func write(fd int, p []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -2242,14 +2301,14 @@ func write(fd int, p []byte) (n int, err error) { return } -func libc_write_trampoline() +var libc_write_trampoline_addr uintptr //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)) + r0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) ret = uintptr(r0) if e1 != 0 { err = errnoErr(e1) @@ -2257,28 +2316,28 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) ( return } -func libc_mmap_trampoline() +var libc_mmap_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_munmap_trampoline() +var libc_munmap_trampoline_addr uintptr //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)) + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -2289,7 +2348,7 @@ func readlen(fd int, buf *byte, nbuf int) (n int, err error) { // 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)) + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -2300,14 +2359,14 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { // 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) + _, _, e1 := syscall_syscall(libc_fstat64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_fstat64_trampoline() +var libc_fstat64_trampoline_addr uintptr //go:cgo_import_dynamic libc_fstat64 fstat64 "/usr/lib/libSystem.B.dylib" @@ -2319,35 +2378,35 @@ func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { 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) + _, _, e1 := syscall_syscall6(libc_fstatat64_trampoline_addr, 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() +var libc_fstatat64_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_fstatfs64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_fstatfs64_trampoline() +var libc_fstatfs64_trampoline_addr uintptr //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 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)) + r0, _, e1 := syscall_syscall(libc_getfsstat64_trampoline_addr, uintptr(buf), uintptr(size), uintptr(flags)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -2355,7 +2414,7 @@ func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { return } -func libc_getfsstat64_trampoline() +var libc_getfsstat64_trampoline_addr uintptr //go:cgo_import_dynamic libc_getfsstat64 getfsstat64 "/usr/lib/libSystem.B.dylib" @@ -2367,28 +2426,28 @@ func Lstat(path string, stat *Stat_t) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_lstat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_lstat64_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_lstat64_trampoline() +var libc_lstat64_trampoline_addr uintptr //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 ptrace1(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) + _, _, e1 := syscall_syscall6(libc_ptrace_trampoline_addr, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_ptrace_trampoline() +var libc_ptrace_trampoline_addr uintptr //go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" @@ -2400,14 +2459,14 @@ func Stat(path string, stat *Stat_t) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_stat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_stat64_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_stat64_trampoline() +var libc_stat64_trampoline_addr uintptr //go:cgo_import_dynamic libc_stat64 stat64 "/usr/lib/libSystem.B.dylib" @@ -2419,13 +2478,13 @@ func Statfs(path string, stat *Statfs_t) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_statfs64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_statfs64_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_statfs64_trampoline() +var libc_statfs64_trampoline_addr uintptr //go:cgo_import_dynamic libc_statfs64 statfs64 "/usr/lib/libSystem.B.dylib" diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s index b8f316e67..eac6ca806 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s @@ -5,287 +5,879 @@ // +build go1.12 #include "textflag.h" -TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0 + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getgroups(SB) -TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setgroups(SB) -TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_wait4(SB) -TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 +DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_accept(SB) -TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 +DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_bind(SB) -TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 +DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_connect(SB) -TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_socket(SB) -TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getsockopt(SB) -TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setsockopt(SB) -TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getpeername(SB) -TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getsockname(SB) -TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_shutdown(SB) -TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_socketpair(SB) -TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_recvfrom(SB) -TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sendto(SB) -TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_recvmsg(SB) -TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sendmsg(SB) -TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_kevent(SB) -TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_utimes(SB) -TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_futimes(SB) -TEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_poll(SB) -TEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_madvise(SB) -TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 +DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mlock(SB) -TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mlockall(SB) -TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mprotect(SB) -TEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_msync(SB) -TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_munlock(SB) -TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_munlockall(SB) -TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) + +TEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_pipe(SB) -TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_pipe_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB) + +TEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getxattr(SB) -TEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB) + +TEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fgetxattr(SB) -TEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fgetxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB) + +TEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setxattr(SB) -TEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB) + +TEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fsetxattr(SB) -TEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fsetxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB) + +TEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_removexattr(SB) -TEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_removexattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB) + +TEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fremovexattr(SB) -TEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fremovexattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB) + +TEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_listxattr(SB) -TEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_listxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB) + +TEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_flistxattr(SB) -TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_flistxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB) + +TEXT libc_setattrlist_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setattrlist(SB) -TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setattrlist_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setattrlist_trampoline_addr(SB)/8, $libc_setattrlist_trampoline<>(SB) + +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fcntl(SB) -TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_kill(SB) -TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_ioctl(SB) -TEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sysctl(SB) -TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) + +TEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sendfile(SB) -TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_sendfile_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendfile_trampoline_addr(SB)/8, $libc_sendfile_trampoline<>(SB) + +TEXT libc_shmat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmat(SB) + +GLOBL ·libc_shmat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmat_trampoline_addr(SB)/8, $libc_shmat_trampoline<>(SB) + +TEXT libc_shmctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmctl(SB) + +GLOBL ·libc_shmctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmctl_trampoline_addr(SB)/8, $libc_shmctl_trampoline<>(SB) + +TEXT libc_shmdt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmdt(SB) + +GLOBL ·libc_shmdt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmdt_trampoline_addr(SB)/8, $libc_shmdt_trampoline<>(SB) + +TEXT libc_shmget_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmget(SB) + +GLOBL ·libc_shmget_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmget_trampoline_addr(SB)/8, $libc_shmget_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_access(SB) -TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 +DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_adjtime(SB) -TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_chdir(SB) -TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_chflags(SB) -TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_chmod(SB) -TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_chown(SB) -TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_chroot(SB) -TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) + +TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_clock_gettime(SB) -TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_close(SB) -TEXT ·libc_clonefile_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 +DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) + +TEXT libc_clonefile_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_clonefile(SB) -TEXT ·libc_clonefileat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_clonefile_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clonefile_trampoline_addr(SB)/8, $libc_clonefile_trampoline<>(SB) + +TEXT libc_clonefileat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_clonefileat(SB) -TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_clonefileat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clonefileat_trampoline_addr(SB)/8, $libc_clonefileat_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_dup(SB) -TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_dup2(SB) -TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) + +TEXT libc_exchangedata_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_exchangedata(SB) -TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_exchangedata_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exchangedata_trampoline_addr(SB)/8, $libc_exchangedata_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_exit(SB) -TEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_faccessat(SB) -TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchdir(SB) -TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchflags(SB) -TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchmod(SB) -TEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchmodat(SB) -TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchown(SB) -TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchownat(SB) -TEXT ·libc_fclonefileat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) + +TEXT libc_fclonefileat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fclonefileat(SB) -TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fclonefileat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fclonefileat_trampoline_addr(SB)/8, $libc_fclonefileat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_flock(SB) -TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fpathconf(SB) -TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fsync(SB) -TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_ftruncate(SB) -TEXT ·libc_getcwd_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getcwd(SB) -TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) + +TEXT libc_getdtablesize_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getdtablesize(SB) -TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getdtablesize_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getdtablesize_trampoline_addr(SB)/8, $libc_getdtablesize_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getegid(SB) -TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_geteuid(SB) -TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getgid(SB) -TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getpgid(SB) -TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getpgrp(SB) -TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getpid(SB) -TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getppid(SB) -TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getpriority(SB) -TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getrlimit(SB) -TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getrusage(SB) -TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getsid(SB) -TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_gettimeofday(SB) -TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getuid(SB) -TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_issetugid(SB) -TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_kqueue(SB) -TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_lchown(SB) -TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_link(SB) -TEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 +DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_linkat(SB) -TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_listen(SB) -TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mkdir(SB) -TEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mkdirat(SB) -TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mkfifo(SB) -TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mknod(SB) -TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_open(SB) -TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 +DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_openat(SB) -TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_pathconf(SB) -TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_pread(SB) -TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_pwrite(SB) -TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_read(SB) -TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 +DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_readlink(SB) -TEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_readlinkat(SB) -TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_rename(SB) -TEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_renameat(SB) -TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_revoke(SB) -TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 +DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_rmdir(SB) -TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_lseek(SB) -TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_select(SB) -TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 +DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setegid(SB) -TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_seteuid(SB) -TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setgid(SB) -TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setlogin(SB) -TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setpgid(SB) -TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setpriority(SB) -TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setprivexec_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setprivexec(SB) -TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setprivexec_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setprivexec_trampoline_addr(SB)/8, $libc_setprivexec_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setregid(SB) -TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setreuid(SB) -TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setrlimit_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setrlimit(SB) -TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setrlimit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setrlimit_trampoline_addr(SB)/8, $libc_setrlimit_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setsid(SB) -TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_settimeofday(SB) -TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setuid(SB) -TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_symlink(SB) -TEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_symlinkat(SB) -TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sync(SB) -TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_truncate(SB) -TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_umask(SB) -TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 +DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) + +TEXT libc_undelete_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_undelete(SB) -TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_undelete_trampoline_addr(SB), RODATA, $8 +DATA ·libc_undelete_trampoline_addr(SB)/8, $libc_undelete_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_unlink(SB) -TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_unlinkat(SB) -TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_unmount(SB) -TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_write(SB) -TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 +DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mmap(SB) -TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_munmap(SB) -TEXT ·libc_fstat64_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) + +TEXT libc_fstat64_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fstat64(SB) -TEXT ·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fstat64_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstat64_trampoline_addr(SB)/8, $libc_fstat64_trampoline<>(SB) + +TEXT libc_fstatat64_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fstatat64(SB) -TEXT ·libc_fstatfs64_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fstatat64_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatat64_trampoline_addr(SB)/8, $libc_fstatat64_trampoline<>(SB) + +TEXT libc_fstatfs64_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fstatfs64(SB) -TEXT ·libc_getfsstat64_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fstatfs64_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatfs64_trampoline_addr(SB)/8, $libc_fstatfs64_trampoline<>(SB) + +TEXT libc_getfsstat64_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getfsstat64(SB) -TEXT ·libc_lstat64_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getfsstat64_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getfsstat64_trampoline_addr(SB)/8, $libc_getfsstat64_trampoline<>(SB) + +TEXT libc_lstat64_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_lstat64(SB) -TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_lstat64_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lstat64_trampoline_addr(SB)/8, $libc_lstat64_trampoline<>(SB) + +TEXT libc_ptrace_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_ptrace(SB) -TEXT ·libc_stat64_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_ptrace_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ptrace_trampoline_addr(SB)/8, $libc_ptrace_trampoline<>(SB) + +TEXT libc_stat64_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_stat64(SB) -TEXT ·libc_statfs64_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_stat64_trampoline_addr(SB), RODATA, $8 +DATA ·libc_stat64_trampoline_addr(SB)/8, $libc_stat64_trampoline<>(SB) + +TEXT libc_statfs64_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_statfs64(SB) + +GLOBL ·libc_statfs64_trampoline_addr(SB), RODATA, $8 +DATA ·libc_statfs64_trampoline_addr(SB)/8, $libc_statfs64_trampoline<>(SB) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go deleted file mode 100644 index ed437f89a..000000000 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go +++ /dev/null @@ -1,40 +0,0 @@ -// go run mksyscall.go -l32 -tags darwin,arm,go1.13 syscall_darwin.1_13.go -// Code generated by the command above; see README.md. DO NOT EDIT. - -//go:build darwin && arm && go1.13 -// +build darwin,arm,go1.13 - -package unix - -import ( - "syscall" - "unsafe" -) - -var _ syscall.Errno - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func closedir(dir uintptr) (err error) { - _, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_closedir_trampoline() - -//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { - r0, _, _ := syscall_syscall(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) - res = Errno(r0) - return -} - -func libc_readdir_r_trampoline() - -//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.s b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.s deleted file mode 100644 index 0cc80ad87..000000000 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.s +++ /dev/null @@ -1,13 +0,0 @@ -// go run mkasm_darwin.go arm -// Code generated by the command above; DO NOT EDIT. - -//go:build go1.13 -// +build go1.13 - -#include "textflag.h" -TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0 - JMP libc_fdopendir(SB) -TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0 - JMP libc_closedir(SB) -TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0 - JMP libc_readdir_r(SB) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go deleted file mode 100644 index 7f88cb5ea..000000000 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go +++ /dev/null @@ -1,2417 +0,0 @@ -// 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. - -//go:build darwin && arm && go1.12 -// +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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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 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: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: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 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: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: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: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: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: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: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: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: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 pipe(p *[2]int32) (err error) { - _, _, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), uintptr(unsafe.Pointer(p)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_pipe_trampoline() - -//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: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: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: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: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: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: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: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: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: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 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: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 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: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: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 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: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 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: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: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: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: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: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: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: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: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: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: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 Clonefile(src string, dst string, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(src) - if err != nil { - return - } - var _p1 *byte - _p1, err = BytePtrFromString(dst) - if err != nil { - return - } - _, _, e1 := syscall_syscall(funcPC(libc_clonefile_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_clonefile_trampoline() - -//go:cgo_import_dynamic libc_clonefile clonefile "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(src) - if err != nil { - return - } - var _p1 *byte - _p1, err = BytePtrFromString(dst) - if err != nil { - return - } - _, _, e1 := syscall_syscall6(funcPC(libc_clonefileat_trampoline), uintptr(srcDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_clonefileat_trampoline() - -//go:cgo_import_dynamic libc_clonefileat clonefileat "/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: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: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: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: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: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: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: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: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: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: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: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 Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(dst) - if err != nil { - return - } - _, _, e1 := syscall_syscall6(funcPC(libc_fclonefileat_trampoline), uintptr(srcDirfd), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_fclonefileat_trampoline() - -//go:cgo_import_dynamic libc_fclonefileat fclonefileat "/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: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: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: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: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 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_syscall(funcPC(libc_getcwd_trampoline), uintptr(_p0), uintptr(len(buf)), 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_getcwd_trampoline() - -//go:cgo_import_dynamic libc_getcwd getcwd "/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: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: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: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: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: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: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: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: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: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: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: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: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 Gettimeofday(tp *Timeval) (err error) { - _, _, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_gettimeofday_trampoline() - -//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 Getuid() (uid int) { - r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0) - uid = int(r0) - return -} - -func libc_getuid_trampoline() - -//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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { - r0, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), 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 -} - -func libc_select_trampoline() - -//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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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 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: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: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: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: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: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: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:cgo_import_dynamic libc_statfs statfs "/usr/lib/libSystem.B.dylib" diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s deleted file mode 100644 index a99f9c111..000000000 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s +++ /dev/null @@ -1,289 +0,0 @@ -// go run mkasm_darwin.go arm -// Code generated by the command above; DO NOT EDIT. - -//go:build go1.12 -// +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_utimes_trampoline(SB),NOSPLIT,$0-0 - JMP libc_utimes(SB) -TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 - JMP libc_futimes(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_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_fcntl_trampoline(SB),NOSPLIT,$0-0 - JMP libc_fcntl(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_sysctl_trampoline(SB),NOSPLIT,$0-0 - JMP libc_sysctl(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_clonefile_trampoline(SB),NOSPLIT,$0-0 - JMP libc_clonefile(SB) -TEXT ·libc_clonefileat_trampoline(SB),NOSPLIT,$0-0 - JMP libc_clonefileat(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_fclonefileat_trampoline(SB),NOSPLIT,$0-0 - JMP libc_fclonefileat(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_getcwd_trampoline(SB),NOSPLIT,$0-0 - JMP libc_getcwd(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_gettimeofday_trampoline(SB),NOSPLIT,$0-0 - JMP libc_gettimeofday(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_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/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go index d30ec4e29..cec595d55 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go @@ -16,25 +16,25 @@ var _ syscall.Errno // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func closedir(dir uintptr) (err error) { - _, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0) + _, _, e1 := syscall_syscall(libc_closedir_trampoline_addr, uintptr(dir), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_closedir_trampoline() +var libc_closedir_trampoline_addr uintptr //go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { - r0, _, _ := syscall_syscall(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) + r0, _, _ := syscall_syscall(libc_readdir_r_trampoline_addr, uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) res = Errno(r0) return } -func libc_readdir_r_trampoline() +var libc_readdir_r_trampoline_addr uintptr //go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s index a5f96ffb0..357989722 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s @@ -5,9 +5,21 @@ // +build go1.13 #include "textflag.h" -TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0 + +TEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fdopendir(SB) -TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fdopendir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB) + +TEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_closedir(SB) -TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_closedir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB) + +TEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_readdir_r(SB) + +GLOBL ·libc_readdir_r_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go index a10df58d0..cf71be3ed 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -16,7 +16,7 @@ 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) + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -24,28 +24,28 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) { return } -func libc_getgroups_trampoline() +var libc_getgroups_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setgroups_trampoline() +var libc_setgroups_trampoline_addr uintptr //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) + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) wpid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -53,14 +53,14 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err return } -func libc_wait4_trampoline() +var libc_wait4_trampoline_addr uintptr //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))) + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -68,42 +68,42 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { return } -func libc_accept_trampoline() +var libc_accept_trampoline_addr uintptr //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)) + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_bind_trampoline() +var libc_bind_trampoline_addr uintptr //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)) + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_connect_trampoline() +var libc_connect_trampoline_addr uintptr //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)) + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -111,91 +111,91 @@ func socket(domain int, typ int, proto int) (fd int, err error) { return } -func libc_socket_trampoline() +var libc_socket_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_getsockopt_trampoline() +var libc_getsockopt_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setsockopt_trampoline() +var libc_setsockopt_trampoline_addr uintptr //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))) + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) if e1 != 0 { err = errnoErr(e1) } return } -func libc_getpeername_trampoline() +var libc_getpeername_trampoline_addr uintptr //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))) + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) if e1 != 0 { err = errnoErr(e1) } return } -func libc_getsockname_trampoline() +var libc_getsockname_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_shutdown_trampoline() +var libc_shutdown_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_socketpair_trampoline() +var libc_socketpair_trampoline_addr uintptr //go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib" @@ -208,7 +208,7 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl } 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))) + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, 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) @@ -216,7 +216,7 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl return } -func libc_recvfrom_trampoline() +var libc_recvfrom_trampoline_addr uintptr //go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib" @@ -229,21 +229,21 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) ( } 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)) + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_sendto_trampoline() +var libc_sendto_trampoline_addr uintptr //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)) + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -251,14 +251,14 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { return } -func libc_recvmsg_trampoline() +var libc_recvmsg_trampoline_addr uintptr //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)) + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -266,14 +266,14 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { return } -func libc_sendmsg_trampoline() +var libc_sendmsg_trampoline_addr uintptr //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))) + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -281,7 +281,7 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne return } -func libc_kevent_trampoline() +var libc_kevent_trampoline_addr uintptr //go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" @@ -293,35 +293,35 @@ func utimes(path string, timeval *[2]Timeval) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_utimes_trampoline() +var libc_utimes_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_futimes_trampoline() +var libc_futimes_trampoline_addr uintptr //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 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)) + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -329,7 +329,7 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { return } -func libc_poll_trampoline() +var libc_poll_trampoline_addr uintptr //go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" @@ -342,14 +342,14 @@ func Madvise(b []byte, behav int) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := syscall_syscall(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav)) + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_madvise_trampoline() +var libc_madvise_trampoline_addr uintptr //go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib" @@ -362,28 +362,28 @@ func Mlock(b []byte) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := syscall_syscall(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_mlock_trampoline() +var libc_mlock_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_mlockall_trampoline() +var libc_mlockall_trampoline_addr uintptr //go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib" @@ -396,14 +396,14 @@ func Mprotect(b []byte, prot int) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := syscall_syscall(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot)) + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_mprotect_trampoline() +var libc_mprotect_trampoline_addr uintptr //go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib" @@ -416,14 +416,14 @@ func Msync(b []byte, flags int) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := syscall_syscall(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags)) + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_msync_trampoline() +var libc_msync_trampoline_addr uintptr //go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib" @@ -436,42 +436,42 @@ func Munlock(b []byte) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := syscall_syscall(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_munlock_trampoline() +var libc_munlock_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_munlockall_trampoline() +var libc_munlockall_trampoline_addr uintptr //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 pipe(p *[2]int32) (err error) { - _, _, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), uintptr(unsafe.Pointer(p)), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_pipe_trampoline_addr, uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_pipe_trampoline() +var libc_pipe_trampoline_addr uintptr //go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" @@ -488,7 +488,7 @@ func getxattr(path string, attr string, dest *byte, size int, position uint32, o 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)) + r0, _, e1 := syscall_syscall6(libc_getxattr_trampoline_addr, 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) @@ -496,7 +496,7 @@ func getxattr(path string, attr string, dest *byte, size int, position uint32, o return } -func libc_getxattr_trampoline() +var libc_getxattr_trampoline_addr uintptr //go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib" @@ -508,7 +508,7 @@ func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, optio 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)) + r0, _, e1 := syscall_syscall6(libc_fgetxattr_trampoline_addr, 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) @@ -516,7 +516,7 @@ func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, optio return } -func libc_fgetxattr_trampoline() +var libc_fgetxattr_trampoline_addr uintptr //go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib" @@ -533,14 +533,14 @@ func setxattr(path string, attr string, data *byte, size int, position uint32, o 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)) + _, _, e1 := syscall_syscall6(libc_setxattr_trampoline_addr, 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() +var libc_setxattr_trampoline_addr uintptr //go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib" @@ -552,14 +552,14 @@ func fsetxattr(fd int, attr string, data *byte, size int, position uint32, optio 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)) + _, _, e1 := syscall_syscall6(libc_fsetxattr_trampoline_addr, 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() +var libc_fsetxattr_trampoline_addr uintptr //go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib" @@ -576,14 +576,14 @@ func removexattr(path string, attr string, options int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_removexattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + _, _, e1 := syscall_syscall(libc_removexattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_removexattr_trampoline() +var libc_removexattr_trampoline_addr uintptr //go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib" @@ -595,14 +595,14 @@ func fremovexattr(fd int, attr string, options int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + _, _, e1 := syscall_syscall(libc_fremovexattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_fremovexattr_trampoline() +var libc_fremovexattr_trampoline_addr uintptr //go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib" @@ -614,7 +614,7 @@ func listxattr(path string, dest *byte, size int, options int) (sz int, err erro 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) + r0, _, e1 := syscall_syscall6(libc_listxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) sz = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -622,14 +622,14 @@ func listxattr(path string, dest *byte, size int, options int) (sz int, err erro return } -func libc_listxattr_trampoline() +var libc_listxattr_trampoline_addr uintptr //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) + r0, _, e1 := syscall_syscall6(libc_flistxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) sz = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -637,28 +637,28 @@ func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { return } -func libc_flistxattr_trampoline() +var libc_flistxattr_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall6(libc_setattrlist_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setattrlist_trampoline() +var libc_setattrlist_trampoline_addr uintptr //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 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)) + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -666,35 +666,35 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { return } -func libc_fcntl_trampoline() +var libc_fcntl_trampoline_addr uintptr //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 kill(pid int, signum int, posix int) (err error) { - _, _, e1 := syscall_syscall(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix)) + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), uintptr(posix)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_kill_trampoline() +var libc_kill_trampoline_addr uintptr //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)) + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_ioctl_trampoline() +var libc_ioctl_trampoline_addr uintptr //go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" @@ -707,61 +707,120 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) } 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)) + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, 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() +var libc_sysctl_trampoline_addr uintptr //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 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)) + _, _, e1 := syscall_syscall6(libc_sendfile_trampoline_addr, 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() +var libc_sendfile_trampoline_addr uintptr //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 shmat(id int, addr uintptr, flag int) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall(libc_shmat_trampoline_addr, uintptr(id), uintptr(addr), uintptr(flag)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmat shmat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) { + r0, _, e1 := syscall_syscall(libc_shmctl_trampoline_addr, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf))) + result = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmctl shmctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmdt(addr uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_shmdt_trampoline_addr, uintptr(addr), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmdt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmdt shmdt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmget(key int, size int, flag int) (id int, err error) { + r0, _, e1 := syscall_syscall(libc_shmget_trampoline_addr, uintptr(key), uintptr(size), uintptr(flag)) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmget_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmget shmget "/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) + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_access_trampoline() +var libc_access_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_adjtime_trampoline() +var libc_adjtime_trampoline_addr uintptr //go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib" @@ -773,14 +832,14 @@ func Chdir(path string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_chdir_trampoline() +var libc_chdir_trampoline_addr uintptr //go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" @@ -792,14 +851,14 @@ func Chflags(path string, flags int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_chflags_trampoline() +var libc_chflags_trampoline_addr uintptr //go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib" @@ -811,14 +870,14 @@ func Chmod(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_chmod_trampoline() +var libc_chmod_trampoline_addr uintptr //go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib" @@ -830,14 +889,14 @@ func Chown(path string, uid int, gid int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_chown_trampoline() +var libc_chown_trampoline_addr uintptr //go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib" @@ -849,42 +908,42 @@ func Chroot(path string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_chroot_trampoline() +var libc_chroot_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_clock_gettime_trampoline() +var libc_clock_gettime_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_close_trampoline() +var libc_close_trampoline_addr uintptr //go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" @@ -901,14 +960,14 @@ func Clonefile(src string, dst string, flags int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_clonefile_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags)) + _, _, e1 := syscall_syscall(libc_clonefile_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_clonefile_trampoline() +var libc_clonefile_trampoline_addr uintptr //go:cgo_import_dynamic libc_clonefile clonefile "/usr/lib/libSystem.B.dylib" @@ -925,21 +984,21 @@ func Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) if err != nil { return } - _, _, e1 := syscall_syscall6(funcPC(libc_clonefileat_trampoline), uintptr(srcDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + _, _, e1 := syscall_syscall6(libc_clonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_clonefileat_trampoline() +var libc_clonefileat_trampoline_addr uintptr //go:cgo_import_dynamic libc_clonefileat clonefileat "/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) + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) nfd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -947,21 +1006,21 @@ func Dup(fd int) (nfd int, err error) { return } -func libc_dup_trampoline() +var libc_dup_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_dup2_trampoline() +var libc_dup2_trampoline_addr uintptr //go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib" @@ -978,25 +1037,25 @@ func Exchangedata(path1 string, path2 string, options int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_exchangedata_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + _, _, e1 := syscall_syscall(libc_exchangedata_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_exchangedata_trampoline() +var libc_exchangedata_trampoline_addr uintptr //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) + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) return } -func libc_exit_trampoline() +var libc_exit_trampoline_addr uintptr //go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib" @@ -1008,56 +1067,56 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall6(funcPC(libc_faccessat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_faccessat_trampoline() +var libc_faccessat_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_fchdir_trampoline() +var libc_fchdir_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_fchflags_trampoline() +var libc_fchflags_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_fchmod_trampoline() +var libc_fchmod_trampoline_addr uintptr //go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib" @@ -1069,28 +1128,28 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall6(funcPC(libc_fchmodat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_fchmodat_trampoline() +var libc_fchmodat_trampoline_addr uintptr //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)) + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_fchown_trampoline() +var libc_fchown_trampoline_addr uintptr //go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib" @@ -1102,14 +1161,14 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall6(funcPC(libc_fchownat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_fchownat_trampoline() +var libc_fchownat_trampoline_addr uintptr //go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib" @@ -1121,35 +1180,35 @@ func Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) if err != nil { return } - _, _, e1 := syscall_syscall6(funcPC(libc_fclonefileat_trampoline), uintptr(srcDirfd), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall6(libc_fclonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_fclonefileat_trampoline() +var libc_fclonefileat_trampoline_addr uintptr //go:cgo_import_dynamic libc_fclonefileat fclonefileat "/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) + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_flock_trampoline() +var libc_flock_trampoline_addr uintptr //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) + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1157,35 +1216,35 @@ func Fpathconf(fd int, name int) (val int, err error) { return } -func libc_fpathconf_trampoline() +var libc_fpathconf_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_fsync_trampoline() +var libc_fsync_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_ftruncate_trampoline() +var libc_ftruncate_trampoline_addr uintptr //go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib" @@ -1198,7 +1257,7 @@ func Getcwd(buf []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := syscall_syscall(funcPC(libc_getcwd_trampoline), uintptr(_p0), uintptr(len(buf)), 0) + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1206,62 +1265,62 @@ func Getcwd(buf []byte) (n int, err error) { return } -func libc_getcwd_trampoline() +var libc_getcwd_trampoline_addr uintptr //go:cgo_import_dynamic libc_getcwd getcwd "/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) + r0, _, _ := syscall_syscall(libc_getdtablesize_trampoline_addr, 0, 0, 0) size = int(r0) return } -func libc_getdtablesize_trampoline() +var libc_getdtablesize_trampoline_addr uintptr //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) + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) egid = int(r0) return } -func libc_getegid_trampoline() +var libc_getegid_trampoline_addr uintptr //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) + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) uid = int(r0) return } -func libc_geteuid_trampoline() +var libc_geteuid_trampoline_addr uintptr //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) + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) gid = int(r0) return } -func libc_getgid_trampoline() +var libc_getgid_trampoline_addr uintptr //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) + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) pgid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1269,50 +1328,50 @@ func Getpgid(pid int) (pgid int, err error) { return } -func libc_getpgid_trampoline() +var libc_getpgid_trampoline_addr uintptr //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) + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) pgrp = int(r0) return } -func libc_getpgrp_trampoline() +var libc_getpgrp_trampoline_addr uintptr //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) + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) pid = int(r0) return } -func libc_getpid_trampoline() +var libc_getpid_trampoline_addr uintptr //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) + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) ppid = int(r0) return } -func libc_getppid_trampoline() +var libc_getppid_trampoline_addr uintptr //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) + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) prio = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1320,42 +1379,42 @@ func Getpriority(which int, who int) (prio int, err error) { return } -func libc_getpriority_trampoline() +var libc_getpriority_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_getrlimit_trampoline() +var libc_getrlimit_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_getrusage_trampoline() +var libc_getrusage_trampoline_addr uintptr //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) + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) sid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1363,52 +1422,52 @@ func Getsid(pid int) (sid int, err error) { return } -func libc_getsid_trampoline() +var libc_getsid_trampoline_addr uintptr //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 Gettimeofday(tp *Timeval) (err error) { - _, _, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_gettimeofday_trampoline() +var libc_gettimeofday_trampoline_addr uintptr //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 Getuid() (uid int) { - r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) uid = int(r0) return } -func libc_getuid_trampoline() +var libc_getuid_trampoline_addr uintptr //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) + r0, _, _ := syscall_rawSyscall(libc_issetugid_trampoline_addr, 0, 0, 0) tainted = bool(r0 != 0) return } -func libc_issetugid_trampoline() +var libc_issetugid_trampoline_addr uintptr //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) + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1416,7 +1475,7 @@ func Kqueue() (fd int, err error) { return } -func libc_kqueue_trampoline() +var libc_kqueue_trampoline_addr uintptr //go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" @@ -1428,14 +1487,14 @@ func Lchown(path string, uid int, gid int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_lchown_trampoline() +var libc_lchown_trampoline_addr uintptr //go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib" @@ -1452,14 +1511,14 @@ func Link(path string, link string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_link_trampoline() +var libc_link_trampoline_addr uintptr //go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib" @@ -1476,28 +1535,28 @@ func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err er 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) + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, 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() +var libc_linkat_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_listen_trampoline() +var libc_listen_trampoline_addr uintptr //go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib" @@ -1509,14 +1568,14 @@ func Mkdir(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_mkdir_trampoline() +var libc_mkdir_trampoline_addr uintptr //go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib" @@ -1528,14 +1587,14 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_mkdirat_trampoline() +var libc_mkdirat_trampoline_addr uintptr //go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib" @@ -1547,14 +1606,14 @@ func Mkfifo(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_mkfifo_trampoline() +var libc_mkfifo_trampoline_addr uintptr //go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib" @@ -1566,14 +1625,14 @@ func Mknod(path string, mode uint32, dev int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_mknod_trampoline() +var libc_mknod_trampoline_addr uintptr //go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib" @@ -1585,7 +1644,7 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { if err != nil { return } - r0, _, e1 := syscall_syscall(funcPC(libc_open_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1593,7 +1652,7 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { return } -func libc_open_trampoline() +var libc_open_trampoline_addr uintptr //go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib" @@ -1605,7 +1664,7 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { if err != nil { return } - r0, _, e1 := syscall_syscall6(funcPC(libc_openat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1613,7 +1672,7 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { return } -func libc_openat_trampoline() +var libc_openat_trampoline_addr uintptr //go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib" @@ -1625,7 +1684,7 @@ func Pathconf(path string, name int) (val int, err error) { if err != nil { return } - r0, _, e1 := syscall_syscall(funcPC(libc_pathconf_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1633,7 +1692,7 @@ func Pathconf(path string, name int) (val int, err error) { return } -func libc_pathconf_trampoline() +var libc_pathconf_trampoline_addr uintptr //go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib" @@ -1646,7 +1705,7 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := syscall_syscall6(funcPC(libc_pread_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1654,7 +1713,7 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) { return } -func libc_pread_trampoline() +var libc_pread_trampoline_addr uintptr //go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib" @@ -1667,7 +1726,7 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := syscall_syscall6(funcPC(libc_pwrite_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1675,7 +1734,7 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) { return } -func libc_pwrite_trampoline() +var libc_pwrite_trampoline_addr uintptr //go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib" @@ -1688,7 +1747,7 @@ func read(fd int, p []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1696,7 +1755,7 @@ func read(fd int, p []byte) (n int, err error) { return } -func libc_read_trampoline() +var libc_read_trampoline_addr uintptr //go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" @@ -1714,7 +1773,7 @@ func Readlink(path string, buf []byte) (n int, err error) { } else { _p1 = unsafe.Pointer(&_zero) } - r0, _, e1 := syscall_syscall(funcPC(libc_readlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1722,7 +1781,7 @@ func Readlink(path string, buf []byte) (n int, err error) { return } -func libc_readlink_trampoline() +var libc_readlink_trampoline_addr uintptr //go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib" @@ -1740,7 +1799,7 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { } 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) + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1748,7 +1807,7 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { return } -func libc_readlinkat_trampoline() +var libc_readlinkat_trampoline_addr uintptr //go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib" @@ -1765,14 +1824,14 @@ func Rename(from string, to string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_rename_trampoline() +var libc_rename_trampoline_addr uintptr //go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib" @@ -1789,14 +1848,14 @@ func Renameat(fromfd int, from string, tofd int, to string) (err error) { 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) + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, 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() +var libc_renameat_trampoline_addr uintptr //go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib" @@ -1808,14 +1867,14 @@ func Revoke(path string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_revoke_trampoline() +var libc_revoke_trampoline_addr uintptr //go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib" @@ -1827,21 +1886,21 @@ func Rmdir(path string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_rmdir_trampoline() +var libc_rmdir_trampoline_addr uintptr //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)) + r0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence)) newoffset = int64(r0) if e1 != 0 { err = errnoErr(e1) @@ -1849,14 +1908,14 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { return } -func libc_lseek_trampoline() +var libc_lseek_trampoline_addr uintptr //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(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { - r0, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, 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) @@ -1864,49 +1923,49 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err return } -func libc_select_trampoline() +var libc_select_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setegid_trampoline() +var libc_setegid_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_seteuid_trampoline() +var libc_seteuid_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setgid_trampoline() +var libc_setgid_trampoline_addr uintptr //go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib" @@ -1918,105 +1977,105 @@ func Setlogin(name string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setlogin_trampoline() +var libc_setlogin_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setpgid_trampoline() +var libc_setpgid_trampoline_addr uintptr //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)) + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setpriority_trampoline() +var libc_setpriority_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_setprivexec_trampoline_addr, uintptr(flag), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setprivexec_trampoline() +var libc_setprivexec_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setregid_trampoline() +var libc_setregid_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setreuid_trampoline() +var libc_setreuid_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall(libc_setrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setrlimit_trampoline() +var libc_setrlimit_trampoline_addr uintptr //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) + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) pid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -2024,35 +2083,35 @@ func Setsid() (pid int, err error) { return } -func libc_setsid_trampoline() +var libc_setsid_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_settimeofday_trampoline() +var libc_settimeofday_trampoline_addr uintptr //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) + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_setuid_trampoline() +var libc_setuid_trampoline_addr uintptr //go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib" @@ -2069,14 +2128,14 @@ func Symlink(path string, link string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_symlink_trampoline() +var libc_symlink_trampoline_addr uintptr //go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib" @@ -2093,28 +2152,28 @@ func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_symlinkat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) if e1 != 0 { err = errnoErr(e1) } return } -func libc_symlinkat_trampoline() +var libc_symlinkat_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_sync_trampoline() +var libc_sync_trampoline_addr uintptr //go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib" @@ -2126,26 +2185,26 @@ func Truncate(path string, length int64) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + _, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_truncate_trampoline() +var libc_truncate_trampoline_addr uintptr //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) + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) oldmask = int(r0) return } -func libc_umask_trampoline() +var libc_umask_trampoline_addr uintptr //go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib" @@ -2157,14 +2216,14 @@ func Undelete(path string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_undelete_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_undelete_trampoline() +var libc_undelete_trampoline_addr uintptr //go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib" @@ -2176,14 +2235,14 @@ func Unlink(path string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_unlink_trampoline() +var libc_unlink_trampoline_addr uintptr //go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib" @@ -2195,14 +2254,14 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } return } -func libc_unlinkat_trampoline() +var libc_unlinkat_trampoline_addr uintptr //go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib" @@ -2214,14 +2273,14 @@ func Unmount(path string, flags int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_unmount_trampoline() +var libc_unmount_trampoline_addr uintptr //go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib" @@ -2234,7 +2293,7 @@ func write(fd int, p []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -2242,14 +2301,14 @@ func write(fd int, p []byte) (n int, err error) { return } -func libc_write_trampoline() +var libc_write_trampoline_addr uintptr //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)) + r0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) ret = uintptr(r0) if e1 != 0 { err = errnoErr(e1) @@ -2257,28 +2316,28 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) ( return } -func libc_mmap_trampoline() +var libc_mmap_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_munmap_trampoline() +var libc_munmap_trampoline_addr uintptr //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)) + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -2289,7 +2348,7 @@ func readlen(fd int, buf *byte, nbuf int) (n int, err error) { // 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)) + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -2300,14 +2359,14 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { // 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) + _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_fstat_trampoline() +var libc_fstat_trampoline_addr uintptr //go:cgo_import_dynamic libc_fstat fstat "/usr/lib/libSystem.B.dylib" @@ -2319,35 +2378,35 @@ func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { 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) + _, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, 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() +var libc_fstatat_trampoline_addr uintptr //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) + _, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_fstatfs_trampoline() +var libc_fstatfs_trampoline_addr uintptr //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)) + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(buf), uintptr(size), uintptr(flags)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -2355,7 +2414,7 @@ func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { return } -func libc_getfsstat_trampoline() +var libc_getfsstat_trampoline_addr uintptr //go:cgo_import_dynamic libc_getfsstat getfsstat "/usr/lib/libSystem.B.dylib" @@ -2367,28 +2426,28 @@ func Lstat(path string, stat *Stat_t) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_lstat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_lstat_trampoline() +var libc_lstat_trampoline_addr uintptr //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 ptrace1(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) + _, _, e1 := syscall_syscall6(libc_ptrace_trampoline_addr, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_ptrace_trampoline() +var libc_ptrace_trampoline_addr uintptr //go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" @@ -2400,14 +2459,14 @@ func Stat(path string, stat *Stat_t) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_stat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_stat_trampoline() +var libc_stat_trampoline_addr uintptr //go:cgo_import_dynamic libc_stat stat "/usr/lib/libSystem.B.dylib" @@ -2419,13 +2478,13 @@ func Statfs(path string, stat *Statfs_t) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(funcPC(libc_statfs_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } -func libc_statfs_trampoline() +var libc_statfs_trampoline_addr uintptr //go:cgo_import_dynamic libc_statfs statfs "/usr/lib/libSystem.B.dylib" diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s index e30a69740..4ebcf2175 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s @@ -5,287 +5,879 @@ // +build go1.12 #include "textflag.h" -TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0 + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getgroups(SB) -TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setgroups(SB) -TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_wait4(SB) -TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 +DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_accept(SB) -TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 +DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_bind(SB) -TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 +DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_connect(SB) -TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_socket(SB) -TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getsockopt(SB) -TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setsockopt(SB) -TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getpeername(SB) -TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getsockname(SB) -TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_shutdown(SB) -TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_socketpair(SB) -TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_recvfrom(SB) -TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sendto(SB) -TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_recvmsg(SB) -TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sendmsg(SB) -TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_kevent(SB) -TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_utimes(SB) -TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_futimes(SB) -TEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_poll(SB) -TEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_madvise(SB) -TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 +DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mlock(SB) -TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mlockall(SB) -TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mprotect(SB) -TEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_msync(SB) -TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_munlock(SB) -TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_munlockall(SB) -TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) + +TEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_pipe(SB) -TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_pipe_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB) + +TEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getxattr(SB) -TEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB) + +TEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fgetxattr(SB) -TEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fgetxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB) + +TEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setxattr(SB) -TEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB) + +TEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fsetxattr(SB) -TEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fsetxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB) + +TEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_removexattr(SB) -TEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_removexattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB) + +TEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fremovexattr(SB) -TEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fremovexattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB) + +TEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_listxattr(SB) -TEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_listxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB) + +TEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_flistxattr(SB) -TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_flistxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB) + +TEXT libc_setattrlist_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setattrlist(SB) -TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setattrlist_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setattrlist_trampoline_addr(SB)/8, $libc_setattrlist_trampoline<>(SB) + +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fcntl(SB) -TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_kill(SB) -TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_ioctl(SB) -TEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sysctl(SB) -TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) + +TEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sendfile(SB) -TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_sendfile_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendfile_trampoline_addr(SB)/8, $libc_sendfile_trampoline<>(SB) + +TEXT libc_shmat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmat(SB) + +GLOBL ·libc_shmat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmat_trampoline_addr(SB)/8, $libc_shmat_trampoline<>(SB) + +TEXT libc_shmctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmctl(SB) + +GLOBL ·libc_shmctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmctl_trampoline_addr(SB)/8, $libc_shmctl_trampoline<>(SB) + +TEXT libc_shmdt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmdt(SB) + +GLOBL ·libc_shmdt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmdt_trampoline_addr(SB)/8, $libc_shmdt_trampoline<>(SB) + +TEXT libc_shmget_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmget(SB) + +GLOBL ·libc_shmget_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmget_trampoline_addr(SB)/8, $libc_shmget_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_access(SB) -TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 +DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_adjtime(SB) -TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_chdir(SB) -TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_chflags(SB) -TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_chmod(SB) -TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_chown(SB) -TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_chroot(SB) -TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) + +TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_clock_gettime(SB) -TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_close(SB) -TEXT ·libc_clonefile_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 +DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) + +TEXT libc_clonefile_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_clonefile(SB) -TEXT ·libc_clonefileat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_clonefile_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clonefile_trampoline_addr(SB)/8, $libc_clonefile_trampoline<>(SB) + +TEXT libc_clonefileat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_clonefileat(SB) -TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_clonefileat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clonefileat_trampoline_addr(SB)/8, $libc_clonefileat_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_dup(SB) -TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_dup2(SB) -TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) + +TEXT libc_exchangedata_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_exchangedata(SB) -TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_exchangedata_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exchangedata_trampoline_addr(SB)/8, $libc_exchangedata_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_exit(SB) -TEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_faccessat(SB) -TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchdir(SB) -TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchflags(SB) -TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchmod(SB) -TEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchmodat(SB) -TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchown(SB) -TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fchownat(SB) -TEXT ·libc_fclonefileat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) + +TEXT libc_fclonefileat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fclonefileat(SB) -TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fclonefileat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fclonefileat_trampoline_addr(SB)/8, $libc_fclonefileat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_flock(SB) -TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fpathconf(SB) -TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fsync(SB) -TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_ftruncate(SB) -TEXT ·libc_getcwd_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getcwd(SB) -TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) + +TEXT libc_getdtablesize_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getdtablesize(SB) -TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getdtablesize_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getdtablesize_trampoline_addr(SB)/8, $libc_getdtablesize_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getegid(SB) -TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_geteuid(SB) -TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getgid(SB) -TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getpgid(SB) -TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getpgrp(SB) -TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getpid(SB) -TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getppid(SB) -TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getpriority(SB) -TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getrlimit(SB) -TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getrusage(SB) -TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getsid(SB) -TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_gettimeofday(SB) -TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getuid(SB) -TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_issetugid(SB) -TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_kqueue(SB) -TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_lchown(SB) -TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_link(SB) -TEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 +DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_linkat(SB) -TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_listen(SB) -TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mkdir(SB) -TEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mkdirat(SB) -TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mkfifo(SB) -TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mknod(SB) -TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_open(SB) -TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 +DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_openat(SB) -TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_pathconf(SB) -TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_pread(SB) -TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_pwrite(SB) -TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_read(SB) -TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 +DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_readlink(SB) -TEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_readlinkat(SB) -TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_rename(SB) -TEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_renameat(SB) -TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_revoke(SB) -TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 +DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_rmdir(SB) -TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_lseek(SB) -TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_select(SB) -TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 +DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setegid(SB) -TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_seteuid(SB) -TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setgid(SB) -TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setlogin(SB) -TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setpgid(SB) -TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setpriority(SB) -TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setprivexec_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setprivexec(SB) -TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setprivexec_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setprivexec_trampoline_addr(SB)/8, $libc_setprivexec_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setregid(SB) -TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setreuid(SB) -TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setrlimit_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setrlimit(SB) -TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setrlimit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setrlimit_trampoline_addr(SB)/8, $libc_setrlimit_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setsid(SB) -TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_settimeofday(SB) -TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_setuid(SB) -TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_symlink(SB) -TEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_symlinkat(SB) -TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sync(SB) -TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_truncate(SB) -TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_umask(SB) -TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 +DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) + +TEXT libc_undelete_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_undelete(SB) -TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_undelete_trampoline_addr(SB), RODATA, $8 +DATA ·libc_undelete_trampoline_addr(SB)/8, $libc_undelete_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_unlink(SB) -TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_unlinkat(SB) -TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_unmount(SB) -TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_write(SB) -TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 +DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_mmap(SB) -TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_munmap(SB) -TEXT ·libc_fstat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) + +TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fstat(SB) -TEXT ·libc_fstatat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB) + +TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fstatat(SB) -TEXT ·libc_fstatfs_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB) + +TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fstatfs(SB) -TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB) + +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getfsstat(SB) -TEXT ·libc_lstat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB) + +TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_lstat(SB) -TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB) + +TEXT libc_ptrace_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_ptrace(SB) -TEXT ·libc_stat_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_ptrace_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ptrace_trampoline_addr(SB)/8, $libc_ptrace_trampoline<>(SB) + +TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_stat(SB) -TEXT ·libc_statfs_trampoline(SB),NOSPLIT,$0-0 + +GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB) + +TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_statfs(SB) + +GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux.go index 7305cc915..4f5da1f54 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux.go @@ -48,6 +48,16 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (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) @@ -100,6 +110,16 @@ func openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err e // 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 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) @@ -1201,7 +1221,7 @@ func PivotRoot(newroot string, putold string) (err error) { // 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) { +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) @@ -1935,8 +1955,63 @@ func ProcessVMWritev(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags u // 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) +func PidfdOpen(pid int, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_PIDFD_OPEN, uintptr(pid), 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 PidfdGetfd(pidfd int, targetfd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_PIDFD_GETFD, uintptr(pidfd), uintptr(targetfd), 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 shmat(id int, addr uintptr, flag int) (ret uintptr, err error) { + r0, _, e1 := Syscall(SYS_SHMAT, uintptr(id), uintptr(addr), uintptr(flag)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) { + r0, _, e1 := Syscall(SYS_SHMCTL, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf))) + result = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmdt(addr uintptr) (err error) { + _, _, e1 := Syscall(SYS_SHMDT, uintptr(addr), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmget(key int, size int, flag int) (id int, err error) { + r0, _, e1 := Syscall(SYS_SHMGET, uintptr(key), uintptr(size), uintptr(flag)) + id = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go index e37096e4d..ff90c81e7 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go @@ -46,37 +46,6 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { // 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 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 { @@ -181,17 +150,6 @@ func Getuid() (uid int) { // 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 { @@ -566,14 +524,3 @@ func utimes(path string, times *[2]Timeval) (err error) { } 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/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go index 9919d8486..fa7d3dbe4 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go @@ -46,27 +46,6 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { // 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 { @@ -191,17 +170,6 @@ func Getuid() (uid int) { // 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 { @@ -711,27 +679,6 @@ func utimes(path string, times *[2]Timeval) (err error) { // 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 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) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go index 076754d48..654f91530 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go @@ -46,16 +46,6 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { // 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 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) @@ -235,27 +225,6 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { // 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 { @@ -340,17 +309,6 @@ func Getuid() (uid int) { // 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) @@ -681,17 +639,6 @@ func setrlimit(resource int, rlim *rlimit32) (err error) { // 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 { diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go index 4703cf3c3..6d1552885 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go @@ -46,27 +46,6 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { // 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 { @@ -544,17 +523,6 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { // 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 { @@ -706,18 +674,6 @@ func Pause() (err error) { // 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) @@ -746,14 +702,3 @@ func setrlimit(resource int, rlim *rlimit32) (err error) { } 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/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go index a134f9a4d..1e20d72df 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go @@ -46,27 +46,6 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { // 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 { @@ -717,14 +696,3 @@ func stat(path string, st *stat_t) (err error) { } 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/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go index b1fff2d94..82b5e2d9e 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go @@ -46,27 +46,6 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { // 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 { @@ -717,14 +696,3 @@ func stat(path string, st *stat_t) (err error) { } 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/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go index d13d6da01..a0440c1d4 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go @@ -46,27 +46,6 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { // 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 { @@ -544,17 +523,6 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { // 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 { @@ -706,18 +674,6 @@ func Pause() (err error) { // 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) @@ -746,14 +702,3 @@ func setrlimit(resource int, rlim *rlimit32) (err error) { } 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/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go index 927cf1a00..5864b9ca6 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go @@ -46,27 +46,6 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { // 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 { @@ -161,17 +140,6 @@ func Getuid() (uid int) { // 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 { @@ -717,27 +685,6 @@ func setrlimit(resource int, rlim *rlimit32) (err error) { // 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 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>>32), uintptr(off), uintptr(n>>32), uintptr(n)) if e1 != 0 { diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go index da8ec0396..beeb49e34 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go @@ -46,27 +46,6 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { // 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 { @@ -191,17 +170,6 @@ func Getuid() (uid int) { // 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 { @@ -763,27 +731,6 @@ func utimes(path string, times *[2]Timeval) (err error) { // 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 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 { diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go index 083f493bb..53139b82c 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go @@ -46,27 +46,6 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { // 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 { @@ -191,17 +170,6 @@ func Getuid() (uid int) { // 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 { @@ -763,27 +731,6 @@ func utimes(path string, times *[2]Timeval) (err error) { // 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 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 { diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go index bb347407d..202add37d 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go @@ -46,27 +46,6 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { // 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 { @@ -191,17 +170,6 @@ func Getuid() (uid int) { // 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) @@ -553,17 +521,6 @@ func utimes(path string, times *[2]Timeval) (err error) { // 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) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go index 8edc517e1..2ab268c34 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go @@ -73,16 +73,6 @@ func Fadvise(fd int, offset int64, length int64, advice int) (err error) { // 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 { @@ -180,17 +170,6 @@ func Getuid() (uid int) { // 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) @@ -718,24 +697,3 @@ func utimes(path string, times *[2]Timeval) (err error) { } 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 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/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go index 4e18d5c99..b5f926cee 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go @@ -141,6 +141,11 @@ import ( //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:cgo_import_dynamic libc_port_create port_create "libc.so" +//go:cgo_import_dynamic libc_port_associate port_associate "libc.so" +//go:cgo_import_dynamic libc_port_dissociate port_dissociate "libc.so" +//go:cgo_import_dynamic libc_port_get port_get "libc.so" +//go:cgo_import_dynamic libc_port_getn port_getn "libc.so" //go:linkname procpipe libc_pipe //go:linkname procpipe2 libc_pipe2 @@ -272,6 +277,11 @@ import ( //go:linkname procgetpeername libc_getpeername //go:linkname procsetsockopt libc_setsockopt //go:linkname procrecvfrom libc_recvfrom +//go:linkname procport_create libc_port_create +//go:linkname procport_associate libc_port_associate +//go:linkname procport_dissociate libc_port_dissociate +//go:linkname procport_get libc_port_get +//go:linkname procport_getn libc_port_getn var ( procpipe, @@ -403,7 +413,12 @@ var ( proc__xnet_getsockopt, procgetpeername, procsetsockopt, - procrecvfrom syscallFunc + procrecvfrom, + procport_create, + procport_associate, + procport_dissociate, + procport_get, + procport_getn syscallFunc ) // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1981,3 +1996,58 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl } return } + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func port_create() (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_create)), 0, 0, 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 port_associate(port int, source int, object uintptr, events int, user *byte) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_associate)), 5, uintptr(port), uintptr(source), uintptr(object), uintptr(events), uintptr(unsafe.Pointer(user)), 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func port_dissociate(port int, source int, object uintptr) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_dissociate)), 3, uintptr(port), uintptr(source), uintptr(object), 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 port_get(port int, pe *portEvent, timeout *Timespec) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_get)), 3, uintptr(port), uintptr(unsafe.Pointer(pe)), uintptr(unsafe.Pointer(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 port_getn(port int, pe *portEvent, max uint32, nget *uint32, timeout *Timespec) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_getn)), 5, uintptr(port), uintptr(unsafe.Pointer(pe)), uintptr(max), uintptr(unsafe.Pointer(nget)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go index 8285ab841..f2079457c 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go @@ -364,6 +364,22 @@ func Dup2(oldfd int, newfd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Errno2() (er2 int) { + uer2, _, _ := syscall_syscall(SYS___ERRNO2, 0, 0, 0) + er2 = int(uer2) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Err2ad() (eadd *int) { + ueadd, _, _ := syscall_syscall(SYS___ERR2AD, 0, 0, 0) + eadd = (*int)(unsafe.Pointer(ueadd)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Exit(code int) { syscall_syscall(SYS_EXIT, uintptr(code), 0, 0) return @@ -531,7 +547,18 @@ func W_Getmntent(buff *byte, size int) (lastsys int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mount(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) { +func W_Getmntent_A(buff *byte, size int) (lastsys int, err error) { + r0, _, e1 := syscall_syscall(SYS___W_GETMNTENT_A, uintptr(unsafe.Pointer(buff)), uintptr(size), 0) + lastsys = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount_LE(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -561,7 +588,7 @@ func Mount(path string, filesystem string, fstype string, mtm uint32, parmlen in // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Unmount(filesystem string, mtm int) (err error) { +func unmount(filesystem string, mtm int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(filesystem) if err != nil { @@ -1215,3 +1242,14 @@ func utimes(path string, timeval *[2]Timeval) (err error) { } return } + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nmsgsfds int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (ret int, err error) { + r0, _, e1 := syscall_syscall6(SYS_SELECT, uintptr(nmsgsfds), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go deleted file mode 100644 index 1794ffc92..000000000 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go +++ /dev/null @@ -1,438 +0,0 @@ -// 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. - -//go:build 386 && darwin -// +build 386,darwin - -package unix - -// Deprecated: Use libSystem wrappers instead of direct syscalls. -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/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go deleted file mode 100644 index 6dc736449..000000000 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go +++ /dev/null @@ -1,438 +0,0 @@ -// 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. - -//go:build arm && darwin -// +build arm,darwin - -package unix - -// Deprecated: Use libSystem wrappers instead of direct syscalls. -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/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go index fbc59b7fd..aa7ce85d1 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -439,4 +439,9 @@ const ( SYS_PROCESS_MADVISE = 440 SYS_EPOLL_PWAIT2 = 441 SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_MEMFD_SECRET = 447 ) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go index 04d16d771..b83032638 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -7,358 +7,363 @@ 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 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 - SYS_OPEN_TREE = 428 - SYS_MOVE_MOUNT = 429 - SYS_FSOPEN = 430 - SYS_FSCONFIG = 431 - SYS_FSMOUNT = 432 - SYS_FSPICK = 433 - SYS_PIDFD_OPEN = 434 - SYS_CLONE3 = 435 - SYS_CLOSE_RANGE = 436 - SYS_OPENAT2 = 437 - SYS_PIDFD_GETFD = 438 - SYS_FACCESSAT2 = 439 - SYS_PROCESS_MADVISE = 440 - SYS_EPOLL_PWAIT2 = 441 - SYS_MOUNT_SETATTR = 442 + 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 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_MEMFD_SECRET = 447 ) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go index 3b1c10513..d75f65a0a 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -403,4 +403,8 @@ const ( SYS_PROCESS_MADVISE = 440 SYS_EPOLL_PWAIT2 = 441 SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 ) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go index 3198adcf7..8b02f09e9 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -7,303 +7,308 @@ 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 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 - SYS_OPEN_TREE = 428 - SYS_MOVE_MOUNT = 429 - SYS_FSOPEN = 430 - SYS_FSCONFIG = 431 - SYS_FSMOUNT = 432 - SYS_FSPICK = 433 - SYS_PIDFD_OPEN = 434 - SYS_CLONE3 = 435 - SYS_CLOSE_RANGE = 436 - SYS_OPENAT2 = 437 - SYS_PIDFD_GETFD = 438 - SYS_FACCESSAT2 = 439 - SYS_PROCESS_MADVISE = 440 - SYS_EPOLL_PWAIT2 = 441 - SYS_MOUNT_SETATTR = 442 + 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 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_MEMFD_SECRET = 447 ) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go index c877ec6e6..026695abb 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -424,4 +424,8 @@ const ( SYS_PROCESS_MADVISE = 4440 SYS_EPOLL_PWAIT2 = 4441 SYS_MOUNT_SETATTR = 4442 + SYS_QUOTACTL_FD = 4443 + SYS_LANDLOCK_CREATE_RULESET = 4444 + SYS_LANDLOCK_ADD_RULE = 4445 + SYS_LANDLOCK_RESTRICT_SELF = 4446 ) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go index b5f290372..7320ba958 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -7,351 +7,355 @@ 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 - SYS_PIDFD_SEND_SIGNAL = 5424 - SYS_IO_URING_SETUP = 5425 - SYS_IO_URING_ENTER = 5426 - SYS_IO_URING_REGISTER = 5427 - SYS_OPEN_TREE = 5428 - SYS_MOVE_MOUNT = 5429 - SYS_FSOPEN = 5430 - SYS_FSCONFIG = 5431 - SYS_FSMOUNT = 5432 - SYS_FSPICK = 5433 - SYS_PIDFD_OPEN = 5434 - SYS_CLONE3 = 5435 - SYS_CLOSE_RANGE = 5436 - SYS_OPENAT2 = 5437 - SYS_PIDFD_GETFD = 5438 - SYS_FACCESSAT2 = 5439 - SYS_PROCESS_MADVISE = 5440 - SYS_EPOLL_PWAIT2 = 5441 - SYS_MOUNT_SETATTR = 5442 + 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 + SYS_PIDFD_SEND_SIGNAL = 5424 + SYS_IO_URING_SETUP = 5425 + SYS_IO_URING_ENTER = 5426 + SYS_IO_URING_REGISTER = 5427 + SYS_OPEN_TREE = 5428 + SYS_MOVE_MOUNT = 5429 + SYS_FSOPEN = 5430 + SYS_FSCONFIG = 5431 + SYS_FSMOUNT = 5432 + SYS_FSPICK = 5433 + SYS_PIDFD_OPEN = 5434 + SYS_CLONE3 = 5435 + SYS_CLOSE_RANGE = 5436 + SYS_OPENAT2 = 5437 + SYS_PIDFD_GETFD = 5438 + SYS_FACCESSAT2 = 5439 + SYS_PROCESS_MADVISE = 5440 + SYS_EPOLL_PWAIT2 = 5441 + SYS_MOUNT_SETATTR = 5442 + SYS_QUOTACTL_FD = 5443 + SYS_LANDLOCK_CREATE_RULESET = 5444 + SYS_LANDLOCK_ADD_RULE = 5445 + SYS_LANDLOCK_RESTRICT_SELF = 5446 ) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go index 46077689a..45082dd67 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -7,351 +7,355 @@ 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 - SYS_PIDFD_SEND_SIGNAL = 5424 - SYS_IO_URING_SETUP = 5425 - SYS_IO_URING_ENTER = 5426 - SYS_IO_URING_REGISTER = 5427 - SYS_OPEN_TREE = 5428 - SYS_MOVE_MOUNT = 5429 - SYS_FSOPEN = 5430 - SYS_FSCONFIG = 5431 - SYS_FSMOUNT = 5432 - SYS_FSPICK = 5433 - SYS_PIDFD_OPEN = 5434 - SYS_CLONE3 = 5435 - SYS_CLOSE_RANGE = 5436 - SYS_OPENAT2 = 5437 - SYS_PIDFD_GETFD = 5438 - SYS_FACCESSAT2 = 5439 - SYS_PROCESS_MADVISE = 5440 - SYS_EPOLL_PWAIT2 = 5441 - SYS_MOUNT_SETATTR = 5442 + 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 + SYS_PIDFD_SEND_SIGNAL = 5424 + SYS_IO_URING_SETUP = 5425 + SYS_IO_URING_ENTER = 5426 + SYS_IO_URING_REGISTER = 5427 + SYS_OPEN_TREE = 5428 + SYS_MOVE_MOUNT = 5429 + SYS_FSOPEN = 5430 + SYS_FSCONFIG = 5431 + SYS_FSMOUNT = 5432 + SYS_FSPICK = 5433 + SYS_PIDFD_OPEN = 5434 + SYS_CLONE3 = 5435 + SYS_CLOSE_RANGE = 5436 + SYS_OPENAT2 = 5437 + SYS_PIDFD_GETFD = 5438 + SYS_FACCESSAT2 = 5439 + SYS_PROCESS_MADVISE = 5440 + SYS_EPOLL_PWAIT2 = 5441 + SYS_MOUNT_SETATTR = 5442 + SYS_QUOTACTL_FD = 5443 + SYS_LANDLOCK_CREATE_RULESET = 5444 + SYS_LANDLOCK_ADD_RULE = 5445 + SYS_LANDLOCK_RESTRICT_SELF = 5446 ) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go index 80e6696b3..570a857a5 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -424,4 +424,8 @@ const ( SYS_PROCESS_MADVISE = 4440 SYS_EPOLL_PWAIT2 = 4441 SYS_MOUNT_SETATTR = 4442 + SYS_QUOTACTL_FD = 4443 + SYS_LANDLOCK_CREATE_RULESET = 4444 + SYS_LANDLOCK_ADD_RULE = 4445 + SYS_LANDLOCK_RESTRICT_SELF = 4446 ) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go index b9d697ffb..638498d62 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go @@ -431,4 +431,8 @@ const ( SYS_PROCESS_MADVISE = 440 SYS_EPOLL_PWAIT2 = 441 SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 ) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go index 08edc54d3..702beebfe 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -7,400 +7,404 @@ 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 - SYS_SEMTIMEDOP = 392 - SYS_SEMGET = 393 - SYS_SEMCTL = 394 - SYS_SHMGET = 395 - SYS_SHMCTL = 396 - SYS_SHMAT = 397 - SYS_SHMDT = 398 - SYS_MSGGET = 399 - SYS_MSGSND = 400 - SYS_MSGRCV = 401 - SYS_MSGCTL = 402 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 - SYS_OPEN_TREE = 428 - SYS_MOVE_MOUNT = 429 - SYS_FSOPEN = 430 - SYS_FSCONFIG = 431 - SYS_FSMOUNT = 432 - SYS_FSPICK = 433 - SYS_PIDFD_OPEN = 434 - SYS_CLONE3 = 435 - SYS_CLOSE_RANGE = 436 - SYS_OPENAT2 = 437 - SYS_PIDFD_GETFD = 438 - SYS_FACCESSAT2 = 439 - SYS_PROCESS_MADVISE = 440 - SYS_EPOLL_PWAIT2 = 441 - SYS_MOUNT_SETATTR = 442 + 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 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 ) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go index 33b33b083..bfc87ea44 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -7,400 +7,404 @@ 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 - SYS_SEMTIMEDOP = 392 - SYS_SEMGET = 393 - SYS_SEMCTL = 394 - SYS_SHMGET = 395 - SYS_SHMCTL = 396 - SYS_SHMAT = 397 - SYS_SHMDT = 398 - SYS_MSGGET = 399 - SYS_MSGSND = 400 - SYS_MSGRCV = 401 - SYS_MSGCTL = 402 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 - SYS_OPEN_TREE = 428 - SYS_MOVE_MOUNT = 429 - SYS_FSOPEN = 430 - SYS_FSCONFIG = 431 - SYS_FSMOUNT = 432 - SYS_FSPICK = 433 - SYS_PIDFD_OPEN = 434 - SYS_CLONE3 = 435 - SYS_CLOSE_RANGE = 436 - SYS_OPENAT2 = 437 - SYS_PIDFD_GETFD = 438 - SYS_FACCESSAT2 = 439 - SYS_PROCESS_MADVISE = 440 - SYS_EPOLL_PWAIT2 = 441 - SYS_MOUNT_SETATTR = 442 + 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 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 ) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go index 66c8a8e09..a390e147d 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -7,302 +7,306 @@ 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 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 - SYS_OPEN_TREE = 428 - SYS_MOVE_MOUNT = 429 - SYS_FSOPEN = 430 - SYS_FSCONFIG = 431 - SYS_FSMOUNT = 432 - SYS_FSPICK = 433 - SYS_PIDFD_OPEN = 434 - SYS_CLONE3 = 435 - SYS_CLOSE_RANGE = 436 - SYS_OPENAT2 = 437 - SYS_PIDFD_GETFD = 438 - SYS_FACCESSAT2 = 439 - SYS_PROCESS_MADVISE = 440 - SYS_EPOLL_PWAIT2 = 441 - SYS_MOUNT_SETATTR = 442 + 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 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 ) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go index aea5760ce..3e791e6cd 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -7,365 +7,369 @@ 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 - SYS_PKEY_MPROTECT = 384 - SYS_PKEY_ALLOC = 385 - SYS_PKEY_FREE = 386 - SYS_SEMTIMEDOP = 392 - SYS_SEMGET = 393 - SYS_SEMCTL = 394 - SYS_SHMGET = 395 - SYS_SHMCTL = 396 - SYS_SHMAT = 397 - SYS_SHMDT = 398 - SYS_MSGGET = 399 - SYS_MSGSND = 400 - SYS_MSGRCV = 401 - SYS_MSGCTL = 402 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 - SYS_OPEN_TREE = 428 - SYS_MOVE_MOUNT = 429 - SYS_FSOPEN = 430 - SYS_FSCONFIG = 431 - SYS_FSMOUNT = 432 - SYS_FSPICK = 433 - SYS_PIDFD_OPEN = 434 - SYS_CLONE3 = 435 - SYS_CLOSE_RANGE = 436 - SYS_OPENAT2 = 437 - SYS_PIDFD_GETFD = 438 - SYS_FACCESSAT2 = 439 - SYS_PROCESS_MADVISE = 440 - SYS_EPOLL_PWAIT2 = 441 - SYS_MOUNT_SETATTR = 442 + 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 + SYS_PKEY_MPROTECT = 384 + SYS_PKEY_ALLOC = 385 + SYS_PKEY_FREE = 386 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 ) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go index 488ca848d..78802a5cf 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -7,379 +7,383 @@ 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 - SYS_PKEY_MPROTECT = 362 - SYS_PKEY_ALLOC = 363 - SYS_PKEY_FREE = 364 - SYS_RSEQ = 365 - SYS_SEMTIMEDOP = 392 - SYS_SEMGET = 393 - SYS_SEMCTL = 394 - SYS_SHMGET = 395 - SYS_SHMCTL = 396 - SYS_SHMAT = 397 - SYS_SHMDT = 398 - SYS_MSGGET = 399 - SYS_MSGSND = 400 - SYS_MSGRCV = 401 - SYS_MSGCTL = 402 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 - SYS_OPEN_TREE = 428 - SYS_MOVE_MOUNT = 429 - SYS_FSOPEN = 430 - SYS_FSCONFIG = 431 - SYS_FSMOUNT = 432 - SYS_FSPICK = 433 - SYS_PIDFD_OPEN = 434 - SYS_CLOSE_RANGE = 436 - SYS_OPENAT2 = 437 - SYS_PIDFD_GETFD = 438 - SYS_FACCESSAT2 = 439 - SYS_PROCESS_MADVISE = 440 - SYS_EPOLL_PWAIT2 = 441 - SYS_MOUNT_SETATTR = 442 + 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 + SYS_PKEY_MPROTECT = 362 + SYS_PKEY_ALLOC = 363 + SYS_PKEY_FREE = 364 + SYS_RSEQ = 365 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 ) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go deleted file mode 100644 index 883b64a27..000000000 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go +++ /dev/null @@ -1,524 +0,0 @@ -// cgo -godefs types_darwin.go | go run mkpost.go -// Code generated by the command above; see README.md. DO NOT EDIT. - -//go:build 386 && darwin -// +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 - Atim Timespec - Mtim Timespec - Ctim Timespec - Btim 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]byte - Mntonname [1024]byte - Mntfromname [1024]byte - 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 -} - -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 -} - -type RawSockaddr struct { - Len uint8 - Family uint8 - Data [14]int8 -} - -type RawSockaddrAny struct { - Addr RawSockaddr - Pad [92]int8 -} - -type RawSockaddrCtl struct { - Sc_len uint8 - Sc_family uint8 - Ss_sysaddr uint16 - Sc_id uint32 - Sc_unit uint32 - Sc_reserved [5]uint32 -} - -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 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 - SizeofSockaddrCtl = 0x20 - SizeofLinger = 0x8 - SizeofIovec = 0x8 - SizeofIPMreq = 0x8 - SizeofIPMreqn = 0xc - 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 - 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 - 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 - Refcount int32 -} - -type RtMsghdr struct { - Msglen uint16 - Version uint8 - Type uint8 - Index uint16 - 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 - State uint32 - Filler [3]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 -} - -type CtlInfo struct { - Id uint32 - Name [96]byte -} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go index 2673e6c59..7efe5ccba 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go @@ -209,6 +209,92 @@ type RawSockaddrCtl struct { Sc_reserved [5]uint32 } +type RawSockaddrVM struct { + Len uint8 + Family uint8 + Reserved1 uint16 + Port uint32 + Cid uint32 +} + +type XVSockPCB struct { + Xv_len uint32 + Xv_vsockpp uint64 + Xvp_local_cid uint32 + Xvp_local_port uint32 + Xvp_remote_cid uint32 + Xvp_remote_port uint32 + Xvp_rxcnt uint32 + Xvp_txcnt uint32 + Xvp_peer_rxhiwat uint32 + Xvp_peer_rxcnt uint32 + Xvp_last_pid int32 + Xvp_gencnt uint64 + Xv_socket XSocket + _ [4]byte +} + +type XSocket struct { + Xso_len uint32 + Xso_so uint32 + So_type int16 + So_options int16 + So_linger int16 + So_state int16 + So_pcb uint32 + Xso_protocol int32 + Xso_family int32 + So_qlen int16 + So_incqlen int16 + So_qlimit int16 + So_timeo int16 + So_error uint16 + So_pgid int32 + So_oobmark uint32 + So_rcv XSockbuf + So_snd XSockbuf + So_uid uint32 +} + +type XSocket64 struct { + Xso_len uint32 + _ [8]byte + So_type int16 + So_options int16 + So_linger int16 + So_state int16 + _ [8]byte + Xso_protocol int32 + Xso_family int32 + So_qlen int16 + So_incqlen int16 + So_qlimit int16 + So_timeo int16 + So_error uint16 + So_pgid int32 + So_oobmark uint32 + So_rcv XSockbuf + So_snd XSockbuf + So_uid uint32 +} + +type XSockbuf struct { + Cc uint32 + Hiwat uint32 + Mbcnt uint32 + Mbmax uint32 + Lowat int32 + Flags int16 + Timeo int16 +} + +type XVSockPgen struct { + Len uint32 + Count uint64 + Gen uint64 + Sogen uint64 +} + type _Socklen uint32 type Xucred struct { @@ -287,6 +373,11 @@ const ( SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x14 SizeofSockaddrCtl = 0x20 + SizeofSockaddrVM = 0xc + SizeofXvsockpcb = 0xa8 + SizeofXSocket = 0x64 + SizeofXSockbuf = 0x18 + SizeofXVSockPgen = 0x20 SizeofXucred = 0x4c SizeofLinger = 0x8 SizeofIovec = 0x10 @@ -535,3 +626,143 @@ type CtlInfo struct { Id uint32 Name [96]byte } + +const SizeofKinfoProc = 0x288 + +type Eproc struct { + Paddr uintptr + Sess uintptr + Pcred Pcred + Ucred Ucred + Vm Vmspace + Ppid int32 + Pgid int32 + Jobc int16 + Tdev int32 + Tpgid int32 + Tsess uintptr + Wmesg [8]int8 + Xsize int32 + Xrssize int16 + Xccount int16 + Xswrss int16 + Flag int32 + Login [12]int8 + Spare [4]int32 + _ [4]byte +} + +type ExternProc struct { + P_starttime Timeval + P_vmspace *Vmspace + P_sigacts uintptr + P_flag int32 + P_stat int8 + P_pid int32 + P_oppid int32 + P_dupfd int32 + User_stack *int8 + Exit_thread *byte + P_debugger int32 + Sigwait int32 + P_estcpu uint32 + P_cpticks int32 + P_pctcpu uint32 + P_wchan *byte + P_wmesg *int8 + P_swtime uint32 + P_slptime uint32 + P_realtimer Itimerval + P_rtime Timeval + P_uticks uint64 + P_sticks uint64 + P_iticks uint64 + P_traceflag int32 + P_tracep uintptr + P_siglist int32 + P_textvp uintptr + P_holdcnt int32 + P_sigmask uint32 + P_sigignore uint32 + P_sigcatch uint32 + P_priority uint8 + P_usrpri uint8 + P_nice int8 + P_comm [17]int8 + P_pgrp uintptr + P_addr uintptr + P_xstat uint16 + P_acflag uint16 + P_ru *Rusage +} + +type Itimerval struct { + Interval Timeval + Value Timeval +} + +type KinfoProc struct { + Proc ExternProc + Eproc Eproc +} + +type Vmspace struct { + Dummy int32 + Dummy2 *int8 + Dummy3 [5]int32 + Dummy4 [3]*int8 +} + +type Pcred struct { + Pc_lock [72]int8 + Pc_ucred uintptr + P_ruid uint32 + P_svuid uint32 + P_rgid uint32 + P_svgid uint32 + P_refcnt int32 + _ [4]byte +} + +type Ucred struct { + Ref int32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 +} + +type SysvIpcPerm struct { + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint16 + _ uint16 + _ int32 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Lpid int32 + Cpid int32 + Nattch uint16 + _ [34]byte +} + +const ( + IPC_CREAT = 0x200 + IPC_EXCL = 0x400 + IPC_NOWAIT = 0x800 + IPC_PRIVATE = 0x0 +) + +const ( + IPC_RMID = 0x0 + IPC_SET = 0x1 + IPC_STAT = 0x2 +) + +const ( + SHM_RDONLY = 0x1000 + SHM_RND = 0x2000 +) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go deleted file mode 100644 index eef513385..000000000 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go +++ /dev/null @@ -1,524 +0,0 @@ -// cgo -godefs types_darwin.go | go run mkpost.go -// Code generated by the command above; see README.md. DO NOT EDIT. - -//go:build arm && darwin -// +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 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 - Atim Timespec - Mtim Timespec - Ctim Timespec - Btim 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]byte - Mntonname [1024]byte - Mntfromname [1024]byte - 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 -} - -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 -} - -type RawSockaddr struct { - Len uint8 - Family uint8 - Data [14]int8 -} - -type RawSockaddrAny struct { - Addr RawSockaddr - Pad [92]int8 -} - -type RawSockaddrCtl struct { - Sc_len uint8 - Sc_family uint8 - Ss_sysaddr uint16 - Sc_id uint32 - Sc_unit uint32 - Sc_reserved [5]uint32 -} - -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 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 - SizeofSockaddrCtl = 0x20 - SizeofLinger = 0x8 - SizeofIovec = 0x8 - SizeofIPMreq = 0x8 - SizeofIPMreqn = 0xc - 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 - 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 - 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 - Refcount int32 -} - -type RtMsghdr struct { - Msglen uint16 - Version uint8 - Type uint8 - Index uint16 - 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 - State uint32 - Filler [3]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 -} - -type CtlInfo struct { - Id uint32 - Name [96]byte -} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go index 1465cbcff..b23a2efe8 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go @@ -209,6 +209,92 @@ type RawSockaddrCtl struct { Sc_reserved [5]uint32 } +type RawSockaddrVM struct { + Len uint8 + Family uint8 + Reserved1 uint16 + Port uint32 + Cid uint32 +} + +type XVSockPCB struct { + Xv_len uint32 + Xv_vsockpp uint64 + Xvp_local_cid uint32 + Xvp_local_port uint32 + Xvp_remote_cid uint32 + Xvp_remote_port uint32 + Xvp_rxcnt uint32 + Xvp_txcnt uint32 + Xvp_peer_rxhiwat uint32 + Xvp_peer_rxcnt uint32 + Xvp_last_pid int32 + Xvp_gencnt uint64 + Xv_socket XSocket + _ [4]byte +} + +type XSocket struct { + Xso_len uint32 + Xso_so uint32 + So_type int16 + So_options int16 + So_linger int16 + So_state int16 + So_pcb uint32 + Xso_protocol int32 + Xso_family int32 + So_qlen int16 + So_incqlen int16 + So_qlimit int16 + So_timeo int16 + So_error uint16 + So_pgid int32 + So_oobmark uint32 + So_rcv XSockbuf + So_snd XSockbuf + So_uid uint32 +} + +type XSocket64 struct { + Xso_len uint32 + _ [8]byte + So_type int16 + So_options int16 + So_linger int16 + So_state int16 + _ [8]byte + Xso_protocol int32 + Xso_family int32 + So_qlen int16 + So_incqlen int16 + So_qlimit int16 + So_timeo int16 + So_error uint16 + So_pgid int32 + So_oobmark uint32 + So_rcv XSockbuf + So_snd XSockbuf + So_uid uint32 +} + +type XSockbuf struct { + Cc uint32 + Hiwat uint32 + Mbcnt uint32 + Mbmax uint32 + Lowat int32 + Flags int16 + Timeo int16 +} + +type XVSockPgen struct { + Len uint32 + Count uint64 + Gen uint64 + Sogen uint64 +} + type _Socklen uint32 type Xucred struct { @@ -287,6 +373,11 @@ const ( SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x14 SizeofSockaddrCtl = 0x20 + SizeofSockaddrVM = 0xc + SizeofXvsockpcb = 0xa8 + SizeofXSocket = 0x64 + SizeofXSockbuf = 0x18 + SizeofXVSockPgen = 0x20 SizeofXucred = 0x4c SizeofLinger = 0x8 SizeofIovec = 0x10 @@ -535,3 +626,143 @@ type CtlInfo struct { Id uint32 Name [96]byte } + +const SizeofKinfoProc = 0x288 + +type Eproc struct { + Paddr uintptr + Sess uintptr + Pcred Pcred + Ucred Ucred + Vm Vmspace + Ppid int32 + Pgid int32 + Jobc int16 + Tdev int32 + Tpgid int32 + Tsess uintptr + Wmesg [8]int8 + Xsize int32 + Xrssize int16 + Xccount int16 + Xswrss int16 + Flag int32 + Login [12]int8 + Spare [4]int32 + _ [4]byte +} + +type ExternProc struct { + P_starttime Timeval + P_vmspace *Vmspace + P_sigacts uintptr + P_flag int32 + P_stat int8 + P_pid int32 + P_oppid int32 + P_dupfd int32 + User_stack *int8 + Exit_thread *byte + P_debugger int32 + Sigwait int32 + P_estcpu uint32 + P_cpticks int32 + P_pctcpu uint32 + P_wchan *byte + P_wmesg *int8 + P_swtime uint32 + P_slptime uint32 + P_realtimer Itimerval + P_rtime Timeval + P_uticks uint64 + P_sticks uint64 + P_iticks uint64 + P_traceflag int32 + P_tracep uintptr + P_siglist int32 + P_textvp uintptr + P_holdcnt int32 + P_sigmask uint32 + P_sigignore uint32 + P_sigcatch uint32 + P_priority uint8 + P_usrpri uint8 + P_nice int8 + P_comm [17]int8 + P_pgrp uintptr + P_addr uintptr + P_xstat uint16 + P_acflag uint16 + P_ru *Rusage +} + +type Itimerval struct { + Interval Timeval + Value Timeval +} + +type KinfoProc struct { + Proc ExternProc + Eproc Eproc +} + +type Vmspace struct { + Dummy int32 + Dummy2 *int8 + Dummy3 [5]int32 + Dummy4 [3]*int8 +} + +type Pcred struct { + Pc_lock [72]int8 + Pc_ucred uintptr + P_ruid uint32 + P_svuid uint32 + P_rgid uint32 + P_svgid uint32 + P_refcnt int32 + _ [4]byte +} + +type Ucred struct { + Ref int32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 +} + +type SysvIpcPerm struct { + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint16 + _ uint16 + _ int32 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Lpid int32 + Cpid int32 + Nattch uint16 + _ [34]byte +} + +const ( + IPC_CREAT = 0x200 + IPC_EXCL = 0x400 + IPC_NOWAIT = 0x800 + IPC_PRIVATE = 0x0 +) + +const ( + IPC_RMID = 0x0 + IPC_SET = 0x1 + IPC_STAT = 0x2 +) + +const ( + SHM_RDONLY = 0x1000 + SHM_RND = 0x2000 +) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go index 1d049d7a1..d0ba8e9b8 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go @@ -431,6 +431,9 @@ type Winsize struct { const ( AT_FDCWD = 0xfffafdcd AT_SYMLINK_NOFOLLOW = 0x1 + AT_REMOVEDIR = 0x2 + AT_EACCESS = 0x4 + AT_SYMLINK_FOLLOW = 0x8 ) type PollFd struct { diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go index c51bc88ff..4eec078e5 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go @@ -31,6 +31,8 @@ type Timeval struct { Usec int32 } +type Time_t int32 + type Rusage struct { Utime Timeval Stime Timeval @@ -672,9 +674,10 @@ type Winsize struct { const ( AT_FDCWD = -0x64 - AT_REMOVEDIR = 0x800 - AT_SYMLINK_FOLLOW = 0x400 + AT_EACCESS = 0x100 AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 ) type PollFd struct { diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go index 395b69187..7622904a5 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go @@ -31,6 +31,8 @@ type Timeval struct { Usec int64 } +type Time_t int64 + type Rusage struct { Utime Timeval Stime Timeval @@ -675,9 +677,10 @@ type Winsize struct { const ( AT_FDCWD = -0x64 - AT_REMOVEDIR = 0x800 - AT_SYMLINK_FOLLOW = 0x400 + AT_EACCESS = 0x100 AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 ) type PollFd struct { diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go index d3f9d2541..19223ce8e 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go @@ -33,6 +33,8 @@ type Timeval struct { _ [4]byte } +type Time_t int32 + type Rusage struct { Utime Timeval Stime Timeval @@ -656,9 +658,10 @@ type Winsize struct { const ( AT_FDCWD = -0x64 - AT_REMOVEDIR = 0x800 - AT_SYMLINK_FOLLOW = 0x400 + AT_EACCESS = 0x100 AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 ) type PollFd struct { diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go index 434d6e8e8..8e3e33f67 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go @@ -31,6 +31,8 @@ type Timeval struct { Usec int64 } +type Time_t int64 + type Rusage struct { Utime Timeval Stime Timeval @@ -653,9 +655,10 @@ type Winsize struct { const ( AT_FDCWD = -0x64 - AT_REMOVEDIR = 0x800 - AT_SYMLINK_FOLLOW = 0x400 + AT_EACCESS = 0x100 AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 ) type PollFd struct { diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_illumos_amd64.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_illumos_amd64.go index 236f37ef6..4c485261d 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_illumos_amd64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_illumos_amd64.go @@ -13,6 +13,8 @@ const ( I_STR = 0x5308 I_POP = 0x5303 I_PUSH = 0x5302 + I_LINK = 0x530c + I_UNLINK = 0x530d I_PLINK = 0x5316 I_PUNLINK = 0x5317 diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux.go index 087323591..249ecfcd4 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux.go @@ -351,6 +351,13 @@ type RawSockaddrIUCV struct { Name [8]int8 } +type RawSockaddrNFC struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 +} + type _Socklen uint32 type Linger struct { @@ -445,6 +452,11 @@ type CanFilter struct { Mask uint32 } +type TCPRepairOpt struct { + Code uint32 + Val uint32 +} + const ( SizeofSockaddrInet4 = 0x10 SizeofSockaddrInet6 = 0x1c @@ -464,6 +476,7 @@ const ( SizeofSockaddrL2TPIP = 0x10 SizeofSockaddrL2TPIP6 = 0x20 SizeofSockaddrIUCV = 0x20 + SizeofSockaddrNFC = 0x10 SizeofLinger = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc @@ -476,6 +489,7 @@ const ( SizeofUcred = 0xc SizeofTCPInfo = 0x68 SizeofCanFilter = 0x8 + SizeofTCPRepairOpt = 0x8 ) const ( @@ -673,6 +687,16 @@ type NdMsg struct { Type uint8 } +const ( + ICMP_FILTER = 0x1 + + ICMPV6_FILTER = 0x1 + ICMPV6_FILTER_BLOCK = 0x1 + ICMPV6_FILTER_BLOCKOTHERS = 0x3 + ICMPV6_FILTER_PASS = 0x2 + ICMPV6_FILTER_PASSONLY = 0x4 +) + const ( SizeofSockFilter = 0x8 ) @@ -993,7 +1017,7 @@ const ( PERF_COUNT_SW_EMULATION_FAULTS = 0x8 PERF_COUNT_SW_DUMMY = 0x9 PERF_COUNT_SW_BPF_OUTPUT = 0xa - PERF_COUNT_SW_MAX = 0xb + PERF_COUNT_SW_MAX = 0xc PERF_SAMPLE_IP = 0x1 PERF_SAMPLE_TID = 0x2 PERF_SAMPLE_TIME = 0x4 @@ -1765,6 +1789,8 @@ const ( NFPROTO_NUMPROTO = 0xd ) +const SO_ORIGINAL_DST = 0x50 + type Nfgenmsg struct { Nfgen_family uint8 Version uint8 @@ -2330,8 +2356,8 @@ const ( SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 - SOF_TIMESTAMPING_LAST = 0x4000 - SOF_TIMESTAMPING_MASK = 0x7fff + SOF_TIMESTAMPING_LAST = 0x8000 + SOF_TIMESTAMPING_MASK = 0xffff SCM_TSTAMP_SND = 0x0 SCM_TSTAMP_SCHED = 0x1 @@ -2907,7 +2933,7 @@ const ( DEVLINK_CMD_TRAP_POLICER_NEW = 0x47 DEVLINK_CMD_TRAP_POLICER_DEL = 0x48 DEVLINK_CMD_HEALTH_REPORTER_TEST = 0x49 - DEVLINK_CMD_MAX = 0x49 + DEVLINK_CMD_MAX = 0x4d DEVLINK_PORT_TYPE_NOTSET = 0x0 DEVLINK_PORT_TYPE_AUTO = 0x1 DEVLINK_PORT_TYPE_ETH = 0x2 @@ -3130,7 +3156,7 @@ const ( DEVLINK_ATTR_RELOAD_ACTION_INFO = 0xa2 DEVLINK_ATTR_RELOAD_ACTION_STATS = 0xa3 DEVLINK_ATTR_PORT_PCI_SF_NUMBER = 0xa4 - DEVLINK_ATTR_MAX = 0xa4 + DEVLINK_ATTR_MAX = 0xa9 DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0 DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1 DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0 @@ -3426,7 +3452,7 @@ const ( ETHTOOL_MSG_CABLE_TEST_ACT = 0x1a ETHTOOL_MSG_CABLE_TEST_TDR_ACT = 0x1b ETHTOOL_MSG_TUNNEL_INFO_GET = 0x1c - ETHTOOL_MSG_USER_MAX = 0x1c + ETHTOOL_MSG_USER_MAX = 0x21 ETHTOOL_MSG_KERNEL_NONE = 0x0 ETHTOOL_MSG_STRSET_GET_REPLY = 0x1 ETHTOOL_MSG_LINKINFO_GET_REPLY = 0x2 @@ -3457,7 +3483,7 @@ const ( ETHTOOL_MSG_CABLE_TEST_NTF = 0x1b ETHTOOL_MSG_CABLE_TEST_TDR_NTF = 0x1c ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY = 0x1d - ETHTOOL_MSG_KERNEL_MAX = 0x1d + ETHTOOL_MSG_KERNEL_MAX = 0x22 ETHTOOL_A_HEADER_UNSPEC = 0x0 ETHTOOL_A_HEADER_DEV_INDEX = 0x1 ETHTOOL_A_HEADER_DEV_NAME = 0x2 @@ -3742,3 +3768,191 @@ const ( NLMSGERR_ATTR_OFFS = 0x2 NLMSGERR_ATTR_COOKIE = 0x3 ) + +type ( + EraseInfo struct { + Start uint32 + Length uint32 + } + EraseInfo64 struct { + Start uint64 + Length uint64 + } + MtdOobBuf struct { + Start uint32 + Length uint32 + Ptr *uint8 + } + MtdOobBuf64 struct { + Start uint64 + Pad uint32 + Length uint32 + Ptr uint64 + } + MtdWriteReq struct { + Start uint64 + Len uint64 + Ooblen uint64 + Data uint64 + Oob uint64 + Mode uint8 + _ [7]uint8 + } + MtdInfo struct { + Type uint8 + Flags uint32 + Size uint32 + Erasesize uint32 + Writesize uint32 + Oobsize uint32 + _ uint64 + } + RegionInfo struct { + Offset uint32 + Erasesize uint32 + Numblocks uint32 + Regionindex uint32 + } + OtpInfo struct { + Start uint32 + Length uint32 + Locked uint32 + } + NandOobinfo struct { + Useecc uint32 + Eccbytes uint32 + Oobfree [8][2]uint32 + Eccpos [32]uint32 + } + NandOobfree struct { + Offset uint32 + Length uint32 + } + NandEcclayout struct { + Eccbytes uint32 + Eccpos [64]uint32 + Oobavail uint32 + Oobfree [8]NandOobfree + } + MtdEccStats struct { + Corrected uint32 + Failed uint32 + Badblocks uint32 + Bbtblocks uint32 + } +) + +const ( + MTD_OPS_PLACE_OOB = 0x0 + MTD_OPS_AUTO_OOB = 0x1 + MTD_OPS_RAW = 0x2 +) + +const ( + MTD_FILE_MODE_NORMAL = 0x0 + MTD_FILE_MODE_OTP_FACTORY = 0x1 + MTD_FILE_MODE_OTP_USER = 0x2 + MTD_FILE_MODE_RAW = 0x3 +) + +const ( + NFC_CMD_UNSPEC = 0x0 + NFC_CMD_GET_DEVICE = 0x1 + NFC_CMD_DEV_UP = 0x2 + NFC_CMD_DEV_DOWN = 0x3 + NFC_CMD_DEP_LINK_UP = 0x4 + NFC_CMD_DEP_LINK_DOWN = 0x5 + NFC_CMD_START_POLL = 0x6 + NFC_CMD_STOP_POLL = 0x7 + NFC_CMD_GET_TARGET = 0x8 + NFC_EVENT_TARGETS_FOUND = 0x9 + NFC_EVENT_DEVICE_ADDED = 0xa + NFC_EVENT_DEVICE_REMOVED = 0xb + NFC_EVENT_TARGET_LOST = 0xc + NFC_EVENT_TM_ACTIVATED = 0xd + NFC_EVENT_TM_DEACTIVATED = 0xe + NFC_CMD_LLC_GET_PARAMS = 0xf + NFC_CMD_LLC_SET_PARAMS = 0x10 + NFC_CMD_ENABLE_SE = 0x11 + NFC_CMD_DISABLE_SE = 0x12 + NFC_CMD_LLC_SDREQ = 0x13 + NFC_EVENT_LLC_SDRES = 0x14 + NFC_CMD_FW_DOWNLOAD = 0x15 + NFC_EVENT_SE_ADDED = 0x16 + NFC_EVENT_SE_REMOVED = 0x17 + NFC_EVENT_SE_CONNECTIVITY = 0x18 + NFC_EVENT_SE_TRANSACTION = 0x19 + NFC_CMD_GET_SE = 0x1a + NFC_CMD_SE_IO = 0x1b + NFC_CMD_ACTIVATE_TARGET = 0x1c + NFC_CMD_VENDOR = 0x1d + NFC_CMD_DEACTIVATE_TARGET = 0x1e + NFC_ATTR_UNSPEC = 0x0 + NFC_ATTR_DEVICE_INDEX = 0x1 + NFC_ATTR_DEVICE_NAME = 0x2 + NFC_ATTR_PROTOCOLS = 0x3 + NFC_ATTR_TARGET_INDEX = 0x4 + NFC_ATTR_TARGET_SENS_RES = 0x5 + NFC_ATTR_TARGET_SEL_RES = 0x6 + NFC_ATTR_TARGET_NFCID1 = 0x7 + NFC_ATTR_TARGET_SENSB_RES = 0x8 + NFC_ATTR_TARGET_SENSF_RES = 0x9 + NFC_ATTR_COMM_MODE = 0xa + NFC_ATTR_RF_MODE = 0xb + NFC_ATTR_DEVICE_POWERED = 0xc + NFC_ATTR_IM_PROTOCOLS = 0xd + NFC_ATTR_TM_PROTOCOLS = 0xe + NFC_ATTR_LLC_PARAM_LTO = 0xf + NFC_ATTR_LLC_PARAM_RW = 0x10 + NFC_ATTR_LLC_PARAM_MIUX = 0x11 + NFC_ATTR_SE = 0x12 + NFC_ATTR_LLC_SDP = 0x13 + NFC_ATTR_FIRMWARE_NAME = 0x14 + NFC_ATTR_SE_INDEX = 0x15 + NFC_ATTR_SE_TYPE = 0x16 + NFC_ATTR_SE_AID = 0x17 + NFC_ATTR_FIRMWARE_DOWNLOAD_STATUS = 0x18 + NFC_ATTR_SE_APDU = 0x19 + NFC_ATTR_TARGET_ISO15693_DSFID = 0x1a + NFC_ATTR_TARGET_ISO15693_UID = 0x1b + NFC_ATTR_SE_PARAMS = 0x1c + NFC_ATTR_VENDOR_ID = 0x1d + NFC_ATTR_VENDOR_SUBCMD = 0x1e + NFC_ATTR_VENDOR_DATA = 0x1f + NFC_SDP_ATTR_UNSPEC = 0x0 + NFC_SDP_ATTR_URI = 0x1 + NFC_SDP_ATTR_SAP = 0x2 +) + +type LandlockRulesetAttr struct { + Access_fs uint64 +} + +type LandlockPathBeneathAttr struct { + Allowed_access uint64 + Parent_fd int32 +} + +const ( + LANDLOCK_RULE_PATH_BENEATH = 0x1 +) + +const ( + IPC_CREAT = 0x200 + IPC_EXCL = 0x400 + IPC_NOWAIT = 0x800 + IPC_PRIVATE = 0x0 + + ipc_64 = 0x100 +) + +const ( + IPC_RMID = 0x0 + IPC_SET = 0x1 + IPC_STAT = 0x2 +) + +const ( + SHM_RDONLY = 0x1000 + SHM_RND = 0x2000 +) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_386.go index 4d4d283de..eeeb9aa39 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -128,6 +128,17 @@ const ( FADV_NOREUSE = 0x5 ) +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint32 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -159,10 +170,16 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [16]byte +} + const ( - SizeofIovec = 0x8 - SizeofMsghdr = 0x1c - SizeofCmsghdr = 0xc + SizeofSockaddrNFCLLCP = 0x58 + SizeofIovec = 0x8 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc ) const ( @@ -618,3 +635,36 @@ const ( PPS_GETCAP = 0x800470a3 PPS_FETCH = 0xc00470a4 ) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint16 + _ [2]uint8 + Seq uint16 + _ uint16 + _ uint32 + _ uint32 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint32 + Atime uint32 + Atime_high uint32 + Dtime uint32 + Dtime_high uint32 + Ctime uint32 + Ctime_high uint32 + Cpid int32 + Lpid int32 + Nattch uint32 + _ uint32 + _ uint32 +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go index 8a2eed5ec..d30e1155c 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -130,6 +130,17 @@ const ( FADV_NOREUSE = 0x5 ) +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -162,10 +173,16 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + const ( - SizeofIovec = 0x10 - SizeofMsghdr = 0x38 - SizeofCmsghdr = 0x10 + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 ) const ( @@ -636,3 +653,33 @@ const ( PPS_GETCAP = 0x800870a3 PPS_FETCH = 0xc00870a4 ) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go index 94b34add6..69d029752 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -134,6 +134,17 @@ const ( FADV_NOREUSE = 0x5 ) +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint32 +} + type RawSockaddr struct { Family uint16 Data [14]uint8 @@ -165,10 +176,16 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [16]byte +} + const ( - SizeofIovec = 0x8 - SizeofMsghdr = 0x1c - SizeofCmsghdr = 0xc + SizeofSockaddrNFCLLCP = 0x58 + SizeofIovec = 0x8 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc ) const ( @@ -613,3 +630,36 @@ const ( PPS_GETCAP = 0x800470a3 PPS_FETCH = 0xc00470a4 ) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint16 + _ [2]uint8 + Seq uint16 + _ uint16 + _ uint32 + _ uint32 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint32 + Atime uint32 + Atime_high uint32 + Dtime uint32 + Dtime_high uint32 + Ctime uint32 + Ctime_high uint32 + Cpid int32 + Lpid int32 + Nattch uint32 + _ uint32 + _ uint32 +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go index 2143de4d5..28a0455bc 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -131,6 +131,17 @@ const ( FADV_NOREUSE = 0x5 ) +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -163,10 +174,16 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + const ( - SizeofIovec = 0x10 - SizeofMsghdr = 0x38 - SizeofCmsghdr = 0x10 + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 ) const ( @@ -615,3 +632,33 @@ const ( PPS_GETCAP = 0x800870a3 PPS_FETCH = 0xc00870a4 ) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go index a40216eee..64a845483 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -133,6 +133,17 @@ const ( FADV_NOREUSE = 0x5 ) +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint32 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -164,10 +175,16 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [16]byte +} + const ( - SizeofIovec = 0x8 - SizeofMsghdr = 0x1c - SizeofCmsghdr = 0xc + SizeofSockaddrNFCLLCP = 0x58 + SizeofIovec = 0x8 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc ) const ( @@ -619,3 +636,35 @@ const ( PPS_GETCAP = 0x400470a3 PPS_FETCH = 0xc00470a4 ) + +const ( + PIDFD_NONBLOCK = 0x80 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint32 + _ uint32 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint32 + Atime uint32 + Dtime uint32 + Ctime uint32 + Cpid int32 + Lpid int32 + Nattch uint32 + Atime_high uint16 + Dtime_high uint16 + Ctime_high uint16 + _ uint16 +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go index e834b069f..a1b7dee41 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -131,6 +131,17 @@ const ( FADV_NOREUSE = 0x5 ) +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -163,10 +174,16 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + const ( - SizeofIovec = 0x10 - SizeofMsghdr = 0x38 - SizeofCmsghdr = 0x10 + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 ) const ( @@ -618,3 +635,33 @@ const ( PPS_GETCAP = 0x400870a3 PPS_FETCH = 0xc00870a4 ) + +const ( + PIDFD_NONBLOCK = 0x80 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go index e31083b04..936fa6a26 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -131,6 +131,17 @@ const ( FADV_NOREUSE = 0x5 ) +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -163,10 +174,16 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + const ( - SizeofIovec = 0x10 - SizeofMsghdr = 0x38 - SizeofCmsghdr = 0x10 + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 ) const ( @@ -618,3 +635,33 @@ const ( PPS_GETCAP = 0x400870a3 PPS_FETCH = 0xc00870a4 ) + +const ( + PIDFD_NONBLOCK = 0x80 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go index 42811f7fb..5dd546fbf 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -133,6 +133,17 @@ const ( FADV_NOREUSE = 0x5 ) +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint32 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -164,10 +175,16 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [16]byte +} + const ( - SizeofIovec = 0x8 - SizeofMsghdr = 0x1c - SizeofCmsghdr = 0xc + SizeofSockaddrNFCLLCP = 0x58 + SizeofIovec = 0x8 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc ) const ( @@ -619,3 +636,35 @@ const ( PPS_GETCAP = 0x400470a3 PPS_FETCH = 0xc00470a4 ) + +const ( + PIDFD_NONBLOCK = 0x80 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint32 + _ uint32 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint32 + Atime uint32 + Dtime uint32 + Ctime uint32 + Cpid int32 + Lpid int32 + Nattch uint32 + Atime_high uint16 + Dtime_high uint16 + Ctime_high uint16 + _ uint16 +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go index af7a72017..947b32e43 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go @@ -134,6 +134,17 @@ const ( FADV_NOREUSE = 0x5 ) +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint32 +} + type RawSockaddr struct { Family uint16 Data [14]uint8 @@ -165,10 +176,16 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [16]byte +} + const ( - SizeofIovec = 0x8 - SizeofMsghdr = 0x1c - SizeofCmsghdr = 0xc + SizeofSockaddrNFCLLCP = 0x58 + SizeofIovec = 0x8 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc ) const ( @@ -625,3 +642,37 @@ const ( PPS_GETCAP = 0x400470a3 PPS_FETCH = 0xc00470a4 ) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + Seq uint32 + _ uint32 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Atime_high uint32 + Atime uint32 + Dtime_high uint32 + Dtime uint32 + Ctime_high uint32 + Ctime uint32 + _ uint32 + Segsz uint32 + Cpid int32 + Lpid int32 + Nattch uint32 + _ uint32 + _ uint32 + _ [4]byte +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go index 2a3afbaef..2a606151b 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -132,6 +132,17 @@ const ( FADV_NOREUSE = 0x5 ) +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + type RawSockaddr struct { Family uint16 Data [14]uint8 @@ -164,10 +175,16 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + const ( - SizeofIovec = 0x10 - SizeofMsghdr = 0x38 - SizeofCmsghdr = 0x10 + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 ) const ( @@ -625,3 +642,32 @@ const ( PPS_GETCAP = 0x400870a3 PPS_FETCH = 0xc00870a4 ) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + Seq uint32 + _ uint32 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Atime int64 + Dtime int64 + Ctime int64 + Segsz uint64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go index c0de30a65..d0d735d02 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -132,6 +132,17 @@ const ( FADV_NOREUSE = 0x5 ) +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + type RawSockaddr struct { Family uint16 Data [14]uint8 @@ -164,10 +175,16 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + const ( - SizeofIovec = 0x10 - SizeofMsghdr = 0x38 - SizeofCmsghdr = 0x10 + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 ) const ( @@ -625,3 +642,32 @@ const ( PPS_GETCAP = 0x400870a3 PPS_FETCH = 0xc00870a4 ) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + Seq uint32 + _ uint32 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Atime int64 + Dtime int64 + Ctime int64 + Segsz uint64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go index 74faf2e91..95e3d6d06 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -131,6 +131,17 @@ const ( FADV_NOREUSE = 0x5 ) +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + type RawSockaddr struct { Family uint16 Data [14]uint8 @@ -163,10 +174,16 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + const ( - SizeofIovec = 0x10 - SizeofMsghdr = 0x38 - SizeofCmsghdr = 0x10 + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 ) const ( @@ -643,3 +660,33 @@ const ( PPS_GETCAP = 0x800870a3 PPS_FETCH = 0xc00870a4 ) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go index 9a8f0c2c6..cccf1ef26 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -130,6 +130,17 @@ const ( FADV_NOREUSE = 0x7 ) +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -162,10 +173,16 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + const ( - SizeofIovec = 0x10 - SizeofMsghdr = 0x38 - SizeofCmsghdr = 0x10 + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 ) const ( @@ -639,3 +656,32 @@ const ( PPS_GETCAP = 0x800870a3 PPS_FETCH = 0xc00870a4 ) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ uint16 + Seq uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go index 72cdda75b..44fcbe4e9 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -134,6 +134,17 @@ const ( FADV_NOREUSE = 0x5 ) +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -166,10 +177,16 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + const ( - SizeofIovec = 0x10 - SizeofMsghdr = 0x38 - SizeofCmsghdr = 0x10 + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 ) const ( @@ -620,3 +637,32 @@ const ( PPS_GETCAP = 0x400870a3 PPS_FETCH = 0xc00870a4 ) + +const ( + PIDFD_NONBLOCK = 0x4000 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ uint16 + Seq uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Atime int64 + Dtime int64 + Ctime int64 + Segsz uint64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go index b10e73abf..2fd2060e6 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go @@ -445,8 +445,10 @@ type Ptmget struct { const ( AT_FDCWD = -0x64 - AT_SYMLINK_FOLLOW = 0x400 + AT_EACCESS = 0x100 AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 ) type PollFd struct { diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go index 28ed6d55a..6a5a1a8ae 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go @@ -453,8 +453,10 @@ type Ptmget struct { const ( AT_FDCWD = -0x64 - AT_SYMLINK_FOLLOW = 0x400 + AT_EACCESS = 0x100 AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 ) type PollFd struct { diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go index 4ba196ebe..84cc8d01e 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go @@ -450,8 +450,10 @@ type Ptmget struct { const ( AT_FDCWD = -0x64 - AT_SYMLINK_FOLLOW = 0x400 + AT_EACCESS = 0x100 AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 ) type PollFd struct { diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go index dd642bd9c..c844e7096 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go @@ -453,8 +453,10 @@ type Ptmget struct { const ( AT_FDCWD = -0x64 - AT_SYMLINK_FOLLOW = 0x400 + AT_EACCESS = 0x100 AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 ) type PollFd struct { diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go index 1fdb0e5fa..2a8b1e6f7 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go @@ -438,8 +438,10 @@ type Winsize struct { const ( AT_FDCWD = -0x64 - AT_SYMLINK_FOLLOW = 0x4 + AT_EACCESS = 0x1 AT_SYMLINK_NOFOLLOW = 0x2 + AT_SYMLINK_FOLLOW = 0x4 + AT_REMOVEDIR = 0x8 ) type PollFd struct { diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go index e2fc93c7c..b1759cf70 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go @@ -438,8 +438,10 @@ type Winsize struct { const ( AT_FDCWD = -0x64 - AT_SYMLINK_FOLLOW = 0x4 + AT_EACCESS = 0x1 AT_SYMLINK_NOFOLLOW = 0x2 + AT_SYMLINK_FOLLOW = 0x4 + AT_REMOVEDIR = 0x8 ) type PollFd struct { diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go index 8d34b5a2f..e807de206 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go @@ -439,8 +439,10 @@ type Winsize struct { const ( AT_FDCWD = -0x64 - AT_SYMLINK_FOLLOW = 0x4 + AT_EACCESS = 0x1 AT_SYMLINK_NOFOLLOW = 0x2 + AT_SYMLINK_FOLLOW = 0x4 + AT_REMOVEDIR = 0x8 ) type PollFd struct { diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go index ea8f1a0d9..ff3aecaee 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go @@ -432,8 +432,10 @@ type Winsize struct { const ( AT_FDCWD = -0x64 - AT_SYMLINK_FOLLOW = 0x4 + AT_EACCESS = 0x1 AT_SYMLINK_NOFOLLOW = 0x2 + AT_SYMLINK_FOLLOW = 0x4 + AT_REMOVEDIR = 0x8 ) type PollFd struct { diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go index ec6e8bc3f..9ecda6917 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go @@ -432,8 +432,10 @@ type Winsize struct { const ( AT_FDCWD = -0x64 - AT_SYMLINK_FOLLOW = 0x4 + AT_EACCESS = 0x1 AT_SYMLINK_NOFOLLOW = 0x2 + AT_SYMLINK_FOLLOW = 0x4 + AT_REMOVEDIR = 0x8 ) type PollFd struct { diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go index 85effef9c..ad4aad279 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go @@ -440,3 +440,43 @@ const ( POLLWRBAND = 0x100 POLLWRNORM = 0x4 ) + +type fileObj struct { + Atim Timespec + Mtim Timespec + Ctim Timespec + Pad [3]uint64 + Name *int8 +} + +type portEvent struct { + Events int32 + Source uint16 + Pad uint16 + Object uint64 + User *byte +} + +const ( + PORT_SOURCE_AIO = 0x1 + PORT_SOURCE_TIMER = 0x2 + PORT_SOURCE_USER = 0x3 + PORT_SOURCE_FD = 0x4 + PORT_SOURCE_ALERT = 0x5 + PORT_SOURCE_MQ = 0x6 + PORT_SOURCE_FILE = 0x7 + PORT_ALERT_SET = 0x1 + PORT_ALERT_UPDATE = 0x2 + PORT_ALERT_INVALID = 0x3 + FILE_ACCESS = 0x1 + FILE_MODIFIED = 0x2 + FILE_ATTRIB = 0x4 + FILE_TRUNC = 0x100000 + FILE_NOFOLLOW = 0x10000000 + FILE_DELETE = 0x10 + FILE_RENAME_TO = 0x20 + FILE_RENAME_FROM = 0x40 + UNMOUNTED = 0x20000000 + MOUNTEDOVER = 0x40000000 + FILE_EXCEPTION = 0x60000070 +) diff --git a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go index 8bffde78e..4ab638cb9 100644 --- a/src/runtime/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go +++ b/src/runtime/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go @@ -347,6 +347,10 @@ type Dirent struct { Name [256]byte } +type FdSet struct { + Bits [64]int32 +} + // This struct is packed on z/OS so it can't be used directly. type Flock_t struct { Type int16 diff --git a/src/runtime/vendor/golang.org/x/sys/windows/aliases.go b/src/runtime/vendor/golang.org/x/sys/windows/aliases.go index af3af60db..a20ebea63 100644 --- a/src/runtime/vendor/golang.org/x/sys/windows/aliases.go +++ b/src/runtime/vendor/golang.org/x/sys/windows/aliases.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build windows -// +build go1.9 +//go:build windows && go1.9 +// +build windows,go1.9 package windows diff --git a/src/runtime/vendor/golang.org/x/sys/windows/empty.s b/src/runtime/vendor/golang.org/x/sys/windows/empty.s index 69309e4da..fdbbbcd31 100644 --- a/src/runtime/vendor/golang.org/x/sys/windows/empty.s +++ b/src/runtime/vendor/golang.org/x/sys/windows/empty.s @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !go1.12 // +build !go1.12 // This file is here to allow bodyless functions with go:linkname for Go 1.11 diff --git a/src/runtime/vendor/golang.org/x/sys/windows/eventlog.go b/src/runtime/vendor/golang.org/x/sys/windows/eventlog.go index 40af946e1..2cd60645e 100644 --- a/src/runtime/vendor/golang.org/x/sys/windows/eventlog.go +++ b/src/runtime/vendor/golang.org/x/sys/windows/eventlog.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build windows // +build windows package windows diff --git a/src/runtime/vendor/golang.org/x/sys/windows/exec_windows.go b/src/runtime/vendor/golang.org/x/sys/windows/exec_windows.go index 9eb1fb633..7a11e83b7 100644 --- a/src/runtime/vendor/golang.org/x/sys/windows/exec_windows.go +++ b/src/runtime/vendor/golang.org/x/sys/windows/exec_windows.go @@ -9,6 +9,8 @@ package windows import ( errorspkg "errors" "unsafe" + + "golang.org/x/sys/internal/unsafeheader" ) // EscapeArg rewrites command line argument s as prescribed @@ -78,6 +80,40 @@ func EscapeArg(s string) string { return string(qs[:j]) } +// ComposeCommandLine escapes and joins the given arguments suitable for use as a Windows command line, +// in CreateProcess's CommandLine argument, CreateService/ChangeServiceConfig's BinaryPathName argument, +// or any program that uses CommandLineToArgv. +func ComposeCommandLine(args []string) string { + var commandLine string + for i := range args { + if i > 0 { + commandLine += " " + } + commandLine += EscapeArg(args[i]) + } + return commandLine +} + +// DecomposeCommandLine breaks apart its argument command line into unescaped parts using CommandLineToArgv, +// as gathered from GetCommandLine, QUERY_SERVICE_CONFIG's BinaryPathName argument, or elsewhere that +// command lines are passed around. +func DecomposeCommandLine(commandLine string) ([]string, error) { + if len(commandLine) == 0 { + return []string{}, nil + } + var argc int32 + argv, err := CommandLineToArgv(StringToUTF16Ptr(commandLine), &argc) + if err != nil { + return nil, err + } + defer LocalFree(Handle(unsafe.Pointer(argv))) + var args []string + for _, v := range (*argv)[:argc] { + args = append(args, UTF16ToString((*v)[:])) + } + return args, nil +} + func CloseOnExec(fd Handle) { SetHandleInformation(Handle(fd), HANDLE_FLAG_INHERIT, 0) } @@ -101,8 +137,8 @@ func FullPath(name string) (path string, err error) { } } -// NewProcThreadAttributeList allocates a new ProcThreadAttributeList, with the requested maximum number of attributes. -func NewProcThreadAttributeList(maxAttrCount uint32) (*ProcThreadAttributeList, error) { +// NewProcThreadAttributeList allocates a new ProcThreadAttributeListContainer, with the requested maximum number of attributes. +func NewProcThreadAttributeList(maxAttrCount uint32) (*ProcThreadAttributeListContainer, error) { var size uintptr err := initializeProcThreadAttributeList(nil, maxAttrCount, 0, &size) if err != ERROR_INSUFFICIENT_BUFFER { @@ -111,10 +147,9 @@ func NewProcThreadAttributeList(maxAttrCount uint32) (*ProcThreadAttributeList, } return nil, err } - const psize = unsafe.Sizeof(uintptr(0)) // size is guaranteed to be ≥1 by InitializeProcThreadAttributeList. - al := (*ProcThreadAttributeList)(unsafe.Pointer(&make([]unsafe.Pointer, (size+psize-1)/psize)[0])) - err = initializeProcThreadAttributeList(al, maxAttrCount, 0, &size) + al := &ProcThreadAttributeListContainer{data: (*ProcThreadAttributeList)(unsafe.Pointer(&make([]byte, size)[0]))} + err = initializeProcThreadAttributeList(al.data, maxAttrCount, 0, &size) if err != nil { return nil, err } @@ -122,11 +157,39 @@ func NewProcThreadAttributeList(maxAttrCount uint32) (*ProcThreadAttributeList, } // Update modifies the ProcThreadAttributeList using UpdateProcThreadAttribute. -func (al *ProcThreadAttributeList) Update(attribute uintptr, flags uint32, value unsafe.Pointer, size uintptr, prevValue unsafe.Pointer, returnedSize *uintptr) error { - return updateProcThreadAttribute(al, flags, attribute, value, size, prevValue, returnedSize) +// Note that the value passed to this function will be copied into memory +// allocated by LocalAlloc, the contents of which should not contain any +// Go-managed pointers, even if the passed value itself is a Go-managed +// pointer. +func (al *ProcThreadAttributeListContainer) Update(attribute uintptr, value unsafe.Pointer, size uintptr) error { + alloc, err := LocalAlloc(LMEM_FIXED, uint32(size)) + if err != nil { + return err + } + var src, dst []byte + hdr := (*unsafeheader.Slice)(unsafe.Pointer(&src)) + hdr.Data = value + hdr.Cap = int(size) + hdr.Len = int(size) + hdr = (*unsafeheader.Slice)(unsafe.Pointer(&dst)) + hdr.Data = unsafe.Pointer(alloc) + hdr.Cap = int(size) + hdr.Len = int(size) + copy(dst, src) + al.heapAllocations = append(al.heapAllocations, alloc) + return updateProcThreadAttribute(al.data, 0, attribute, unsafe.Pointer(alloc), size, nil, nil) } // Delete frees ProcThreadAttributeList's resources. -func (al *ProcThreadAttributeList) Delete() { - deleteProcThreadAttributeList(al) +func (al *ProcThreadAttributeListContainer) Delete() { + deleteProcThreadAttributeList(al.data) + for i := range al.heapAllocations { + LocalFree(Handle(al.heapAllocations[i])) + } + al.heapAllocations = nil +} + +// List returns the actual ProcThreadAttributeList to be passed to StartupInfoEx. +func (al *ProcThreadAttributeListContainer) List() *ProcThreadAttributeList { + return al.data } diff --git a/src/runtime/vendor/golang.org/x/sys/windows/memory_windows.go b/src/runtime/vendor/golang.org/x/sys/windows/memory_windows.go index 1adb60739..6dc0920a8 100644 --- a/src/runtime/vendor/golang.org/x/sys/windows/memory_windows.go +++ b/src/runtime/vendor/golang.org/x/sys/windows/memory_windows.go @@ -35,3 +35,14 @@ const ( QUOTA_LIMITS_HARDWS_MAX_DISABLE = 0x00000008 QUOTA_LIMITS_HARDWS_MAX_ENABLE = 0x00000004 ) + +type MemoryBasicInformation struct { + BaseAddress uintptr + AllocationBase uintptr + AllocationProtect uint32 + PartitionId uint16 + RegionSize uintptr + State uint32 + Protect uint32 + Type uint32 +} diff --git a/src/runtime/vendor/golang.org/x/sys/windows/mksyscall.go b/src/runtime/vendor/golang.org/x/sys/windows/mksyscall.go index 328e3b2ac..610291098 100644 --- a/src/runtime/vendor/golang.org/x/sys/windows/mksyscall.go +++ b/src/runtime/vendor/golang.org/x/sys/windows/mksyscall.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build generate // +build generate package windows diff --git a/src/runtime/vendor/golang.org/x/sys/windows/race.go b/src/runtime/vendor/golang.org/x/sys/windows/race.go index a74e3e24b..9196b089c 100644 --- a/src/runtime/vendor/golang.org/x/sys/windows/race.go +++ b/src/runtime/vendor/golang.org/x/sys/windows/race.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build windows && race // +build windows,race package windows diff --git a/src/runtime/vendor/golang.org/x/sys/windows/race0.go b/src/runtime/vendor/golang.org/x/sys/windows/race0.go index e44a3cbf6..7bae4817a 100644 --- a/src/runtime/vendor/golang.org/x/sys/windows/race0.go +++ b/src/runtime/vendor/golang.org/x/sys/windows/race0.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build windows && !race // +build windows,!race package windows diff --git a/src/runtime/vendor/golang.org/x/sys/windows/security_windows.go b/src/runtime/vendor/golang.org/x/sys/windows/security_windows.go index 111c10d3a..d414ef13b 100644 --- a/src/runtime/vendor/golang.org/x/sys/windows/security_windows.go +++ b/src/runtime/vendor/golang.org/x/sys/windows/security_windows.go @@ -889,6 +889,7 @@ type WTS_SESSION_INFO struct { //sys WTSQueryUserToken(session uint32, token *Token) (err error) = wtsapi32.WTSQueryUserToken //sys WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) = wtsapi32.WTSEnumerateSessionsW //sys WTSFreeMemory(ptr uintptr) = wtsapi32.WTSFreeMemory +//sys WTSGetActiveConsoleSessionId() (sessionID uint32) type ACL struct { aclRevision byte diff --git a/src/runtime/vendor/golang.org/x/sys/windows/service.go b/src/runtime/vendor/golang.org/x/sys/windows/service.go index b269850d0..5b28ae168 100644 --- a/src/runtime/vendor/golang.org/x/sys/windows/service.go +++ b/src/runtime/vendor/golang.org/x/sys/windows/service.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build windows // +build windows package windows @@ -235,3 +236,4 @@ type QUERY_SERVICE_LOCK_STATUS struct { //sys NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) = advapi32.NotifyServiceStatusChangeW //sys SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) = sechost.SubscribeServiceChangeNotifications? //sys UnsubscribeServiceChangeNotifications(subscription uintptr) = sechost.UnsubscribeServiceChangeNotifications? +//sys RegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, context uintptr) (handle Handle, err error) = advapi32.RegisterServiceCtrlHandlerExW diff --git a/src/runtime/vendor/golang.org/x/sys/windows/str.go b/src/runtime/vendor/golang.org/x/sys/windows/str.go index 917cc2aae..4fc01434e 100644 --- a/src/runtime/vendor/golang.org/x/sys/windows/str.go +++ b/src/runtime/vendor/golang.org/x/sys/windows/str.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build windows // +build windows package windows diff --git a/src/runtime/vendor/golang.org/x/sys/windows/syscall.go b/src/runtime/vendor/golang.org/x/sys/windows/syscall.go index 6122f557a..72074d582 100644 --- a/src/runtime/vendor/golang.org/x/sys/windows/syscall.go +++ b/src/runtime/vendor/golang.org/x/sys/windows/syscall.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build windows // +build windows // Package windows contains an interface to the low-level operating system diff --git a/src/runtime/vendor/golang.org/x/sys/windows/syscall_windows.go b/src/runtime/vendor/golang.org/x/sys/windows/syscall_windows.go index bb6aaf89e..53ee74e08 100644 --- a/src/runtime/vendor/golang.org/x/sys/windows/syscall_windows.go +++ b/src/runtime/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -220,6 +220,7 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys CancelIo(s Handle) (err error) //sys CancelIoEx(s Handle, o *Overlapped) (err error) //sys CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW +//sys CreateProcessAsUser(token Token, appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = advapi32.CreateProcessAsUserW //sys initializeProcThreadAttributeList(attrlist *ProcThreadAttributeList, attrcount uint32, flags uint32, size *uintptr) (err error) = InitializeProcThreadAttributeList //sys deleteProcThreadAttributeList(attrlist *ProcThreadAttributeList) = DeleteProcThreadAttributeList //sys updateProcThreadAttribute(attrlist *ProcThreadAttributeList, flags uint32, attr uintptr, value unsafe.Pointer, size uintptr, prevvalue unsafe.Pointer, returnedsize *uintptr) (err error) = UpdateProcThreadAttribute @@ -273,6 +274,11 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) = kernel32.VirtualAlloc //sys VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) = kernel32.VirtualFree //sys VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect +//sys VirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect uint32, oldProtect *uint32) (err error) = kernel32.VirtualProtectEx +//sys VirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) = kernel32.VirtualQuery +//sys VirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) = kernel32.VirtualQueryEx +//sys ReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesRead *uintptr) (err error) = kernel32.ReadProcessMemory +//sys WriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesWritten *uintptr) (err error) = kernel32.WriteProcessMemory //sys TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile //sys ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW //sys FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.FindFirstChangeNotificationW @@ -395,8 +401,18 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys LoadResource(module Handle, resInfo Handle) (resData Handle, err error) = kernel32.LoadResource //sys LockResource(resData Handle) (addr uintptr, err error) = kernel32.LockResource +// Version APIs +//sys GetFileVersionInfoSize(filename string, zeroHandle *Handle) (bufSize uint32, err error) = version.GetFileVersionInfoSizeW +//sys GetFileVersionInfo(filename string, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) = version.GetFileVersionInfoW +//sys VerQueryValue(block unsafe.Pointer, subBlock string, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) = version.VerQueryValueW + // Process Status API (PSAPI) //sys EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) = psapi.EnumProcesses +//sys EnumProcessModules(process Handle, module *Handle, cb uint32, cbNeeded *uint32) (err error) = psapi.EnumProcessModules +//sys EnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *uint32, filterFlag uint32) (err error) = psapi.EnumProcessModulesEx +//sys GetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) = psapi.GetModuleInformation +//sys GetModuleFileNameEx(process Handle, module Handle, filename *uint16, size uint32) (err error) = psapi.GetModuleFileNameExW +//sys GetModuleBaseName(process Handle, module Handle, baseName *uint16, size uint32) (err error) = psapi.GetModuleBaseNameW // NT Native APIs //sys rtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) = ntdll.RtlNtStatusToDosErrorNoTeb @@ -407,11 +423,16 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys RtlInitString(destinationString *NTString, sourceString *byte) = ntdll.RtlInitString //sys NtCreateFile(handle *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, allocationSize *int64, attributes uint32, share uint32, disposition uint32, options uint32, eabuffer uintptr, ealength uint32) (ntstatus error) = ntdll.NtCreateFile //sys NtCreateNamedPipeFile(pipe *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (ntstatus error) = ntdll.NtCreateNamedPipeFile +//sys NtSetInformationFile(handle Handle, iosb *IO_STATUS_BLOCK, inBuffer *byte, inBufferLen uint32, class uint32) (ntstatus error) = ntdll.NtSetInformationFile //sys RtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) = ntdll.RtlDosPathNameToNtPathName_U_WithStatus //sys RtlDosPathNameToRelativeNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) = ntdll.RtlDosPathNameToRelativeNtPathName_U_WithStatus //sys RtlDefaultNpAcl(acl **ACL) (ntstatus error) = ntdll.RtlDefaultNpAcl //sys NtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32, retLen *uint32) (ntstatus error) = ntdll.NtQueryInformationProcess //sys NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) = ntdll.NtSetInformationProcess +//sys NtQuerySystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32, retLen *uint32) (ntstatus error) = ntdll.NtQuerySystemInformation +//sys NtSetSystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32) (ntstatus error) = ntdll.NtSetSystemInformation +//sys RtlAddFunctionTable(functionTable *RUNTIME_FUNCTION, entryCount uint32, baseAddress uintptr) (ret bool) = ntdll.RtlAddFunctionTable +//sys RtlDeleteFunctionTable(functionTable *RUNTIME_FUNCTION) (ret bool) = ntdll.RtlDeleteFunctionTable // syscall interface implementation for other packages diff --git a/src/runtime/vendor/golang.org/x/sys/windows/types_windows.go b/src/runtime/vendor/golang.org/x/sys/windows/types_windows.go index 23fe18ece..286dd1eab 100644 --- a/src/runtime/vendor/golang.org/x/sys/windows/types_windows.go +++ b/src/runtime/vendor/golang.org/x/sys/windows/types_windows.go @@ -66,9 +66,21 @@ var signals = [...]string{ } const ( - FILE_LIST_DIRECTORY = 0x00000001 - FILE_APPEND_DATA = 0x00000004 + FILE_READ_DATA = 0x00000001 + FILE_READ_ATTRIBUTES = 0x00000080 + FILE_READ_EA = 0x00000008 + FILE_WRITE_DATA = 0x00000002 FILE_WRITE_ATTRIBUTES = 0x00000100 + FILE_WRITE_EA = 0x00000010 + FILE_APPEND_DATA = 0x00000004 + FILE_EXECUTE = 0x00000020 + + FILE_GENERIC_READ = STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE + FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE + FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE + + FILE_LIST_DIRECTORY = 0x00000001 + FILE_TRAVERSE = 0x00000020 FILE_SHARE_READ = 0x00000001 FILE_SHARE_WRITE = 0x00000002 @@ -242,6 +254,14 @@ const ( TH32CS_INHERIT = 0x80000000 ) +const ( + // flags for EnumProcessModulesEx + LIST_MODULES_32BIT = 0x01 + LIST_MODULES_64BIT = 0x02 + LIST_MODULES_ALL = 0x03 + LIST_MODULES_DEFAULT = 0x00 +) + const ( // filters for ReadDirectoryChangesW and FindFirstChangeNotificationW FILE_NOTIFY_CHANGE_FILE_NAME = 0x001 @@ -680,7 +700,7 @@ const ( WTD_CHOICE_CERT = 5 WTD_STATEACTION_IGNORE = 0x00000000 - WTD_STATEACTION_VERIFY = 0x00000010 + WTD_STATEACTION_VERIFY = 0x00000001 WTD_STATEACTION_CLOSE = 0x00000002 WTD_STATEACTION_AUTO_CACHE = 0x00000003 WTD_STATEACTION_AUTO_CACHE_FLUSH = 0x00000004 @@ -909,14 +929,15 @@ type StartupInfoEx struct { // ProcThreadAttributeList is a placeholder type to represent a PROC_THREAD_ATTRIBUTE_LIST. // -// To create a *ProcThreadAttributeList, use NewProcThreadAttributeList, and -// free its memory using ProcThreadAttributeList.Delete. -type ProcThreadAttributeList struct { - // This is of type unsafe.Pointer, not of type byte or uintptr, because - // the contents of it is mostly a list of pointers, and in most cases, - // that's a list of pointers to Go-allocated objects. In order to keep - // the GC from collecting these objects, we declare this as unsafe.Pointer. - _ [1]unsafe.Pointer +// To create a *ProcThreadAttributeList, use NewProcThreadAttributeList, update +// it with ProcThreadAttributeListContainer.Update, free its memory using +// ProcThreadAttributeListContainer.Delete, and access the list itself using +// ProcThreadAttributeListContainer.List. +type ProcThreadAttributeList struct{} + +type ProcThreadAttributeListContainer struct { + data *ProcThreadAttributeList + heapAllocations []uintptr } type ProcessInformation struct { @@ -1780,7 +1801,53 @@ type reparseDataBuffer struct { } const ( - FSCTL_GET_REPARSE_POINT = 0x900A8 + FSCTL_CREATE_OR_GET_OBJECT_ID = 0x0900C0 + FSCTL_DELETE_OBJECT_ID = 0x0900A0 + FSCTL_DELETE_REPARSE_POINT = 0x0900AC + FSCTL_DUPLICATE_EXTENTS_TO_FILE = 0x098344 + FSCTL_DUPLICATE_EXTENTS_TO_FILE_EX = 0x0983E8 + FSCTL_FILESYSTEM_GET_STATISTICS = 0x090060 + FSCTL_FILE_LEVEL_TRIM = 0x098208 + FSCTL_FIND_FILES_BY_SID = 0x09008F + FSCTL_GET_COMPRESSION = 0x09003C + FSCTL_GET_INTEGRITY_INFORMATION = 0x09027C + FSCTL_GET_NTFS_VOLUME_DATA = 0x090064 + FSCTL_GET_REFS_VOLUME_DATA = 0x0902D8 + FSCTL_GET_OBJECT_ID = 0x09009C + FSCTL_GET_REPARSE_POINT = 0x0900A8 + FSCTL_GET_RETRIEVAL_POINTER_COUNT = 0x09042B + FSCTL_GET_RETRIEVAL_POINTERS = 0x090073 + FSCTL_GET_RETRIEVAL_POINTERS_AND_REFCOUNT = 0x0903D3 + FSCTL_IS_PATHNAME_VALID = 0x09002C + FSCTL_LMR_SET_LINK_TRACKING_INFORMATION = 0x1400EC + FSCTL_MARK_HANDLE = 0x0900FC + FSCTL_OFFLOAD_READ = 0x094264 + FSCTL_OFFLOAD_WRITE = 0x098268 + FSCTL_PIPE_PEEK = 0x11400C + FSCTL_PIPE_TRANSCEIVE = 0x11C017 + FSCTL_PIPE_WAIT = 0x110018 + FSCTL_QUERY_ALLOCATED_RANGES = 0x0940CF + FSCTL_QUERY_FAT_BPB = 0x090058 + FSCTL_QUERY_FILE_REGIONS = 0x090284 + FSCTL_QUERY_ON_DISK_VOLUME_INFO = 0x09013C + FSCTL_QUERY_SPARING_INFO = 0x090138 + FSCTL_READ_FILE_USN_DATA = 0x0900EB + FSCTL_RECALL_FILE = 0x090117 + FSCTL_REFS_STREAM_SNAPSHOT_MANAGEMENT = 0x090440 + FSCTL_SET_COMPRESSION = 0x09C040 + FSCTL_SET_DEFECT_MANAGEMENT = 0x098134 + FSCTL_SET_ENCRYPTION = 0x0900D7 + FSCTL_SET_INTEGRITY_INFORMATION = 0x09C280 + FSCTL_SET_INTEGRITY_INFORMATION_EX = 0x090380 + FSCTL_SET_OBJECT_ID = 0x090098 + FSCTL_SET_OBJECT_ID_EXTENDED = 0x0900BC + FSCTL_SET_REPARSE_POINT = 0x0900A4 + FSCTL_SET_SPARSE = 0x0900C4 + FSCTL_SET_ZERO_DATA = 0x0980C8 + FSCTL_SET_ZERO_ON_DEALLOCATION = 0x090194 + FSCTL_SIS_COPYFILE = 0x090100 + FSCTL_WRITE_USN_CLOSE_RECORD = 0x0900EF + MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024 IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003 IO_REPARSE_TAG_SYMLINK = 0xA000000C @@ -2299,6 +2366,12 @@ type LIST_ENTRY struct { Blink *LIST_ENTRY } +type RUNTIME_FUNCTION struct { + BeginAddress uint32 + EndAddress uint32 + UnwindData uint32 +} + type LDR_DATA_TABLE_ENTRY struct { reserved1 [2]uintptr InMemoryOrderLinks LIST_ENTRY @@ -2489,6 +2562,60 @@ const ( FILE_PIPE_SERVER_END = 0x00000001 ) +const ( + // FileInformationClass for NtSetInformationFile + FileBasicInformation = 4 + FileRenameInformation = 10 + FileDispositionInformation = 13 + FilePositionInformation = 14 + FileEndOfFileInformation = 20 + FileValidDataLengthInformation = 39 + FileShortNameInformation = 40 + FileIoPriorityHintInformation = 43 + FileReplaceCompletionInformation = 61 + FileDispositionInformationEx = 64 + FileCaseSensitiveInformation = 71 + FileLinkInformation = 72 + FileCaseSensitiveInformationForceAccessCheck = 75 + FileKnownFolderInformation = 76 + + // Flags for FILE_RENAME_INFORMATION + FILE_RENAME_REPLACE_IF_EXISTS = 0x00000001 + FILE_RENAME_POSIX_SEMANTICS = 0x00000002 + FILE_RENAME_SUPPRESS_PIN_STATE_INHERITANCE = 0x00000004 + FILE_RENAME_SUPPRESS_STORAGE_RESERVE_INHERITANCE = 0x00000008 + FILE_RENAME_NO_INCREASE_AVAILABLE_SPACE = 0x00000010 + FILE_RENAME_NO_DECREASE_AVAILABLE_SPACE = 0x00000020 + FILE_RENAME_PRESERVE_AVAILABLE_SPACE = 0x00000030 + FILE_RENAME_IGNORE_READONLY_ATTRIBUTE = 0x00000040 + FILE_RENAME_FORCE_RESIZE_TARGET_SR = 0x00000080 + FILE_RENAME_FORCE_RESIZE_SOURCE_SR = 0x00000100 + FILE_RENAME_FORCE_RESIZE_SR = 0x00000180 + + // Flags for FILE_DISPOSITION_INFORMATION_EX + FILE_DISPOSITION_DO_NOT_DELETE = 0x00000000 + FILE_DISPOSITION_DELETE = 0x00000001 + FILE_DISPOSITION_POSIX_SEMANTICS = 0x00000002 + FILE_DISPOSITION_FORCE_IMAGE_SECTION_CHECK = 0x00000004 + FILE_DISPOSITION_ON_CLOSE = 0x00000008 + FILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE = 0x00000010 + + // Flags for FILE_CASE_SENSITIVE_INFORMATION + FILE_CS_FLAG_CASE_SENSITIVE_DIR = 0x00000001 + + // Flags for FILE_LINK_INFORMATION + FILE_LINK_REPLACE_IF_EXISTS = 0x00000001 + FILE_LINK_POSIX_SEMANTICS = 0x00000002 + FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE = 0x00000008 + FILE_LINK_NO_INCREASE_AVAILABLE_SPACE = 0x00000010 + FILE_LINK_NO_DECREASE_AVAILABLE_SPACE = 0x00000020 + FILE_LINK_PRESERVE_AVAILABLE_SPACE = 0x00000030 + FILE_LINK_IGNORE_READONLY_ATTRIBUTE = 0x00000040 + FILE_LINK_FORCE_RESIZE_TARGET_SR = 0x00000080 + FILE_LINK_FORCE_RESIZE_SOURCE_SR = 0x00000100 + FILE_LINK_FORCE_RESIZE_SR = 0x00000180 +) + // ProcessInformationClasses for NtQueryInformationProcess and NtSetInformationProcess. const ( ProcessBasicInformation = iota @@ -2605,6 +2732,203 @@ type PROCESS_BASIC_INFORMATION struct { InheritedFromUniqueProcessId uintptr } +// SystemInformationClasses for NtQuerySystemInformation and NtSetSystemInformation +const ( + SystemBasicInformation = iota + SystemProcessorInformation + SystemPerformanceInformation + SystemTimeOfDayInformation + SystemPathInformation + SystemProcessInformation + SystemCallCountInformation + SystemDeviceInformation + SystemProcessorPerformanceInformation + SystemFlagsInformation + SystemCallTimeInformation + SystemModuleInformation + SystemLocksInformation + SystemStackTraceInformation + SystemPagedPoolInformation + SystemNonPagedPoolInformation + SystemHandleInformation + SystemObjectInformation + SystemPageFileInformation + SystemVdmInstemulInformation + SystemVdmBopInformation + SystemFileCacheInformation + SystemPoolTagInformation + SystemInterruptInformation + SystemDpcBehaviorInformation + SystemFullMemoryInformation + SystemLoadGdiDriverInformation + SystemUnloadGdiDriverInformation + SystemTimeAdjustmentInformation + SystemSummaryMemoryInformation + SystemMirrorMemoryInformation + SystemPerformanceTraceInformation + systemObsolete0 + SystemExceptionInformation + SystemCrashDumpStateInformation + SystemKernelDebuggerInformation + SystemContextSwitchInformation + SystemRegistryQuotaInformation + SystemExtendServiceTableInformation + SystemPrioritySeperation + SystemVerifierAddDriverInformation + SystemVerifierRemoveDriverInformation + SystemProcessorIdleInformation + SystemLegacyDriverInformation + SystemCurrentTimeZoneInformation + SystemLookasideInformation + SystemTimeSlipNotification + SystemSessionCreate + SystemSessionDetach + SystemSessionInformation + SystemRangeStartInformation + SystemVerifierInformation + SystemVerifierThunkExtend + SystemSessionProcessInformation + SystemLoadGdiDriverInSystemSpace + SystemNumaProcessorMap + SystemPrefetcherInformation + SystemExtendedProcessInformation + SystemRecommendedSharedDataAlignment + SystemComPlusPackage + SystemNumaAvailableMemory + SystemProcessorPowerInformation + SystemEmulationBasicInformation + SystemEmulationProcessorInformation + SystemExtendedHandleInformation + SystemLostDelayedWriteInformation + SystemBigPoolInformation + SystemSessionPoolTagInformation + SystemSessionMappedViewInformation + SystemHotpatchInformation + SystemObjectSecurityMode + SystemWatchdogTimerHandler + SystemWatchdogTimerInformation + SystemLogicalProcessorInformation + SystemWow64SharedInformationObsolete + SystemRegisterFirmwareTableInformationHandler + SystemFirmwareTableInformation + SystemModuleInformationEx + SystemVerifierTriageInformation + SystemSuperfetchInformation + SystemMemoryListInformation + SystemFileCacheInformationEx + SystemThreadPriorityClientIdInformation + SystemProcessorIdleCycleTimeInformation + SystemVerifierCancellationInformation + SystemProcessorPowerInformationEx + SystemRefTraceInformation + SystemSpecialPoolInformation + SystemProcessIdInformation + SystemErrorPortInformation + SystemBootEnvironmentInformation + SystemHypervisorInformation + SystemVerifierInformationEx + SystemTimeZoneInformation + SystemImageFileExecutionOptionsInformation + SystemCoverageInformation + SystemPrefetchPatchInformation + SystemVerifierFaultsInformation + SystemSystemPartitionInformation + SystemSystemDiskInformation + SystemProcessorPerformanceDistribution + SystemNumaProximityNodeInformation + SystemDynamicTimeZoneInformation + SystemCodeIntegrityInformation + SystemProcessorMicrocodeUpdateInformation + SystemProcessorBrandString + SystemVirtualAddressInformation + SystemLogicalProcessorAndGroupInformation + SystemProcessorCycleTimeInformation + SystemStoreInformation + SystemRegistryAppendString + SystemAitSamplingValue + SystemVhdBootInformation + SystemCpuQuotaInformation + SystemNativeBasicInformation + systemSpare1 + SystemLowPriorityIoInformation + SystemTpmBootEntropyInformation + SystemVerifierCountersInformation + SystemPagedPoolInformationEx + SystemSystemPtesInformationEx + SystemNodeDistanceInformation + SystemAcpiAuditInformation + SystemBasicPerformanceInformation + SystemQueryPerformanceCounterInformation + SystemSessionBigPoolInformation + SystemBootGraphicsInformation + SystemScrubPhysicalMemoryInformation + SystemBadPageInformation + SystemProcessorProfileControlArea + SystemCombinePhysicalMemoryInformation + SystemEntropyInterruptTimingCallback + SystemConsoleInformation + SystemPlatformBinaryInformation + SystemThrottleNotificationInformation + SystemHypervisorProcessorCountInformation + SystemDeviceDataInformation + SystemDeviceDataEnumerationInformation + SystemMemoryTopologyInformation + SystemMemoryChannelInformation + SystemBootLogoInformation + SystemProcessorPerformanceInformationEx + systemSpare0 + SystemSecureBootPolicyInformation + SystemPageFileInformationEx + SystemSecureBootInformation + SystemEntropyInterruptTimingRawInformation + SystemPortableWorkspaceEfiLauncherInformation + SystemFullProcessInformation + SystemKernelDebuggerInformationEx + SystemBootMetadataInformation + SystemSoftRebootInformation + SystemElamCertificateInformation + SystemOfflineDumpConfigInformation + SystemProcessorFeaturesInformation + SystemRegistryReconciliationInformation + SystemEdidInformation + SystemManufacturingInformation + SystemEnergyEstimationConfigInformation + SystemHypervisorDetailInformation + SystemProcessorCycleStatsInformation + SystemVmGenerationCountInformation + SystemTrustedPlatformModuleInformation + SystemKernelDebuggerFlags + SystemCodeIntegrityPolicyInformation + SystemIsolatedUserModeInformation + SystemHardwareSecurityTestInterfaceResultsInformation + SystemSingleModuleInformation + SystemAllowedCpuSetsInformation + SystemDmaProtectionInformation + SystemInterruptCpuSetsInformation + SystemSecureBootPolicyFullInformation + SystemCodeIntegrityPolicyFullInformation + SystemAffinitizedInterruptProcessorInformation + SystemRootSiloInformation +) + +type RTL_PROCESS_MODULE_INFORMATION struct { + Section Handle + MappedBase uintptr + ImageBase uintptr + ImageSize uint32 + Flags uint32 + LoadOrderIndex uint16 + InitOrderIndex uint16 + LoadCount uint16 + OffsetToFileName uint16 + FullPathName [256]byte +} + +type RTL_PROCESS_MODULES struct { + NumberOfModules uint32 + Modules [1]RTL_PROCESS_MODULE_INFORMATION +} + // Constants for LocalAlloc flags. const ( LMEM_FIXED = 0x0 @@ -2699,6 +3023,22 @@ var ( RT_MANIFEST ResourceID = 24 ) +type VS_FIXEDFILEINFO struct { + Signature uint32 + StrucVersion uint32 + FileVersionMS uint32 + FileVersionLS uint32 + ProductVersionMS uint32 + ProductVersionLS uint32 + FileFlagsMask uint32 + FileFlags uint32 + FileOS uint32 + FileType uint32 + FileSubtype uint32 + FileDateMS uint32 + FileDateLS uint32 +} + type COAUTHIDENTITY struct { User *uint16 UserLength uint32 @@ -2772,3 +3112,9 @@ const ( // Flag for QueryFullProcessImageName. const PROCESS_NAME_NATIVE = 1 + +type ModuleInfo struct { + BaseOfDll uintptr + SizeOfImage uint32 + EntryPoint uintptr +} diff --git a/src/runtime/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/src/runtime/vendor/golang.org/x/sys/windows/zsyscall_windows.go index 559bc845c..ef3cfcfb2 100644 --- a/src/runtime/vendor/golang.org/x/sys/windows/zsyscall_windows.go +++ b/src/runtime/vendor/golang.org/x/sys/windows/zsyscall_windows.go @@ -51,6 +51,7 @@ var ( modshell32 = NewLazySystemDLL("shell32.dll") moduser32 = NewLazySystemDLL("user32.dll") moduserenv = NewLazySystemDLL("userenv.dll") + modversion = NewLazySystemDLL("version.dll") modwintrust = NewLazySystemDLL("wintrust.dll") modws2_32 = NewLazySystemDLL("ws2_32.dll") modwtsapi32 = NewLazySystemDLL("wtsapi32.dll") @@ -69,6 +70,7 @@ var ( procConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc("ConvertStringSecurityDescriptorToSecurityDescriptorW") procConvertStringSidToSidW = modadvapi32.NewProc("ConvertStringSidToSidW") procCopySid = modadvapi32.NewProc("CopySid") + procCreateProcessAsUserW = modadvapi32.NewProc("CreateProcessAsUserW") procCreateServiceW = modadvapi32.NewProc("CreateServiceW") procCreateWellKnownSid = modadvapi32.NewProc("CreateWellKnownSid") procCryptAcquireContextW = modadvapi32.NewProc("CryptAcquireContextW") @@ -123,6 +125,7 @@ var ( procRegQueryInfoKeyW = modadvapi32.NewProc("RegQueryInfoKeyW") procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW") procRegisterEventSourceW = modadvapi32.NewProc("RegisterEventSourceW") + procRegisterServiceCtrlHandlerExW = modadvapi32.NewProc("RegisterServiceCtrlHandlerExW") procReportEventW = modadvapi32.NewProc("ReportEventW") procRevertToSelf = modadvapi32.NewProc("RevertToSelf") procSetEntriesInAclW = modadvapi32.NewProc("SetEntriesInAclW") @@ -302,6 +305,7 @@ var ( procReadConsoleW = modkernel32.NewProc("ReadConsoleW") procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW") procReadFile = modkernel32.NewProc("ReadFile") + procReadProcessMemory = modkernel32.NewProc("ReadProcessMemory") procReleaseMutex = modkernel32.NewProc("ReleaseMutex") procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW") procResetEvent = modkernel32.NewProc("ResetEvent") @@ -344,11 +348,16 @@ var ( procVirtualFree = modkernel32.NewProc("VirtualFree") procVirtualLock = modkernel32.NewProc("VirtualLock") procVirtualProtect = modkernel32.NewProc("VirtualProtect") + procVirtualProtectEx = modkernel32.NewProc("VirtualProtectEx") + procVirtualQuery = modkernel32.NewProc("VirtualQuery") + procVirtualQueryEx = modkernel32.NewProc("VirtualQueryEx") procVirtualUnlock = modkernel32.NewProc("VirtualUnlock") + procWTSGetActiveConsoleSessionId = modkernel32.NewProc("WTSGetActiveConsoleSessionId") procWaitForMultipleObjects = modkernel32.NewProc("WaitForMultipleObjects") procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject") procWriteConsoleW = modkernel32.NewProc("WriteConsoleW") procWriteFile = modkernel32.NewProc("WriteFile") + procWriteProcessMemory = modkernel32.NewProc("WriteProcessMemory") procAcceptEx = modmswsock.NewProc("AcceptEx") procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs") procTransmitFile = modmswsock.NewProc("TransmitFile") @@ -357,9 +366,14 @@ var ( procNetUserGetInfo = modnetapi32.NewProc("NetUserGetInfo") procNtCreateFile = modntdll.NewProc("NtCreateFile") procNtCreateNamedPipeFile = modntdll.NewProc("NtCreateNamedPipeFile") + procNtSetInformationFile = modntdll.NewProc("NtSetInformationFile") procNtQueryInformationProcess = modntdll.NewProc("NtQueryInformationProcess") + procNtQuerySystemInformation = modntdll.NewProc("NtQuerySystemInformation") procNtSetInformationProcess = modntdll.NewProc("NtSetInformationProcess") + procNtSetSystemInformation = modntdll.NewProc("NtSetSystemInformation") + procRtlAddFunctionTable = modntdll.NewProc("RtlAddFunctionTable") procRtlDefaultNpAcl = modntdll.NewProc("RtlDefaultNpAcl") + procRtlDeleteFunctionTable = modntdll.NewProc("RtlDeleteFunctionTable") procRtlDosPathNameToNtPathName_U_WithStatus = modntdll.NewProc("RtlDosPathNameToNtPathName_U_WithStatus") procRtlDosPathNameToRelativeNtPathName_U_WithStatus = modntdll.NewProc("RtlDosPathNameToRelativeNtPathName_U_WithStatus") procRtlGetCurrentPeb = modntdll.NewProc("RtlGetCurrentPeb") @@ -375,7 +389,12 @@ var ( procCoTaskMemFree = modole32.NewProc("CoTaskMemFree") procCoUninitialize = modole32.NewProc("CoUninitialize") procStringFromGUID2 = modole32.NewProc("StringFromGUID2") + procEnumProcessModules = modpsapi.NewProc("EnumProcessModules") + procEnumProcessModulesEx = modpsapi.NewProc("EnumProcessModulesEx") procEnumProcesses = modpsapi.NewProc("EnumProcesses") + procGetModuleBaseNameW = modpsapi.NewProc("GetModuleBaseNameW") + procGetModuleFileNameExW = modpsapi.NewProc("GetModuleFileNameExW") + procGetModuleInformation = modpsapi.NewProc("GetModuleInformation") procSubscribeServiceChangeNotifications = modsechost.NewProc("SubscribeServiceChangeNotifications") procUnsubscribeServiceChangeNotifications = modsechost.NewProc("UnsubscribeServiceChangeNotifications") procGetUserNameExW = modsecur32.NewProc("GetUserNameExW") @@ -390,6 +409,9 @@ var ( procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock") procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock") procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW") + procGetFileVersionInfoSizeW = modversion.NewProc("GetFileVersionInfoSizeW") + procGetFileVersionInfoW = modversion.NewProc("GetFileVersionInfoW") + procVerQueryValueW = modversion.NewProc("VerQueryValueW") procWinVerifyTrustEx = modwintrust.NewProc("WinVerifyTrustEx") procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW") procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW") @@ -553,6 +575,18 @@ func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) { return } +func CreateProcessAsUser(token Token, appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) { + var _p0 uint32 + if inheritHandles { + _p0 = 1 + } + r1, _, e1 := syscall.Syscall12(procCreateProcessAsUserW.Addr(), 11, uintptr(token), uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) { r0, _, e1 := syscall.Syscall15(procCreateServiceW.Addr(), 13, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(unsafe.Pointer(displayName)), uintptr(access), uintptr(srvType), uintptr(startType), uintptr(errCtl), uintptr(unsafe.Pointer(pathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), 0, 0) handle = Handle(r0) @@ -1031,6 +1065,15 @@ func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Hand return } +func RegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, context uintptr) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procRegisterServiceCtrlHandlerExW.Addr(), 3, uintptr(unsafe.Pointer(serviceName)), uintptr(handlerProc), uintptr(context)) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + func ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) { r1, _, e1 := syscall.Syscall9(procReportEventW.Addr(), 9, uintptr(log), uintptr(etype), uintptr(category), uintptr(eventId), uintptr(usrSId), uintptr(numStrings), uintptr(dataSize), uintptr(unsafe.Pointer(strings)), uintptr(unsafe.Pointer(rawData))) if r1 == 0 { @@ -2617,6 +2660,14 @@ func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) ( return } +func ReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesRead *uintptr) (err error) { + r1, _, e1 := syscall.Syscall6(procReadProcessMemory.Addr(), 5, uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesRead)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func ReleaseMutex(mutex Handle) (err error) { r1, _, e1 := syscall.Syscall(procReleaseMutex.Addr(), 1, uintptr(mutex), 0, 0) if r1 == 0 { @@ -2971,6 +3022,30 @@ func VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect return } +func VirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect uint32, oldProtect *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procVirtualProtectEx.Addr(), 5, uintptr(process), uintptr(address), uintptr(size), uintptr(newProtect), uintptr(unsafe.Pointer(oldProtect)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func VirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) { + r1, _, e1 := syscall.Syscall(procVirtualQuery.Addr(), 3, uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func VirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) { + r1, _, e1 := syscall.Syscall6(procVirtualQueryEx.Addr(), 4, uintptr(process), uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func VirtualUnlock(addr uintptr, length uintptr) (err error) { r1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0) if r1 == 0 { @@ -2979,6 +3054,12 @@ func VirtualUnlock(addr uintptr, length uintptr) (err error) { return } +func WTSGetActiveConsoleSessionId() (sessionID uint32) { + r0, _, _ := syscall.Syscall(procWTSGetActiveConsoleSessionId.Addr(), 0, 0, 0, 0) + sessionID = uint32(r0) + return +} + func waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) { var _p0 uint32 if waitAll { @@ -3021,6 +3102,14 @@ func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) return } +func WriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesWritten *uintptr) (err error) { + r1, _, e1 := syscall.Syscall6(procWriteProcessMemory.Addr(), 5, uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesWritten)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) { r1, _, e1 := syscall.Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0) if r1 == 0 { @@ -3082,6 +3171,14 @@ func NtCreateNamedPipeFile(pipe *Handle, access uint32, oa *OBJECT_ATTRIBUTES, i return } +func NtSetInformationFile(handle Handle, iosb *IO_STATUS_BLOCK, inBuffer *byte, inBufferLen uint32, class uint32) (ntstatus error) { + r0, _, _ := syscall.Syscall6(procNtSetInformationFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(iosb)), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen), uintptr(class), 0) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + func NtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32, retLen *uint32) (ntstatus error) { r0, _, _ := syscall.Syscall6(procNtQueryInformationProcess.Addr(), 5, uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen), uintptr(unsafe.Pointer(retLen)), 0) if r0 != 0 { @@ -3090,6 +3187,14 @@ func NtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe return } +func NtQuerySystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32, retLen *uint32) (ntstatus error) { + r0, _, _ := syscall.Syscall6(procNtQuerySystemInformation.Addr(), 4, uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen), uintptr(unsafe.Pointer(retLen)), 0, 0) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + func NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) { r0, _, _ := syscall.Syscall6(procNtSetInformationProcess.Addr(), 4, uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen), 0, 0) if r0 != 0 { @@ -3098,6 +3203,20 @@ func NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.P return } +func NtSetSystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32) (ntstatus error) { + r0, _, _ := syscall.Syscall(procNtSetSystemInformation.Addr(), 3, uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen)) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func RtlAddFunctionTable(functionTable *RUNTIME_FUNCTION, entryCount uint32, baseAddress uintptr) (ret bool) { + r0, _, _ := syscall.Syscall(procRtlAddFunctionTable.Addr(), 3, uintptr(unsafe.Pointer(functionTable)), uintptr(entryCount), uintptr(baseAddress)) + ret = r0 != 0 + return +} + func RtlDefaultNpAcl(acl **ACL) (ntstatus error) { r0, _, _ := syscall.Syscall(procRtlDefaultNpAcl.Addr(), 1, uintptr(unsafe.Pointer(acl)), 0, 0) if r0 != 0 { @@ -3106,6 +3225,12 @@ func RtlDefaultNpAcl(acl **ACL) (ntstatus error) { return } +func RtlDeleteFunctionTable(functionTable *RUNTIME_FUNCTION) (ret bool) { + r0, _, _ := syscall.Syscall(procRtlDeleteFunctionTable.Addr(), 1, uintptr(unsafe.Pointer(functionTable)), 0, 0) + ret = r0 != 0 + return +} + func RtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) { r0, _, _ := syscall.Syscall6(procRtlDosPathNameToNtPathName_U_WithStatus.Addr(), 4, uintptr(unsafe.Pointer(dosName)), uintptr(unsafe.Pointer(ntName)), uintptr(unsafe.Pointer(ntFileNamePart)), uintptr(unsafe.Pointer(relativeName)), 0, 0) if r0 != 0 { @@ -3205,6 +3330,22 @@ func stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) { return } +func EnumProcessModules(process Handle, module *Handle, cb uint32, cbNeeded *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procEnumProcessModules.Addr(), 4, uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func EnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *uint32, filterFlag uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procEnumProcessModulesEx.Addr(), 5, uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded)), uintptr(filterFlag), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) { var _p0 *uint32 if len(processIds) > 0 { @@ -3217,6 +3358,30 @@ func EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) { return } +func GetModuleBaseName(process Handle, module Handle, baseName *uint16, size uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetModuleBaseNameW.Addr(), 4, uintptr(process), uintptr(module), uintptr(unsafe.Pointer(baseName)), uintptr(size), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetModuleFileNameEx(process Handle, module Handle, filename *uint16, size uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetModuleFileNameExW.Addr(), 4, uintptr(process), uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetModuleInformation.Addr(), 4, uintptr(process), uintptr(module), uintptr(unsafe.Pointer(modinfo)), uintptr(cb), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) { ret = procSubscribeServiceChangeNotifications.Find() if ret != nil { @@ -3339,6 +3504,58 @@ func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) { return } +func GetFileVersionInfoSize(filename string, zeroHandle *Handle) (bufSize uint32, err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(filename) + if err != nil { + return + } + return _GetFileVersionInfoSize(_p0, zeroHandle) +} + +func _GetFileVersionInfoSize(filename *uint16, zeroHandle *Handle) (bufSize uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetFileVersionInfoSizeW.Addr(), 2, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(zeroHandle)), 0) + bufSize = uint32(r0) + if bufSize == 0 { + err = errnoErr(e1) + } + return +} + +func GetFileVersionInfo(filename string, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(filename) + if err != nil { + return + } + return _GetFileVersionInfo(_p0, handle, bufSize, buffer) +} + +func _GetFileVersionInfo(filename *uint16, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) { + r1, _, e1 := syscall.Syscall6(procGetFileVersionInfoW.Addr(), 4, uintptr(unsafe.Pointer(filename)), uintptr(handle), uintptr(bufSize), uintptr(buffer), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func VerQueryValue(block unsafe.Pointer, subBlock string, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(subBlock) + if err != nil { + return + } + return _VerQueryValue(block, _p0, pointerToBufferPointer, bufSize) +} + +func _VerQueryValue(block unsafe.Pointer, subBlock *uint16, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procVerQueryValueW.Addr(), 4, uintptr(block), uintptr(unsafe.Pointer(subBlock)), uintptr(pointerToBufferPointer), uintptr(unsafe.Pointer(bufSize)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) { r0, _, _ := syscall.Syscall(procWinVerifyTrustEx.Addr(), 3, uintptr(hwnd), uintptr(unsafe.Pointer(actionId)), uintptr(unsafe.Pointer(data))) if r0 != 0 { diff --git a/src/runtime/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go b/src/runtime/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go index e4c62289f..8a7392c4a 100644 --- a/src/runtime/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go +++ b/src/runtime/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build go1.10 // +build go1.10 package bidirule diff --git a/src/runtime/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go b/src/runtime/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go index 02b9e1e9d..bb0a92001 100644 --- a/src/runtime/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go +++ b/src/runtime/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !go1.10 // +build !go1.10 package bidirule diff --git a/src/runtime/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go b/src/runtime/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go index d8c94e1bd..42fa8d72c 100644 --- a/src/runtime/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go +++ b/src/runtime/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.10 && !go1.13 // +build go1.10,!go1.13 package bidi diff --git a/src/runtime/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go b/src/runtime/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go index 16b11db53..56a0e1ea2 100644 --- a/src/runtime/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go +++ b/src/runtime/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.13 && !go1.14 // +build go1.13,!go1.14 package bidi diff --git a/src/runtime/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go b/src/runtime/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go index 647f2d427..baacf32b4 100644 --- a/src/runtime/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go +++ b/src/runtime/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.14 && !go1.16 // +build go1.14,!go1.16 package bidi diff --git a/src/runtime/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go b/src/runtime/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go index c937d0976..f248effae 100644 --- a/src/runtime/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go +++ b/src/runtime/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.16 // +build go1.16 package bidi diff --git a/src/runtime/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go b/src/runtime/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go index 0ca0193eb..f517fdb20 100644 --- a/src/runtime/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go +++ b/src/runtime/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build !go1.10 // +build !go1.10 package bidi diff --git a/src/runtime/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go b/src/runtime/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go index 26fbd55a1..f5a078827 100644 --- a/src/runtime/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go +++ b/src/runtime/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.10 && !go1.13 // +build go1.10,!go1.13 package norm diff --git a/src/runtime/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go b/src/runtime/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go index 2c58f09ba..cb7239c43 100644 --- a/src/runtime/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go +++ b/src/runtime/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.13 && !go1.14 // +build go1.13,!go1.14 package norm diff --git a/src/runtime/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go b/src/runtime/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go index 7e1ae096e..11b273300 100644 --- a/src/runtime/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go +++ b/src/runtime/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.14 && !go1.16 // +build go1.14,!go1.16 package norm diff --git a/src/runtime/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go b/src/runtime/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go index 9ea1b4214..96a130d30 100644 --- a/src/runtime/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go +++ b/src/runtime/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.16 // +build go1.16 package norm diff --git a/src/runtime/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go b/src/runtime/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go index 942906929..0175eae50 100644 --- a/src/runtime/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go +++ b/src/runtime/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build !go1.10 // +build !go1.10 package norm diff --git a/src/runtime/vendor/golang.org/x/text/width/tables10.0.0.go b/src/runtime/vendor/golang.org/x/text/width/tables10.0.0.go index decb8e480..186b1d4ef 100644 --- a/src/runtime/vendor/golang.org/x/text/width/tables10.0.0.go +++ b/src/runtime/vendor/golang.org/x/text/width/tables10.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.10 && !go1.13 // +build go1.10,!go1.13 package width diff --git a/src/runtime/vendor/golang.org/x/text/width/tables11.0.0.go b/src/runtime/vendor/golang.org/x/text/width/tables11.0.0.go index 3c75e428f..990f7622f 100644 --- a/src/runtime/vendor/golang.org/x/text/width/tables11.0.0.go +++ b/src/runtime/vendor/golang.org/x/text/width/tables11.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.13 && !go1.14 // +build go1.13,!go1.14 package width diff --git a/src/runtime/vendor/golang.org/x/text/width/tables12.0.0.go b/src/runtime/vendor/golang.org/x/text/width/tables12.0.0.go index 543942b9e..85296297e 100644 --- a/src/runtime/vendor/golang.org/x/text/width/tables12.0.0.go +++ b/src/runtime/vendor/golang.org/x/text/width/tables12.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.14 && !go1.16 // +build go1.14,!go1.16 package width diff --git a/src/runtime/vendor/golang.org/x/text/width/tables13.0.0.go b/src/runtime/vendor/golang.org/x/text/width/tables13.0.0.go index 804264ca6..bac3f1aee 100644 --- a/src/runtime/vendor/golang.org/x/text/width/tables13.0.0.go +++ b/src/runtime/vendor/golang.org/x/text/width/tables13.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.16 // +build go1.16 package width diff --git a/src/runtime/vendor/golang.org/x/text/width/tables9.0.0.go b/src/runtime/vendor/golang.org/x/text/width/tables9.0.0.go index 7069e2634..b3db84f6f 100644 --- a/src/runtime/vendor/golang.org/x/text/width/tables9.0.0.go +++ b/src/runtime/vendor/golang.org/x/text/width/tables9.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build !go1.10 // +build !go1.10 package width diff --git a/src/runtime/vendor/google.golang.org/grpc/.travis.yml b/src/runtime/vendor/google.golang.org/grpc/.travis.yml deleted file mode 100644 index 5847d94e5..000000000 --- a/src/runtime/vendor/google.golang.org/grpc/.travis.yml +++ /dev/null @@ -1,42 +0,0 @@ -language: go - -matrix: - include: - - go: 1.14.x - env: VET=1 GO111MODULE=on - - go: 1.14.x - env: RACE=1 GO111MODULE=on - - go: 1.14.x - env: RUN386=1 - - go: 1.14.x - env: GRPC_GO_RETRY=on - - go: 1.14.x - env: TESTEXTRAS=1 - - go: 1.13.x - env: GO111MODULE=on - - go: 1.12.x - env: GO111MODULE=on - - go: 1.11.x # Keep until interop tests no longer require Go1.11 - env: GO111MODULE=on - -go_import_path: google.golang.org/grpc - -before_install: - - if [[ "${GO111MODULE}" = "on" ]]; then mkdir "${HOME}/go"; export GOPATH="${HOME}/go"; fi - - if [[ -n "${RUN386}" ]]; then export GOARCH=386; fi - - if [[ "${TRAVIS_EVENT_TYPE}" = "cron" && -z "${RUN386}" ]]; then RACE=1; fi - - if [[ "${TRAVIS_EVENT_TYPE}" != "cron" ]]; then export VET_SKIP_PROTO=1; fi - -install: - - try3() { eval "$*" || eval "$*" || eval "$*"; } - - try3 'if [[ "${GO111MODULE}" = "on" ]]; then go mod download; else make testdeps; fi' - - if [[ -n "${GAE}" ]]; then source ./install_gae.sh; make testappenginedeps; fi - - if [[ -n "${VET}" ]]; then ./vet.sh -install; fi - -script: - - set -e - - if [[ -n "${TESTEXTRAS}" ]]; then examples/examples_test.sh; security/advancedtls/examples/examples_test.sh; interop/interop_test.sh; make testsubmodule; exit 0; fi - - if [[ -n "${VET}" ]]; then ./vet.sh; fi - - if [[ -n "${GAE}" ]]; then make testappengine; exit 0; fi - - if [[ -n "${RACE}" ]]; then make testrace; exit 0; fi - - make test diff --git a/src/runtime/vendor/google.golang.org/grpc/MAINTAINERS.md b/src/runtime/vendor/google.golang.org/grpc/MAINTAINERS.md index 093c82b3a..c6672c0a3 100644 --- a/src/runtime/vendor/google.golang.org/grpc/MAINTAINERS.md +++ b/src/runtime/vendor/google.golang.org/grpc/MAINTAINERS.md @@ -8,17 +8,18 @@ See [CONTRIBUTING.md](https://github.com/grpc/grpc-community/blob/master/CONTRIB for general contribution guidelines. ## Maintainers (in alphabetical order) -- [canguler](https://github.com/canguler), Google LLC + - [cesarghali](https://github.com/cesarghali), Google LLC - [dfawley](https://github.com/dfawley), Google LLC - [easwars](https://github.com/easwars), Google LLC -- [jadekler](https://github.com/jadekler), Google LLC - [menghanl](https://github.com/menghanl), Google LLC - [srini100](https://github.com/srini100), Google LLC ## Emeritus Maintainers (in alphabetical order) - [adelez](https://github.com/adelez), Google LLC +- [canguler](https://github.com/canguler), Google LLC - [iamqizhao](https://github.com/iamqizhao), Google LLC +- [jadekler](https://github.com/jadekler), Google LLC - [jtattermusch](https://github.com/jtattermusch), Google LLC - [lyuxuan](https://github.com/lyuxuan), Google LLC - [makmukhi](https://github.com/makmukhi), Google LLC diff --git a/src/runtime/vendor/google.golang.org/grpc/Makefile b/src/runtime/vendor/google.golang.org/grpc/Makefile index 1f0722f16..1f8960922 100644 --- a/src/runtime/vendor/google.golang.org/grpc/Makefile +++ b/src/runtime/vendor/google.golang.org/grpc/Makefile @@ -41,8 +41,6 @@ vetdeps: clean \ proto \ test \ - testappengine \ - testappenginedeps \ testrace \ vet \ vetdeps diff --git a/src/runtime/vendor/google.golang.org/grpc/NOTICE.txt b/src/runtime/vendor/google.golang.org/grpc/NOTICE.txt new file mode 100644 index 000000000..530197749 --- /dev/null +++ b/src/runtime/vendor/google.golang.org/grpc/NOTICE.txt @@ -0,0 +1,13 @@ +Copyright 2014 gRPC authors. + +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/src/runtime/vendor/google.golang.org/grpc/README.md b/src/runtime/vendor/google.golang.org/grpc/README.md index 3949a683f..0e6ae69a5 100644 --- a/src/runtime/vendor/google.golang.org/grpc/README.md +++ b/src/runtime/vendor/google.golang.org/grpc/README.md @@ -136,6 +136,6 @@ errors. [Go module]: https://github.com/golang/go/wiki/Modules [gRPC]: https://grpc.io [Go gRPC docs]: https://grpc.io/docs/languages/go -[Performance benchmark]: https://performance-dot-grpc-testing.appspot.com/explore?dashboard=5652536396611584&widget=490377658&container=1286539696 +[Performance benchmark]: https://performance-dot-grpc-testing.appspot.com/explore?dashboard=5180705743044608 [quick start]: https://grpc.io/docs/languages/go/quickstart [go-releases]: https://golang.org/doc/devel/release.html diff --git a/src/runtime/vendor/google.golang.org/grpc/balancer/balancer.go b/src/runtime/vendor/google.golang.org/grpc/balancer/balancer.go index 788759bde..178de0898 100644 --- a/src/runtime/vendor/google.golang.org/grpc/balancer/balancer.go +++ b/src/runtime/vendor/google.golang.org/grpc/balancer/balancer.go @@ -75,24 +75,26 @@ func Get(name string) Builder { return nil } -// SubConn represents a gRPC sub connection. -// Each sub connection contains a list of addresses. gRPC will -// try to connect to them (in sequence), and stop trying the -// remainder once one connection is successful. +// A SubConn represents a single connection to a gRPC backend service. // -// The reconnect backoff will be applied on the list, not a single address. -// For example, try_on_all_addresses -> backoff -> try_on_all_addresses. +// Each SubConn contains a list of addresses. // -// All SubConns start in IDLE, and will not try to connect. To trigger -// the connecting, Balancers must call Connect. -// When the connection encounters an error, it will reconnect immediately. -// When the connection becomes IDLE, it will not reconnect unless Connect is -// called. +// All SubConns start in IDLE, and will not try to connect. To trigger the +// connecting, Balancers must call Connect. If a connection re-enters IDLE, +// Balancers must call Connect again to trigger a new connection attempt. // -// This interface is to be implemented by gRPC. Users should not need a -// brand new implementation of this interface. For the situations like -// testing, the new implementation should embed this interface. This allows -// gRPC to add new methods to this interface. +// gRPC will try to connect to the addresses in sequence, and stop trying the +// remainder once the first connection is successful. If an attempt to connect +// to all addresses encounters an error, the SubConn will enter +// TRANSIENT_FAILURE for a backoff period, and then transition to IDLE. +// +// Once established, if a connection is lost, the SubConn will transition +// directly to IDLE. +// +// This interface is to be implemented by gRPC. Users should not need their own +// implementation of this interface. For situations like testing, any +// implementations should embed this interface. This allows gRPC to add new +// methods to this interface. type SubConn interface { // UpdateAddresses updates the addresses used in this SubConn. // gRPC checks if currently-connected address is still in the new list. @@ -101,6 +103,9 @@ type SubConn interface { // a new connection will be created. // // This will trigger a state transition for the SubConn. + // + // Deprecated: This method is now part of the ClientConn interface and will + // eventually be removed from here. UpdateAddresses([]resolver.Address) // Connect starts the connecting for this SubConn. Connect() @@ -143,6 +148,13 @@ type ClientConn interface { // RemoveSubConn removes the SubConn from ClientConn. // The SubConn will be shutdown. RemoveSubConn(SubConn) + // UpdateAddresses updates the addresses used in the passed in SubConn. + // gRPC checks if the currently connected address is still in the new list. + // If so, the connection will be kept. Else, the connection will be + // gracefully closed, and a new connection will be created. + // + // This will trigger a state transition for the SubConn. + UpdateAddresses(SubConn, []resolver.Address) // UpdateState notifies gRPC that the balancer's internal state has // changed. @@ -316,6 +328,20 @@ type Balancer interface { Close() } +// ExitIdler is an optional interface for balancers to implement. If +// implemented, ExitIdle will be called when ClientConn.Connect is called, if +// the ClientConn is idle. If unimplemented, ClientConn.Connect will cause +// all SubConns to connect. +// +// Notice: it will be required for all balancers to implement this in a future +// release. +type ExitIdler interface { + // ExitIdle instructs the LB policy to reconnect to backends / exit the + // IDLE state, if appropriate and possible. Note that SubConns that enter + // the IDLE state will not reconnect until SubConn.Connect is called. + ExitIdle() +} + // SubConnState describes the state of a SubConn. type SubConnState struct { // ConnectivityState is the connectivity state of the SubConn. @@ -343,8 +369,10 @@ var ErrBadResolverState = errors.New("bad resolver state") // // It's not thread safe. type ConnectivityStateEvaluator struct { - numReady uint64 // Number of addrConns in ready state. - numConnecting uint64 // Number of addrConns in connecting state. + numReady uint64 // Number of addrConns in ready state. + numConnecting uint64 // Number of addrConns in connecting state. + numTransientFailure uint64 // Number of addrConns in transient failure state. + numIdle uint64 // Number of addrConns in idle state. } // RecordTransition records state change happening in subConn and based on that @@ -352,9 +380,11 @@ type ConnectivityStateEvaluator struct { // // - If at least one SubConn in Ready, the aggregated state is Ready; // - Else if at least one SubConn in Connecting, the aggregated state is Connecting; -// - Else the aggregated state is TransientFailure. +// - Else if at least one SubConn is TransientFailure, the aggregated state is Transient Failure; +// - Else if at least one SubConn is Idle, the aggregated state is Idle; +// - Else there are no subconns and the aggregated state is Transient Failure // -// Idle and Shutdown are not considered. +// Shutdown is not considered. func (cse *ConnectivityStateEvaluator) RecordTransition(oldState, newState connectivity.State) connectivity.State { // Update counters. for idx, state := range []connectivity.State{oldState, newState} { @@ -364,6 +394,10 @@ func (cse *ConnectivityStateEvaluator) RecordTransition(oldState, newState conne cse.numReady += updateVal case connectivity.Connecting: cse.numConnecting += updateVal + case connectivity.TransientFailure: + cse.numTransientFailure += updateVal + case connectivity.Idle: + cse.numIdle += updateVal } } @@ -374,5 +408,11 @@ func (cse *ConnectivityStateEvaluator) RecordTransition(oldState, newState conne if cse.numConnecting > 0 { return connectivity.Connecting } + if cse.numTransientFailure > 0 { + return connectivity.TransientFailure + } + if cse.numIdle > 0 { + return connectivity.Idle + } return connectivity.TransientFailure } diff --git a/src/runtime/vendor/google.golang.org/grpc/balancer/base/balancer.go b/src/runtime/vendor/google.golang.org/grpc/balancer/base/balancer.go index e0d34288c..8dd504299 100644 --- a/src/runtime/vendor/google.golang.org/grpc/balancer/base/balancer.go +++ b/src/runtime/vendor/google.golang.org/grpc/balancer/base/balancer.go @@ -22,6 +22,7 @@ import ( "errors" "fmt" + "google.golang.org/grpc/attributes" "google.golang.org/grpc/balancer" "google.golang.org/grpc/connectivity" "google.golang.org/grpc/grpclog" @@ -41,7 +42,7 @@ func (bb *baseBuilder) Build(cc balancer.ClientConn, opt balancer.BuildOptions) cc: cc, pickerBuilder: bb.pickerBuilder, - subConns: make(map[resolver.Address]balancer.SubConn), + subConns: make(map[resolver.Address]subConnInfo), scStates: make(map[balancer.SubConn]connectivity.State), csEvltr: &balancer.ConnectivityStateEvaluator{}, config: bb.config, @@ -57,6 +58,11 @@ func (bb *baseBuilder) Name() string { return bb.name } +type subConnInfo struct { + subConn balancer.SubConn + attrs *attributes.Attributes +} + type baseBalancer struct { cc balancer.ClientConn pickerBuilder PickerBuilder @@ -64,7 +70,7 @@ type baseBalancer struct { csEvltr *balancer.ConnectivityStateEvaluator state connectivity.State - subConns map[resolver.Address]balancer.SubConn // `attributes` is stripped from the keys of this map (the addresses) + subConns map[resolver.Address]subConnInfo // `attributes` is stripped from the keys of this map (the addresses) scStates map[balancer.SubConn]connectivity.State picker balancer.Picker config Config @@ -114,7 +120,7 @@ func (b *baseBalancer) UpdateClientConnState(s balancer.ClientConnState) error { aNoAttrs := a aNoAttrs.Attributes = nil addrsSet[aNoAttrs] = struct{}{} - if sc, ok := b.subConns[aNoAttrs]; !ok { + if scInfo, ok := b.subConns[aNoAttrs]; !ok { // a is a new address (not existing in b.subConns). // // When creating SubConn, the original address with attributes is @@ -125,8 +131,9 @@ func (b *baseBalancer) UpdateClientConnState(s balancer.ClientConnState) error { logger.Warningf("base.baseBalancer: failed to create new SubConn: %v", err) continue } - b.subConns[aNoAttrs] = sc + b.subConns[aNoAttrs] = subConnInfo{subConn: sc, attrs: a.Attributes} b.scStates[sc] = connectivity.Idle + b.csEvltr.RecordTransition(connectivity.Shutdown, connectivity.Idle) sc.Connect() } else { // Always update the subconn's address in case the attributes @@ -135,13 +142,15 @@ func (b *baseBalancer) UpdateClientConnState(s balancer.ClientConnState) error { // The SubConn does a reflect.DeepEqual of the new and old // addresses. So this is a noop if the current address is the same // as the old one (including attributes). - sc.UpdateAddresses([]resolver.Address{a}) + scInfo.attrs = a.Attributes + b.subConns[aNoAttrs] = scInfo + b.cc.UpdateAddresses(scInfo.subConn, []resolver.Address{a}) } } - for a, sc := range b.subConns { + for a, scInfo := range b.subConns { // a was removed by resolver. if _, ok := addrsSet[a]; !ok { - b.cc.RemoveSubConn(sc) + b.cc.RemoveSubConn(scInfo.subConn) delete(b.subConns, a) // Keep the state of this sc in b.scStates until sc's state becomes Shutdown. // The entry will be deleted in UpdateSubConnState. @@ -184,9 +193,10 @@ func (b *baseBalancer) regeneratePicker() { readySCs := make(map[balancer.SubConn]SubConnInfo) // Filter out all ready SCs from full subConn map. - for addr, sc := range b.subConns { - if st, ok := b.scStates[sc]; ok && st == connectivity.Ready { - readySCs[sc] = SubConnInfo{Address: addr} + for addr, scInfo := range b.subConns { + if st, ok := b.scStates[scInfo.subConn]; ok && st == connectivity.Ready { + addr.Attributes = scInfo.attrs + readySCs[scInfo.subConn] = SubConnInfo{Address: addr} } } b.picker = b.pickerBuilder.Build(PickerBuildInfo{ReadySCs: readySCs}) @@ -204,10 +214,14 @@ func (b *baseBalancer) UpdateSubConnState(sc balancer.SubConn, state balancer.Su } return } - if oldS == connectivity.TransientFailure && s == connectivity.Connecting { - // Once a subconn enters TRANSIENT_FAILURE, ignore subsequent + if oldS == connectivity.TransientFailure && + (s == connectivity.Connecting || s == connectivity.Idle) { + // Once a subconn enters TRANSIENT_FAILURE, ignore subsequent IDLE or // CONNECTING transitions to prevent the aggregated state from being // always CONNECTING when many backends exist but are all down. + if s == connectivity.Idle { + sc.Connect() + } return } b.scStates[sc] = s @@ -233,7 +247,6 @@ func (b *baseBalancer) UpdateSubConnState(sc balancer.SubConn, state balancer.Su b.state == connectivity.TransientFailure { b.regeneratePicker() } - b.cc.UpdateState(balancer.State{ConnectivityState: b.state, Picker: b.picker}) } @@ -242,6 +255,11 @@ func (b *baseBalancer) UpdateSubConnState(sc balancer.SubConn, state balancer.Su func (b *baseBalancer) Close() { } +// ExitIdle is a nop because the base balancer attempts to stay connected to +// all SubConns at all times. +func (b *baseBalancer) ExitIdle() { +} + // NewErrPicker returns a Picker that always returns err on Pick(). func NewErrPicker(err error) balancer.Picker { return &errPicker{err: err} diff --git a/src/runtime/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go b/src/runtime/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go index 43c2a1537..274eb2f85 100644 --- a/src/runtime/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go +++ b/src/runtime/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go @@ -47,11 +47,11 @@ func init() { type rrPickerBuilder struct{} func (*rrPickerBuilder) Build(info base.PickerBuildInfo) balancer.Picker { - logger.Infof("roundrobinPicker: newPicker called with info: %v", info) + logger.Infof("roundrobinPicker: Build called with info: %v", info) if len(info.ReadySCs) == 0 { return base.NewErrPicker(balancer.ErrNoSubConnAvailable) } - var scs []balancer.SubConn + scs := make([]balancer.SubConn, 0, len(info.ReadySCs)) for sc := range info.ReadySCs { scs = append(scs, sc) } diff --git a/src/runtime/vendor/google.golang.org/grpc/balancer_conn_wrappers.go b/src/runtime/vendor/google.golang.org/grpc/balancer_conn_wrappers.go index 11e592aab..f4ea61746 100644 --- a/src/runtime/vendor/google.golang.org/grpc/balancer_conn_wrappers.go +++ b/src/runtime/vendor/google.golang.org/grpc/balancer_conn_wrappers.go @@ -37,14 +37,20 @@ type scStateUpdate struct { err error } +// exitIdle contains no data and is just a signal sent on the updateCh in +// ccBalancerWrapper to instruct the balancer to exit idle. +type exitIdle struct{} + // ccBalancerWrapper is a wrapper on top of cc for balancers. // It implements balancer.ClientConn interface. type ccBalancerWrapper struct { - cc *ClientConn - balancerMu sync.Mutex // synchronizes calls to the balancer - balancer balancer.Balancer - scBuffer *buffer.Unbounded - done *grpcsync.Event + cc *ClientConn + balancerMu sync.Mutex // synchronizes calls to the balancer + balancer balancer.Balancer + hasExitIdle bool + updateCh *buffer.Unbounded + closed *grpcsync.Event + done *grpcsync.Event mu sync.Mutex subConns map[*acBalancerWrapper]struct{} @@ -53,12 +59,14 @@ type ccBalancerWrapper struct { func newCCBalancerWrapper(cc *ClientConn, b balancer.Builder, bopts balancer.BuildOptions) *ccBalancerWrapper { ccb := &ccBalancerWrapper{ cc: cc, - scBuffer: buffer.NewUnbounded(), + updateCh: buffer.NewUnbounded(), + closed: grpcsync.NewEvent(), done: grpcsync.NewEvent(), subConns: make(map[*acBalancerWrapper]struct{}), } go ccb.watcher() ccb.balancer = b.Build(ccb, bopts) + _, ccb.hasExitIdle = ccb.balancer.(balancer.ExitIdler) return ccb } @@ -67,35 +75,72 @@ func newCCBalancerWrapper(cc *ClientConn, b balancer.Builder, bopts balancer.Bui func (ccb *ccBalancerWrapper) watcher() { for { select { - case t := <-ccb.scBuffer.Get(): - ccb.scBuffer.Load() - if ccb.done.HasFired() { + case t := <-ccb.updateCh.Get(): + ccb.updateCh.Load() + if ccb.closed.HasFired() { break } - ccb.balancerMu.Lock() - su := t.(*scStateUpdate) - ccb.balancer.UpdateSubConnState(su.sc, balancer.SubConnState{ConnectivityState: su.state, ConnectionError: su.err}) - ccb.balancerMu.Unlock() - case <-ccb.done.Done(): + switch u := t.(type) { + case *scStateUpdate: + ccb.balancerMu.Lock() + ccb.balancer.UpdateSubConnState(u.sc, balancer.SubConnState{ConnectivityState: u.state, ConnectionError: u.err}) + ccb.balancerMu.Unlock() + case *acBalancerWrapper: + ccb.mu.Lock() + if ccb.subConns != nil { + delete(ccb.subConns, u) + ccb.cc.removeAddrConn(u.getAddrConn(), errConnDrain) + } + ccb.mu.Unlock() + case exitIdle: + if ccb.cc.GetState() == connectivity.Idle { + if ei, ok := ccb.balancer.(balancer.ExitIdler); ok { + // We already checked that the balancer implements + // ExitIdle before pushing the event to updateCh, but + // check conditionally again as defensive programming. + ccb.balancerMu.Lock() + ei.ExitIdle() + ccb.balancerMu.Unlock() + } + } + default: + logger.Errorf("ccBalancerWrapper.watcher: unknown update %+v, type %T", t, t) + } + case <-ccb.closed.Done(): } - if ccb.done.HasFired() { + if ccb.closed.HasFired() { + ccb.balancerMu.Lock() ccb.balancer.Close() + ccb.balancerMu.Unlock() ccb.mu.Lock() scs := ccb.subConns ccb.subConns = nil ccb.mu.Unlock() + ccb.UpdateState(balancer.State{ConnectivityState: connectivity.Connecting, Picker: nil}) + ccb.done.Fire() + // Fire done before removing the addr conns. We can safely unblock + // ccb.close and allow the removeAddrConns to happen + // asynchronously. for acbw := range scs { ccb.cc.removeAddrConn(acbw.getAddrConn(), errConnDrain) } - ccb.UpdateState(balancer.State{ConnectivityState: connectivity.Connecting, Picker: nil}) return } } } func (ccb *ccBalancerWrapper) close() { - ccb.done.Fire() + ccb.closed.Fire() + <-ccb.done.Done() +} + +func (ccb *ccBalancerWrapper) exitIdle() bool { + if !ccb.hasExitIdle { + return false + } + ccb.updateCh.Put(exitIdle{}) + return true } func (ccb *ccBalancerWrapper) handleSubConnStateChange(sc balancer.SubConn, s connectivity.State, err error) { @@ -109,7 +154,7 @@ func (ccb *ccBalancerWrapper) handleSubConnStateChange(sc balancer.SubConn, s co if sc == nil { return } - ccb.scBuffer.Put(&scStateUpdate{ + ccb.updateCh.Put(&scStateUpdate{ sc: sc, state: s, err: err, @@ -124,8 +169,8 @@ func (ccb *ccBalancerWrapper) updateClientConnState(ccs *balancer.ClientConnStat func (ccb *ccBalancerWrapper) resolverError(err error) { ccb.balancerMu.Lock() + defer ccb.balancerMu.Unlock() ccb.balancer.ResolverError(err) - ccb.balancerMu.Unlock() } func (ccb *ccBalancerWrapper) NewSubConn(addrs []resolver.Address, opts balancer.NewSubConnOptions) (balancer.SubConn, error) { @@ -150,17 +195,18 @@ func (ccb *ccBalancerWrapper) NewSubConn(addrs []resolver.Address, opts balancer } func (ccb *ccBalancerWrapper) RemoveSubConn(sc balancer.SubConn) { + // The RemoveSubConn() is handled in the run() goroutine, to avoid deadlock + // during switchBalancer() if the old balancer calls RemoveSubConn() in its + // Close(). + ccb.updateCh.Put(sc) +} + +func (ccb *ccBalancerWrapper) UpdateAddresses(sc balancer.SubConn, addrs []resolver.Address) { acbw, ok := sc.(*acBalancerWrapper) if !ok { return } - ccb.mu.Lock() - defer ccb.mu.Unlock() - if ccb.subConns == nil { - return - } - delete(ccb.subConns, acbw) - ccb.cc.removeAddrConn(acbw.getAddrConn(), errConnDrain) + acbw.UpdateAddresses(addrs) } func (ccb *ccBalancerWrapper) UpdateState(s balancer.State) { @@ -197,7 +243,7 @@ func (acbw *acBalancerWrapper) UpdateAddresses(addrs []resolver.Address) { acbw.mu.Lock() defer acbw.mu.Unlock() if len(addrs) <= 0 { - acbw.ac.tearDown(errConnDrain) + acbw.ac.cc.removeAddrConn(acbw.ac, errConnDrain) return } if !acbw.ac.tryUpdateAddrs(addrs) { @@ -212,23 +258,23 @@ func (acbw *acBalancerWrapper) UpdateAddresses(addrs []resolver.Address) { acbw.ac.acbw = nil acbw.ac.mu.Unlock() acState := acbw.ac.getState() - acbw.ac.tearDown(errConnDrain) + acbw.ac.cc.removeAddrConn(acbw.ac, errConnDrain) if acState == connectivity.Shutdown { return } - ac, err := cc.newAddrConn(addrs, opts) + newAC, err := cc.newAddrConn(addrs, opts) if err != nil { channelz.Warningf(logger, acbw.ac.channelzID, "acBalancerWrapper: UpdateAddresses: failed to newAddrConn: %v", err) return } - acbw.ac = ac - ac.mu.Lock() - ac.acbw = acbw - ac.mu.Unlock() + acbw.ac = newAC + newAC.mu.Lock() + newAC.acbw = acbw + newAC.mu.Unlock() if acState != connectivity.Idle { - ac.connect() + go newAC.connect() } } } @@ -236,7 +282,7 @@ func (acbw *acBalancerWrapper) UpdateAddresses(addrs []resolver.Address) { func (acbw *acBalancerWrapper) Connect() { acbw.mu.Lock() defer acbw.mu.Unlock() - acbw.ac.connect() + go acbw.ac.connect() } func (acbw *acBalancerWrapper) getAddrConn() *addrConn { diff --git a/src/runtime/vendor/google.golang.org/grpc/clientconn.go b/src/runtime/vendor/google.golang.org/grpc/clientconn.go index 77a08fd33..34cc4c948 100644 --- a/src/runtime/vendor/google.golang.org/grpc/clientconn.go +++ b/src/runtime/vendor/google.golang.org/grpc/clientconn.go @@ -143,6 +143,7 @@ func DialContext(ctx context.Context, target string, opts ...DialOption) (conn * firstResolveEvent: grpcsync.NewEvent(), } cc.retryThrottler.Store((*retryThrottler)(nil)) + cc.safeConfigSelector.UpdateConfigSelector(&defaultConfigSelector{nil}) cc.ctx, cc.cancel = context.WithCancel(context.Background()) for _, opt := range opts { @@ -321,6 +322,7 @@ func DialContext(ctx context.Context, target string, opts ...DialOption) (conn * // A blocking dial blocks until the clientConn is ready. if cc.dopts.block { for { + cc.Connect() s := cc.GetState() if s == connectivity.Ready { break @@ -538,12 +540,31 @@ func (cc *ClientConn) WaitForStateChange(ctx context.Context, sourceState connec // // Experimental // -// Notice: This API is EXPERIMENTAL and may be changed or removed in a -// later release. +// Notice: This API is EXPERIMENTAL and may be changed or removed in a later +// release. func (cc *ClientConn) GetState() connectivity.State { return cc.csMgr.getState() } +// Connect causes all subchannels in the ClientConn to attempt to connect if +// the channel is idle. Does not wait for the connection attempts to begin +// before returning. +// +// Experimental +// +// Notice: This API is EXPERIMENTAL and may be changed or removed in a later +// release. +func (cc *ClientConn) Connect() { + cc.mu.Lock() + defer cc.mu.Unlock() + if cc.balancerWrapper != nil && cc.balancerWrapper.exitIdle() { + return + } + for ac := range cc.conns { + go ac.connect() + } +} + func (cc *ClientConn) scWatcher() { for { select { @@ -710,7 +731,12 @@ func (cc *ClientConn) switchBalancer(name string) { return } if cc.balancerWrapper != nil { + // Don't hold cc.mu while closing the balancers. The balancers may call + // methods that require cc.mu (e.g. cc.NewSubConn()). Holding the mutex + // would cause a deadlock in that case. + cc.mu.Unlock() cc.balancerWrapper.close() + cc.mu.Lock() } builder := balancer.Get(name) @@ -839,8 +865,7 @@ func (ac *addrConn) connect() error { ac.updateConnectivityState(connectivity.Connecting, nil) ac.mu.Unlock() - // Start a goroutine connecting to the server asynchronously. - go ac.resetTransport() + ac.resetTransport() return nil } @@ -877,6 +902,10 @@ func (ac *addrConn) tryUpdateAddrs(addrs []resolver.Address) bool { // ac.state is Ready, try to find the connected address. var curAddrFound bool for _, a := range addrs { + // a.ServerName takes precedent over ClientConn authority, if present. + if a.ServerName == "" { + a.ServerName = ac.cc.authority + } if reflect.DeepEqual(ac.curAddr, a) { curAddrFound = true break @@ -1045,12 +1074,12 @@ func (cc *ClientConn) Close() error { cc.blockingpicker.close() - if rWrapper != nil { - rWrapper.close() - } if bWrapper != nil { bWrapper.close() } + if rWrapper != nil { + rWrapper.close() + } for ac := range conns { ac.tearDown(ErrClientConnClosing) @@ -1129,112 +1158,86 @@ func (ac *addrConn) adjustParams(r transport.GoAwayReason) { } func (ac *addrConn) resetTransport() { - for i := 0; ; i++ { - if i > 0 { - ac.cc.resolveNow(resolver.ResolveNowOptions{}) - } - - ac.mu.Lock() - if ac.state == connectivity.Shutdown { - ac.mu.Unlock() - return - } - - addrs := ac.addrs - backoffFor := ac.dopts.bs.Backoff(ac.backoffIdx) - // This will be the duration that dial gets to finish. - dialDuration := minConnectTimeout - if ac.dopts.minConnectTimeout != nil { - dialDuration = ac.dopts.minConnectTimeout() - } - - if dialDuration < backoffFor { - // Give dial more time as we keep failing to connect. - dialDuration = backoffFor - } - // We can potentially spend all the time trying the first address, and - // if the server accepts the connection and then hangs, the following - // addresses will never be tried. - // - // The spec doesn't mention what should be done for multiple addresses. - // https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md#proposed-backoff-algorithm - connectDeadline := time.Now().Add(dialDuration) - - ac.updateConnectivityState(connectivity.Connecting, nil) - ac.transport = nil + ac.mu.Lock() + if ac.state == connectivity.Shutdown { ac.mu.Unlock() - - newTr, addr, reconnect, err := ac.tryAllAddrs(addrs, connectDeadline) - if err != nil { - // After exhausting all addresses, the addrConn enters - // TRANSIENT_FAILURE. - ac.mu.Lock() - if ac.state == connectivity.Shutdown { - ac.mu.Unlock() - return - } - ac.updateConnectivityState(connectivity.TransientFailure, err) - - // Backoff. - b := ac.resetBackoff - ac.mu.Unlock() - - timer := time.NewTimer(backoffFor) - select { - case <-timer.C: - ac.mu.Lock() - ac.backoffIdx++ - ac.mu.Unlock() - case <-b: - timer.Stop() - case <-ac.ctx.Done(): - timer.Stop() - return - } - continue - } - - ac.mu.Lock() - if ac.state == connectivity.Shutdown { - ac.mu.Unlock() - newTr.Close() - return - } - ac.curAddr = addr - ac.transport = newTr - ac.backoffIdx = 0 - - hctx, hcancel := context.WithCancel(ac.ctx) - ac.startHealthCheck(hctx) - ac.mu.Unlock() - - // Block until the created transport is down. And when this happens, - // we restart from the top of the addr list. - <-reconnect.Done() - hcancel() - // restart connecting - the top of the loop will set state to - // CONNECTING. This is against the current connectivity semantics doc, - // however it allows for graceful behavior for RPCs not yet dispatched - // - unfortunate timing would otherwise lead to the RPC failing even - // though the TRANSIENT_FAILURE state (called for by the doc) would be - // instantaneous. - // - // Ideally we should transition to Idle here and block until there is - // RPC activity that leads to the balancer requesting a reconnect of - // the associated SubConn. + return } + + addrs := ac.addrs + backoffFor := ac.dopts.bs.Backoff(ac.backoffIdx) + // This will be the duration that dial gets to finish. + dialDuration := minConnectTimeout + if ac.dopts.minConnectTimeout != nil { + dialDuration = ac.dopts.minConnectTimeout() + } + + if dialDuration < backoffFor { + // Give dial more time as we keep failing to connect. + dialDuration = backoffFor + } + // We can potentially spend all the time trying the first address, and + // if the server accepts the connection and then hangs, the following + // addresses will never be tried. + // + // The spec doesn't mention what should be done for multiple addresses. + // https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md#proposed-backoff-algorithm + connectDeadline := time.Now().Add(dialDuration) + + ac.updateConnectivityState(connectivity.Connecting, nil) + ac.mu.Unlock() + + if err := ac.tryAllAddrs(addrs, connectDeadline); err != nil { + ac.cc.resolveNow(resolver.ResolveNowOptions{}) + // After exhausting all addresses, the addrConn enters + // TRANSIENT_FAILURE. + ac.mu.Lock() + if ac.state == connectivity.Shutdown { + ac.mu.Unlock() + return + } + ac.updateConnectivityState(connectivity.TransientFailure, err) + + // Backoff. + b := ac.resetBackoff + ac.mu.Unlock() + + timer := time.NewTimer(backoffFor) + select { + case <-timer.C: + ac.mu.Lock() + ac.backoffIdx++ + ac.mu.Unlock() + case <-b: + timer.Stop() + case <-ac.ctx.Done(): + timer.Stop() + return + } + + ac.mu.Lock() + if ac.state != connectivity.Shutdown { + ac.updateConnectivityState(connectivity.Idle, err) + } + ac.mu.Unlock() + return + } + // Success; reset backoff. + ac.mu.Lock() + ac.backoffIdx = 0 + ac.mu.Unlock() } -// tryAllAddrs tries to creates a connection to the addresses, and stop when at the -// first successful one. It returns the transport, the address and a Event in -// the successful case. The Event fires when the returned transport disconnects. -func (ac *addrConn) tryAllAddrs(addrs []resolver.Address, connectDeadline time.Time) (transport.ClientTransport, resolver.Address, *grpcsync.Event, error) { +// tryAllAddrs tries to creates a connection to the addresses, and stop when at +// the first successful one. It returns an error if no address was successfully +// connected, or updates ac appropriately with the new transport. +func (ac *addrConn) tryAllAddrs(addrs []resolver.Address, connectDeadline time.Time) error { var firstConnErr error for _, addr := range addrs { ac.mu.Lock() if ac.state == connectivity.Shutdown { ac.mu.Unlock() - return nil, resolver.Address{}, nil, errConnClosing + return errConnClosing } ac.cc.mu.RLock() @@ -1249,9 +1252,9 @@ func (ac *addrConn) tryAllAddrs(addrs []resolver.Address, connectDeadline time.T channelz.Infof(logger, ac.channelzID, "Subchannel picks a new address %q to connect", addr.Addr) - newTr, reconnect, err := ac.createTransport(addr, copts, connectDeadline) + err := ac.createTransport(addr, copts, connectDeadline) if err == nil { - return newTr, addr, reconnect, nil + return nil } if firstConnErr == nil { firstConnErr = err @@ -1260,57 +1263,54 @@ func (ac *addrConn) tryAllAddrs(addrs []resolver.Address, connectDeadline time.T } // Couldn't connect to any address. - return nil, resolver.Address{}, nil, firstConnErr + return firstConnErr } -// createTransport creates a connection to addr. It returns the transport and a -// Event in the successful case. The Event fires when the returned transport -// disconnects. -func (ac *addrConn) createTransport(addr resolver.Address, copts transport.ConnectOptions, connectDeadline time.Time) (transport.ClientTransport, *grpcsync.Event, error) { - prefaceReceived := make(chan struct{}) - onCloseCalled := make(chan struct{}) - reconnect := grpcsync.NewEvent() +// createTransport creates a connection to addr. It returns an error if the +// address was not successfully connected, or updates ac appropriately with the +// new transport. +func (ac *addrConn) createTransport(addr resolver.Address, copts transport.ConnectOptions, connectDeadline time.Time) error { + // TODO: Delete prefaceReceived and move the logic to wait for it into the + // transport. + prefaceReceived := grpcsync.NewEvent() + connClosed := grpcsync.NewEvent() // addr.ServerName takes precedent over ClientConn authority, if present. if addr.ServerName == "" { addr.ServerName = ac.cc.authority } - once := sync.Once{} - onGoAway := func(r transport.GoAwayReason) { - ac.mu.Lock() - ac.adjustParams(r) - once.Do(func() { - if ac.state == connectivity.Ready { - // Prevent this SubConn from being used for new RPCs by setting its - // state to Connecting. - // - // TODO: this should be Idle when grpc-go properly supports it. - ac.updateConnectivityState(connectivity.Connecting, nil) - } - }) - ac.mu.Unlock() - reconnect.Fire() - } + hctx, hcancel := context.WithCancel(ac.ctx) + hcStarted := false // protected by ac.mu onClose := func() { ac.mu.Lock() - once.Do(func() { - if ac.state == connectivity.Ready { - // Prevent this SubConn from being used for new RPCs by setting its - // state to Connecting. - // - // TODO: this should be Idle when grpc-go properly supports it. - ac.updateConnectivityState(connectivity.Connecting, nil) - } - }) - ac.mu.Unlock() - close(onCloseCalled) - reconnect.Fire() + defer ac.mu.Unlock() + defer connClosed.Fire() + if !hcStarted || hctx.Err() != nil { + // We didn't start the health check or set the state to READY, so + // no need to do anything else here. + // + // OR, we have already cancelled the health check context, meaning + // we have already called onClose once for this transport. In this + // case it would be dangerous to clear the transport and update the + // state, since there may be a new transport in this addrConn. + return + } + hcancel() + ac.transport = nil + // Refresh the name resolver + ac.cc.resolveNow(resolver.ResolveNowOptions{}) + if ac.state != connectivity.Shutdown { + ac.updateConnectivityState(connectivity.Idle, nil) + } } - onPrefaceReceipt := func() { - close(prefaceReceived) + onGoAway := func(r transport.GoAwayReason) { + ac.mu.Lock() + ac.adjustParams(r) + ac.mu.Unlock() + onClose() } connectCtx, cancel := context.WithDeadline(ac.ctx, connectDeadline) @@ -1319,27 +1319,67 @@ func (ac *addrConn) createTransport(addr resolver.Address, copts transport.Conne copts.ChannelzParentID = ac.channelzID } - newTr, err := transport.NewClientTransport(connectCtx, ac.cc.ctx, addr, copts, onPrefaceReceipt, onGoAway, onClose) + newTr, err := transport.NewClientTransport(connectCtx, ac.cc.ctx, addr, copts, func() { prefaceReceived.Fire() }, onGoAway, onClose) if err != nil { // newTr is either nil, or closed. - channelz.Warningf(logger, ac.channelzID, "grpc: addrConn.createTransport failed to connect to %v. Err: %v. Reconnecting...", addr, err) - return nil, nil, err + channelz.Warningf(logger, ac.channelzID, "grpc: addrConn.createTransport failed to connect to %v. Err: %v", addr, err) + return err } select { - case <-time.After(time.Until(connectDeadline)): + case <-connectCtx.Done(): // We didn't get the preface in time. - newTr.Close() - channelz.Warningf(logger, ac.channelzID, "grpc: addrConn.createTransport failed to connect to %v: didn't receive server preface in time. Reconnecting...", addr) - return nil, nil, errors.New("timed out waiting for server handshake") - case <-prefaceReceived: + // The error we pass to Close() is immaterial since there are no open + // streams at this point, so no trailers with error details will be sent + // out. We just need to pass a non-nil error. + newTr.Close(transport.ErrConnClosing) + if connectCtx.Err() == context.DeadlineExceeded { + err := errors.New("failed to receive server preface within timeout") + channelz.Warningf(logger, ac.channelzID, "grpc: addrConn.createTransport failed to connect to %v: %v", addr, err) + return err + } + return nil + case <-prefaceReceived.Done(): // We got the preface - huzzah! things are good. - case <-onCloseCalled: - // The transport has already closed - noop. - return nil, nil, errors.New("connection closed") - // TODO(deklerk) this should bail on ac.ctx.Done(). Add a test and fix. + ac.mu.Lock() + defer ac.mu.Unlock() + if connClosed.HasFired() { + // onClose called first; go idle but do nothing else. + if ac.state != connectivity.Shutdown { + ac.updateConnectivityState(connectivity.Idle, nil) + } + return nil + } + if ac.state == connectivity.Shutdown { + // This can happen if the subConn was removed while in `Connecting` + // state. tearDown() would have set the state to `Shutdown`, but + // would not have closed the transport since ac.transport would not + // been set at that point. + // + // We run this in a goroutine because newTr.Close() calls onClose() + // inline, which requires locking ac.mu. + // + // The error we pass to Close() is immaterial since there are no open + // streams at this point, so no trailers with error details will be sent + // out. We just need to pass a non-nil error. + go newTr.Close(transport.ErrConnClosing) + return nil + } + ac.curAddr = addr + ac.transport = newTr + hcStarted = true + ac.startHealthCheck(hctx) // Will set state to READY if appropriate. + return nil + case <-connClosed.Done(): + // The transport has already closed. If we received the preface, too, + // this is not an error. + select { + case <-prefaceReceived.Done(): + return nil + default: + return errors.New("connection closed before server preface received") + } } - return newTr, reconnect, nil } // startHealthCheck starts the health checking stream (RPC) to watch the health @@ -1423,33 +1463,20 @@ func (ac *addrConn) resetConnectBackoff() { ac.mu.Unlock() } -// getReadyTransport returns the transport if ac's state is READY. -// Otherwise it returns nil, false. -// If ac's state is IDLE, it will trigger ac to connect. -func (ac *addrConn) getReadyTransport() (transport.ClientTransport, bool) { +// getReadyTransport returns the transport if ac's state is READY or nil if not. +func (ac *addrConn) getReadyTransport() transport.ClientTransport { ac.mu.Lock() - if ac.state == connectivity.Ready && ac.transport != nil { - t := ac.transport - ac.mu.Unlock() - return t, true + defer ac.mu.Unlock() + if ac.state == connectivity.Ready { + return ac.transport } - var idle bool - if ac.state == connectivity.Idle { - idle = true - } - ac.mu.Unlock() - // Trigger idle ac to connect. - if idle { - ac.connect() - } - return nil, false + return nil } // tearDown starts to tear down the addrConn. -// TODO(zhaoq): Make this synchronous to avoid unbounded memory consumption in -// some edge cases (e.g., the caller opens and closes many addrConn's in a -// tight loop. -// tearDown doesn't remove ac from ac.cc.conns. +// +// Note that tearDown doesn't remove ac from ac.cc.conns, so the addrConn struct +// will leak. In most cases, call cc.removeAddrConn() instead. func (ac *addrConn) tearDown(err error) { ac.mu.Lock() if ac.state == connectivity.Shutdown { diff --git a/src/runtime/vendor/google.golang.org/grpc/connectivity/connectivity.go b/src/runtime/vendor/google.golang.org/grpc/connectivity/connectivity.go index 010156261..4a8992642 100644 --- a/src/runtime/vendor/google.golang.org/grpc/connectivity/connectivity.go +++ b/src/runtime/vendor/google.golang.org/grpc/connectivity/connectivity.go @@ -18,7 +18,6 @@ // Package connectivity defines connectivity semantics. // For details, see https://github.com/grpc/grpc/blob/master/doc/connectivity-semantics-and-api.md. -// All APIs in this package are experimental. package connectivity import ( @@ -45,7 +44,7 @@ func (s State) String() string { return "SHUTDOWN" default: logger.Errorf("unknown connectivity state: %d", s) - return "Invalid-State" + return "INVALID_STATE" } } @@ -61,3 +60,35 @@ const ( // Shutdown indicates the ClientConn has started shutting down. Shutdown ) + +// ServingMode indicates the current mode of operation of the server. +// +// Only xDS enabled gRPC servers currently report their serving mode. +type ServingMode int + +const ( + // ServingModeStarting indicates that the server is starting up. + ServingModeStarting ServingMode = iota + // ServingModeServing indicates that the server contains all required + // configuration and is serving RPCs. + ServingModeServing + // ServingModeNotServing indicates that the server is not accepting new + // connections. Existing connections will be closed gracefully, allowing + // in-progress RPCs to complete. A server enters this mode when it does not + // contain the required configuration to serve RPCs. + ServingModeNotServing +) + +func (s ServingMode) String() string { + switch s { + case ServingModeStarting: + return "STARTING" + case ServingModeServing: + return "SERVING" + case ServingModeNotServing: + return "NOT_SERVING" + default: + logger.Errorf("unknown serving mode: %d", s) + return "INVALID_MODE" + } +} diff --git a/src/runtime/vendor/google.golang.org/grpc/credentials/credentials.go b/src/runtime/vendor/google.golang.org/grpc/credentials/credentials.go index e69562e78..7eee7e4ec 100644 --- a/src/runtime/vendor/google.golang.org/grpc/credentials/credentials.go +++ b/src/runtime/vendor/google.golang.org/grpc/credentials/credentials.go @@ -30,7 +30,7 @@ import ( "github.com/golang/protobuf/proto" "google.golang.org/grpc/attributes" - "google.golang.org/grpc/internal" + icredentials "google.golang.org/grpc/internal/credentials" ) // PerRPCCredentials defines the common interface for the credentials which need to @@ -188,15 +188,12 @@ type RequestInfo struct { AuthInfo AuthInfo } -// requestInfoKey is a struct to be used as the key when attaching a RequestInfo to a context object. -type requestInfoKey struct{} - // RequestInfoFromContext extracts the RequestInfo from the context if it exists. // // This API is experimental. func RequestInfoFromContext(ctx context.Context) (ri RequestInfo, ok bool) { - ri, ok = ctx.Value(requestInfoKey{}).(RequestInfo) - return + ri, ok = icredentials.RequestInfoFromContext(ctx).(RequestInfo) + return ri, ok } // ClientHandshakeInfo holds data to be passed to ClientHandshake. This makes @@ -211,16 +208,12 @@ type ClientHandshakeInfo struct { Attributes *attributes.Attributes } -// clientHandshakeInfoKey is a struct used as the key to store -// ClientHandshakeInfo in a context. -type clientHandshakeInfoKey struct{} - // ClientHandshakeInfoFromContext returns the ClientHandshakeInfo struct stored // in ctx. // // This API is experimental. func ClientHandshakeInfoFromContext(ctx context.Context) ClientHandshakeInfo { - chi, _ := ctx.Value(clientHandshakeInfoKey{}).(ClientHandshakeInfo) + chi, _ := icredentials.ClientHandshakeInfoFromContext(ctx).(ClientHandshakeInfo) return chi } @@ -249,15 +242,6 @@ func CheckSecurityLevel(ai AuthInfo, level SecurityLevel) error { return nil } -func init() { - internal.NewRequestInfoContext = func(ctx context.Context, ri RequestInfo) context.Context { - return context.WithValue(ctx, requestInfoKey{}, ri) - } - internal.NewClientHandshakeInfoContext = func(ctx context.Context, chi ClientHandshakeInfo) context.Context { - return context.WithValue(ctx, clientHandshakeInfoKey{}, chi) - } -} - // ChannelzSecurityInfo defines the interface that security protocols should implement // in order to provide security info to channelz. // diff --git a/src/runtime/vendor/google.golang.org/grpc/credentials/go12.go b/src/runtime/vendor/google.golang.org/grpc/credentials/go12.go deleted file mode 100644 index ccbf35b33..000000000 --- a/src/runtime/vendor/google.golang.org/grpc/credentials/go12.go +++ /dev/null @@ -1,30 +0,0 @@ -// +build go1.12 - -/* - * - * Copyright 2019 gRPC authors. - * - * 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. - * - */ - -package credentials - -import "crypto/tls" - -// This init function adds cipher suite constants only defined in Go 1.12. -func init() { - cipherSuiteLookup[tls.TLS_AES_128_GCM_SHA256] = "TLS_AES_128_GCM_SHA256" - cipherSuiteLookup[tls.TLS_AES_256_GCM_SHA384] = "TLS_AES_256_GCM_SHA384" - cipherSuiteLookup[tls.TLS_CHACHA20_POLY1305_SHA256] = "TLS_CHACHA20_POLY1305_SHA256" -} diff --git a/src/runtime/vendor/google.golang.org/grpc/credentials/tls.go b/src/runtime/vendor/google.golang.org/grpc/credentials/tls.go index 8ee7124f2..784822d05 100644 --- a/src/runtime/vendor/google.golang.org/grpc/credentials/tls.go +++ b/src/runtime/vendor/google.golang.org/grpc/credentials/tls.go @@ -230,4 +230,7 @@ var cipherSuiteLookup = map[uint16]string{ tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256: "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305: "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305", tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305: "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305", + tls.TLS_AES_128_GCM_SHA256: "TLS_AES_128_GCM_SHA256", + tls.TLS_AES_256_GCM_SHA384: "TLS_AES_256_GCM_SHA384", + tls.TLS_CHACHA20_POLY1305_SHA256: "TLS_CHACHA20_POLY1305_SHA256", } diff --git a/src/runtime/vendor/google.golang.org/grpc/dialoptions.go b/src/runtime/vendor/google.golang.org/grpc/dialoptions.go index e7f86e6d7..7a497237b 100644 --- a/src/runtime/vendor/google.golang.org/grpc/dialoptions.go +++ b/src/runtime/vendor/google.golang.org/grpc/dialoptions.go @@ -66,11 +66,7 @@ type dialOptions struct { minConnectTimeout func() time.Duration defaultServiceConfig *ServiceConfig // defaultServiceConfig is parsed from defaultServiceConfigRawJSON. defaultServiceConfigRawJSON *string - // This is used by ccResolverWrapper to backoff between successive calls to - // resolver.ResolveNow(). The user will have no need to configure this, but - // we need to be able to configure this in tests. - resolveNowBackoff func(int) time.Duration - resolvers []resolver.Builder + resolvers []resolver.Builder } // DialOption configures how we set up the connection. @@ -596,7 +592,6 @@ func defaultDialOptions() dialOptions { ReadBufferSize: defaultReadBufSize, UseProxy: true, }, - resolveNowBackoff: internalbackoff.DefaultExponential.Backoff, } } @@ -611,16 +606,6 @@ func withMinConnectDeadline(f func() time.Duration) DialOption { }) } -// withResolveNowBackoff specifies the function that clientconn uses to backoff -// between successive calls to resolver.ResolveNow(). -// -// For testing purpose only. -func withResolveNowBackoff(f func(int) time.Duration) DialOption { - return newFuncDialOption(func(o *dialOptions) { - o.resolveNowBackoff = f - }) -} - // WithResolvers allows a list of resolver implementations to be registered // locally with the ClientConn without needing to be globally registered via // resolver.Register. They will be matched against the scheme used for the diff --git a/src/runtime/vendor/google.golang.org/grpc/go.mod b/src/runtime/vendor/google.golang.org/grpc/go.mod index cab74e557..022cc9828 100644 --- a/src/runtime/vendor/google.golang.org/grpc/go.mod +++ b/src/runtime/vendor/google.golang.org/grpc/go.mod @@ -1,17 +1,18 @@ module google.golang.org/grpc -go 1.11 +go 1.14 require ( + github.com/cespare/xxhash/v2 v2.1.1 github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403 - github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad + github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b - github.com/golang/protobuf v1.4.2 + github.com/golang/protobuf v1.4.3 github.com/google/go-cmp v0.5.0 github.com/google/uuid v1.1.2 - golang.org/x/net v0.0.0-20190311183353-d8887717615a - golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be - golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a + golang.org/x/net v0.0.0-20200822124328-c89045814202 + golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d + golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 google.golang.org/protobuf v1.25.0 ) diff --git a/src/runtime/vendor/google.golang.org/grpc/go.sum b/src/runtime/vendor/google.golang.org/grpc/go.sum index 77ee70b44..6e7ae0db2 100644 --- a/src/runtime/vendor/google.golang.org/grpc/go.sum +++ b/src/runtime/vendor/google.golang.org/grpc/go.sum @@ -1,34 +1,44 @@ -cloud.google.com/go v0.26.0 h1:e0WKqKTd5BnrG8aKH3J3h+QvEIQtSUcf2n5UZ5ZgLtQ= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +cloud.google.com/go v0.34.0 h1:eOI3/cP2VTU6uZLDYAoic+eyzzB9YyGmJ7eIjl8rOPg= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= +github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403 h1:cqQfy1jclcSy/FwLjemeg3SR1yaINm74aQyupQ0Bl8M= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158 h1:CevA8fI91PAnP8vpnXuB8ZYAZ5wqY86nAbxfgK8tWO4= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad h1:EmNYJhPYy0pOFjCx2PrgtaBXmee0iUX9hLlxE1xHOJE= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021 h1:fP+fF0up6oPY49OrjPrhIJ8yQfdIM85NXMLkMg1EXVs= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -37,50 +47,65 @@ github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= 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/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be h1:vEDujvNQGv4jgYKudGeI/+DAX4Jffq6hpD55MmoEvKs= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up98WAHf3f/ulnJ62IyA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -93,7 +118,9 @@ google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4 google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/src/runtime/vendor/google.golang.org/grpc/install_gae.sh b/src/runtime/vendor/google.golang.org/grpc/install_gae.sh deleted file mode 100644 index 15ff9facd..000000000 --- a/src/runtime/vendor/google.golang.org/grpc/install_gae.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -TMP=$(mktemp -d /tmp/sdk.XXX) \ -&& curl -o $TMP.zip "https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-1.9.68.zip" \ -&& unzip -q $TMP.zip -d $TMP \ -&& export PATH="$PATH:$TMP/go_appengine" \ No newline at end of file diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/binarylog/sink.go b/src/runtime/vendor/google.golang.org/grpc/internal/binarylog/sink.go index 7d7a3056b..c2fdd58b3 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/binarylog/sink.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/binarylog/sink.go @@ -69,7 +69,8 @@ type writerSink struct { func (ws *writerSink) Write(e *pb.GrpcLogEntry) error { b, err := proto.Marshal(e) if err != nil { - grpclogLogger.Infof("binary logging: failed to marshal proto message: %v", err) + grpclogLogger.Errorf("binary logging: failed to marshal proto message: %v", err) + return err } hdr := make([]byte, 4) binary.BigEndian.PutUint32(hdr, uint32(len(b))) @@ -85,24 +86,27 @@ func (ws *writerSink) Write(e *pb.GrpcLogEntry) error { func (ws *writerSink) Close() error { return nil } type bufferedSink struct { - mu sync.Mutex - closer io.Closer - out Sink // out is built on buf. - buf *bufio.Writer // buf is kept for flush. + mu sync.Mutex + closer io.Closer + out Sink // out is built on buf. + buf *bufio.Writer // buf is kept for flush. + flusherStarted bool - writeStartOnce sync.Once - writeTicker *time.Ticker + writeTicker *time.Ticker + done chan struct{} } func (fs *bufferedSink) Write(e *pb.GrpcLogEntry) error { - // Start the write loop when Write is called. - fs.writeStartOnce.Do(fs.startFlushGoroutine) fs.mu.Lock() + defer fs.mu.Unlock() + if !fs.flusherStarted { + // Start the write loop when Write is called. + fs.startFlushGoroutine() + fs.flusherStarted = true + } if err := fs.out.Write(e); err != nil { - fs.mu.Unlock() return err } - fs.mu.Unlock() return nil } @@ -113,7 +117,12 @@ const ( func (fs *bufferedSink) startFlushGoroutine() { fs.writeTicker = time.NewTicker(bufFlushDuration) go func() { - for range fs.writeTicker.C { + for { + select { + case <-fs.done: + return + case <-fs.writeTicker.C: + } fs.mu.Lock() if err := fs.buf.Flush(); err != nil { grpclogLogger.Warningf("failed to flush to Sink: %v", err) @@ -124,10 +133,12 @@ func (fs *bufferedSink) startFlushGoroutine() { } func (fs *bufferedSink) Close() error { + fs.mu.Lock() + defer fs.mu.Unlock() if fs.writeTicker != nil { fs.writeTicker.Stop() } - fs.mu.Lock() + close(fs.done) if err := fs.buf.Flush(); err != nil { grpclogLogger.Warningf("failed to flush to Sink: %v", err) } @@ -137,7 +148,6 @@ func (fs *bufferedSink) Close() error { if err := fs.out.Close(); err != nil { grpclogLogger.Warningf("failed to close the Sink: %v", err) } - fs.mu.Unlock() return nil } @@ -155,5 +165,6 @@ func NewBufferedSink(o io.WriteCloser) Sink { closer: o, out: newWriterSink(bufW), buf: bufW, + done: make(chan struct{}), } } diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/channelz/funcs.go b/src/runtime/vendor/google.golang.org/grpc/internal/channelz/funcs.go index f73141393..6d5760d95 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/channelz/funcs.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/channelz/funcs.go @@ -630,7 +630,7 @@ func (c *channelMap) GetServerSockets(id int64, startID int64, maxResults int64) if count == 0 { end = true } - var s []*SocketMetric + s := make([]*SocketMetric, 0, len(sks)) for _, ns := range sks { sm := &SocketMetric{} sm.SocketData = ns.s.ChannelzMetric() diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/channelz/types_linux.go b/src/runtime/vendor/google.golang.org/grpc/internal/channelz/types_linux.go index 692dd6181..1b1c4cce3 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/channelz/types_linux.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/channelz/types_linux.go @@ -1,5 +1,3 @@ -// +build !appengine - /* * * Copyright 2018 gRPC authors. diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go b/src/runtime/vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go index 19c2fc521..8b06eed1a 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go @@ -1,4 +1,5 @@ -// +build !linux appengine +//go:build !linux +// +build !linux /* * @@ -37,6 +38,6 @@ type SocketOptionData struct { // Windows OS doesn't support Socket Option func (s *SocketOptionData) Getsockopt(fd uintptr) { once.Do(func() { - logger.Warning("Channelz: socket options are not supported on non-linux os and appengine.") + logger.Warning("Channelz: socket options are not supported on non-linux environments") }) } diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/channelz/util_linux.go b/src/runtime/vendor/google.golang.org/grpc/internal/channelz/util_linux.go index fdf409d55..8d194e44e 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/channelz/util_linux.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/channelz/util_linux.go @@ -1,5 +1,3 @@ -// +build linux,!appengine - /* * * Copyright 2018 gRPC authors. diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/channelz/util_nonlinux.go b/src/runtime/vendor/google.golang.org/grpc/internal/channelz/util_nonlinux.go index 8864a0811..837ddc402 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/channelz/util_nonlinux.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/channelz/util_nonlinux.go @@ -1,4 +1,5 @@ -// +build !linux appengine +//go:build !linux +// +build !linux /* * diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/credentials/credentials.go b/src/runtime/vendor/google.golang.org/grpc/internal/credentials/credentials.go new file mode 100644 index 000000000..32c9b5903 --- /dev/null +++ b/src/runtime/vendor/google.golang.org/grpc/internal/credentials/credentials.go @@ -0,0 +1,49 @@ +/* + * Copyright 2021 gRPC authors. + * + * 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. + */ + +package credentials + +import ( + "context" +) + +// requestInfoKey is a struct to be used as the key to store RequestInfo in a +// context. +type requestInfoKey struct{} + +// NewRequestInfoContext creates a context with ri. +func NewRequestInfoContext(ctx context.Context, ri interface{}) context.Context { + return context.WithValue(ctx, requestInfoKey{}, ri) +} + +// RequestInfoFromContext extracts the RequestInfo from ctx. +func RequestInfoFromContext(ctx context.Context) interface{} { + return ctx.Value(requestInfoKey{}) +} + +// clientHandshakeInfoKey is a struct used as the key to store +// ClientHandshakeInfo in a context. +type clientHandshakeInfoKey struct{} + +// ClientHandshakeInfoFromContext extracts the ClientHandshakeInfo from ctx. +func ClientHandshakeInfoFromContext(ctx context.Context) interface{} { + return ctx.Value(clientHandshakeInfoKey{}) +} + +// NewClientHandshakeInfoContext creates a context with chi. +func NewClientHandshakeInfoContext(ctx context.Context, chi interface{}) context.Context { + return context.WithValue(ctx, clientHandshakeInfoKey{}, chi) +} diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/credentials/spiffe.go b/src/runtime/vendor/google.golang.org/grpc/internal/credentials/spiffe.go index be70b6cdf..25ade6230 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/credentials/spiffe.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/credentials/spiffe.go @@ -1,5 +1,3 @@ -// +build !appengine - /* * * Copyright 2020 gRPC authors. diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/credentials/spiffe_appengine.go b/src/runtime/vendor/google.golang.org/grpc/internal/credentials/spiffe_appengine.go deleted file mode 100644 index af6f57719..000000000 --- a/src/runtime/vendor/google.golang.org/grpc/internal/credentials/spiffe_appengine.go +++ /dev/null @@ -1,31 +0,0 @@ -// +build appengine - -/* - * - * Copyright 2020 gRPC authors. - * - * 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. - * - */ - -package credentials - -import ( - "crypto/tls" - "net/url" -) - -// SPIFFEIDFromState is a no-op for appengine builds. -func SPIFFEIDFromState(state tls.ConnectionState) *url.URL { - return nil -} diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/credentials/syscallconn.go b/src/runtime/vendor/google.golang.org/grpc/internal/credentials/syscallconn.go index f499a614c..2919632d6 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/credentials/syscallconn.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/credentials/syscallconn.go @@ -1,5 +1,3 @@ -// +build !appengine - /* * * Copyright 2018 gRPC authors. diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/credentials/syscallconn_appengine.go b/src/runtime/vendor/google.golang.org/grpc/internal/credentials/syscallconn_appengine.go deleted file mode 100644 index a6144cd66..000000000 --- a/src/runtime/vendor/google.golang.org/grpc/internal/credentials/syscallconn_appengine.go +++ /dev/null @@ -1,30 +0,0 @@ -// +build appengine - -/* - * - * Copyright 2018 gRPC authors. - * - * 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. - * - */ - -package credentials - -import ( - "net" -) - -// WrapSyscallConn returns newConn on appengine. -func WrapSyscallConn(rawConn, newConn net.Conn) net.Conn { - return newConn -} diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/credentials/util.go b/src/runtime/vendor/google.golang.org/grpc/internal/credentials/util.go index 55664fa46..f792fd22c 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/credentials/util.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/credentials/util.go @@ -18,7 +18,9 @@ package credentials -import "crypto/tls" +import ( + "crypto/tls" +) const alpnProtoStrH2 = "h2" diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go b/src/runtime/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go index 73931a94b..e766ac04a 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go @@ -22,6 +22,8 @@ package envconfig import ( "os" "strings" + + xdsenv "google.golang.org/grpc/internal/xds/env" ) const ( @@ -31,8 +33,8 @@ const ( ) var ( - // Retry is set if retry is explicitly enabled via "GRPC_GO_RETRY=on". - Retry = strings.EqualFold(os.Getenv(retryStr), "on") + // Retry is set if retry is explicitly enabled via "GRPC_GO_RETRY=on" or if XDS retry support is enabled. + Retry = strings.EqualFold(os.Getenv(retryStr), "on") || xdsenv.RetrySupport // TXTErrIgnore is set if TXT errors should be ignored ("GRPC_GO_IGNORE_TXT_ERRORS" is not "false"). TXTErrIgnore = !strings.EqualFold(os.Getenv(txtErrIgnoreStr), "false") ) diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/grpcrand/grpcrand.go b/src/runtime/vendor/google.golang.org/grpc/internal/grpcrand/grpcrand.go index 200b115ca..740f83c2b 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/grpcrand/grpcrand.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/grpcrand/grpcrand.go @@ -31,26 +31,37 @@ var ( mu sync.Mutex ) +// Int implements rand.Int on the grpcrand global source. +func Int() int { + mu.Lock() + defer mu.Unlock() + return r.Int() +} + // Int63n implements rand.Int63n on the grpcrand global source. func Int63n(n int64) int64 { mu.Lock() - res := r.Int63n(n) - mu.Unlock() - return res + defer mu.Unlock() + return r.Int63n(n) } // Intn implements rand.Intn on the grpcrand global source. func Intn(n int) int { mu.Lock() - res := r.Intn(n) - mu.Unlock() - return res + defer mu.Unlock() + return r.Intn(n) } // Float64 implements rand.Float64 on the grpcrand global source. func Float64() float64 { mu.Lock() - res := r.Float64() - mu.Unlock() - return res + defer mu.Unlock() + return r.Float64() +} + +// Uint64 implements rand.Uint64 on the grpcrand global source. +func Uint64() uint64 { + mu.Lock() + defer mu.Unlock() + return r.Uint64() } diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/internal.go b/src/runtime/vendor/google.golang.org/grpc/internal/internal.go index 1e2834c70..1b596bf35 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/internal.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/internal.go @@ -38,12 +38,6 @@ var ( // KeepaliveMinPingTime is the minimum ping interval. This must be 10s by // default, but tests may wish to set it lower for convenience. KeepaliveMinPingTime = 10 * time.Second - // NewRequestInfoContext creates a new context based on the argument context attaching - // the passed in RequestInfo to the new context. - NewRequestInfoContext interface{} // func(context.Context, credentials.RequestInfo) context.Context - // NewClientHandshakeInfoContext returns a copy of the input context with - // the passed in ClientHandshakeInfo struct added to it. - NewClientHandshakeInfoContext interface{} // func(context.Context, credentials.ClientHandshakeInfo) context.Context // ParseServiceConfigForTesting is for creating a fake // ClientConn for resolver testing only ParseServiceConfigForTesting interface{} // func(string) *serviceconfig.ParseResult @@ -65,6 +59,11 @@ var ( // gRPC server. An xDS-enabled server needs to know what type of credentials // is configured on the underlying gRPC server. This is set by server.go. GetServerCredentials interface{} // func (*grpc.Server) credentials.TransportCredentials + // DrainServerTransports initiates a graceful close of existing connections + // on a gRPC server accepted on the provided listener address. An + // xDS-enabled server invokes this method on a grpc.Server when a particular + // listener moves to "not-serving" mode. + DrainServerTransports interface{} // func(*grpc.Server, string) ) // HealthChecker defines the signature of the client-side LB channel health checking function. diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/resolver/config_selector.go b/src/runtime/vendor/google.golang.org/grpc/internal/resolver/config_selector.go index e69900400..be7e13d58 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/resolver/config_selector.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/resolver/config_selector.go @@ -24,6 +24,7 @@ import ( "sync" "google.golang.org/grpc/internal/serviceconfig" + "google.golang.org/grpc/metadata" "google.golang.org/grpc/resolver" ) @@ -51,6 +52,77 @@ type RPCConfig struct { Context context.Context MethodConfig serviceconfig.MethodConfig // configuration to use for this RPC OnCommitted func() // Called when the RPC has been committed (retries no longer possible) + Interceptor ClientInterceptor +} + +// ClientStream is the same as grpc.ClientStream, but defined here for circular +// dependency reasons. +type ClientStream interface { + // Header returns the header metadata received from the server if there + // is any. It blocks if the metadata is not ready to read. + Header() (metadata.MD, error) + // Trailer returns the trailer metadata from the server, if there is any. + // It must only be called after stream.CloseAndRecv has returned, or + // stream.Recv has returned a non-nil error (including io.EOF). + Trailer() metadata.MD + // CloseSend closes the send direction of the stream. It closes the stream + // when non-nil error is met. It is also not safe to call CloseSend + // concurrently with SendMsg. + CloseSend() error + // Context returns the context for this stream. + // + // It should not be called until after Header or RecvMsg has returned. Once + // called, subsequent client-side retries are disabled. + Context() context.Context + // SendMsg is generally called by generated code. On error, SendMsg aborts + // the stream. If the error was generated by the client, the status is + // returned directly; otherwise, io.EOF is returned and the status of + // the stream may be discovered using RecvMsg. + // + // SendMsg blocks until: + // - There is sufficient flow control to schedule m with the transport, or + // - The stream is done, or + // - The stream breaks. + // + // SendMsg does not wait until the message is received by the server. An + // untimely stream closure may result in lost messages. To ensure delivery, + // users should ensure the RPC completed successfully using RecvMsg. + // + // It is safe to have a goroutine calling SendMsg and another goroutine + // calling RecvMsg on the same stream at the same time, but it is not safe + // to call SendMsg on the same stream in different goroutines. It is also + // not safe to call CloseSend concurrently with SendMsg. + SendMsg(m interface{}) error + // RecvMsg blocks until it receives a message into m or the stream is + // done. It returns io.EOF when the stream completes successfully. On + // any other error, the stream is aborted and the error contains the RPC + // status. + // + // It is safe to have a goroutine calling SendMsg and another goroutine + // calling RecvMsg on the same stream at the same time, but it is not + // safe to call RecvMsg on the same stream in different goroutines. + RecvMsg(m interface{}) error +} + +// ClientInterceptor is an interceptor for gRPC client streams. +type ClientInterceptor interface { + // NewStream produces a ClientStream for an RPC which may optionally use + // the provided function to produce a stream for delegation. Note: + // RPCInfo.Context should not be used (will be nil). + // + // done is invoked when the RPC is finished using its connection, or could + // not be assigned a connection. RPC operations may still occur on + // ClientStream after done is called, since the interceptor is invoked by + // application-layer operations. done must never be nil when called. + NewStream(ctx context.Context, ri RPCInfo, done func(), newStream func(ctx context.Context, done func()) (ClientStream, error)) (ClientStream, error) +} + +// ServerInterceptor is an interceptor for incoming RPC's on gRPC server side. +type ServerInterceptor interface { + // AllowRPC checks if an incoming RPC is allowed to proceed based on + // information about connection RPC was received on, and HTTP Headers. This + // information will be piped into context. + AllowRPC(ctx context.Context) error // TODO: Make this a real interceptor for filters such as rate limiting. } type csKeyType string diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go b/src/runtime/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go index 304235566..75301c514 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go @@ -34,6 +34,7 @@ import ( grpclbstate "google.golang.org/grpc/balancer/grpclb/state" "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/internal/backoff" "google.golang.org/grpc/internal/envconfig" "google.golang.org/grpc/internal/grpcrand" "google.golang.org/grpc/resolver" @@ -46,6 +47,13 @@ var EnableSRVLookups = false var logger = grpclog.Component("dns") +// Globals to stub out in tests. TODO: Perhaps these two can be combined into a +// single variable for testing the resolver? +var ( + newTimer = time.NewTimer + newTimerDNSResRate = time.NewTimer +) + func init() { resolver.Register(NewBuilder()) } @@ -143,7 +151,6 @@ func (b *dnsBuilder) Build(target resolver.Target, cc resolver.ClientConn, opts d.wg.Add(1) go d.watcher() - d.ResolveNow(resolver.ResolveNowOptions{}) return d, nil } @@ -201,28 +208,38 @@ func (d *dnsResolver) Close() { func (d *dnsResolver) watcher() { defer d.wg.Done() + backoffIndex := 1 for { - select { - case <-d.ctx.Done(): - return - case <-d.rn: - } - state, err := d.lookup() if err != nil { + // Report error to the underlying grpc.ClientConn. d.cc.ReportError(err) } else { - d.cc.UpdateState(*state) + err = d.cc.UpdateState(*state) } - // Sleep to prevent excessive re-resolutions. Incoming resolution requests - // will be queued in d.rn. - t := time.NewTimer(minDNSResRate) + var timer *time.Timer + if err == nil { + // Success resolving, wait for the next ResolveNow. However, also wait 30 seconds at the very least + // to prevent constantly re-resolving. + backoffIndex = 1 + timer = newTimerDNSResRate(minDNSResRate) + select { + case <-d.ctx.Done(): + timer.Stop() + return + case <-d.rn: + } + } else { + // Poll on an error found in DNS Resolver or an error received from ClientConn. + timer = newTimer(backoff.DefaultExponential.Backoff(backoffIndex)) + backoffIndex++ + } select { - case <-t.C: case <-d.ctx.Done(): - t.Stop() + timer.Stop() return + case <-timer.C: } } } @@ -260,18 +277,13 @@ func (d *dnsResolver) lookupSRV() ([]resolver.Address, error) { return newAddrs, nil } -var filterError = func(err error) error { +func handleDNSError(err error, lookupType string) error { if dnsErr, ok := err.(*net.DNSError); ok && !dnsErr.IsTimeout && !dnsErr.IsTemporary { // Timeouts and temporary errors should be communicated to gRPC to // attempt another DNS query (with backoff). Other errors should be // suppressed (they may represent the absence of a TXT record). return nil } - return err -} - -func handleDNSError(err error, lookupType string) error { - err = filterError(err) if err != nil { err = fmt.Errorf("dns: %v record lookup error: %v", lookupType, err) logger.Info(err) @@ -306,12 +318,12 @@ func (d *dnsResolver) lookupTXT() *serviceconfig.ParseResult { } func (d *dnsResolver) lookupHost() ([]resolver.Address, error) { - var newAddrs []resolver.Address addrs, err := d.resolver.LookupHost(d.ctx, d.host) if err != nil { err = handleDNSError(err, "A") return nil, err } + newAddrs := make([]resolver.Address, 0, len(addrs)) for _, a := range addrs { ip, ok := formatIP(a) if !ok { diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/resolver/dns/go113.go b/src/runtime/vendor/google.golang.org/grpc/internal/resolver/dns/go113.go deleted file mode 100644 index 8783a8cf8..000000000 --- a/src/runtime/vendor/google.golang.org/grpc/internal/resolver/dns/go113.go +++ /dev/null @@ -1,33 +0,0 @@ -// +build go1.13 - -/* - * - * Copyright 2019 gRPC authors. - * - * 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. - * - */ - -package dns - -import "net" - -func init() { - filterError = func(err error) error { - if dnsErr, ok := err.(*net.DNSError); ok && dnsErr.IsNotFound { - // The name does not exist; not an error. - return nil - } - return err - } -} diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/serviceconfig/serviceconfig.go b/src/runtime/vendor/google.golang.org/grpc/internal/serviceconfig/serviceconfig.go index bd4b8875f..badbdbf59 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/serviceconfig/serviceconfig.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/serviceconfig/serviceconfig.go @@ -46,6 +46,22 @@ type BalancerConfig struct { type intermediateBalancerConfig []map[string]json.RawMessage +// MarshalJSON implements the json.Marshaler interface. +// +// It marshals the balancer and config into a length-1 slice +// ([]map[string]config). +func (bc *BalancerConfig) MarshalJSON() ([]byte, error) { + if bc.Config == nil { + // If config is nil, return empty config `{}`. + return []byte(fmt.Sprintf(`[{%q: %v}]`, bc.Name, "{}")), nil + } + c, err := json.Marshal(bc.Config) + if err != nil { + return nil, err + } + return []byte(fmt.Sprintf(`[{%q: %s}]`, bc.Name, c)), nil +} + // UnmarshalJSON implements the json.Unmarshaler interface. // // ServiceConfig contains a list of loadBalancingConfigs, each with a name and @@ -62,6 +78,7 @@ func (bc *BalancerConfig) UnmarshalJSON(b []byte) error { return err } + var names []string for i, lbcfg := range ir { if len(lbcfg) != 1 { return fmt.Errorf("invalid loadBalancingConfig: entry %v does not contain exactly 1 policy/config pair: %q", i, lbcfg) @@ -76,6 +93,7 @@ func (bc *BalancerConfig) UnmarshalJSON(b []byte) error { for name, jsonCfg = range lbcfg { } + names = append(names, name) builder := balancer.Get(name) if builder == nil { // If the balancer is not registered, move on to the next config. @@ -104,7 +122,7 @@ func (bc *BalancerConfig) UnmarshalJSON(b []byte) error { // return. This means we had a loadBalancingConfig slice but did not // encounter a registered policy. The config is considered invalid in this // case. - return fmt.Errorf("invalid loadBalancingConfig: no supported policies found") + return fmt.Errorf("invalid loadBalancingConfig: no supported policies found in %v", names) } // MethodConfig defines the configuration recommended by the service providers for a diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/status/status.go b/src/runtime/vendor/google.golang.org/grpc/internal/status/status.go index 710223b8d..e5c6513ed 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/status/status.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/status/status.go @@ -97,7 +97,7 @@ func (s *Status) Err() error { if s.Code() == codes.OK { return nil } - return &Error{e: s.Proto()} + return &Error{s: s} } // WithDetails returns a new status with the provided details messages appended to the status. @@ -136,19 +136,23 @@ func (s *Status) Details() []interface{} { return details } +func (s *Status) String() string { + return fmt.Sprintf("rpc error: code = %s desc = %s", s.Code(), s.Message()) +} + // Error wraps a pointer of a status proto. It implements error and Status, // and a nil *Error should never be returned by this package. type Error struct { - e *spb.Status + s *Status } func (e *Error) Error() string { - return fmt.Sprintf("rpc error: code = %s desc = %s", codes.Code(e.e.GetCode()), e.e.GetMessage()) + return e.s.String() } // GRPCStatus returns the Status represented by se. func (e *Error) GRPCStatus() *Status { - return FromProto(e.e) + return e.s } // Is implements future error.Is functionality. @@ -158,5 +162,5 @@ func (e *Error) Is(target error) bool { if !ok { return false } - return proto.Equal(e.e, tse.e) + return proto.Equal(e.s.s, tse.s.s) } diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/syscall/syscall_linux.go b/src/runtime/vendor/google.golang.org/grpc/internal/syscall/syscall_linux.go index 4b2964f2a..b3a72276d 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/syscall/syscall_linux.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/syscall/syscall_linux.go @@ -1,5 +1,3 @@ -// +build !appengine - /* * * Copyright 2018 gRPC authors. diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go b/src/runtime/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go index 7913ef1db..999f52cd7 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go @@ -1,4 +1,5 @@ -// +build !linux appengine +//go:build !linux +// +build !linux /* * @@ -35,41 +36,41 @@ var logger = grpclog.Component("core") func log() { once.Do(func() { - logger.Info("CPU time info is unavailable on non-linux or appengine environment.") + logger.Info("CPU time info is unavailable on non-linux environments.") }) } -// GetCPUTime returns the how much CPU time has passed since the start of this process. -// It always returns 0 under non-linux or appengine environment. +// GetCPUTime returns the how much CPU time has passed since the start of this +// process. It always returns 0 under non-linux environments. func GetCPUTime() int64 { log() return 0 } -// Rusage is an empty struct under non-linux or appengine environment. +// Rusage is an empty struct under non-linux environments. type Rusage struct{} -// GetRusage is a no-op function under non-linux or appengine environment. +// GetRusage is a no-op function under non-linux environments. func GetRusage() *Rusage { log() return nil } // CPUTimeDiff returns the differences of user CPU time and system CPU time used -// between two Rusage structs. It a no-op function for non-linux or appengine environment. +// between two Rusage structs. It a no-op function for non-linux environments. func CPUTimeDiff(first *Rusage, latest *Rusage) (float64, float64) { log() return 0, 0 } -// SetTCPUserTimeout is a no-op function under non-linux or appengine environments +// SetTCPUserTimeout is a no-op function under non-linux environments. func SetTCPUserTimeout(conn net.Conn, timeout time.Duration) error { log() return nil } -// GetTCPUserTimeout is a no-op function under non-linux or appengine environments -// a negative return value indicates the operation is not supported +// GetTCPUserTimeout is a no-op function under non-linux environments. +// A negative return value indicates the operation is not supported func GetTCPUserTimeout(conn net.Conn) (int, error) { log() return -1, nil diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/transport/controlbuf.go b/src/runtime/vendor/google.golang.org/grpc/internal/transport/controlbuf.go index 40ef23923..45532f8ae 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/transport/controlbuf.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/transport/controlbuf.go @@ -20,13 +20,17 @@ package transport import ( "bytes" + "errors" "fmt" "runtime" + "strconv" "sync" "sync/atomic" "golang.org/x/net/http2" "golang.org/x/net/http2/hpack" + "google.golang.org/grpc/internal/grpcutil" + "google.golang.org/grpc/status" ) var updateHeaderTblSize = func(e *hpack.Encoder, v uint32) { @@ -128,6 +132,14 @@ type cleanupStream struct { func (c *cleanupStream) isTransportResponseFrame() bool { return c.rst } // Results in a RST_STREAM +type earlyAbortStream struct { + streamID uint32 + contentSubtype string + status *status.Status +} + +func (*earlyAbortStream) isTransportResponseFrame() bool { return false } + type dataFrame struct { streamID uint32 endStream bool @@ -284,7 +296,7 @@ type controlBuffer struct { // closed and nilled when transportResponseFrames drops below the // threshold. Both fields are protected by mu. transportResponseFrames int - trfChan atomic.Value // *chan struct{} + trfChan atomic.Value // chan struct{} } func newControlBuffer(done <-chan struct{}) *controlBuffer { @@ -298,10 +310,10 @@ func newControlBuffer(done <-chan struct{}) *controlBuffer { // throttle blocks if there are too many incomingSettings/cleanupStreams in the // controlbuf. func (c *controlBuffer) throttle() { - ch, _ := c.trfChan.Load().(*chan struct{}) + ch, _ := c.trfChan.Load().(chan struct{}) if ch != nil { select { - case <-*ch: + case <-ch: case <-c.done: } } @@ -335,8 +347,7 @@ func (c *controlBuffer) executeAndPut(f func(it interface{}) bool, it cbItem) (b if c.transportResponseFrames == maxQueuedTransportResponseFrames { // We are adding the frame that puts us over the threshold; create // a throttling channel. - ch := make(chan struct{}) - c.trfChan.Store(&ch) + c.trfChan.Store(make(chan struct{})) } } c.mu.Unlock() @@ -377,9 +388,9 @@ func (c *controlBuffer) get(block bool) (interface{}, error) { if c.transportResponseFrames == maxQueuedTransportResponseFrames { // We are removing the frame that put us over the // threshold; close and clear the throttling channel. - ch := c.trfChan.Load().(*chan struct{}) - close(*ch) - c.trfChan.Store((*chan struct{})(nil)) + ch := c.trfChan.Load().(chan struct{}) + close(ch) + c.trfChan.Store((chan struct{})(nil)) } c.transportResponseFrames-- } @@ -395,7 +406,6 @@ func (c *controlBuffer) get(block bool) (interface{}, error) { select { case <-c.ch: case <-c.done: - c.finish() return nil, ErrConnClosing } } @@ -420,6 +430,14 @@ func (c *controlBuffer) finish() { hdr.onOrphaned(ErrConnClosing) } } + // In case throttle() is currently in flight, it needs to be unblocked. + // Otherwise, the transport may not close, since the transport is closed by + // the reader encountering the connection error. + ch, _ := c.trfChan.Load().(chan struct{}) + if ch != nil { + close(ch) + } + c.trfChan.Store((chan struct{})(nil)) c.mu.Unlock() } @@ -749,6 +767,24 @@ func (l *loopyWriter) cleanupStreamHandler(c *cleanupStream) error { return nil } +func (l *loopyWriter) earlyAbortStreamHandler(eas *earlyAbortStream) error { + if l.side == clientSide { + return errors.New("earlyAbortStream not handled on client") + } + + headerFields := []hpack.HeaderField{ + {Name: ":status", Value: "200"}, + {Name: "content-type", Value: grpcutil.ContentType(eas.contentSubtype)}, + {Name: "grpc-status", Value: strconv.Itoa(int(eas.status.Code()))}, + {Name: "grpc-message", Value: encodeGrpcMessage(eas.status.Message())}, + } + + if err := l.writeHeader(eas.streamID, true, headerFields, nil); err != nil { + return err + } + return nil +} + func (l *loopyWriter) incomingGoAwayHandler(*incomingGoAway) error { if l.side == clientSide { l.draining = true @@ -787,6 +823,8 @@ func (l *loopyWriter) handle(i interface{}) error { return l.registerStreamHandler(i) case *cleanupStream: return l.cleanupStreamHandler(i) + case *earlyAbortStream: + return l.earlyAbortStreamHandler(i) case *incomingGoAway: return l.incomingGoAwayHandler(i) case *dataFrame: diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/transport/handler_server.go b/src/runtime/vendor/google.golang.org/grpc/internal/transport/handler_server.go index 05d3871e6..1c3459c2b 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/transport/handler_server.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/transport/handler_server.go @@ -141,9 +141,8 @@ type serverHandlerTransport struct { stats stats.Handler } -func (ht *serverHandlerTransport) Close() error { +func (ht *serverHandlerTransport) Close() { ht.closeOnce.Do(ht.closeCloseChanOnce) - return nil } func (ht *serverHandlerTransport) closeCloseChanOnce() { close(ht.closedCh) } diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/transport/http2_client.go b/src/runtime/vendor/google.golang.org/grpc/internal/transport/http2_client.go index 8902b7f90..755863074 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/transport/http2_client.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/transport/http2_client.go @@ -24,6 +24,7 @@ import ( "io" "math" "net" + "net/http" "strconv" "strings" "sync" @@ -32,15 +33,14 @@ import ( "golang.org/x/net/http2" "golang.org/x/net/http2/hpack" - "google.golang.org/grpc/internal/grpcutil" - imetadata "google.golang.org/grpc/internal/metadata" - "google.golang.org/grpc/internal/transport/networktype" - "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" - "google.golang.org/grpc/internal" "google.golang.org/grpc/internal/channelz" + icredentials "google.golang.org/grpc/internal/credentials" + "google.golang.org/grpc/internal/grpcutil" + imetadata "google.golang.org/grpc/internal/metadata" "google.golang.org/grpc/internal/syscall" + "google.golang.org/grpc/internal/transport/networktype" "google.golang.org/grpc/keepalive" "google.golang.org/grpc/metadata" "google.golang.org/grpc/peer" @@ -116,6 +116,9 @@ type http2Client struct { // goAwayReason records the http2.ErrCode and debug data received with the // GoAway frame. goAwayReason GoAwayReason + // goAwayDebugMessage contains a detailed human readable string about a + // GoAway frame, useful for error messages. + goAwayDebugMessage string // A condition variable used to signal when the keepalive goroutine should // go dormant. The condition for dormancy is based on the number of active // streams and the `PermitWithoutStream` keepalive client parameter. And @@ -238,9 +241,16 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts // Attributes field of resolver.Address, which is shoved into connectCtx // and passed to the credential handshaker. This makes it possible for // address specific arbitrary data to reach the credential handshaker. - contextWithHandshakeInfo := internal.NewClientHandshakeInfoContext.(func(context.Context, credentials.ClientHandshakeInfo) context.Context) - connectCtx = contextWithHandshakeInfo(connectCtx, credentials.ClientHandshakeInfo{Attributes: addr.Attributes}) - conn, authInfo, err = transportCreds.ClientHandshake(connectCtx, addr.ServerName, conn) + connectCtx = icredentials.NewClientHandshakeInfoContext(connectCtx, credentials.ClientHandshakeInfo{Attributes: addr.Attributes}) + rawConn := conn + // Pull the deadline from the connectCtx, which will be used for + // timeouts in the authentication protocol handshake. Can ignore the + // boolean as the deadline will return the zero value, which will make + // the conn not timeout on I/O operations. + deadline, _ := connectCtx.Deadline() + rawConn.SetDeadline(deadline) + conn, authInfo, err = transportCreds.ClientHandshake(connectCtx, addr.ServerName, rawConn) + rawConn.SetDeadline(time.Time{}) if err != nil { return nil, connectionErrorf(isTemporary(err), err, "transport: authentication handshake failed: %v", err) } @@ -347,12 +357,14 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts // Send connection preface to server. n, err := t.conn.Write(clientPreface) if err != nil { - t.Close() - return nil, connectionErrorf(true, err, "transport: failed to write client preface: %v", err) + err = connectionErrorf(true, err, "transport: failed to write client preface: %v", err) + t.Close(err) + return nil, err } if n != len(clientPreface) { - t.Close() - return nil, connectionErrorf(true, err, "transport: preface mismatch, wrote %d bytes; want %d", n, len(clientPreface)) + err = connectionErrorf(true, nil, "transport: preface mismatch, wrote %d bytes; want %d", n, len(clientPreface)) + t.Close(err) + return nil, err } var ss []http2.Setting @@ -370,14 +382,16 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts } err = t.framer.fr.WriteSettings(ss...) if err != nil { - t.Close() - return nil, connectionErrorf(true, err, "transport: failed to write initial settings frame: %v", err) + err = connectionErrorf(true, err, "transport: failed to write initial settings frame: %v", err) + t.Close(err) + return nil, err } // Adjust the connection flow control window if needed. if delta := uint32(icwz - defaultWindowSize); delta > 0 { if err := t.framer.fr.WriteWindowUpdate(0, delta); err != nil { - t.Close() - return nil, connectionErrorf(true, err, "transport: failed to write window update: %v", err) + err = connectionErrorf(true, err, "transport: failed to write window update: %v", err) + t.Close(err) + return nil, err } } @@ -394,11 +408,10 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts logger.Errorf("transport: loopyWriter.run returning. Err: %v", err) } } - // If it's a connection error, let reader goroutine handle it - // since there might be data in the buffers. - if _, ok := err.(net.Error); !ok { - t.conn.Close() - } + // Do not close the transport. Let reader goroutine handle it since + // there might be data in the buffers. + t.conn.Close() + t.controlBuf.finish() close(t.writerDone) }() return t, nil @@ -414,6 +427,7 @@ func (t *http2Client) newStream(ctx context.Context, callHdr *CallHdr) *Stream { buf: newRecvBuffer(), headerChan: make(chan struct{}), contentSubtype: callHdr.ContentSubtype, + doneFunc: callHdr.DoneFunc, } s.wq = newWriteQuota(defaultWriteQuota, s.done) s.requestRead = func(n int) { @@ -453,7 +467,7 @@ func (t *http2Client) createHeaderFields(ctx context.Context, callHdr *CallHdr) Method: callHdr.Method, AuthInfo: t.authInfo, } - ctxWithRequestInfo := internal.NewRequestInfoContext.(func(context.Context, credentials.RequestInfo) context.Context)(ctx, ri) + ctxWithRequestInfo := icredentials.NewRequestInfoContext(ctx, ri) authData, err := t.getTrAuthData(ctxWithRequestInfo, aud) if err != nil { return nil, err @@ -602,26 +616,35 @@ func (t *http2Client) getCallAuthData(ctx context.Context, audience string, call return callAuthData, nil } -// PerformedIOError wraps an error to indicate IO may have been performed -// before the error occurred. -type PerformedIOError struct { +// NewStreamError wraps an error and reports additional information. Typically +// NewStream errors result in transparent retry, as they mean nothing went onto +// the wire. However, there are two notable exceptions: +// +// 1. If the stream headers violate the max header list size allowed by the +// server. In this case there is no reason to retry at all, as it is +// assumed the RPC would continue to fail on subsequent attempts. +// 2. If the credentials errored when requesting their headers. In this case, +// it's possible a retry can fix the problem, but indefinitely transparently +// retrying is not appropriate as it is likely the credentials, if they can +// eventually succeed, would need I/O to do so. +type NewStreamError struct { Err error + + DoNotRetry bool + DoNotTransparentRetry bool } -// Error implements error. -func (p PerformedIOError) Error() string { - return p.Err.Error() +func (e NewStreamError) Error() string { + return e.Err.Error() } // NewStream creates a stream and registers it into the transport as "active" -// streams. +// streams. All non-nil errors returned will be *NewStreamError. func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Stream, err error) { ctx = peer.NewContext(ctx, t.getPeer()) headerFields, err := t.createHeaderFields(ctx, callHdr) if err != nil { - // We may have performed I/O in the per-RPC creds callback, so do not - // allow transparent retry. - return nil, PerformedIOError{err} + return nil, &NewStreamError{Err: err, DoNotTransparentRetry: true} } s := t.newStream(ctx, callHdr) cleanup := func(err error) { @@ -721,23 +744,23 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea return true }, hdr) if err != nil { - return nil, err + return nil, &NewStreamError{Err: err} } if success { break } if hdrListSizeErr != nil { - return nil, hdrListSizeErr + return nil, &NewStreamError{Err: hdrListSizeErr, DoNotRetry: true} } firstTry = false select { case <-ch: - case <-s.ctx.Done(): - return nil, ContextErr(s.ctx.Err()) + case <-ctx.Done(): + return nil, &NewStreamError{Err: ContextErr(ctx.Err())} case <-t.goAway: - return nil, errStreamDrain + return nil, &NewStreamError{Err: errStreamDrain} case <-t.ctx.Done(): - return nil, ErrConnClosing + return nil, &NewStreamError{Err: ErrConnClosing} } } if t.statsHandler != nil { @@ -832,6 +855,9 @@ func (t *http2Client) closeStream(s *Stream, err error, rst bool, rstCode http2. t.controlBuf.executeAndPut(addBackStreamQuota, cleanup) // This will unblock write. close(s.done) + if s.doneFunc != nil { + s.doneFunc() + } } // Close kicks off the shutdown process of the transport. This should be called @@ -841,12 +867,12 @@ func (t *http2Client) closeStream(s *Stream, err error, rst bool, rstCode http2. // This method blocks until the addrConn that initiated this transport is // re-connected. This happens because t.onClose() begins reconnect logic at the // addrConn level and blocks until the addrConn is successfully connected. -func (t *http2Client) Close() error { +func (t *http2Client) Close(err error) { t.mu.Lock() // Make sure we only Close once. if t.state == closing { t.mu.Unlock() - return nil + return } // Call t.onClose before setting the state to closing to prevent the client // from attempting to create new streams ASAP. @@ -862,13 +888,25 @@ func (t *http2Client) Close() error { t.mu.Unlock() t.controlBuf.finish() t.cancel() - err := t.conn.Close() + t.conn.Close() if channelz.IsOn() { channelz.RemoveEntry(t.channelzID) } + // Append info about previous goaways if there were any, since this may be important + // for understanding the root cause for this connection to be closed. + _, goAwayDebugMessage := t.GetGoAwayReason() + + var st *status.Status + if len(goAwayDebugMessage) > 0 { + st = status.Newf(codes.Unavailable, "closing transport due to: %v, received prior goaway: %v", err, goAwayDebugMessage) + err = st.Err() + } else { + st = status.New(codes.Unavailable, err.Error()) + } + // Notify all active streams. for _, s := range streams { - t.closeStream(s, ErrConnClosing, false, http2.ErrCodeNo, status.New(codes.Unavailable, ErrConnClosing.Desc), nil, false) + t.closeStream(s, err, false, http2.ErrCodeNo, st, nil, false) } if t.statsHandler != nil { connEnd := &stats.ConnEnd{ @@ -876,7 +914,6 @@ func (t *http2Client) Close() error { } t.statsHandler.HandleConn(t.ctx, connEnd) } - return err } // GracefulClose sets the state to draining, which prevents new streams from @@ -895,7 +932,7 @@ func (t *http2Client) GracefulClose() { active := len(t.activeStreams) t.mu.Unlock() if active == 0 { - t.Close() + t.Close(ErrConnClosing) return } t.controlBuf.put(&incomingGoAway{}) @@ -1141,9 +1178,9 @@ func (t *http2Client) handleGoAway(f *http2.GoAwayFrame) { } } id := f.LastStreamID - if id > 0 && id%2 != 1 { + if id > 0 && id%2 == 0 { t.mu.Unlock() - t.Close() + t.Close(connectionErrorf(true, nil, "received goaway with non-zero even-numbered numbered stream id: %v", id)) return } // A client can receive multiple GoAways from the server (see @@ -1161,7 +1198,7 @@ func (t *http2Client) handleGoAway(f *http2.GoAwayFrame) { // If there are multiple GoAways the first one should always have an ID greater than the following ones. if id > t.prevGoAwayID { t.mu.Unlock() - t.Close() + t.Close(connectionErrorf(true, nil, "received goaway with stream id: %v, which exceeds stream id of previous goaway: %v", id, t.prevGoAwayID)) return } default: @@ -1191,7 +1228,7 @@ func (t *http2Client) handleGoAway(f *http2.GoAwayFrame) { active := len(t.activeStreams) t.mu.Unlock() if active == 0 { - t.Close() + t.Close(connectionErrorf(true, nil, "received goaway and there are no active streams")) } } @@ -1207,12 +1244,17 @@ func (t *http2Client) setGoAwayReason(f *http2.GoAwayFrame) { t.goAwayReason = GoAwayTooManyPings } } + if len(f.DebugData()) == 0 { + t.goAwayDebugMessage = fmt.Sprintf("code: %s", f.ErrCode) + } else { + t.goAwayDebugMessage = fmt.Sprintf("code: %s, debug data: %q", f.ErrCode, string(f.DebugData())) + } } -func (t *http2Client) GetGoAwayReason() GoAwayReason { +func (t *http2Client) GetGoAwayReason() (GoAwayReason, string) { t.mu.Lock() defer t.mu.Unlock() - return t.goAwayReason + return t.goAwayReason, t.goAwayDebugMessage } func (t *http2Client) handleWindowUpdate(f *http2.WindowUpdateFrame) { @@ -1239,11 +1281,124 @@ func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) { return } - state := &decodeState{} - // Initialize isGRPC value to be !initialHeader, since if a gRPC Response-Headers has already been received, then it means that the peer is speaking gRPC and we are in gRPC mode. - state.data.isGRPC = !initialHeader - if h2code, err := state.decodeHeader(frame); err != nil { - t.closeStream(s, err, true, h2code, status.Convert(err), nil, endStream) + // frame.Truncated is set to true when framer detects that the current header + // list size hits MaxHeaderListSize limit. + if frame.Truncated { + se := status.New(codes.Internal, "peer header list size exceeded limit") + t.closeStream(s, se.Err(), true, http2.ErrCodeFrameSize, se, nil, endStream) + return + } + + var ( + // If a gRPC Response-Headers has already been received, then it means + // that the peer is speaking gRPC and we are in gRPC mode. + isGRPC = !initialHeader + mdata = make(map[string][]string) + contentTypeErr = "malformed header: missing HTTP content-type" + grpcMessage string + statusGen *status.Status + recvCompress string + httpStatusCode *int + httpStatusErr string + rawStatusCode = codes.Unknown + // headerError is set if an error is encountered while parsing the headers + headerError string + ) + + if initialHeader { + httpStatusErr = "malformed header: missing HTTP status" + } + + for _, hf := range frame.Fields { + switch hf.Name { + case "content-type": + if _, validContentType := grpcutil.ContentSubtype(hf.Value); !validContentType { + contentTypeErr = fmt.Sprintf("transport: received unexpected content-type %q", hf.Value) + break + } + contentTypeErr = "" + mdata[hf.Name] = append(mdata[hf.Name], hf.Value) + isGRPC = true + case "grpc-encoding": + recvCompress = hf.Value + case "grpc-status": + code, err := strconv.ParseInt(hf.Value, 10, 32) + if err != nil { + se := status.New(codes.Internal, fmt.Sprintf("transport: malformed grpc-status: %v", err)) + t.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream) + return + } + rawStatusCode = codes.Code(uint32(code)) + case "grpc-message": + grpcMessage = decodeGrpcMessage(hf.Value) + case "grpc-status-details-bin": + var err error + statusGen, err = decodeGRPCStatusDetails(hf.Value) + if err != nil { + headerError = fmt.Sprintf("transport: malformed grpc-status-details-bin: %v", err) + } + case ":status": + if hf.Value == "200" { + httpStatusErr = "" + statusCode := 200 + httpStatusCode = &statusCode + break + } + + c, err := strconv.ParseInt(hf.Value, 10, 32) + if err != nil { + se := status.New(codes.Internal, fmt.Sprintf("transport: malformed http-status: %v", err)) + t.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream) + return + } + statusCode := int(c) + httpStatusCode = &statusCode + + httpStatusErr = fmt.Sprintf( + "unexpected HTTP status code received from server: %d (%s)", + statusCode, + http.StatusText(statusCode), + ) + default: + if isReservedHeader(hf.Name) && !isWhitelistedHeader(hf.Name) { + break + } + v, err := decodeMetadataHeader(hf.Name, hf.Value) + if err != nil { + headerError = fmt.Sprintf("transport: malformed %s: %v", hf.Name, err) + logger.Warningf("Failed to decode metadata header (%q, %q): %v", hf.Name, hf.Value, err) + break + } + mdata[hf.Name] = append(mdata[hf.Name], v) + } + } + + if !isGRPC || httpStatusErr != "" { + var code = codes.Internal // when header does not include HTTP status, return INTERNAL + + if httpStatusCode != nil { + var ok bool + code, ok = HTTPStatusConvTab[*httpStatusCode] + if !ok { + code = codes.Unknown + } + } + var errs []string + if httpStatusErr != "" { + errs = append(errs, httpStatusErr) + } + if contentTypeErr != "" { + errs = append(errs, contentTypeErr) + } + // Verify the HTTP response is a 200. + se := status.New(code, strings.Join(errs, "; ")) + t.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream) + return + } + + if headerError != "" { + se := status.New(codes.Internal, headerError) + t.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream) return } @@ -1278,9 +1433,9 @@ func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) { // These values can be set without any synchronization because // stream goroutine will read it only after seeing a closed // headerChan which we'll close after setting this. - s.recvCompress = state.data.encoding - if len(state.data.mdata) > 0 { - s.header = state.data.mdata + s.recvCompress = recvCompress + if len(mdata) > 0 { + s.header = mdata } } else { // HEADERS frame block carries a Trailers-Only. @@ -1293,9 +1448,13 @@ func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) { return } + if statusGen == nil { + statusGen = status.New(rawStatusCode, grpcMessage) + } + // if client received END_STREAM from server while stream was still active, send RST_STREAM rst := s.getState() == streamActive - t.closeStream(s, io.EOF, rst, http2.ErrCodeNo, state.status(), state.data.mdata, true) + t.closeStream(s, io.EOF, rst, http2.ErrCodeNo, statusGen, mdata, true) } // reader runs as a separate goroutine in charge of reading data from network @@ -1309,7 +1468,8 @@ func (t *http2Client) reader() { // Check the validity of server preface. frame, err := t.framer.fr.ReadFrame() if err != nil { - t.Close() // this kicks off resetTransport, so must be last before return + err = connectionErrorf(true, err, "error reading server preface: %v", err) + t.Close(err) // this kicks off resetTransport, so must be last before return return } t.conn.SetReadDeadline(time.Time{}) // reset deadline once we get the settings frame (we didn't time out, yay!) @@ -1318,7 +1478,8 @@ func (t *http2Client) reader() { } sf, ok := frame.(*http2.SettingsFrame) if !ok { - t.Close() // this kicks off resetTransport, so must be last before return + // this kicks off resetTransport, so must be last before return + t.Close(connectionErrorf(true, nil, "initial http2 frame from server is not a settings frame: %T", frame)) return } t.onPrefaceReceipt() @@ -1354,7 +1515,7 @@ func (t *http2Client) reader() { continue } else { // Transport error. - t.Close() + t.Close(connectionErrorf(true, err, "error reading from server: %v", err)) return } } @@ -1413,7 +1574,7 @@ func (t *http2Client) keepalive() { continue } if outstandingPing && timeoutLeft <= 0 { - t.Close() + t.Close(connectionErrorf(true, nil, "keepalive ping failed to receive ACK within timeout")) return } t.mu.Lock() diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/transport/http2_server.go b/src/runtime/vendor/google.golang.org/grpc/internal/transport/http2_server.go index 0cf1cc320..19c13e041 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/transport/http2_server.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/transport/http2_server.go @@ -26,6 +26,7 @@ import ( "io" "math" "net" + "net/http" "strconv" "sync" "sync/atomic" @@ -101,11 +102,11 @@ type http2Server struct { mu sync.Mutex // guard the following - // drainChan is initialized when drain(...) is called the first time. + // drainChan is initialized when Drain() is called the first time. // After which the server writes out the first GoAway(with ID 2^31-1) frame. // Then an independent goroutine will be launched to later send the second GoAway. // During this time we don't want to write another first GoAway(with ID 2^31 -1) frame. - // Thus call to drain(...) will be a no-op if drainChan is already initialized since draining is + // Thus call to Drain() will be a no-op if drainChan is already initialized since draining is // already underway. drainChan chan struct{} state transportState @@ -124,9 +125,30 @@ type http2Server struct { connectionID uint64 } -// newHTTP2Server constructs a ServerTransport based on HTTP2. ConnectionError is -// returned if something goes wrong. -func newHTTP2Server(conn net.Conn, config *ServerConfig) (_ ServerTransport, err error) { +// NewServerTransport creates a http2 transport with conn and configuration +// options from config. +// +// It returns a non-nil transport and a nil error on success. On failure, it +// returns a non-nil transport and a nil-error. For a special case where the +// underlying conn gets closed before the client preface could be read, it +// returns a nil transport and a nil error. +func NewServerTransport(conn net.Conn, config *ServerConfig) (_ ServerTransport, err error) { + var authInfo credentials.AuthInfo + rawConn := conn + if config.Credentials != nil { + var err error + conn, authInfo, err = config.Credentials.ServerHandshake(rawConn) + if err != nil { + // ErrConnDispatched means that the connection was dispatched away + // from gRPC; those connections should be left open. io.EOF means + // the connection was closed before handshaking completed, which can + // happen naturally from probers. Return these errors directly. + if err == credentials.ErrConnDispatched || err == io.EOF { + return nil, err + } + return nil, connectionErrorf(false, err, "ServerHandshake(%q) failed: %v", rawConn.RemoteAddr(), err) + } + } writeBufSize := config.WriteBufferSize readBufSize := config.ReadBufferSize maxHeaderListSize := defaultServerMaxHeaderListSize @@ -209,14 +231,15 @@ func newHTTP2Server(conn net.Conn, config *ServerConfig) (_ ServerTransport, err if kep.MinTime == 0 { kep.MinTime = defaultKeepalivePolicyMinTime } + done := make(chan struct{}) t := &http2Server{ - ctx: context.Background(), + ctx: setConnection(context.Background(), rawConn), done: done, conn: conn, remoteAddr: conn.RemoteAddr(), localAddr: conn.LocalAddr(), - authInfo: config.AuthInfo, + authInfo: authInfo, framer: framer, readerDone: make(chan struct{}), writerDone: make(chan struct{}), @@ -265,6 +288,13 @@ func newHTTP2Server(conn net.Conn, config *ServerConfig) (_ ServerTransport, err // Check the validity of client preface. preface := make([]byte, len(clientPreface)) if _, err := io.ReadFull(t.conn, preface); err != nil { + // In deployments where a gRPC server runs behind a cloud load balancer + // which performs regular TCP level health checks, the connection is + // closed immediately by the latter. Skipping the error here will help + // reduce log clutter. + if err == io.EOF { + return nil, nil + } return nil, connectionErrorf(false, err, "transport: http2Server.HandleStreams failed to receive the preface from client: %v", err) } if !bytes.Equal(preface, clientPreface) { @@ -294,6 +324,7 @@ func newHTTP2Server(conn net.Conn, config *ServerConfig) (_ ServerTransport, err } } t.conn.Close() + t.controlBuf.finish() close(t.writerDone) }() go t.keepalive() @@ -303,37 +334,92 @@ func newHTTP2Server(conn net.Conn, config *ServerConfig) (_ ServerTransport, err // operateHeader takes action on the decoded headers. func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func(*Stream), traceCtx func(context.Context, string) context.Context) (fatal bool) { streamID := frame.Header().StreamID - state := &decodeState{ - serverSide: true, - } - if h2code, err := state.decodeHeader(frame); err != nil { - if _, ok := status.FromError(err); ok { - t.controlBuf.put(&cleanupStream{ - streamID: streamID, - rst: true, - rstCode: h2code, - onWrite: func() {}, - }) - } + + // frame.Truncated is set to true when framer detects that the current header + // list size hits MaxHeaderListSize limit. + if frame.Truncated { + t.controlBuf.put(&cleanupStream{ + streamID: streamID, + rst: true, + rstCode: http2.ErrCodeFrameSize, + onWrite: func() {}, + }) return false } buf := newRecvBuffer() s := &Stream{ - id: streamID, - st: t, - buf: buf, - fc: &inFlow{limit: uint32(t.initialWindowSize)}, - recvCompress: state.data.encoding, - method: state.data.method, - contentSubtype: state.data.contentSubtype, + id: streamID, + st: t, + buf: buf, + fc: &inFlow{limit: uint32(t.initialWindowSize)}, } + + var ( + // If a gRPC Response-Headers has already been received, then it means + // that the peer is speaking gRPC and we are in gRPC mode. + isGRPC = false + mdata = make(map[string][]string) + httpMethod string + // headerError is set if an error is encountered while parsing the headers + headerError bool + + timeoutSet bool + timeout time.Duration + ) + + for _, hf := range frame.Fields { + switch hf.Name { + case "content-type": + contentSubtype, validContentType := grpcutil.ContentSubtype(hf.Value) + if !validContentType { + break + } + mdata[hf.Name] = append(mdata[hf.Name], hf.Value) + s.contentSubtype = contentSubtype + isGRPC = true + case "grpc-encoding": + s.recvCompress = hf.Value + case ":method": + httpMethod = hf.Value + case ":path": + s.method = hf.Value + case "grpc-timeout": + timeoutSet = true + var err error + if timeout, err = decodeTimeout(hf.Value); err != nil { + headerError = true + } + default: + if isReservedHeader(hf.Name) && !isWhitelistedHeader(hf.Name) { + break + } + v, err := decodeMetadataHeader(hf.Name, hf.Value) + if err != nil { + headerError = true + logger.Warningf("Failed to decode metadata header (%q, %q): %v", hf.Name, hf.Value, err) + break + } + mdata[hf.Name] = append(mdata[hf.Name], v) + } + } + + if !isGRPC || headerError { + t.controlBuf.put(&cleanupStream{ + streamID: streamID, + rst: true, + rstCode: http2.ErrCodeProtocol, + onWrite: func() {}, + }) + return false + } + if frame.StreamEnded() { // s is just created by the caller. No lock needed. s.state = streamReadDone } - if state.data.timeoutSet { - s.ctx, s.cancel = context.WithTimeout(t.ctx, state.data.timeout) + if timeoutSet { + s.ctx, s.cancel = context.WithTimeout(t.ctx, timeout) } else { s.ctx, s.cancel = context.WithCancel(t.ctx) } @@ -346,33 +432,13 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( } s.ctx = peer.NewContext(s.ctx, pr) // Attach the received metadata to the context. - if len(state.data.mdata) > 0 { - s.ctx = metadata.NewIncomingContext(s.ctx, state.data.mdata) - } - if state.data.statsTags != nil { - s.ctx = stats.SetIncomingTags(s.ctx, state.data.statsTags) - } - if state.data.statsTrace != nil { - s.ctx = stats.SetIncomingTrace(s.ctx, state.data.statsTrace) - } - if t.inTapHandle != nil { - var err error - info := &tap.Info{ - FullMethodName: state.data.method, + if len(mdata) > 0 { + s.ctx = metadata.NewIncomingContext(s.ctx, mdata) + if statsTags := mdata["grpc-tags-bin"]; len(statsTags) > 0 { + s.ctx = stats.SetIncomingTags(s.ctx, []byte(statsTags[len(statsTags)-1])) } - s.ctx, err = t.inTapHandle(s.ctx, info) - if err != nil { - if logger.V(logLevel) { - logger.Warningf("transport: http2Server.operateHeaders got an error from InTapHandle: %v", err) - } - t.controlBuf.put(&cleanupStream{ - streamID: s.id, - rst: true, - rstCode: http2.ErrCodeRefusedStream, - onWrite: func() {}, - }) - s.cancel() - return false + if statsTrace := mdata["grpc-trace-bin"]; len(statsTrace) > 0 { + s.ctx = stats.SetIncomingTrace(s.ctx, []byte(statsTrace[len(statsTrace)-1])) } } t.mu.Lock() @@ -402,6 +468,39 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( return true } t.maxStreamID = streamID + if httpMethod != http.MethodPost { + t.mu.Unlock() + if logger.V(logLevel) { + logger.Infof("transport: http2Server.operateHeaders parsed a :method field: %v which should be POST", httpMethod) + } + t.controlBuf.put(&cleanupStream{ + streamID: streamID, + rst: true, + rstCode: http2.ErrCodeProtocol, + onWrite: func() {}, + }) + s.cancel() + return false + } + if t.inTapHandle != nil { + var err error + if s.ctx, err = t.inTapHandle(s.ctx, &tap.Info{FullMethodName: s.method}); err != nil { + t.mu.Unlock() + if logger.V(logLevel) { + logger.Infof("transport: http2Server.operateHeaders got an error from InTapHandle: %v", err) + } + stat, ok := status.FromError(err) + if !ok { + stat = status.New(codes.PermissionDenied, err.Error()) + } + t.controlBuf.put(&earlyAbortStream{ + streamID: s.id, + contentSubtype: s.contentSubtype, + status: stat, + }) + return false + } + } t.activeStreams[streamID] = s if len(t.activeStreams) == 1 { t.idle = time.Time{} @@ -423,7 +522,7 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( LocalAddr: t.localAddr, Compression: s.recvCompress, WireLength: int(frame.Header().Length), - Header: metadata.MD(state.data.mdata).Copy(), + Header: metadata.MD(mdata).Copy(), } t.stats.HandleRPC(s.ctx, inHeader) } @@ -990,12 +1089,12 @@ func (t *http2Server) keepalive() { if val <= 0 { // The connection has been idle for a duration of keepalive.MaxConnectionIdle or more. // Gracefully close the connection. - t.drain(http2.ErrCodeNo, []byte{}) + t.Drain() return } idleTimer.Reset(val) case <-ageTimer.C: - t.drain(http2.ErrCodeNo, []byte{}) + t.Drain() ageTimer.Reset(t.kp.MaxConnectionAgeGrace) select { case <-ageTimer.C: @@ -1049,11 +1148,11 @@ func (t *http2Server) keepalive() { // Close starts shutting down the http2Server transport. // TODO(zhaoq): Now the destruction is not blocked on any pending streams. This // could cause some resource issue. Revisit this later. -func (t *http2Server) Close() error { +func (t *http2Server) Close() { t.mu.Lock() if t.state == closing { t.mu.Unlock() - return errors.New("transport: Close() was already called") + return } t.state = closing streams := t.activeStreams @@ -1061,7 +1160,9 @@ func (t *http2Server) Close() error { t.mu.Unlock() t.controlBuf.finish() close(t.done) - err := t.conn.Close() + if err := t.conn.Close(); err != nil && logger.V(logLevel) { + logger.Infof("transport: error closing conn during Close: %v", err) + } if channelz.IsOn() { channelz.RemoveEntry(t.channelzID) } @@ -1073,7 +1174,6 @@ func (t *http2Server) Close() error { connEnd := &stats.ConnEnd{} t.stats.HandleConn(t.ctx, connEnd) } - return err } // deleteStream deletes the stream s from transport's active streams. @@ -1138,17 +1238,13 @@ func (t *http2Server) RemoteAddr() net.Addr { } func (t *http2Server) Drain() { - t.drain(http2.ErrCodeNo, []byte{}) -} - -func (t *http2Server) drain(code http2.ErrCode, debugData []byte) { t.mu.Lock() defer t.mu.Unlock() if t.drainChan != nil { return } t.drainChan = make(chan struct{}) - t.controlBuf.put(&goAway{code: code, debugData: debugData, headsUp: true}) + t.controlBuf.put(&goAway{code: http2.ErrCodeNo, debugData: []byte{}, headsUp: true}) } var goAwayPing = &ping{data: [8]byte{1, 6, 1, 8, 0, 3, 3, 9}} @@ -1266,3 +1362,18 @@ func getJitter(v time.Duration) time.Duration { j := grpcrand.Int63n(2*r) - r return time.Duration(j) } + +type connectionKey struct{} + +// GetConnection gets the connection from the context. +func GetConnection(ctx context.Context) net.Conn { + conn, _ := ctx.Value(connectionKey{}).(net.Conn) + return conn +} + +// SetConnection adds the connection to the context to be able to get +// information about the destination ip and port for an incoming RPC. This also +// allows any unary or streaming interceptors to see the connection. +func setConnection(ctx context.Context, conn net.Conn) context.Context { + return context.WithValue(ctx, connectionKey{}, conn) +} diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/transport/http_util.go b/src/runtime/vendor/google.golang.org/grpc/internal/transport/http_util.go index 7e41d1183..d8247bcdf 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/transport/http_util.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/transport/http_util.go @@ -39,7 +39,6 @@ import ( spb "google.golang.org/genproto/googleapis/rpc/status" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/internal/grpcutil" "google.golang.org/grpc/status" ) @@ -96,52 +95,6 @@ var ( logger = grpclog.Component("transport") ) -type parsedHeaderData struct { - encoding string - // statusGen caches the stream status received from the trailer the server - // sent. Client side only. Do not access directly. After all trailers are - // parsed, use the status method to retrieve the status. - statusGen *status.Status - // rawStatusCode and rawStatusMsg are set from the raw trailer fields and are not - // intended for direct access outside of parsing. - rawStatusCode *int - rawStatusMsg string - httpStatus *int - // Server side only fields. - timeoutSet bool - timeout time.Duration - method string - // key-value metadata map from the peer. - mdata map[string][]string - statsTags []byte - statsTrace []byte - contentSubtype string - - // isGRPC field indicates whether the peer is speaking gRPC (otherwise HTTP). - // - // We are in gRPC mode (peer speaking gRPC) if: - // * We are client side and have already received a HEADER frame that indicates gRPC peer. - // * The header contains valid a content-type, i.e. a string starts with "application/grpc" - // And we should handle error specific to gRPC. - // - // Otherwise (i.e. a content-type string starts without "application/grpc", or does not exist), we - // are in HTTP fallback mode, and should handle error specific to HTTP. - isGRPC bool - grpcErr error - httpErr error - contentTypeErr string -} - -// decodeState configures decoding criteria and records the decoded data. -type decodeState struct { - // whether decoding on server side or not - serverSide bool - - // Records the states during HPACK decoding. It will be filled with info parsed from HTTP HEADERS - // frame once decodeHeader function has been invoked and returned. - data parsedHeaderData -} - // isReservedHeader checks whether hdr belongs to HTTP2 headers // reserved by gRPC protocol. Any other headers are classified as the // user-specified metadata. @@ -179,14 +132,6 @@ func isWhitelistedHeader(hdr string) bool { } } -func (d *decodeState) status() *status.Status { - if d.data.statusGen == nil { - // No status-details were provided; generate status using code/msg. - d.data.statusGen = status.New(codes.Code(int32(*(d.data.rawStatusCode))), d.data.rawStatusMsg) - } - return d.data.statusGen -} - const binHdrSuffix = "-bin" func encodeBinHeader(v []byte) string { @@ -216,166 +161,16 @@ func decodeMetadataHeader(k, v string) (string, error) { return v, nil } -func (d *decodeState) decodeHeader(frame *http2.MetaHeadersFrame) (http2.ErrCode, error) { - // frame.Truncated is set to true when framer detects that the current header - // list size hits MaxHeaderListSize limit. - if frame.Truncated { - return http2.ErrCodeFrameSize, status.Error(codes.Internal, "peer header list size exceeded limit") +func decodeGRPCStatusDetails(rawDetails string) (*status.Status, error) { + v, err := decodeBinHeader(rawDetails) + if err != nil { + return nil, err } - - for _, hf := range frame.Fields { - d.processHeaderField(hf) - } - - if d.data.isGRPC { - if d.data.grpcErr != nil { - return http2.ErrCodeProtocol, d.data.grpcErr - } - if d.serverSide { - return http2.ErrCodeNo, nil - } - if d.data.rawStatusCode == nil && d.data.statusGen == nil { - // gRPC status doesn't exist. - // Set rawStatusCode to be unknown and return nil error. - // So that, if the stream has ended this Unknown status - // will be propagated to the user. - // Otherwise, it will be ignored. In which case, status from - // a later trailer, that has StreamEnded flag set, is propagated. - code := int(codes.Unknown) - d.data.rawStatusCode = &code - } - return http2.ErrCodeNo, nil - } - - // HTTP fallback mode - if d.data.httpErr != nil { - return http2.ErrCodeProtocol, d.data.httpErr - } - - var ( - code = codes.Internal // when header does not include HTTP status, return INTERNAL - ok bool - ) - - if d.data.httpStatus != nil { - code, ok = HTTPStatusConvTab[*(d.data.httpStatus)] - if !ok { - code = codes.Unknown - } - } - - return http2.ErrCodeProtocol, status.Error(code, d.constructHTTPErrMsg()) -} - -// constructErrMsg constructs error message to be returned in HTTP fallback mode. -// Format: HTTP status code and its corresponding message + content-type error message. -func (d *decodeState) constructHTTPErrMsg() string { - var errMsgs []string - - if d.data.httpStatus == nil { - errMsgs = append(errMsgs, "malformed header: missing HTTP status") - } else { - errMsgs = append(errMsgs, fmt.Sprintf("%s: HTTP status code %d", http.StatusText(*(d.data.httpStatus)), *d.data.httpStatus)) - } - - if d.data.contentTypeErr == "" { - errMsgs = append(errMsgs, "transport: missing content-type field") - } else { - errMsgs = append(errMsgs, d.data.contentTypeErr) - } - - return strings.Join(errMsgs, "; ") -} - -func (d *decodeState) addMetadata(k, v string) { - if d.data.mdata == nil { - d.data.mdata = make(map[string][]string) - } - d.data.mdata[k] = append(d.data.mdata[k], v) -} - -func (d *decodeState) processHeaderField(f hpack.HeaderField) { - switch f.Name { - case "content-type": - contentSubtype, validContentType := grpcutil.ContentSubtype(f.Value) - if !validContentType { - d.data.contentTypeErr = fmt.Sprintf("transport: received the unexpected content-type %q", f.Value) - return - } - d.data.contentSubtype = contentSubtype - // TODO: do we want to propagate the whole content-type in the metadata, - // or come up with a way to just propagate the content-subtype if it was set? - // ie {"content-type": "application/grpc+proto"} or {"content-subtype": "proto"} - // in the metadata? - d.addMetadata(f.Name, f.Value) - d.data.isGRPC = true - case "grpc-encoding": - d.data.encoding = f.Value - case "grpc-status": - code, err := strconv.Atoi(f.Value) - if err != nil { - d.data.grpcErr = status.Errorf(codes.Internal, "transport: malformed grpc-status: %v", err) - return - } - d.data.rawStatusCode = &code - case "grpc-message": - d.data.rawStatusMsg = decodeGrpcMessage(f.Value) - case "grpc-status-details-bin": - v, err := decodeBinHeader(f.Value) - if err != nil { - d.data.grpcErr = status.Errorf(codes.Internal, "transport: malformed grpc-status-details-bin: %v", err) - return - } - s := &spb.Status{} - if err := proto.Unmarshal(v, s); err != nil { - d.data.grpcErr = status.Errorf(codes.Internal, "transport: malformed grpc-status-details-bin: %v", err) - return - } - d.data.statusGen = status.FromProto(s) - case "grpc-timeout": - d.data.timeoutSet = true - var err error - if d.data.timeout, err = decodeTimeout(f.Value); err != nil { - d.data.grpcErr = status.Errorf(codes.Internal, "transport: malformed time-out: %v", err) - } - case ":path": - d.data.method = f.Value - case ":status": - code, err := strconv.Atoi(f.Value) - if err != nil { - d.data.httpErr = status.Errorf(codes.Internal, "transport: malformed http-status: %v", err) - return - } - d.data.httpStatus = &code - case "grpc-tags-bin": - v, err := decodeBinHeader(f.Value) - if err != nil { - d.data.grpcErr = status.Errorf(codes.Internal, "transport: malformed grpc-tags-bin: %v", err) - return - } - d.data.statsTags = v - d.addMetadata(f.Name, string(v)) - case "grpc-trace-bin": - v, err := decodeBinHeader(f.Value) - if err != nil { - d.data.grpcErr = status.Errorf(codes.Internal, "transport: malformed grpc-trace-bin: %v", err) - return - } - d.data.statsTrace = v - d.addMetadata(f.Name, string(v)) - default: - if isReservedHeader(f.Name) && !isWhitelistedHeader(f.Name) { - break - } - v, err := decodeMetadataHeader(f.Name, f.Value) - if err != nil { - if logger.V(logLevel) { - logger.Errorf("Failed to decode metadata header (%q, %q): %v", f.Name, f.Value, err) - } - return - } - d.addMetadata(f.Name, v) + st := &spb.Status{} + if err = proto.Unmarshal(v, st); err != nil { + return nil, err } + return status.FromProto(st), nil } type timeoutUnit uint8 diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/transport/networktype/networktype.go b/src/runtime/vendor/google.golang.org/grpc/internal/transport/networktype/networktype.go index 96967428b..7bb53cff1 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/transport/networktype/networktype.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/transport/networktype/networktype.go @@ -17,7 +17,7 @@ */ // Package networktype declares the network type to be used in the default -// dailer. Attribute of a resolver.Address. +// dialer. Attribute of a resolver.Address. package networktype import ( diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/transport/transport.go b/src/runtime/vendor/google.golang.org/grpc/internal/transport/transport.go index 9c8f79cb4..d3bf65b2b 100644 --- a/src/runtime/vendor/google.golang.org/grpc/internal/transport/transport.go +++ b/src/runtime/vendor/google.golang.org/grpc/internal/transport/transport.go @@ -30,6 +30,7 @@ import ( "net" "sync" "sync/atomic" + "time" "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" @@ -241,6 +242,7 @@ type Stream struct { ctx context.Context // the associated context of the stream cancel context.CancelFunc // always nil for client side Stream done chan struct{} // closed at the end of stream to unblock writers. On the client side. + doneFunc func() // invoked at the end of stream on client side. ctxDone <-chan struct{} // same as done chan but for server side. Cache of ctx.Done() (for performance) method string // the associated RPC method of the stream recvCompress string @@ -517,7 +519,8 @@ const ( // ServerConfig consists of all the configurations to establish a server transport. type ServerConfig struct { MaxStreams uint32 - AuthInfo credentials.AuthInfo + ConnectionTimeout time.Duration + Credentials credentials.TransportCredentials InTapHandle tap.ServerInHandle StatsHandler stats.Handler KeepaliveParams keepalive.ServerParameters @@ -531,12 +534,6 @@ type ServerConfig struct { HeaderTableSize *uint32 } -// NewServerTransport creates a ServerTransport with conn or non-nil error -// if it fails. -func NewServerTransport(protocol string, conn net.Conn, config *ServerConfig) (ServerTransport, error) { - return newHTTP2Server(conn, config) -} - // ConnectOptions covers all relevant options for communicating with the server. type ConnectOptions struct { // UserAgent is the application user agent. @@ -611,6 +608,8 @@ type CallHdr struct { ContentSubtype string PreviousAttempts int // value of grpc-previous-rpc-attempts header to set + + DoneFunc func() // called when the stream is finished } // ClientTransport is the common interface for all gRPC client-side transport @@ -619,7 +618,7 @@ type ClientTransport interface { // Close tears down this transport. Once it returns, the transport // should not be accessed any more. The caller must make sure this // is called only once. - Close() error + Close(err error) // GracefulClose starts to tear down the transport: the transport will stop // accepting new RPCs and NewStream will return error. Once all streams are @@ -653,8 +652,9 @@ type ClientTransport interface { // HTTP/2). GoAway() <-chan struct{} - // GetGoAwayReason returns the reason why GoAway frame was received. - GetGoAwayReason() GoAwayReason + // GetGoAwayReason returns the reason why GoAway frame was received, along + // with a human readable string with debug info. + GetGoAwayReason() (GoAwayReason, string) // RemoteAddr returns the remote network address. RemoteAddr() net.Addr @@ -690,7 +690,7 @@ type ServerTransport interface { // Close tears down the transport. Once it is called, the transport // should not be accessed any more. All the pending streams and their // handlers will be terminated asynchronously. - Close() error + Close() // RemoteAddr returns the remote network address. RemoteAddr() net.Addr diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/xds/env/env.go b/src/runtime/vendor/google.golang.org/grpc/internal/xds/env/env.go new file mode 100644 index 000000000..b171ac91f --- /dev/null +++ b/src/runtime/vendor/google.golang.org/grpc/internal/xds/env/env.go @@ -0,0 +1,95 @@ +/* + * + * Copyright 2020 gRPC authors. + * + * 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. + * + */ + +// Package env acts a single source of definition for all environment variables +// related to the xDS implementation in gRPC. +package env + +import ( + "os" + "strings" +) + +const ( + // BootstrapFileNameEnv is the env variable to set bootstrap file name. + // Do not use this and read from env directly. Its value is read and kept in + // variable BootstrapFileName. + // + // When both bootstrap FileName and FileContent are set, FileName is used. + BootstrapFileNameEnv = "GRPC_XDS_BOOTSTRAP" + // BootstrapFileContentEnv is the env variable to set bootstrapp file + // content. Do not use this and read from env directly. Its value is read + // and kept in variable BootstrapFileName. + // + // When both bootstrap FileName and FileContent are set, FileName is used. + BootstrapFileContentEnv = "GRPC_XDS_BOOTSTRAP_CONFIG" + + ringHashSupportEnv = "GRPC_XDS_EXPERIMENTAL_ENABLE_RING_HASH" + clientSideSecuritySupportEnv = "GRPC_XDS_EXPERIMENTAL_SECURITY_SUPPORT" + aggregateAndDNSSupportEnv = "GRPC_XDS_EXPERIMENTAL_ENABLE_AGGREGATE_AND_LOGICAL_DNS_CLUSTER" + retrySupportEnv = "GRPC_XDS_EXPERIMENTAL_ENABLE_RETRY" + rbacSupportEnv = "GRPC_XDS_EXPERIMENTAL_ENABLE_RBAC" + + c2pResolverSupportEnv = "GRPC_EXPERIMENTAL_GOOGLE_C2P_RESOLVER" + c2pResolverTestOnlyTrafficDirectorURIEnv = "GRPC_TEST_ONLY_GOOGLE_C2P_RESOLVER_TRAFFIC_DIRECTOR_URI" +) + +var ( + // BootstrapFileName holds the name of the file which contains xDS bootstrap + // configuration. Users can specify the location of the bootstrap file by + // setting the environment variable "GRPC_XDS_BOOTSTRAP". + // + // When both bootstrap FileName and FileContent are set, FileName is used. + BootstrapFileName = os.Getenv(BootstrapFileNameEnv) + // BootstrapFileContent holds the content of the xDS bootstrap + // configuration. Users can specify the bootstrap config by + // setting the environment variable "GRPC_XDS_BOOTSTRAP_CONFIG". + // + // When both bootstrap FileName and FileContent are set, FileName is used. + BootstrapFileContent = os.Getenv(BootstrapFileContentEnv) + // RingHashSupport indicates whether ring hash support is enabled, which can + // be disabled by setting the environment variable + // "GRPC_XDS_EXPERIMENTAL_ENABLE_RING_HASH" to "false". + RingHashSupport = !strings.EqualFold(os.Getenv(ringHashSupportEnv), "false") + // ClientSideSecuritySupport is used to control processing of security + // configuration on the client-side. + // + // Note that there is no env var protection for the server-side because we + // have a brand new API on the server-side and users explicitly need to use + // the new API to get security integration on the server. + ClientSideSecuritySupport = !strings.EqualFold(os.Getenv(clientSideSecuritySupportEnv), "false") + // AggregateAndDNSSupportEnv indicates whether processing of aggregated + // cluster and DNS cluster is enabled, which can be enabled by setting the + // environment variable + // "GRPC_XDS_EXPERIMENTAL_ENABLE_AGGREGATE_AND_LOGICAL_DNS_CLUSTER" to + // "true". + AggregateAndDNSSupportEnv = strings.EqualFold(os.Getenv(aggregateAndDNSSupportEnv), "true") + + // RetrySupport indicates whether xDS retry is enabled. + RetrySupport = !strings.EqualFold(os.Getenv(retrySupportEnv), "false") + + // RBACSupport indicates whether xDS configured RBAC HTTP Filter is enabled. + RBACSupport = strings.EqualFold(os.Getenv(rbacSupportEnv), "true") + + // C2PResolverSupport indicates whether support for C2P resolver is enabled. + // This can be enabled by setting the environment variable + // "GRPC_EXPERIMENTAL_GOOGLE_C2P_RESOLVER" to "true". + C2PResolverSupport = strings.EqualFold(os.Getenv(c2pResolverSupportEnv), "true") + // C2PResolverTestOnlyTrafficDirectorURI is the TD URI for testing. + C2PResolverTestOnlyTrafficDirectorURI = os.Getenv(c2pResolverTestOnlyTrafficDirectorURIEnv) +) diff --git a/src/runtime/vendor/google.golang.org/grpc/internal/xds_handshake_cluster.go b/src/runtime/vendor/google.golang.org/grpc/internal/xds_handshake_cluster.go new file mode 100644 index 000000000..3677c3f04 --- /dev/null +++ b/src/runtime/vendor/google.golang.org/grpc/internal/xds_handshake_cluster.go @@ -0,0 +1,40 @@ +/* + * Copyright 2021 gRPC authors. + * + * 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. + */ + +package internal + +import ( + "google.golang.org/grpc/attributes" + "google.golang.org/grpc/resolver" +) + +// handshakeClusterNameKey is the type used as the key to store cluster name in +// the Attributes field of resolver.Address. +type handshakeClusterNameKey struct{} + +// SetXDSHandshakeClusterName returns a copy of addr in which the Attributes field +// is updated with the cluster name. +func SetXDSHandshakeClusterName(addr resolver.Address, clusterName string) resolver.Address { + addr.Attributes = addr.Attributes.WithValues(handshakeClusterNameKey{}, clusterName) + return addr +} + +// GetXDSHandshakeClusterName returns cluster name stored in attr. +func GetXDSHandshakeClusterName(attr *attributes.Attributes) (string, bool) { + v := attr.Value(handshakeClusterNameKey{}) + name, ok := v.(string) + return name, ok +} diff --git a/src/runtime/vendor/google.golang.org/grpc/metadata/metadata.go b/src/runtime/vendor/google.golang.org/grpc/metadata/metadata.go index cf6d1b947..3604c7819 100644 --- a/src/runtime/vendor/google.golang.org/grpc/metadata/metadata.go +++ b/src/runtime/vendor/google.golang.org/grpc/metadata/metadata.go @@ -75,13 +75,9 @@ func Pairs(kv ...string) MD { panic(fmt.Sprintf("metadata: Pairs got the odd number of input pairs for metadata: %d", len(kv))) } md := MD{} - var key string - for i, s := range kv { - if i%2 == 0 { - key = strings.ToLower(s) - continue - } - md[key] = append(md[key], s) + for i := 0; i < len(kv); i += 2 { + key := strings.ToLower(kv[i]) + md[key] = append(md[key], kv[i+1]) } return md } @@ -97,12 +93,16 @@ func (md MD) Copy() MD { } // Get obtains the values for a given key. +// +// k is converted to lowercase before searching in md. func (md MD) Get(k string) []string { k = strings.ToLower(k) return md[k] } // Set sets the value of a given key with a slice of values. +// +// k is converted to lowercase before storing in md. func (md MD) Set(k string, vals ...string) { if len(vals) == 0 { return @@ -111,7 +111,10 @@ func (md MD) Set(k string, vals ...string) { md[k] = vals } -// Append adds the values to key k, not overwriting what was already stored at that key. +// Append adds the values to key k, not overwriting what was already stored at +// that key. +// +// k is converted to lowercase before storing in md. func (md MD) Append(k string, vals ...string) { if len(vals) == 0 { return @@ -120,9 +123,17 @@ func (md MD) Append(k string, vals ...string) { md[k] = append(md[k], vals...) } +// Delete removes the values for a given key k which is converted to lowercase +// before removing it from md. +func (md MD) Delete(k string) { + k = strings.ToLower(k) + delete(md, k) +} + // Join joins any number of mds into a single MD. -// The order of values for each key is determined by the order in which -// the mds containing those values are presented to Join. +// +// The order of values for each key is determined by the order in which the mds +// containing those values are presented to Join. func Join(mds ...MD) MD { out := MD{} for _, md := range mds { @@ -149,8 +160,8 @@ func NewOutgoingContext(ctx context.Context, md MD) context.Context { } // AppendToOutgoingContext returns a new context with the provided kv merged -// with any existing metadata in the context. Please refer to the -// documentation of Pairs for a description of kv. +// with any existing metadata in the context. Please refer to the documentation +// of Pairs for a description of kv. func AppendToOutgoingContext(ctx context.Context, kv ...string) context.Context { if len(kv)%2 == 1 { panic(fmt.Sprintf("metadata: AppendToOutgoingContext got an odd number of input pairs for metadata: %d", len(kv))) @@ -163,20 +174,34 @@ func AppendToOutgoingContext(ctx context.Context, kv ...string) context.Context return context.WithValue(ctx, mdOutgoingKey{}, rawMD{md: md.md, added: added}) } -// FromIncomingContext returns the incoming metadata in ctx if it exists. The -// returned MD should not be modified. Writing to it may cause races. -// Modification should be made to copies of the returned MD. -func FromIncomingContext(ctx context.Context) (md MD, ok bool) { - md, ok = ctx.Value(mdIncomingKey{}).(MD) - return +// FromIncomingContext returns the incoming metadata in ctx if it exists. +// +// All keys in the returned MD are lowercase. +func FromIncomingContext(ctx context.Context) (MD, bool) { + md, ok := ctx.Value(mdIncomingKey{}).(MD) + if !ok { + return nil, false + } + out := MD{} + for k, v := range md { + // We need to manually convert all keys to lower case, because MD is a + // map, and there's no guarantee that the MD attached to the context is + // created using our helper functions. + key := strings.ToLower(k) + out[key] = v + } + return out, true } -// FromOutgoingContextRaw returns the un-merged, intermediary contents -// of rawMD. Remember to perform strings.ToLower on the keys. The returned -// MD should not be modified. Writing to it may cause races. Modification -// should be made to copies of the returned MD. +// FromOutgoingContextRaw returns the un-merged, intermediary contents of rawMD. // -// This is intended for gRPC-internal use ONLY. +// Remember to perform strings.ToLower on the keys, for both the returned MD (MD +// is a map, there's no guarantee it's created using our helper functions) and +// the extra kv pairs (AppendToOutgoingContext doesn't turn them into +// lowercase). +// +// This is intended for gRPC-internal use ONLY. Users should use +// FromOutgoingContext instead. func FromOutgoingContextRaw(ctx context.Context) (MD, [][]string, bool) { raw, ok := ctx.Value(mdOutgoingKey{}).(rawMD) if !ok { @@ -186,21 +211,34 @@ func FromOutgoingContextRaw(ctx context.Context) (MD, [][]string, bool) { return raw.md, raw.added, true } -// FromOutgoingContext returns the outgoing metadata in ctx if it exists. The -// returned MD should not be modified. Writing to it may cause races. -// Modification should be made to copies of the returned MD. +// FromOutgoingContext returns the outgoing metadata in ctx if it exists. +// +// All keys in the returned MD are lowercase. func FromOutgoingContext(ctx context.Context) (MD, bool) { raw, ok := ctx.Value(mdOutgoingKey{}).(rawMD) if !ok { return nil, false } - mds := make([]MD, 0, len(raw.added)+1) - mds = append(mds, raw.md) - for _, vv := range raw.added { - mds = append(mds, Pairs(vv...)) + out := MD{} + for k, v := range raw.md { + // We need to manually convert all keys to lower case, because MD is a + // map, and there's no guarantee that the MD attached to the context is + // created using our helper functions. + key := strings.ToLower(k) + out[key] = v } - return Join(mds...), ok + for _, added := range raw.added { + if len(added)%2 == 1 { + panic(fmt.Sprintf("metadata: FromOutgoingContext got an odd number of input pairs for metadata: %d", len(added))) + } + + for i := 0; i < len(added); i += 2 { + key := strings.ToLower(added[i]) + out[key] = append(out[key], added[i+1]) + } + } + return out, ok } type rawMD struct { diff --git a/src/runtime/vendor/google.golang.org/grpc/picker_wrapper.go b/src/runtime/vendor/google.golang.org/grpc/picker_wrapper.go index a58174b6f..0878ada9d 100644 --- a/src/runtime/vendor/google.golang.org/grpc/picker_wrapper.go +++ b/src/runtime/vendor/google.golang.org/grpc/picker_wrapper.go @@ -147,7 +147,7 @@ func (pw *pickerWrapper) pick(ctx context.Context, failfast bool, info balancer. logger.Error("subconn returned from pick is not *acBalancerWrapper") continue } - if t, ok := acw.getAddrConn().getReadyTransport(); ok { + if t := acw.getAddrConn().getReadyTransport(); t != nil { if channelz.IsOn() { return t, doneChannelzWrapper(acw, pickResult.Done), nil } diff --git a/src/runtime/vendor/google.golang.org/grpc/pickfirst.go b/src/runtime/vendor/google.golang.org/grpc/pickfirst.go index 56e33f6c7..f194d14a0 100644 --- a/src/runtime/vendor/google.golang.org/grpc/pickfirst.go +++ b/src/runtime/vendor/google.golang.org/grpc/pickfirst.go @@ -84,7 +84,7 @@ func (b *pickfirstBalancer) UpdateClientConnState(cs balancer.ClientConnState) e b.cc.UpdateState(balancer.State{ConnectivityState: connectivity.Idle, Picker: &picker{result: balancer.PickResult{SubConn: b.sc}}}) b.sc.Connect() } else { - b.sc.UpdateAddresses(cs.ResolverState.Addresses) + b.cc.UpdateAddresses(b.sc, cs.ResolverState.Addresses) b.sc.Connect() } return nil @@ -107,10 +107,12 @@ func (b *pickfirstBalancer) UpdateSubConnState(sc balancer.SubConn, s balancer.S } switch s.ConnectivityState { - case connectivity.Ready, connectivity.Idle: + case connectivity.Ready: b.cc.UpdateState(balancer.State{ConnectivityState: s.ConnectivityState, Picker: &picker{result: balancer.PickResult{SubConn: sc}}}) case connectivity.Connecting: b.cc.UpdateState(balancer.State{ConnectivityState: s.ConnectivityState, Picker: &picker{err: balancer.ErrNoSubConnAvailable}}) + case connectivity.Idle: + b.cc.UpdateState(balancer.State{ConnectivityState: s.ConnectivityState, Picker: &idlePicker{sc: sc}}) case connectivity.TransientFailure: b.cc.UpdateState(balancer.State{ ConnectivityState: s.ConnectivityState, @@ -122,6 +124,12 @@ func (b *pickfirstBalancer) UpdateSubConnState(sc balancer.SubConn, s balancer.S func (b *pickfirstBalancer) Close() { } +func (b *pickfirstBalancer) ExitIdle() { + if b.state == connectivity.Idle { + b.sc.Connect() + } +} + type picker struct { result balancer.PickResult err error @@ -131,6 +139,17 @@ func (p *picker) Pick(info balancer.PickInfo) (balancer.PickResult, error) { return p.result, p.err } +// idlePicker is used when the SubConn is IDLE and kicks the SubConn into +// CONNECTING when Pick is called. +type idlePicker struct { + sc balancer.SubConn +} + +func (i *idlePicker) Pick(info balancer.PickInfo) (balancer.PickResult, error) { + i.sc.Connect() + return balancer.PickResult{}, balancer.ErrNoSubConnAvailable +} + func init() { balancer.Register(newPickfirstBuilder()) } diff --git a/src/runtime/vendor/google.golang.org/grpc/regenerate.sh b/src/runtime/vendor/google.golang.org/grpc/regenerate.sh index fc6725b89..dfd3226a1 100644 --- a/src/runtime/vendor/google.golang.org/grpc/regenerate.sh +++ b/src/runtime/vendor/google.golang.org/grpc/regenerate.sh @@ -48,11 +48,6 @@ mkdir -p ${WORKDIR}/googleapis/google/rpc echo "curl https://raw.githubusercontent.com/googleapis/googleapis/master/google/rpc/code.proto" curl --silent https://raw.githubusercontent.com/googleapis/googleapis/master/google/rpc/code.proto > ${WORKDIR}/googleapis/google/rpc/code.proto -# Pull in the MeshCA service proto. -mkdir -p ${WORKDIR}/istio/istio/google/security/meshca/v1 -echo "curl https://raw.githubusercontent.com/istio/istio/master/security/proto/providers/google/meshca.proto" -curl --silent https://raw.githubusercontent.com/istio/istio/master/security/proto/providers/google/meshca.proto > ${WORKDIR}/istio/istio/google/security/meshca/v1/meshca.proto - mkdir -p ${WORKDIR}/out # Generates sources without the embed requirement @@ -76,7 +71,6 @@ SOURCES=( ${WORKDIR}/grpc-proto/grpc/service_config/service_config.proto ${WORKDIR}/grpc-proto/grpc/testing/*.proto ${WORKDIR}/grpc-proto/grpc/core/*.proto - ${WORKDIR}/istio/istio/google/security/meshca/v1/meshca.proto ) # These options of the form 'Mfoo.proto=bar' instruct the codegen to use an @@ -122,8 +116,4 @@ mv ${WORKDIR}/out/grpc/service_config/service_config.pb.go internal/proto/grpc_s mv ${WORKDIR}/out/grpc/testing/*.pb.go interop/grpc_testing/ mv ${WORKDIR}/out/grpc/core/*.pb.go interop/grpc_testing/core/ -# istio/google/security/meshca/v1/meshca.proto does not have a go_package option. -mkdir -p ${WORKDIR}/out/google.golang.org/grpc/credentials/tls/certprovider/meshca/internal/v1/ -mv ${WORKDIR}/out/istio/google/security/meshca/v1/* ${WORKDIR}/out/google.golang.org/grpc/credentials/tls/certprovider/meshca/internal/v1/ - cp -R ${WORKDIR}/out/google.golang.org/grpc/* . diff --git a/src/runtime/vendor/google.golang.org/grpc/resolver/resolver.go b/src/runtime/vendor/google.golang.org/grpc/resolver/resolver.go index e9fa8e33d..6a9d234a5 100644 --- a/src/runtime/vendor/google.golang.org/grpc/resolver/resolver.go +++ b/src/runtime/vendor/google.golang.org/grpc/resolver/resolver.go @@ -181,7 +181,7 @@ type State struct { // gRPC to add new methods to this interface. type ClientConn interface { // UpdateState updates the state of the ClientConn appropriately. - UpdateState(State) + UpdateState(State) error // ReportError notifies the ClientConn that the Resolver encountered an // error. The ClientConn will notify the load balancer and begin calling // ResolveNow on the Resolver with exponential backoff. diff --git a/src/runtime/vendor/google.golang.org/grpc/resolver_conn_wrapper.go b/src/runtime/vendor/google.golang.org/grpc/resolver_conn_wrapper.go index f2d81968f..2c47cd54f 100644 --- a/src/runtime/vendor/google.golang.org/grpc/resolver_conn_wrapper.go +++ b/src/runtime/vendor/google.golang.org/grpc/resolver_conn_wrapper.go @@ -22,7 +22,6 @@ import ( "fmt" "strings" "sync" - "time" "google.golang.org/grpc/balancer" "google.golang.org/grpc/credentials" @@ -41,8 +40,7 @@ type ccResolverWrapper struct { done *grpcsync.Event curState resolver.State - pollingMu sync.Mutex - polling chan struct{} + incomingMu sync.Mutex // Synchronizes all the incoming calls. } // newCCResolverWrapper uses the resolver.Builder to build a Resolver and @@ -93,71 +91,37 @@ func (ccr *ccResolverWrapper) close() { ccr.resolverMu.Unlock() } -// poll begins or ends asynchronous polling of the resolver based on whether -// err is ErrBadResolverState. -func (ccr *ccResolverWrapper) poll(err error) { - ccr.pollingMu.Lock() - defer ccr.pollingMu.Unlock() - if err != balancer.ErrBadResolverState { - // stop polling - if ccr.polling != nil { - close(ccr.polling) - ccr.polling = nil - } - return - } - if ccr.polling != nil { - // already polling - return - } - p := make(chan struct{}) - ccr.polling = p - go func() { - for i := 0; ; i++ { - ccr.resolveNow(resolver.ResolveNowOptions{}) - t := time.NewTimer(ccr.cc.dopts.resolveNowBackoff(i)) - select { - case <-p: - t.Stop() - return - case <-ccr.done.Done(): - // Resolver has been closed. - t.Stop() - return - case <-t.C: - select { - case <-p: - return - default: - } - // Timer expired; re-resolve. - } - } - }() -} - -func (ccr *ccResolverWrapper) UpdateState(s resolver.State) { +func (ccr *ccResolverWrapper) UpdateState(s resolver.State) error { + ccr.incomingMu.Lock() + defer ccr.incomingMu.Unlock() if ccr.done.HasFired() { - return + return nil } channelz.Infof(logger, ccr.cc.channelzID, "ccResolverWrapper: sending update to cc: %v", s) if channelz.IsOn() { ccr.addChannelzTraceEvent(s) } ccr.curState = s - ccr.poll(ccr.cc.updateResolverState(ccr.curState, nil)) + if err := ccr.cc.updateResolverState(ccr.curState, nil); err == balancer.ErrBadResolverState { + return balancer.ErrBadResolverState + } + return nil } func (ccr *ccResolverWrapper) ReportError(err error) { + ccr.incomingMu.Lock() + defer ccr.incomingMu.Unlock() if ccr.done.HasFired() { return } channelz.Warningf(logger, ccr.cc.channelzID, "ccResolverWrapper: reporting error to cc: %v", err) - ccr.poll(ccr.cc.updateResolverState(resolver.State{}, err)) + ccr.cc.updateResolverState(resolver.State{}, err) } // NewAddress is called by the resolver implementation to send addresses to gRPC. func (ccr *ccResolverWrapper) NewAddress(addrs []resolver.Address) { + ccr.incomingMu.Lock() + defer ccr.incomingMu.Unlock() if ccr.done.HasFired() { return } @@ -166,12 +130,14 @@ func (ccr *ccResolverWrapper) NewAddress(addrs []resolver.Address) { ccr.addChannelzTraceEvent(resolver.State{Addresses: addrs, ServiceConfig: ccr.curState.ServiceConfig}) } ccr.curState.Addresses = addrs - ccr.poll(ccr.cc.updateResolverState(ccr.curState, nil)) + ccr.cc.updateResolverState(ccr.curState, nil) } // NewServiceConfig is called by the resolver implementation to send service // configs to gRPC. func (ccr *ccResolverWrapper) NewServiceConfig(sc string) { + ccr.incomingMu.Lock() + defer ccr.incomingMu.Unlock() if ccr.done.HasFired() { return } @@ -183,14 +149,13 @@ func (ccr *ccResolverWrapper) NewServiceConfig(sc string) { scpr := parseServiceConfig(sc) if scpr.Err != nil { channelz.Warningf(logger, ccr.cc.channelzID, "ccResolverWrapper: error parsing service config: %v", scpr.Err) - ccr.poll(balancer.ErrBadResolverState) return } if channelz.IsOn() { ccr.addChannelzTraceEvent(resolver.State{Addresses: ccr.curState.Addresses, ServiceConfig: scpr}) } ccr.curState.ServiceConfig = scpr - ccr.poll(ccr.cc.updateResolverState(ccr.curState, nil)) + ccr.cc.updateResolverState(ccr.curState, nil) } func (ccr *ccResolverWrapper) ParseServiceConfig(scJSON string) *serviceconfig.ParseResult { diff --git a/src/runtime/vendor/google.golang.org/grpc/rpc_util.go b/src/runtime/vendor/google.golang.org/grpc/rpc_util.go index c0a1208f2..87987a2e6 100644 --- a/src/runtime/vendor/google.golang.org/grpc/rpc_util.go +++ b/src/runtime/vendor/google.golang.org/grpc/rpc_util.go @@ -258,7 +258,8 @@ func (o PeerCallOption) after(c *callInfo, attempt *csAttempt) { } // WaitForReady configures the action to take when an RPC is attempted on broken -// connections or unreachable servers. If waitForReady is false, the RPC will fail +// connections or unreachable servers. If waitForReady is false and the +// connection is in the TRANSIENT_FAILURE state, the RPC will fail // immediately. Otherwise, the RPC client will block the call until a // connection is available (or the call is canceled or times out) and will // retry the call if it fails due to a transient error. gRPC will not retry if @@ -429,9 +430,10 @@ func (o ContentSubtypeCallOption) before(c *callInfo) error { } func (o ContentSubtypeCallOption) after(c *callInfo, attempt *csAttempt) {} -// ForceCodec returns a CallOption that will set the given Codec to be -// used for all request and response messages for a call. The result of calling -// String() will be used as the content-subtype in a case-insensitive manner. +// ForceCodec returns a CallOption that will set codec to be used for all +// request and response messages for a call. The result of calling Name() will +// be used as the content-subtype after converting to lowercase, unless +// CallContentSubtype is also used. // // See Content-Type on // https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for @@ -827,33 +829,45 @@ func Errorf(c codes.Code, format string, a ...interface{}) error { // toRPCErr converts an error into an error from the status package. func toRPCErr(err error) error { - if err == nil || err == io.EOF { + switch err { + case nil, io.EOF: return err - } - if err == io.ErrUnexpectedEOF { + case context.DeadlineExceeded: + return status.Error(codes.DeadlineExceeded, err.Error()) + case context.Canceled: + return status.Error(codes.Canceled, err.Error()) + case io.ErrUnexpectedEOF: return status.Error(codes.Internal, err.Error()) } - if _, ok := status.FromError(err); ok { - return err - } + switch e := err.(type) { case transport.ConnectionError: return status.Error(codes.Unavailable, e.Desc) - default: - switch err { - case context.DeadlineExceeded: - return status.Error(codes.DeadlineExceeded, err.Error()) - case context.Canceled: - return status.Error(codes.Canceled, err.Error()) - } + case *transport.NewStreamError: + return toRPCErr(e.Err) } + + if _, ok := status.FromError(err); ok { + return err + } + return status.Error(codes.Unknown, err.Error()) } // setCallInfoCodec should only be called after CallOptions have been applied. func setCallInfoCodec(c *callInfo) error { if c.codec != nil { - // codec was already set by a CallOption; use it. + // codec was already set by a CallOption; use it, but set the content + // subtype if it is not set. + if c.contentSubtype == "" { + // c.codec is a baseCodec to hide the difference between grpc.Codec and + // encoding.Codec (Name vs. String method name). We only support + // setting content subtype from encoding.Codec to avoid a behavior + // change with the deprecated version. + if ec, ok := c.codec.(encoding.Codec); ok { + c.contentSubtype = strings.ToLower(ec.Name()) + } + } return nil } diff --git a/src/runtime/vendor/google.golang.org/grpc/server.go b/src/runtime/vendor/google.golang.org/grpc/server.go index 7a2aa28a1..557f29559 100644 --- a/src/runtime/vendor/google.golang.org/grpc/server.go +++ b/src/runtime/vendor/google.golang.org/grpc/server.go @@ -57,12 +57,22 @@ import ( const ( defaultServerMaxReceiveMessageSize = 1024 * 1024 * 4 defaultServerMaxSendMessageSize = math.MaxInt32 + + // Server transports are tracked in a map which is keyed on listener + // address. For regular gRPC traffic, connections are accepted in Serve() + // through a call to Accept(), and we use the actual listener address as key + // when we add it to the map. But for connections received through + // ServeHTTP(), we do not have a listener and hence use this dummy value. + listenerAddressForServeHTTP = "listenerAddressForServeHTTP" ) func init() { internal.GetServerCredentials = func(srv *Server) credentials.TransportCredentials { return srv.opts.creds } + internal.DrainServerTransports = func(srv *Server, addr string) { + srv.drainServerTransports(addr) + } } var statusOK = status.New(codes.OK, "") @@ -107,9 +117,12 @@ type serverWorkerData struct { type Server struct { opts serverOptions - mu sync.Mutex // guards following - lis map[net.Listener]bool - conns map[transport.ServerTransport]bool + mu sync.Mutex // guards following + lis map[net.Listener]bool + // conns contains all active server transports. It is a map keyed on a + // listener address with the value being the set of active transports + // belonging to that listener. + conns map[string]map[transport.ServerTransport]bool serve bool drain bool cv *sync.Cond // signaled when connections close for GracefulStop @@ -266,6 +279,35 @@ func CustomCodec(codec Codec) ServerOption { }) } +// ForceServerCodec returns a ServerOption that sets a codec for message +// marshaling and unmarshaling. +// +// This will override any lookups by content-subtype for Codecs registered +// with RegisterCodec. +// +// See Content-Type on +// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for +// more details. Also see the documentation on RegisterCodec and +// CallContentSubtype for more details on the interaction between encoding.Codec +// and content-subtype. +// +// This function is provided for advanced users; prefer to register codecs +// using encoding.RegisterCodec. +// The server will automatically use registered codecs based on the incoming +// requests' headers. See also +// https://github.com/grpc/grpc-go/blob/master/Documentation/encoding.md#using-a-codec. +// Will be supported throughout 1.x. +// +// Experimental +// +// Notice: This API is EXPERIMENTAL and may be changed or removed in a +// later release. +func ForceServerCodec(codec encoding.Codec) ServerOption { + return newFuncServerOption(func(o *serverOptions) { + o.codec = codec + }) +} + // RPCCompressor returns a ServerOption that sets a compressor for outbound // messages. For backward compatibility, all outbound messages will be sent // using this compressor, regardless of incoming message compression. By @@ -376,6 +418,11 @@ func ChainStreamInterceptor(interceptors ...StreamServerInterceptor) ServerOptio // InTapHandle returns a ServerOption that sets the tap handle for all the server // transport to be created. Only one can be installed. +// +// Experimental +// +// Notice: This API is EXPERIMENTAL and may be changed or removed in a +// later release. func InTapHandle(h tap.ServerInHandle) ServerOption { return newFuncServerOption(func(o *serverOptions) { if o.inTapHandle != nil { @@ -519,7 +566,7 @@ func NewServer(opt ...ServerOption) *Server { s := &Server{ lis: make(map[net.Listener]bool), opts: opts, - conns: make(map[transport.ServerTransport]bool), + conns: make(map[string]map[transport.ServerTransport]bool), services: make(map[string]*serviceInfo), quit: grpcsync.NewEvent(), done: grpcsync.NewEvent(), @@ -663,13 +710,6 @@ func (s *Server) GetServiceInfo() map[string]ServiceInfo { // the server being stopped. var ErrServerStopped = errors.New("grpc: the server has been stopped") -func (s *Server) useTransportAuthenticator(rawConn net.Conn) (net.Conn, credentials.AuthInfo, error) { - if s.opts.creds == nil { - return rawConn, nil, nil - } - return s.opts.creds.ServerHandshake(rawConn) -} - type listenSocket struct { net.Listener channelzID int64 @@ -778,7 +818,7 @@ func (s *Server) Serve(lis net.Listener) error { // s.conns before this conn can be added. s.serveWG.Add(1) go func() { - s.handleRawConn(rawConn) + s.handleRawConn(lis.Addr().String(), rawConn) s.serveWG.Done() }() } @@ -786,49 +826,45 @@ func (s *Server) Serve(lis net.Listener) error { // handleRawConn forks a goroutine to handle a just-accepted connection that // has not had any I/O performed on it yet. -func (s *Server) handleRawConn(rawConn net.Conn) { +func (s *Server) handleRawConn(lisAddr string, rawConn net.Conn) { if s.quit.HasFired() { rawConn.Close() return } rawConn.SetDeadline(time.Now().Add(s.opts.connectionTimeout)) - conn, authInfo, err := s.useTransportAuthenticator(rawConn) - if err != nil { - // ErrConnDispatched means that the connection was dispatched away from - // gRPC; those connections should be left open. - if err != credentials.ErrConnDispatched { - s.mu.Lock() - s.errorf("ServerHandshake(%q) failed: %v", rawConn.RemoteAddr(), err) - s.mu.Unlock() - channelz.Warningf(logger, s.channelzID, "grpc: Server.Serve failed to complete security handshake from %q: %v", rawConn.RemoteAddr(), err) - rawConn.Close() - } - rawConn.SetDeadline(time.Time{}) - return - } // Finish handshaking (HTTP2) - st := s.newHTTP2Transport(conn, authInfo) + st := s.newHTTP2Transport(rawConn) + rawConn.SetDeadline(time.Time{}) if st == nil { return } - rawConn.SetDeadline(time.Time{}) - if !s.addConn(st) { + if !s.addConn(lisAddr, st) { return } go func() { s.serveStreams(st) - s.removeConn(st) + s.removeConn(lisAddr, st) }() } +func (s *Server) drainServerTransports(addr string) { + s.mu.Lock() + conns := s.conns[addr] + for st := range conns { + st.Drain() + } + s.mu.Unlock() +} + // newHTTP2Transport sets up a http/2 transport (using the // gRPC http2 server transport in transport/http2_server.go). -func (s *Server) newHTTP2Transport(c net.Conn, authInfo credentials.AuthInfo) transport.ServerTransport { +func (s *Server) newHTTP2Transport(c net.Conn) transport.ServerTransport { config := &transport.ServerConfig{ MaxStreams: s.opts.maxConcurrentStreams, - AuthInfo: authInfo, + ConnectionTimeout: s.opts.connectionTimeout, + Credentials: s.opts.creds, InTapHandle: s.opts.inTapHandle, StatsHandler: s.opts.statsHandler, KeepaliveParams: s.opts.keepaliveParams, @@ -841,13 +877,22 @@ func (s *Server) newHTTP2Transport(c net.Conn, authInfo credentials.AuthInfo) tr MaxHeaderListSize: s.opts.maxHeaderListSize, HeaderTableSize: s.opts.headerTableSize, } - st, err := transport.NewServerTransport("http2", c, config) + st, err := transport.NewServerTransport(c, config) if err != nil { s.mu.Lock() s.errorf("NewServerTransport(%q) failed: %v", c.RemoteAddr(), err) s.mu.Unlock() - c.Close() - channelz.Warning(logger, s.channelzID, "grpc: Server.Serve failed to create ServerTransport: ", err) + // ErrConnDispatched means that the connection was dispatched away from + // gRPC; those connections should be left open. + if err != credentials.ErrConnDispatched { + c.Close() + } + // Don't log on ErrConnDispatched and io.EOF to prevent log spam. + if err != credentials.ErrConnDispatched { + if err != io.EOF { + channelz.Warning(logger, s.channelzID, "grpc: Server.Serve failed to create ServerTransport: ", err) + } + } return nil } @@ -924,10 +969,10 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { http.Error(w, err.Error(), http.StatusInternalServerError) return } - if !s.addConn(st) { + if !s.addConn(listenerAddressForServeHTTP, st) { return } - defer s.removeConn(st) + defer s.removeConn(listenerAddressForServeHTTP, st) s.serveStreams(st) } @@ -955,7 +1000,7 @@ func (s *Server) traceInfo(st transport.ServerTransport, stream *transport.Strea return trInfo } -func (s *Server) addConn(st transport.ServerTransport) bool { +func (s *Server) addConn(addr string, st transport.ServerTransport) bool { s.mu.Lock() defer s.mu.Unlock() if s.conns == nil { @@ -967,15 +1012,28 @@ func (s *Server) addConn(st transport.ServerTransport) bool { // immediately. st.Drain() } - s.conns[st] = true + + if s.conns[addr] == nil { + // Create a map entry if this is the first connection on this listener. + s.conns[addr] = make(map[transport.ServerTransport]bool) + } + s.conns[addr][st] = true return true } -func (s *Server) removeConn(st transport.ServerTransport) { +func (s *Server) removeConn(addr string, st transport.ServerTransport) { s.mu.Lock() defer s.mu.Unlock() - if s.conns != nil { - delete(s.conns, st) + + conns := s.conns[addr] + if conns != nil { + delete(conns, st) + if len(conns) == 0 { + // If the last connection for this address is being removed, also + // remove the map entry corresponding to the address. This is used + // in GracefulStop() when waiting for all connections to be closed. + delete(s.conns, addr) + } s.cv.Broadcast() } } @@ -1040,22 +1098,24 @@ func chainUnaryServerInterceptors(s *Server) { } else if len(interceptors) == 1 { chainedInt = interceptors[0] } else { - chainedInt = func(ctx context.Context, req interface{}, info *UnaryServerInfo, handler UnaryHandler) (interface{}, error) { - return interceptors[0](ctx, req, info, getChainUnaryHandler(interceptors, 0, info, handler)) - } + chainedInt = chainUnaryInterceptors(interceptors) } s.opts.unaryInt = chainedInt } -// getChainUnaryHandler recursively generate the chained UnaryHandler -func getChainUnaryHandler(interceptors []UnaryServerInterceptor, curr int, info *UnaryServerInfo, finalHandler UnaryHandler) UnaryHandler { - if curr == len(interceptors)-1 { - return finalHandler - } - - return func(ctx context.Context, req interface{}) (interface{}, error) { - return interceptors[curr+1](ctx, req, info, getChainUnaryHandler(interceptors, curr+1, info, finalHandler)) +func chainUnaryInterceptors(interceptors []UnaryServerInterceptor) UnaryServerInterceptor { + return func(ctx context.Context, req interface{}, info *UnaryServerInfo, handler UnaryHandler) (interface{}, error) { + var i int + var next UnaryHandler + next = func(ctx context.Context, req interface{}) (interface{}, error) { + if i == len(interceptors)-1 { + return interceptors[i](ctx, req, info, handler) + } + i++ + return interceptors[i-1](ctx, req, info, next) + } + return next(ctx, req) } } @@ -1069,7 +1129,9 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. if sh != nil { beginTime := time.Now() statsBegin = &stats.Begin{ - BeginTime: beginTime, + BeginTime: beginTime, + IsClientStream: false, + IsServerStream: false, } sh.HandleRPC(stream.Context(), statsBegin) } @@ -1321,22 +1383,24 @@ func chainStreamServerInterceptors(s *Server) { } else if len(interceptors) == 1 { chainedInt = interceptors[0] } else { - chainedInt = func(srv interface{}, ss ServerStream, info *StreamServerInfo, handler StreamHandler) error { - return interceptors[0](srv, ss, info, getChainStreamHandler(interceptors, 0, info, handler)) - } + chainedInt = chainStreamInterceptors(interceptors) } s.opts.streamInt = chainedInt } -// getChainStreamHandler recursively generate the chained StreamHandler -func getChainStreamHandler(interceptors []StreamServerInterceptor, curr int, info *StreamServerInfo, finalHandler StreamHandler) StreamHandler { - if curr == len(interceptors)-1 { - return finalHandler - } - - return func(srv interface{}, ss ServerStream) error { - return interceptors[curr+1](srv, ss, info, getChainStreamHandler(interceptors, curr+1, info, finalHandler)) +func chainStreamInterceptors(interceptors []StreamServerInterceptor) StreamServerInterceptor { + return func(srv interface{}, ss ServerStream, info *StreamServerInfo, handler StreamHandler) error { + var i int + var next StreamHandler + next = func(srv interface{}, ss ServerStream) error { + if i == len(interceptors)-1 { + return interceptors[i](srv, ss, info, handler) + } + i++ + return interceptors[i-1](srv, ss, info, next) + } + return next(srv, ss) } } @@ -1349,7 +1413,9 @@ func (s *Server) processStreamingRPC(t transport.ServerTransport, stream *transp if sh != nil { beginTime := time.Now() statsBegin = &stats.Begin{ - BeginTime: beginTime, + BeginTime: beginTime, + IsClientStream: sd.ClientStreams, + IsServerStream: sd.ServerStreams, } sh.HandleRPC(stream.Context(), statsBegin) } @@ -1452,6 +1518,8 @@ func (s *Server) processStreamingRPC(t transport.ServerTransport, stream *transp } } + ss.ctx = newContextWithRPCInfo(ss.ctx, false, ss.codec, ss.cp, ss.comp) + if trInfo != nil { trInfo.tr.LazyLog(&trInfo.firstLine, false) } @@ -1519,7 +1587,7 @@ func (s *Server) handleStream(t transport.ServerTransport, stream *transport.Str trInfo.tr.SetError() } errDesc := fmt.Sprintf("malformed method name: %q", stream.Method()) - if err := t.WriteStatus(stream, status.New(codes.ResourceExhausted, errDesc)); err != nil { + if err := t.WriteStatus(stream, status.New(codes.Unimplemented, errDesc)); err != nil { if trInfo != nil { trInfo.tr.LazyLog(&fmtStringer{"%v", []interface{}{err}}, true) trInfo.tr.SetError() @@ -1639,7 +1707,7 @@ func (s *Server) Stop() { s.mu.Lock() listeners := s.lis s.lis = nil - st := s.conns + conns := s.conns s.conns = nil // interrupt GracefulStop if Stop and GracefulStop are called concurrently. s.cv.Broadcast() @@ -1648,8 +1716,10 @@ func (s *Server) Stop() { for lis := range listeners { lis.Close() } - for c := range st { - c.Close() + for _, cs := range conns { + for st := range cs { + st.Close() + } } if s.opts.numServerWorkers > 0 { s.stopServerWorkers() @@ -1686,8 +1756,10 @@ func (s *Server) GracefulStop() { } s.lis = nil if !s.drain { - for st := range s.conns { - st.Drain() + for _, conns := range s.conns { + for st := range conns { + st.Drain() + } } s.drain = true } diff --git a/src/runtime/vendor/google.golang.org/grpc/stats/stats.go b/src/runtime/vendor/google.golang.org/grpc/stats/stats.go index 63e476ee7..0285dcc6a 100644 --- a/src/runtime/vendor/google.golang.org/grpc/stats/stats.go +++ b/src/runtime/vendor/google.golang.org/grpc/stats/stats.go @@ -36,15 +36,22 @@ type RPCStats interface { IsClient() bool } -// Begin contains stats when an RPC begins. +// Begin contains stats when an RPC attempt begins. // FailFast is only valid if this Begin is from client side. type Begin struct { // Client is true if this Begin is from client side. Client bool - // BeginTime is the time when the RPC begins. + // BeginTime is the time when the RPC attempt begins. BeginTime time.Time // FailFast indicates if this RPC is failfast. FailFast bool + // IsClientStream indicates whether the RPC is a client streaming RPC. + IsClientStream bool + // IsServerStream indicates whether the RPC is a server streaming RPC. + IsServerStream bool + // IsTransparentRetryAttempt indicates whether this attempt was initiated + // due to transparently retrying a previous attempt. + IsTransparentRetryAttempt bool } // IsClient indicates if the stats information is from client side. diff --git a/src/runtime/vendor/google.golang.org/grpc/stream.go b/src/runtime/vendor/google.golang.org/grpc/stream.go index eda1248d6..625d47b34 100644 --- a/src/runtime/vendor/google.golang.org/grpc/stream.go +++ b/src/runtime/vendor/google.golang.org/grpc/stream.go @@ -52,14 +52,20 @@ import ( // of the RPC. type StreamHandler func(srv interface{}, stream ServerStream) error -// StreamDesc represents a streaming RPC service's method specification. +// StreamDesc represents a streaming RPC service's method specification. Used +// on the server when registering services and on the client when initiating +// new streams. type StreamDesc struct { - StreamName string - Handler StreamHandler + // StreamName and Handler are only used when registering handlers on a + // server. + StreamName string // the name of the method excluding the service + Handler StreamHandler // the handler called for the method - // At least one of these is true. - ServerStreams bool - ClientStreams bool + // ServerStreams and ClientStreams are used for registering handlers on a + // server as well as defining RPC behavior when passed to NewClientStream + // and ClientConn.NewStream. At least one must be true. + ServerStreams bool // indicates the server can perform streaming sends + ClientStreams bool // indicates the client can perform streaming sends } // Stream defines the common interface a client or server stream has to satisfy. @@ -166,7 +172,6 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth } }() } - c := defaultCallInfo() // Provide an opportunity for the first RPC to see the first service config // provided by the resolver. if err := cc.waitForResolvedAddrs(ctx); err != nil { @@ -175,18 +180,40 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth var mc serviceconfig.MethodConfig var onCommit func() - rpcConfig, err := cc.safeConfigSelector.SelectConfig(iresolver.RPCInfo{Context: ctx, Method: method}) - if err != nil { - return nil, status.Convert(err).Err() + var newStream = func(ctx context.Context, done func()) (iresolver.ClientStream, error) { + return newClientStreamWithParams(ctx, desc, cc, method, mc, onCommit, done, opts...) } + + rpcInfo := iresolver.RPCInfo{Context: ctx, Method: method} + rpcConfig, err := cc.safeConfigSelector.SelectConfig(rpcInfo) + if err != nil { + return nil, toRPCErr(err) + } + if rpcConfig != nil { if rpcConfig.Context != nil { ctx = rpcConfig.Context } mc = rpcConfig.MethodConfig onCommit = rpcConfig.OnCommitted + if rpcConfig.Interceptor != nil { + rpcInfo.Context = nil + ns := newStream + newStream = func(ctx context.Context, done func()) (iresolver.ClientStream, error) { + cs, err := rpcConfig.Interceptor.NewStream(ctx, rpcInfo, done, ns) + if err != nil { + return nil, toRPCErr(err) + } + return cs, nil + } + } } + return newStream(ctx, func() {}) +} + +func newClientStreamWithParams(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, mc serviceconfig.MethodConfig, onCommit, doneFunc func(), opts ...CallOption) (_ iresolver.ClientStream, err error) { + c := defaultCallInfo() if mc.WaitForReady != nil { c.failFast = !*mc.WaitForReady } @@ -223,6 +250,7 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth Host: cc.authority, Method: method, ContentSubtype: c.contentSubtype, + DoneFunc: doneFunc, } // Set our outgoing compression according to the UseCompressor CallOption, if @@ -246,33 +274,6 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth if c.creds != nil { callHdr.Creds = c.creds } - var trInfo *traceInfo - if EnableTracing { - trInfo = &traceInfo{ - tr: trace.New("grpc.Sent."+methodFamily(method), method), - firstLine: firstLine{ - client: true, - }, - } - if deadline, ok := ctx.Deadline(); ok { - trInfo.firstLine.deadline = time.Until(deadline) - } - trInfo.tr.LazyLog(&trInfo.firstLine, false) - ctx = trace.NewContext(ctx, trInfo.tr) - } - ctx = newContextWithRPCInfo(ctx, c.failFast, c.codec, cp, comp) - sh := cc.dopts.copts.StatsHandler - var beginTime time.Time - if sh != nil { - ctx = sh.TagRPC(ctx, &stats.RPCTagInfo{FullMethodName: method, FailFast: c.failFast}) - beginTime = time.Now() - begin := &stats.Begin{ - Client: true, - BeginTime: beginTime, - FailFast: c.failFast, - } - sh.HandleRPC(ctx, begin) - } cs := &clientStream{ callHdr: callHdr, @@ -286,7 +287,6 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth cp: cp, comp: comp, cancel: cancel, - beginTime: beginTime, firstAttempt: true, onCommit: onCommit, } @@ -295,9 +295,7 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth } cs.binlog = binarylog.GetMethodLogger(method) - // Only this initial attempt has stats/tracing. - // TODO(dfawley): move to newAttempt when per-attempt stats are implemented. - if err := cs.newAttemptLocked(sh, trInfo); err != nil { + if err := cs.newAttemptLocked(false /* isTransparent */); err != nil { cs.finish(err) return nil, err } @@ -345,8 +343,43 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth // newAttemptLocked creates a new attempt with a transport. // If it succeeds, then it replaces clientStream's attempt with this new attempt. -func (cs *clientStream) newAttemptLocked(sh stats.Handler, trInfo *traceInfo) (retErr error) { +func (cs *clientStream) newAttemptLocked(isTransparent bool) (retErr error) { + ctx := newContextWithRPCInfo(cs.ctx, cs.callInfo.failFast, cs.callInfo.codec, cs.cp, cs.comp) + method := cs.callHdr.Method + sh := cs.cc.dopts.copts.StatsHandler + var beginTime time.Time + if sh != nil { + ctx = sh.TagRPC(ctx, &stats.RPCTagInfo{FullMethodName: method, FailFast: cs.callInfo.failFast}) + beginTime = time.Now() + begin := &stats.Begin{ + Client: true, + BeginTime: beginTime, + FailFast: cs.callInfo.failFast, + IsClientStream: cs.desc.ClientStreams, + IsServerStream: cs.desc.ServerStreams, + IsTransparentRetryAttempt: isTransparent, + } + sh.HandleRPC(ctx, begin) + } + + var trInfo *traceInfo + if EnableTracing { + trInfo = &traceInfo{ + tr: trace.New("grpc.Sent."+methodFamily(method), method), + firstLine: firstLine{ + client: true, + }, + } + if deadline, ok := ctx.Deadline(); ok { + trInfo.firstLine.deadline = time.Until(deadline) + } + trInfo.tr.LazyLog(&trInfo.firstLine, false) + ctx = trace.NewContext(ctx, trInfo.tr) + } + newAttempt := &csAttempt{ + ctx: ctx, + beginTime: beginTime, cs: cs, dc: cs.cc.dopts.dc, statsHandler: sh, @@ -361,15 +394,14 @@ func (cs *clientStream) newAttemptLocked(sh stats.Handler, trInfo *traceInfo) (r } }() - if err := cs.ctx.Err(); err != nil { + if err := ctx.Err(); err != nil { return toRPCErr(err) } - ctx := cs.ctx if cs.cc.parsedTarget.Scheme == "xds" { // Add extra metadata (metadata that will be added by transport) to context // so the balancer can see them. - ctx = grpcutil.WithExtraMetadata(cs.ctx, metadata.Pairs( + ctx = grpcutil.WithExtraMetadata(ctx, metadata.Pairs( "content-type", grpcutil.ContentType(cs.callHdr.ContentSubtype), )) } @@ -389,14 +421,11 @@ func (cs *clientStream) newAttemptLocked(sh stats.Handler, trInfo *traceInfo) (r func (a *csAttempt) newStream() error { cs := a.cs cs.callHdr.PreviousAttempts = cs.numRetries - s, err := a.t.NewStream(cs.ctx, cs.callHdr) + s, err := a.t.NewStream(a.ctx, cs.callHdr) if err != nil { - if _, ok := err.(transport.PerformedIOError); ok { - // Return without converting to an RPC error so retry code can - // inspect. - return err - } - return toRPCErr(err) + // Return without converting to an RPC error so retry code can + // inspect. + return err } cs.attempt.s = s cs.attempt.p = &parser{r: s} @@ -417,8 +446,7 @@ type clientStream struct { cancel context.CancelFunc // cancels all attempts - sentLast bool // sent an end stream - beginTime time.Time + sentLast bool // sent an end stream methodConfig *MethodConfig @@ -458,6 +486,7 @@ type clientStream struct { // csAttempt implements a single transport stream attempt within a // clientStream. type csAttempt struct { + ctx context.Context cs *clientStream t transport.ClientTransport s *transport.Stream @@ -476,6 +505,7 @@ type csAttempt struct { trInfo *traceInfo statsHandler stats.Handler + beginTime time.Time } func (cs *clientStream) commitAttemptLocked() { @@ -493,46 +523,57 @@ func (cs *clientStream) commitAttempt() { } // shouldRetry returns nil if the RPC should be retried; otherwise it returns -// the error that should be returned by the operation. -func (cs *clientStream) shouldRetry(err error) error { - unprocessed := false +// the error that should be returned by the operation. If the RPC should be +// retried, the bool indicates whether it is being retried transparently. +func (cs *clientStream) shouldRetry(err error) (bool, error) { if cs.attempt.s == nil { - pioErr, ok := err.(transport.PerformedIOError) - if ok { - // Unwrap error. - err = toRPCErr(pioErr.Err) - } else { - unprocessed = true + // Error from NewClientStream. + nse, ok := err.(*transport.NewStreamError) + if !ok { + // Unexpected, but assume no I/O was performed and the RPC is not + // fatal, so retry indefinitely. + return true, nil } - if !ok && !cs.callInfo.failFast { - // In the event of a non-IO operation error from NewStream, we - // never attempted to write anything to the wire, so we can retry - // indefinitely for non-fail-fast RPCs. - return nil + + // Unwrap and convert error. + err = toRPCErr(nse.Err) + + // Never retry DoNotRetry errors, which indicate the RPC should not be + // retried due to max header list size violation, etc. + if nse.DoNotRetry { + return false, err + } + + // In the event of a non-IO operation error from NewStream, we never + // attempted to write anything to the wire, so we can retry + // indefinitely. + if !nse.DoNotTransparentRetry { + return true, nil } } if cs.finished || cs.committed { // RPC is finished or committed; cannot retry. - return err + return false, err } // Wait for the trailers. + unprocessed := false if cs.attempt.s != nil { <-cs.attempt.s.Done() unprocessed = cs.attempt.s.Unprocessed() } if cs.firstAttempt && unprocessed { // First attempt, stream unprocessed: transparently retry. - return nil + return true, nil } if cs.cc.dopts.disableRetry { - return err + return false, err } pushback := 0 hasPushback := false if cs.attempt.s != nil { if !cs.attempt.s.TrailersOnly() { - return err + return false, err } // TODO(retry): Move down if the spec changes to not check server pushback @@ -543,13 +584,13 @@ func (cs *clientStream) shouldRetry(err error) error { if pushback, e = strconv.Atoi(sps[0]); e != nil || pushback < 0 { channelz.Infof(logger, cs.cc.channelzID, "Server retry pushback specified to abort (%q).", sps[0]) cs.retryThrottler.throttle() // This counts as a failure for throttling. - return err + return false, err } hasPushback = true } else if len(sps) > 1 { channelz.Warningf(logger, cs.cc.channelzID, "Server retry pushback specified multiple values (%q); not retrying.", sps) cs.retryThrottler.throttle() // This counts as a failure for throttling. - return err + return false, err } } @@ -562,16 +603,16 @@ func (cs *clientStream) shouldRetry(err error) error { rp := cs.methodConfig.RetryPolicy if rp == nil || !rp.RetryableStatusCodes[code] { - return err + return false, err } // Note: the ordering here is important; we count this as a failure // only if the code matched a retryable code. if cs.retryThrottler.throttle() { - return err + return false, err } if cs.numRetries+1 >= rp.MaxAttempts { - return err + return false, err } var dur time.Duration @@ -594,23 +635,24 @@ func (cs *clientStream) shouldRetry(err error) error { select { case <-t.C: cs.numRetries++ - return nil + return false, nil case <-cs.ctx.Done(): t.Stop() - return status.FromContextError(cs.ctx.Err()).Err() + return false, status.FromContextError(cs.ctx.Err()).Err() } } // Returns nil if a retry was performed and succeeded; error otherwise. func (cs *clientStream) retryLocked(lastErr error) error { for { - cs.attempt.finish(lastErr) - if err := cs.shouldRetry(lastErr); err != nil { + cs.attempt.finish(toRPCErr(lastErr)) + isTransparent, err := cs.shouldRetry(lastErr) + if err != nil { cs.commitAttemptLocked() return err } cs.firstAttempt = false - if err := cs.newAttemptLocked(nil, nil); err != nil { + if err := cs.newAttemptLocked(isTransparent); err != nil { return err } if lastErr = cs.replayBufferLocked(); lastErr == nil { @@ -631,7 +673,11 @@ func (cs *clientStream) withRetry(op func(a *csAttempt) error, onSuccess func()) for { if cs.committed { cs.mu.Unlock() - return op(cs.attempt) + // toRPCErr is used in case the error from the attempt comes from + // NewClientStream, which intentionally doesn't return a status + // error to allow for further inspection; all other errors should + // already be status errors. + return toRPCErr(op(cs.attempt)) } a := cs.attempt cs.mu.Unlock() @@ -896,7 +942,7 @@ func (a *csAttempt) sendMsg(m interface{}, hdr, payld, data []byte) error { return io.EOF } if a.statsHandler != nil { - a.statsHandler.HandleRPC(cs.ctx, outPayload(true, m, data, payld, time.Now())) + a.statsHandler.HandleRPC(a.ctx, outPayload(true, m, data, payld, time.Now())) } if channelz.IsOn() { a.t.IncrMsgSent() @@ -944,7 +990,7 @@ func (a *csAttempt) recvMsg(m interface{}, payInfo *payloadInfo) (err error) { a.mu.Unlock() } if a.statsHandler != nil { - a.statsHandler.HandleRPC(cs.ctx, &stats.InPayload{ + a.statsHandler.HandleRPC(a.ctx, &stats.InPayload{ Client: true, RecvTime: time.Now(), Payload: m, @@ -1006,12 +1052,12 @@ func (a *csAttempt) finish(err error) { if a.statsHandler != nil { end := &stats.End{ Client: true, - BeginTime: a.cs.beginTime, + BeginTime: a.beginTime, EndTime: time.Now(), Trailer: tr, Error: err, } - a.statsHandler.HandleRPC(a.cs.ctx, end) + a.statsHandler.HandleRPC(a.ctx, end) } if a.trInfo != nil && a.trInfo.tr != nil { if err == nil { diff --git a/src/runtime/vendor/google.golang.org/grpc/tap/tap.go b/src/runtime/vendor/google.golang.org/grpc/tap/tap.go index caea1ebed..dbf34e6bb 100644 --- a/src/runtime/vendor/google.golang.org/grpc/tap/tap.go +++ b/src/runtime/vendor/google.golang.org/grpc/tap/tap.go @@ -37,16 +37,16 @@ type Info struct { // TODO: More to be added. } -// ServerInHandle defines the function which runs before a new stream is created -// on the server side. If it returns a non-nil error, the stream will not be -// created and a RST_STREAM will be sent back to the client with REFUSED_STREAM. -// The client will receive an RPC error "code = Unavailable, desc = stream -// terminated by RST_STREAM with error code: REFUSED_STREAM". +// ServerInHandle defines the function which runs before a new stream is +// created on the server side. If it returns a non-nil error, the stream will +// not be created and an error will be returned to the client. If the error +// returned is a status error, that status code and message will be used, +// otherwise PermissionDenied will be the code and err.Error() will be the +// message. // // It's intended to be used in situations where you don't want to waste the -// resources to accept the new stream (e.g. rate-limiting). And the content of -// the error will be ignored and won't be sent back to the client. For other -// general usages, please use interceptors. +// resources to accept the new stream (e.g. rate-limiting). For other general +// usages, please use interceptors. // // Note that it is executed in the per-connection I/O goroutine(s) instead of // per-RPC goroutine. Therefore, users should NOT have any diff --git a/src/runtime/vendor/google.golang.org/grpc/version.go b/src/runtime/vendor/google.golang.org/grpc/version.go index 51024d6b3..48594bc24 100644 --- a/src/runtime/vendor/google.golang.org/grpc/version.go +++ b/src/runtime/vendor/google.golang.org/grpc/version.go @@ -19,4 +19,4 @@ package grpc // Version is the current grpc version. -const Version = "1.36.0" +const Version = "1.41.0" diff --git a/src/runtime/vendor/google.golang.org/grpc/vet.sh b/src/runtime/vendor/google.golang.org/grpc/vet.sh index b41df6dc8..d923187a7 100644 --- a/src/runtime/vendor/google.golang.org/grpc/vet.sh +++ b/src/runtime/vendor/google.golang.org/grpc/vet.sh @@ -28,29 +28,18 @@ cleanup() { } trap cleanup EXIT -PATH="${GOPATH}/bin:${GOROOT}/bin:${PATH}" +PATH="${HOME}/go/bin:${GOROOT}/bin:${PATH}" +go version if [[ "$1" = "-install" ]]; then - # Check for module support - if go help mod >& /dev/null; then - # Install the pinned versions as defined in module tools. - pushd ./test/tools - go install \ - golang.org/x/lint/golint \ - golang.org/x/tools/cmd/goimports \ - honnef.co/go/tools/cmd/staticcheck \ - github.com/client9/misspell/cmd/misspell - popd - else - # Ye olde `go get` incantation. - # Note: this gets the latest version of all tools (vs. the pinned versions - # with Go modules). - go get -u \ - golang.org/x/lint/golint \ - golang.org/x/tools/cmd/goimports \ - honnef.co/go/tools/cmd/staticcheck \ - github.com/client9/misspell/cmd/misspell - fi + # Install the pinned versions as defined in module tools. + pushd ./test/tools + go install \ + golang.org/x/lint/golint \ + golang.org/x/tools/cmd/goimports \ + honnef.co/go/tools/cmd/staticcheck \ + github.com/client9/misspell/cmd/misspell + popd if [[ -z "${VET_SKIP_PROTO}" ]]; then if [[ "${TRAVIS}" = "true" ]]; then PROTOBUF_VERSION=3.14.0 @@ -100,16 +89,6 @@ not git grep "\(import \|^\s*\)\"github.com/golang/protobuf/ptypes/" -- "*.go" # - Ensure all xds proto imports are renamed to *pb or *grpc. git grep '"github.com/envoyproxy/go-control-plane/envoy' -- '*.go' ':(exclude)*.pb.go' | not grep -v 'pb "\|grpc "' -# - Check imports that are illegal in appengine (until Go 1.11). -# TODO: Remove when we drop Go 1.10 support -go list -f {{.Dir}} ./... | xargs go run test/go_vet/vet.go - -# - gofmt, goimports, golint (with exceptions for generated code), go vet. -gofmt -s -d -l . 2>&1 | fail_on_output -goimports -l . 2>&1 | not grep -vE "\.pb\.go" -golint ./... 2>&1 | not grep -vE "\.pb\.go:" -go vet -all ./... - misspell -error . # - Check that generated proto files are up to date. @@ -119,12 +98,22 @@ if [[ -z "${VET_SKIP_PROTO}" ]]; then (git status; git --no-pager diff; exit 1) fi -# - Check that our modules are tidy. -if go help mod >& /dev/null; then - find . -name 'go.mod' | xargs -IXXX bash -c 'cd $(dirname XXX); go mod tidy' +# - gofmt, goimports, golint (with exceptions for generated code), go vet, +# go mod tidy. +# Perform these checks on each module inside gRPC. +for MOD_FILE in $(find . -name 'go.mod'); do + MOD_DIR=$(dirname ${MOD_FILE}) + pushd ${MOD_DIR} + go vet -all ./... | fail_on_output + gofmt -s -d -l . 2>&1 | fail_on_output + goimports -l . 2>&1 | not grep -vE "\.pb\.go" + golint ./... 2>&1 | not grep -vE "/testv3\.pb\.go:" + + go mod tidy git status --porcelain 2>&1 | fail_on_output || \ (git status; git --no-pager diff; exit 1) -fi + popd +done # - Collection of static analysis checks # @@ -141,8 +130,11 @@ not grep -Fv '.CredsBundle .NewAddress .NewServiceConfig .Type is deprecated: use Attributes +BuildVersion is deprecated balancer.ErrTransientFailure balancer.Picker +extDesc.Filename is deprecated +github.com/golang/protobuf/jsonpb is deprecated grpc.CallCustomCodec grpc.Code grpc.Compressor @@ -164,13 +156,7 @@ grpc.WithServiceConfig grpc.WithTimeout http.CloseNotifier info.SecurityVersion -resolver.Backend -resolver.GRPCLB -extDesc.Filename is deprecated -BuildVersion is deprecated -github.com/golang/protobuf/jsonpb is deprecated proto is deprecated -xxx_messageInfo_ proto.InternalMessageInfo is deprecated proto.EnumName is deprecated proto.ErrInternalBadWireType is deprecated @@ -184,7 +170,12 @@ proto.RegisterExtension is deprecated proto.RegisteredExtension is deprecated proto.RegisteredExtensions is deprecated proto.RegisterMapType is deprecated -proto.Unmarshaler is deprecated' "${SC_OUT}" +proto.Unmarshaler is deprecated +resolver.Backend +resolver.GRPCLB +Target is deprecated: Use the Target field in the BuildOptions instead. +xxx_messageInfo_ +' "${SC_OUT}" # - special golint on package comments. lint_package_comment_per_package() { diff --git a/src/runtime/vendor/gopkg.in/yaml.v3/.travis.yml b/src/runtime/vendor/gopkg.in/yaml.v3/.travis.yml deleted file mode 100644 index 04d4dae09..000000000 --- a/src/runtime/vendor/gopkg.in/yaml.v3/.travis.yml +++ /dev/null @@ -1,16 +0,0 @@ -language: go - -go: - - "1.4.x" - - "1.5.x" - - "1.6.x" - - "1.7.x" - - "1.8.x" - - "1.9.x" - - "1.10.x" - - "1.11.x" - - "1.12.x" - - "1.13.x" - - "tip" - -go_import_path: gopkg.in/yaml.v3 diff --git a/src/runtime/vendor/gopkg.in/yaml.v3/apic.go b/src/runtime/vendor/gopkg.in/yaml.v3/apic.go index 65846e674..ae7d049f1 100644 --- a/src/runtime/vendor/gopkg.in/yaml.v3/apic.go +++ b/src/runtime/vendor/gopkg.in/yaml.v3/apic.go @@ -108,6 +108,7 @@ func yaml_emitter_initialize(emitter *yaml_emitter_t) { raw_buffer: make([]byte, 0, output_raw_buffer_size), states: make([]yaml_emitter_state_t, 0, initial_stack_size), events: make([]yaml_event_t, 0, initial_queue_size), + best_width: -1, } } diff --git a/src/runtime/vendor/gopkg.in/yaml.v3/decode.go b/src/runtime/vendor/gopkg.in/yaml.v3/decode.go index be63169b7..df36e3a30 100644 --- a/src/runtime/vendor/gopkg.in/yaml.v3/decode.go +++ b/src/runtime/vendor/gopkg.in/yaml.v3/decode.go @@ -35,6 +35,7 @@ type parser struct { doc *Node anchors map[string]*Node doneInit bool + textless bool } func newParser(b []byte) *parser { @@ -108,14 +109,18 @@ func (p *parser) peek() yaml_event_type_t { func (p *parser) fail() { var where string var line int - if p.parser.problem_mark.line != 0 { + if p.parser.context_mark.line != 0 { + line = p.parser.context_mark.line + // Scanner errors don't iterate line before returning error + if p.parser.error == yaml_SCANNER_ERROR { + line++ + } + } else if p.parser.problem_mark.line != 0 { line = p.parser.problem_mark.line // Scanner errors don't iterate line before returning error if p.parser.error == yaml_SCANNER_ERROR { line++ } - } else if p.parser.context_mark.line != 0 { - line = p.parser.context_mark.line } if line != 0 { where = "line " + strconv.Itoa(line) + ": " @@ -169,17 +174,20 @@ func (p *parser) node(kind Kind, defaultTag, tag, value string) *Node { } else if kind == ScalarNode { tag, _ = resolve("", value) } - return &Node{ - Kind: kind, - Tag: tag, - Value: value, - Style: style, - Line: p.event.start_mark.line + 1, - Column: p.event.start_mark.column + 1, - HeadComment: string(p.event.head_comment), - LineComment: string(p.event.line_comment), - FootComment: string(p.event.foot_comment), + n := &Node{ + Kind: kind, + Tag: tag, + Value: value, + Style: style, } + if !p.textless { + n.Line = p.event.start_mark.line + 1 + n.Column = p.event.start_mark.column + 1 + n.HeadComment = string(p.event.head_comment) + n.LineComment = string(p.event.line_comment) + n.FootComment = string(p.event.foot_comment) + } + return n } func (p *parser) parseChild(parent *Node) *Node { @@ -497,8 +505,13 @@ func (d *decoder) unmarshal(n *Node, out reflect.Value) (good bool) { good = d.mapping(n, out) case SequenceNode: good = d.sequence(n, out) + case 0: + if n.IsZero() { + return d.null(out) + } + fallthrough default: - panic("internal error: unknown node kind: " + strconv.Itoa(int(n.Kind))) + failf("cannot decode node with unknown kind %d", n.Kind) } return good } @@ -533,6 +546,17 @@ func resetMap(out reflect.Value) { } } +func (d *decoder) null(out reflect.Value) bool { + if out.CanAddr() { + switch out.Kind() { + case reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice: + out.Set(reflect.Zero(out.Type())) + return true + } + } + return false +} + func (d *decoder) scalar(n *Node, out reflect.Value) bool { var tag string var resolved interface{} @@ -550,14 +574,7 @@ func (d *decoder) scalar(n *Node, out reflect.Value) bool { } } if resolved == nil { - if out.CanAddr() { - switch out.Kind() { - case reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice: - out.Set(reflect.Zero(out.Type())) - return true - } - } - return false + return d.null(out) } if resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() { // We've resolved to exactly the type we want, so use that. @@ -791,8 +808,10 @@ func (d *decoder) mapping(n *Node, out reflect.Value) (good bool) { } } + mapIsNew := false if out.IsNil() { out.Set(reflect.MakeMap(outt)) + mapIsNew = true } for i := 0; i < l; i += 2 { if isMerge(n.Content[i]) { @@ -809,7 +828,7 @@ func (d *decoder) mapping(n *Node, out reflect.Value) (good bool) { failf("invalid map key: %#v", k.Interface()) } e := reflect.New(et).Elem() - if d.unmarshal(n.Content[i+1], e) { + if d.unmarshal(n.Content[i+1], e) || n.Content[i+1].ShortTag() == nullTag && (mapIsNew || !out.MapIndex(k).IsValid()) { out.SetMapIndex(k, e) } } diff --git a/src/runtime/vendor/gopkg.in/yaml.v3/emitterc.go b/src/runtime/vendor/gopkg.in/yaml.v3/emitterc.go index ab2a06619..0f47c9ca8 100644 --- a/src/runtime/vendor/gopkg.in/yaml.v3/emitterc.go +++ b/src/runtime/vendor/gopkg.in/yaml.v3/emitterc.go @@ -235,10 +235,13 @@ func yaml_emitter_increase_indent(emitter *yaml_emitter_t, flow, indentless bool emitter.indent = 0 } } else if !indentless { - emitter.indent += emitter.best_indent - // [Go] If inside a block sequence item, discount the space taken by the indicator. - if emitter.best_indent > 2 && emitter.states[len(emitter.states)-1] == yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE { - emitter.indent -= 2 + // [Go] This was changed so that indentations are more regular. + if emitter.states[len(emitter.states)-1] == yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE { + // The first indent inside a sequence will just skip the "- " indicator. + emitter.indent += 2 + } else { + // Everything else aligns to the chosen indentation. + emitter.indent = emitter.best_indent*((emitter.indent+emitter.best_indent)/emitter.best_indent) } } return true @@ -725,16 +728,9 @@ func yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t, event *yaml_e // Expect a block item node. func yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { if first { - // [Go] The original logic here would not indent the sequence when inside a mapping. - // In Go we always indent it, but take the sequence indicator out of the indentation. - indentless := emitter.best_indent == 2 && emitter.mapping_context && (emitter.column == 0 || !emitter.indention) - original := emitter.indent - if !yaml_emitter_increase_indent(emitter, false, indentless) { + if !yaml_emitter_increase_indent(emitter, false, false) { return false } - if emitter.indent > original+2 { - emitter.indent -= 2 - } } if event.typ == yaml_SEQUENCE_END_EVENT { emitter.indent = emitter.indents[len(emitter.indents)-1] @@ -785,6 +781,13 @@ func yaml_emitter_emit_block_mapping_key(emitter *yaml_emitter_t, event *yaml_ev if !yaml_emitter_write_indent(emitter) { return false } + if len(emitter.line_comment) > 0 { + // [Go] A line comment was provided for the key. That's unusual as the + // scanner associates line comments with the value. Either way, + // save the line comment and render it appropriately later. + emitter.key_line_comment = emitter.line_comment + emitter.line_comment = nil + } if yaml_emitter_check_simple_key(emitter) { emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE) return yaml_emitter_emit_node(emitter, event, false, false, true, true) @@ -810,6 +813,27 @@ func yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_ return false } } + if len(emitter.key_line_comment) > 0 { + // [Go] Line comments are generally associated with the value, but when there's + // no value on the same line as a mapping key they end up attached to the + // key itself. + if event.typ == yaml_SCALAR_EVENT { + if len(emitter.line_comment) == 0 { + // A scalar is coming and it has no line comments by itself yet, + // so just let it handle the line comment as usual. If it has a + // line comment, we can't have both so the one from the key is lost. + emitter.line_comment = emitter.key_line_comment + emitter.key_line_comment = nil + } + } else if event.sequence_style() != yaml_FLOW_SEQUENCE_STYLE && (event.typ == yaml_MAPPING_START_EVENT || event.typ == yaml_SEQUENCE_START_EVENT) { + // An indented block follows, so write the comment right now. + emitter.line_comment, emitter.key_line_comment = emitter.key_line_comment, emitter.line_comment + if !yaml_emitter_process_line_comment(emitter) { + return false + } + emitter.line_comment, emitter.key_line_comment = emitter.key_line_comment, emitter.line_comment + } + } emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_KEY_STATE) if !yaml_emitter_emit_node(emitter, event, false, false, true, false) { return false @@ -823,6 +847,10 @@ func yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_ return true } +func yaml_emitter_silent_nil_event(emitter *yaml_emitter_t, event *yaml_event_t) bool { + return event.typ == yaml_SCALAR_EVENT && event.implicit && !emitter.canonical && len(emitter.scalar_data.value) == 0 +} + // Expect a node. func yaml_emitter_emit_node(emitter *yaml_emitter_t, event *yaml_event_t, root bool, sequence bool, mapping bool, simple_key bool) bool { @@ -1866,7 +1894,7 @@ func yaml_emitter_write_literal_scalar(emitter *yaml_emitter_t, value []byte) bo if !yaml_emitter_write_block_scalar_hints(emitter, value) { return false } - if !put_break(emitter) { + if !yaml_emitter_process_line_comment(emitter) { return false } //emitter.indention = true @@ -1903,10 +1931,10 @@ func yaml_emitter_write_folded_scalar(emitter *yaml_emitter_t, value []byte) boo if !yaml_emitter_write_block_scalar_hints(emitter, value) { return false } - - if !put_break(emitter) { + if !yaml_emitter_process_line_comment(emitter) { return false } + //emitter.indention = true emitter.whitespace = true diff --git a/src/runtime/vendor/gopkg.in/yaml.v3/encode.go b/src/runtime/vendor/gopkg.in/yaml.v3/encode.go index 1f37271ce..de9e72a3e 100644 --- a/src/runtime/vendor/gopkg.in/yaml.v3/encode.go +++ b/src/runtime/vendor/gopkg.in/yaml.v3/encode.go @@ -119,6 +119,14 @@ func (e *encoder) marshal(tag string, in reflect.Value) { case *Node: e.nodev(in) return + case Node: + if !in.CanAddr() { + var n = reflect.New(in.Type()).Elem() + n.Set(in) + in = n + } + e.nodev(in.Addr()) + return case time.Time: e.timev(tag, in) return @@ -422,18 +430,23 @@ func (e *encoder) nodev(in reflect.Value) { } func (e *encoder) node(node *Node, tail string) { + // Zero nodes behave as nil. + if node.Kind == 0 && node.IsZero() { + e.nilv() + return + } + // If the tag was not explicitly requested, and dropping it won't change the // implicit tag of the value, don't include it in the presentation. var tag = node.Tag var stag = shortTag(tag) - var rtag string var forceQuoting bool if tag != "" && node.Style&TaggedStyle == 0 { if node.Kind == ScalarNode { if stag == strTag && node.Style&(SingleQuotedStyle|DoubleQuotedStyle|LiteralStyle|FoldedStyle) != 0 { tag = "" } else { - rtag, _ = resolve("", node.Value) + rtag, _ := resolve("", node.Value) if rtag == stag { tag = "" } else if stag == strTag { @@ -442,6 +455,7 @@ func (e *encoder) node(node *Node, tail string) { } } } else { + var rtag string switch node.Kind { case MappingNode: rtag = mapTag @@ -471,7 +485,7 @@ func (e *encoder) node(node *Node, tail string) { if node.Style&FlowStyle != 0 { style = yaml_FLOW_SEQUENCE_STYLE } - e.must(yaml_sequence_start_event_initialize(&e.event, []byte(node.Anchor), []byte(tag), tag == "", style)) + e.must(yaml_sequence_start_event_initialize(&e.event, []byte(node.Anchor), []byte(longTag(tag)), tag == "", style)) e.event.head_comment = []byte(node.HeadComment) e.emit() for _, node := range node.Content { @@ -487,7 +501,7 @@ func (e *encoder) node(node *Node, tail string) { if node.Style&FlowStyle != 0 { style = yaml_FLOW_MAPPING_STYLE } - yaml_mapping_start_event_initialize(&e.event, []byte(node.Anchor), []byte(tag), tag == "", style) + yaml_mapping_start_event_initialize(&e.event, []byte(node.Anchor), []byte(longTag(tag)), tag == "", style) e.event.tail_comment = []byte(tail) e.event.head_comment = []byte(node.HeadComment) e.emit() @@ -528,11 +542,11 @@ func (e *encoder) node(node *Node, tail string) { case ScalarNode: value := node.Value if !utf8.ValidString(value) { - if tag == binaryTag { + if stag == binaryTag { failf("explicitly tagged !!binary data must be base64-encoded") } - if tag != "" { - failf("cannot marshal invalid UTF-8 data as %s", shortTag(tag)) + if stag != "" { + failf("cannot marshal invalid UTF-8 data as %s", stag) } // It can't be encoded directly as YAML so use a binary tag // and encode it as base64. @@ -557,5 +571,7 @@ func (e *encoder) node(node *Node, tail string) { } e.emitScalar(value, node.Anchor, tag, style, []byte(node.HeadComment), []byte(node.LineComment), []byte(node.FootComment), []byte(tail)) + default: + failf("cannot encode node with unknown kind %d", node.Kind) } } diff --git a/src/runtime/vendor/gopkg.in/yaml.v3/parserc.go b/src/runtime/vendor/gopkg.in/yaml.v3/parserc.go index aea9050b8..ac66fccc0 100644 --- a/src/runtime/vendor/gopkg.in/yaml.v3/parserc.go +++ b/src/runtime/vendor/gopkg.in/yaml.v3/parserc.go @@ -648,6 +648,10 @@ func yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t, block, i implicit: implicit, style: yaml_style_t(yaml_BLOCK_MAPPING_STYLE), } + if parser.stem_comment != nil { + event.head_comment = parser.stem_comment + parser.stem_comment = nil + } return true } if len(anchor) > 0 || len(tag) > 0 { @@ -694,25 +698,13 @@ func yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t, event *yaml_e if token.typ == yaml_BLOCK_ENTRY_TOKEN { mark := token.end_mark - prior_head := len(parser.head_comment) + prior_head_len := len(parser.head_comment) skip_token(parser) + yaml_parser_split_stem_comment(parser, prior_head_len) token = peek_token(parser) if token == nil { return false } - if prior_head > 0 && token.typ == yaml_BLOCK_SEQUENCE_START_TOKEN { - // [Go] It's a sequence under a sequence entry, so the former head comment - // is for the list itself, not the first list item under it. - parser.stem_comment = parser.head_comment[:prior_head] - if len(parser.head_comment) == prior_head { - parser.head_comment = nil - } else { - // Copy suffix to prevent very strange bugs if someone ever appends - // further bytes to the prefix in the stem_comment slice above. - parser.head_comment = append([]byte(nil), parser.head_comment[prior_head+1:]...) - } - - } if token.typ != yaml_BLOCK_ENTRY_TOKEN && token.typ != yaml_BLOCK_END_TOKEN { parser.states = append(parser.states, yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE) return yaml_parser_parse_node(parser, event, true, false) @@ -754,7 +746,9 @@ func yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *y if token.typ == yaml_BLOCK_ENTRY_TOKEN { mark := token.end_mark + prior_head_len := len(parser.head_comment) skip_token(parser) + yaml_parser_split_stem_comment(parser, prior_head_len) token = peek_token(parser) if token == nil { return false @@ -780,6 +774,32 @@ func yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *y return true } +// Split stem comment from head comment. +// +// When a sequence or map is found under a sequence entry, the former head comment +// is assigned to the underlying sequence or map as a whole, not the individual +// sequence or map entry as would be expected otherwise. To handle this case the +// previous head comment is moved aside as the stem comment. +func yaml_parser_split_stem_comment(parser *yaml_parser_t, stem_len int) { + if stem_len == 0 { + return + } + + token := peek_token(parser) + if token.typ != yaml_BLOCK_SEQUENCE_START_TOKEN && token.typ != yaml_BLOCK_MAPPING_START_TOKEN { + return + } + + parser.stem_comment = parser.head_comment[:stem_len] + if len(parser.head_comment) == stem_len { + parser.head_comment = nil + } else { + // Copy suffix to prevent very strange bugs if someone ever appends + // further bytes to the prefix in the stem_comment slice above. + parser.head_comment = append([]byte(nil), parser.head_comment[stem_len+1:]...) + } +} + // Parse the productions: // block_mapping ::= BLOCK-MAPPING_START // ******************* diff --git a/src/runtime/vendor/gopkg.in/yaml.v3/scannerc.go b/src/runtime/vendor/gopkg.in/yaml.v3/scannerc.go index 57e954ca5..ca0070108 100644 --- a/src/runtime/vendor/gopkg.in/yaml.v3/scannerc.go +++ b/src/runtime/vendor/gopkg.in/yaml.v3/scannerc.go @@ -749,6 +749,11 @@ func yaml_parser_fetch_next_token(parser *yaml_parser_t) (ok bool) { if !ok { return } + if len(parser.tokens) > 0 && parser.tokens[len(parser.tokens)-1].typ == yaml_BLOCK_ENTRY_TOKEN { + // Sequence indicators alone have no line comments. It becomes + // a head comment for whatever follows. + return + } if !yaml_parser_scan_line_comment(parser, comment_mark) { ok = false return @@ -2255,10 +2260,9 @@ func yaml_parser_scan_block_scalar(parser *yaml_parser_t, token *yaml_token_t, l } } if parser.buffer[parser.buffer_pos] == '#' { - // TODO Test this and then re-enable it. - //if !yaml_parser_scan_line_comment(parser, start_mark) { - // return false - //} + if !yaml_parser_scan_line_comment(parser, start_mark) { + return false + } for !is_breakz(parser.buffer, parser.buffer_pos) { skip(parser) if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { @@ -2856,13 +2860,12 @@ func yaml_parser_scan_line_comment(parser *yaml_parser_t, token_mark yaml_mark_t return false } skip_line(parser) - } else { - if parser.mark.index >= seen { - if len(text) == 0 { - start_mark = parser.mark - } - text = append(text, parser.buffer[parser.buffer_pos]) + } else if parser.mark.index >= seen { + if len(text) == 0 { + start_mark = parser.mark } + text = read(parser, text) + } else { skip(parser) } } @@ -2888,6 +2891,10 @@ func yaml_parser_scan_comments(parser *yaml_parser_t, scan_mark yaml_mark_t) boo var token_mark = token.start_mark var start_mark yaml_mark_t + var next_indent = parser.indent + if next_indent < 0 { + next_indent = 0 + } var recent_empty = false var first_empty = parser.newlines <= 1 @@ -2919,15 +2926,18 @@ func yaml_parser_scan_comments(parser *yaml_parser_t, scan_mark yaml_mark_t) boo continue } c := parser.buffer[parser.buffer_pos+peek] - if is_breakz(parser.buffer, parser.buffer_pos+peek) || parser.flow_level > 0 && (c == ']' || c == '}') { + var close_flow = parser.flow_level > 0 && (c == ']' || c == '}') + if close_flow || is_breakz(parser.buffer, parser.buffer_pos+peek) { // Got line break or terminator. - if !recent_empty { - if first_empty && (start_mark.line == foot_line || start_mark.column-1 < parser.indent) { + if close_flow || !recent_empty { + if close_flow || first_empty && (start_mark.line == foot_line && token.typ != yaml_VALUE_TOKEN || start_mark.column-1 < next_indent) { // This is the first empty line and there were no empty lines before, // so this initial part of the comment is a foot of the prior token // instead of being a head for the following one. Split it up. + // Alternatively, this might also be the last comment inside a flow + // scope, so it must be a footer. if len(text) > 0 { - if start_mark.column-1 < parser.indent { + if start_mark.column-1 < next_indent { // If dedented it's unrelated to the prior token. token_mark = start_mark } @@ -2958,7 +2968,7 @@ func yaml_parser_scan_comments(parser *yaml_parser_t, scan_mark yaml_mark_t) boo continue } - if len(text) > 0 && column < parser.indent+1 && column != start_mark.column { + if len(text) > 0 && (close_flow || column-1 < next_indent && column != start_mark.column) { // The comment at the different indentation is a foot of the // preceding data rather than a head of the upcoming one. parser.comments = append(parser.comments, yaml_comment_t{ @@ -2999,10 +3009,9 @@ func yaml_parser_scan_comments(parser *yaml_parser_t, scan_mark yaml_mark_t) boo return false } skip_line(parser) + } else if parser.mark.index >= seen { + text = read(parser, text) } else { - if parser.mark.index >= seen { - text = append(text, parser.buffer[parser.buffer_pos]) - } skip(parser) } } @@ -3010,6 +3019,10 @@ func yaml_parser_scan_comments(parser *yaml_parser_t, scan_mark yaml_mark_t) boo peek = 0 column = 0 line = parser.mark.line + next_indent = parser.indent + if next_indent < 0 { + next_indent = 0 + } } if len(text) > 0 { diff --git a/src/runtime/vendor/gopkg.in/yaml.v3/yaml.go b/src/runtime/vendor/gopkg.in/yaml.v3/yaml.go index b5d35a50d..8cec6da48 100644 --- a/src/runtime/vendor/gopkg.in/yaml.v3/yaml.go +++ b/src/runtime/vendor/gopkg.in/yaml.v3/yaml.go @@ -89,7 +89,7 @@ func Unmarshal(in []byte, out interface{}) (err error) { return unmarshal(in, out, false) } -// A Decorder reads and decodes YAML values from an input stream. +// A Decoder reads and decodes YAML values from an input stream. type Decoder struct { parser *parser knownFields bool @@ -194,7 +194,7 @@ func unmarshal(in []byte, out interface{}, strict bool) (err error) { // Zero valued structs will be omitted if all their public // fields are zero, unless they implement an IsZero // method (see the IsZeroer interface type), in which -// case the field will be included if that method returns true. +// case the field will be excluded if IsZero returns true. // // flow Marshal using a flow style (useful for structs, // sequences and maps). @@ -252,6 +252,24 @@ func (e *Encoder) Encode(v interface{}) (err error) { return nil } +// Encode encodes value v and stores its representation in n. +// +// See the documentation for Marshal for details about the +// conversion of Go values into YAML. +func (n *Node) Encode(v interface{}) (err error) { + defer handleErr(&err) + e := newEncoder() + defer e.destroy() + e.marshalDoc("", reflect.ValueOf(v)) + e.finish() + p := newParser(e.out) + p.textless = true + defer p.destroy() + doc := p.parse() + *n = *doc.Content[0] + return nil +} + // SetIndent changes the used indentation used when encoding. func (e *Encoder) SetIndent(spaces int) { if spaces < 0 { @@ -328,6 +346,12 @@ const ( // and maps, Node is an intermediate representation that allows detailed // control over the content being decoded or encoded. // +// It's worth noting that although Node offers access into details such as +// line numbers, colums, and comments, the content when re-encoded will not +// have its original textual representation preserved. An effort is made to +// render the data plesantly, and to preserve comments near the data they +// describe, though. +// // Values that make use of the Node type interact with the yaml package in the // same way any other type would do, by encoding and decoding yaml data // directly or indirectly into them. @@ -391,6 +415,13 @@ type Node struct { Column int } +// IsZero returns whether the node has all of its fields unset. +func (n *Node) IsZero() bool { + return n.Kind == 0 && n.Style == 0 && n.Tag == "" && n.Value == "" && n.Anchor == "" && n.Alias == nil && n.Content == nil && + n.HeadComment == "" && n.LineComment == "" && n.FootComment == "" && n.Line == 0 && n.Column == 0 +} + + // LongTag returns the long form of the tag that indicates the data type for // the node. If the Tag field isn't explicitly defined, one will be computed // based on the node properties. @@ -418,6 +449,11 @@ func (n *Node) ShortTag() string { case ScalarNode: tag, _ := resolve("", n.Value) return tag + case 0: + // Special case to make the zero value convenient. + if n.IsZero() { + return nullTag + } } return "" } diff --git a/src/runtime/vendor/gopkg.in/yaml.v3/yamlh.go b/src/runtime/vendor/gopkg.in/yaml.v3/yamlh.go index 2719cfbb0..7c6d00770 100644 --- a/src/runtime/vendor/gopkg.in/yaml.v3/yamlh.go +++ b/src/runtime/vendor/gopkg.in/yaml.v3/yamlh.go @@ -787,6 +787,8 @@ type yaml_emitter_t struct { foot_comment []byte tail_comment []byte + key_line_comment []byte + // Dumper stuff opened bool // If the stream was already opened? diff --git a/src/runtime/vendor/k8s.io/apimachinery/pkg/api/resource/OWNERS b/src/runtime/vendor/k8s.io/apimachinery/pkg/api/resource/OWNERS index 7ac0fe11a..15bded17a 100644 --- a/src/runtime/vendor/k8s.io/apimachinery/pkg/api/resource/OWNERS +++ b/src/runtime/vendor/k8s.io/apimachinery/pkg/api/resource/OWNERS @@ -10,4 +10,3 @@ reviewers: - saad-ali - janetkuo - xiang90 -- mbohlool diff --git a/src/runtime/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go b/src/runtime/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go index 8d718945d..2395656cc 100644 --- a/src/runtime/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go +++ b/src/runtime/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go @@ -696,6 +696,15 @@ func (q *Quantity) UnmarshalJSON(value []byte) error { return nil } +// NewDecimalQuantity returns a new Quantity representing the given +// value in the given format. +func NewDecimalQuantity(b inf.Dec, format Format) *Quantity { + return &Quantity{ + d: infDecAmount{&b}, + Format: format, + } +} + // NewQuantity returns a new Quantity representing the given // value in the given format. func NewQuantity(value int64, format Format) *Quantity { diff --git a/src/runtime/vendor/k8s.io/apimachinery/pkg/api/resource/quantity_proto.go b/src/runtime/vendor/k8s.io/apimachinery/pkg/api/resource/quantity_proto.go index f89ca163c..3e0cdb10d 100644 --- a/src/runtime/vendor/k8s.io/apimachinery/pkg/api/resource/quantity_proto.go +++ b/src/runtime/vendor/k8s.io/apimachinery/pkg/api/resource/quantity_proto.go @@ -166,7 +166,7 @@ func (m *Quantity) Unmarshal(data []byte) error { if err != nil { return err } - if skippy < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthGenerated } if (iNdEx + skippy) > l { diff --git a/src/runtime/vendor/k8s.io/cri-api/pkg/apis/runtime/v1alpha2/api.pb.go b/src/runtime/vendor/k8s.io/cri-api/pkg/apis/runtime/v1alpha2/api.pb.go index 852cac52a..f6d2a668e 100644 --- a/src/runtime/vendor/k8s.io/cri-api/pkg/apis/runtime/v1alpha2/api.pb.go +++ b/src/runtime/vendor/k8s.io/cri-api/pkg/apis/runtime/v1alpha2/api.pb.go @@ -933,9 +933,13 @@ type LinuxPodSandboxConfig struct { // LinuxSandboxSecurityContext holds sandbox security attributes. SecurityContext *LinuxSandboxSecurityContext `protobuf:"bytes,2,opt,name=security_context,json=securityContext,proto3" json:"security_context,omitempty"` // Sysctls holds linux sysctls config for the sandbox. - Sysctls map[string]string `protobuf:"bytes,3,rep,name=sysctls,proto3" json:"sysctls,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_sizecache int32 `json:"-"` + Sysctls map[string]string `protobuf:"bytes,3,rep,name=sysctls,proto3" json:"sysctls,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Optional overhead represents the overheads associated with this sandbox + Overhead *LinuxContainerResources `protobuf:"bytes,4,opt,name=overhead,proto3" json:"overhead,omitempty"` + // Optional resources represents the sum of container resources for this sandbox + Resources *LinuxContainerResources `protobuf:"bytes,5,opt,name=resources,proto3" json:"resources,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *LinuxPodSandboxConfig) Reset() { *m = LinuxPodSandboxConfig{} } @@ -991,6 +995,20 @@ func (m *LinuxPodSandboxConfig) GetSysctls() map[string]string { return nil } +func (m *LinuxPodSandboxConfig) GetOverhead() *LinuxContainerResources { + if m != nil { + return m.Overhead + } + return nil +} + +func (m *LinuxPodSandboxConfig) GetResources() *LinuxContainerResources { + if m != nil { + return m.Resources + } + return nil +} + // PodSandboxMetadata holds all necessary information for building the sandbox name. // The container runtime is encouraged to expose the metadata associated with the // PodSandbox in its user interface for better user experience. For example, @@ -1119,9 +1137,11 @@ type PodSandboxConfig struct { // consider proposing new typed fields for any new features instead. Annotations map[string]string `protobuf:"bytes,7,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Optional configurations specific to Linux hosts. - Linux *LinuxPodSandboxConfig `protobuf:"bytes,8,opt,name=linux,proto3" json:"linux,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_sizecache int32 `json:"-"` + Linux *LinuxPodSandboxConfig `protobuf:"bytes,8,opt,name=linux,proto3" json:"linux,omitempty"` + // Optional configurations specific to Windows hosts. + Windows *WindowsPodSandboxConfig `protobuf:"bytes,9,opt,name=windows,proto3" json:"windows,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *PodSandboxConfig) Reset() { *m = PodSandboxConfig{} } @@ -1212,6 +1232,13 @@ func (m *PodSandboxConfig) GetLinux() *LinuxPodSandboxConfig { return nil } +func (m *PodSandboxConfig) GetWindows() *WindowsPodSandboxConfig { + if m != nil { + return m.Windows + } + return nil +} + type RunPodSandboxRequest struct { // Configuration for creating a PodSandbox. Config *PodSandboxConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` @@ -1219,7 +1246,7 @@ type RunPodSandboxRequest struct { // If the runtime handler is unknown, this request should be rejected. An // empty string should select the default handler, equivalent to the // behavior before this feature was added. - // See https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md + // See https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class RuntimeHandler string `protobuf:"bytes,2,opt,name=runtime_handler,json=runtimeHandler,proto3" json:"runtime_handler,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_sizecache int32 `json:"-"` @@ -2226,6 +2253,716 @@ func (m *ListPodSandboxResponse) GetItems() []*PodSandbox { return nil } +type PodSandboxStatsRequest struct { + // ID of the pod sandbox for which to retrieve stats. + PodSandboxId string `protobuf:"bytes,1,opt,name=pod_sandbox_id,json=podSandboxId,proto3" json:"pod_sandbox_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PodSandboxStatsRequest) Reset() { *m = PodSandboxStatsRequest{} } +func (*PodSandboxStatsRequest) ProtoMessage() {} +func (*PodSandboxStatsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{30} +} +func (m *PodSandboxStatsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PodSandboxStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PodSandboxStatsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *PodSandboxStatsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_PodSandboxStatsRequest.Merge(m, src) +} +func (m *PodSandboxStatsRequest) XXX_Size() int { + return m.Size() +} +func (m *PodSandboxStatsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_PodSandboxStatsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_PodSandboxStatsRequest proto.InternalMessageInfo + +func (m *PodSandboxStatsRequest) GetPodSandboxId() string { + if m != nil { + return m.PodSandboxId + } + return "" +} + +type PodSandboxStatsResponse struct { + Stats *PodSandboxStats `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PodSandboxStatsResponse) Reset() { *m = PodSandboxStatsResponse{} } +func (*PodSandboxStatsResponse) ProtoMessage() {} +func (*PodSandboxStatsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{31} +} +func (m *PodSandboxStatsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PodSandboxStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PodSandboxStatsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *PodSandboxStatsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_PodSandboxStatsResponse.Merge(m, src) +} +func (m *PodSandboxStatsResponse) XXX_Size() int { + return m.Size() +} +func (m *PodSandboxStatsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_PodSandboxStatsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_PodSandboxStatsResponse proto.InternalMessageInfo + +func (m *PodSandboxStatsResponse) GetStats() *PodSandboxStats { + if m != nil { + return m.Stats + } + return nil +} + +// PodSandboxStatsFilter is used to filter pod sandboxes. +// All those fields are combined with 'AND'. +type PodSandboxStatsFilter struct { + // ID of the pod sandbox. + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // LabelSelector to select matches. + // Only api.MatchLabels is supported for now and the requirements + // are ANDed. MatchExpressions is not supported yet. + LabelSelector map[string]string `protobuf:"bytes,2,rep,name=label_selector,json=labelSelector,proto3" json:"label_selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PodSandboxStatsFilter) Reset() { *m = PodSandboxStatsFilter{} } +func (*PodSandboxStatsFilter) ProtoMessage() {} +func (*PodSandboxStatsFilter) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{32} +} +func (m *PodSandboxStatsFilter) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PodSandboxStatsFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PodSandboxStatsFilter.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *PodSandboxStatsFilter) XXX_Merge(src proto.Message) { + xxx_messageInfo_PodSandboxStatsFilter.Merge(m, src) +} +func (m *PodSandboxStatsFilter) XXX_Size() int { + return m.Size() +} +func (m *PodSandboxStatsFilter) XXX_DiscardUnknown() { + xxx_messageInfo_PodSandboxStatsFilter.DiscardUnknown(m) +} + +var xxx_messageInfo_PodSandboxStatsFilter proto.InternalMessageInfo + +func (m *PodSandboxStatsFilter) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *PodSandboxStatsFilter) GetLabelSelector() map[string]string { + if m != nil { + return m.LabelSelector + } + return nil +} + +type ListPodSandboxStatsRequest struct { + // Filter for the list request. + Filter *PodSandboxStatsFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ListPodSandboxStatsRequest) Reset() { *m = ListPodSandboxStatsRequest{} } +func (*ListPodSandboxStatsRequest) ProtoMessage() {} +func (*ListPodSandboxStatsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{33} +} +func (m *ListPodSandboxStatsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ListPodSandboxStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ListPodSandboxStatsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ListPodSandboxStatsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListPodSandboxStatsRequest.Merge(m, src) +} +func (m *ListPodSandboxStatsRequest) XXX_Size() int { + return m.Size() +} +func (m *ListPodSandboxStatsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ListPodSandboxStatsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ListPodSandboxStatsRequest proto.InternalMessageInfo + +func (m *ListPodSandboxStatsRequest) GetFilter() *PodSandboxStatsFilter { + if m != nil { + return m.Filter + } + return nil +} + +type ListPodSandboxStatsResponse struct { + // Stats of the pod sandbox. + Stats []*PodSandboxStats `protobuf:"bytes,1,rep,name=stats,proto3" json:"stats,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ListPodSandboxStatsResponse) Reset() { *m = ListPodSandboxStatsResponse{} } +func (*ListPodSandboxStatsResponse) ProtoMessage() {} +func (*ListPodSandboxStatsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{34} +} +func (m *ListPodSandboxStatsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ListPodSandboxStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ListPodSandboxStatsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ListPodSandboxStatsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListPodSandboxStatsResponse.Merge(m, src) +} +func (m *ListPodSandboxStatsResponse) XXX_Size() int { + return m.Size() +} +func (m *ListPodSandboxStatsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ListPodSandboxStatsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ListPodSandboxStatsResponse proto.InternalMessageInfo + +func (m *ListPodSandboxStatsResponse) GetStats() []*PodSandboxStats { + if m != nil { + return m.Stats + } + return nil +} + +// PodSandboxAttributes provides basic information of the pod sandbox. +type PodSandboxAttributes struct { + // ID of the pod sandbox. + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Metadata of the pod sandbox. + Metadata *PodSandboxMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` + // Key-value pairs that may be used to scope and select individual resources. + Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Unstructured key-value map holding arbitrary metadata. + // Annotations MUST NOT be altered by the runtime; the value of this field + // MUST be identical to that of the corresponding PodSandboxStatus used to + // instantiate the PodSandbox this status represents. + Annotations map[string]string `protobuf:"bytes,4,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PodSandboxAttributes) Reset() { *m = PodSandboxAttributes{} } +func (*PodSandboxAttributes) ProtoMessage() {} +func (*PodSandboxAttributes) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{35} +} +func (m *PodSandboxAttributes) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PodSandboxAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PodSandboxAttributes.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *PodSandboxAttributes) XXX_Merge(src proto.Message) { + xxx_messageInfo_PodSandboxAttributes.Merge(m, src) +} +func (m *PodSandboxAttributes) XXX_Size() int { + return m.Size() +} +func (m *PodSandboxAttributes) XXX_DiscardUnknown() { + xxx_messageInfo_PodSandboxAttributes.DiscardUnknown(m) +} + +var xxx_messageInfo_PodSandboxAttributes proto.InternalMessageInfo + +func (m *PodSandboxAttributes) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *PodSandboxAttributes) GetMetadata() *PodSandboxMetadata { + if m != nil { + return m.Metadata + } + return nil +} + +func (m *PodSandboxAttributes) GetLabels() map[string]string { + if m != nil { + return m.Labels + } + return nil +} + +func (m *PodSandboxAttributes) GetAnnotations() map[string]string { + if m != nil { + return m.Annotations + } + return nil +} + +// PodSandboxStats provides the resource usage statistics for a pod. +// The linux or windows field will be populated depending on the platform. +type PodSandboxStats struct { + // Information of the pod. + Attributes *PodSandboxAttributes `protobuf:"bytes,1,opt,name=attributes,proto3" json:"attributes,omitempty"` + // Stats from linux. + Linux *LinuxPodSandboxStats `protobuf:"bytes,2,opt,name=linux,proto3" json:"linux,omitempty"` + // Stats from windows. + Windows *WindowsPodSandboxStats `protobuf:"bytes,3,opt,name=windows,proto3" json:"windows,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PodSandboxStats) Reset() { *m = PodSandboxStats{} } +func (*PodSandboxStats) ProtoMessage() {} +func (*PodSandboxStats) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{36} +} +func (m *PodSandboxStats) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PodSandboxStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PodSandboxStats.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *PodSandboxStats) XXX_Merge(src proto.Message) { + xxx_messageInfo_PodSandboxStats.Merge(m, src) +} +func (m *PodSandboxStats) XXX_Size() int { + return m.Size() +} +func (m *PodSandboxStats) XXX_DiscardUnknown() { + xxx_messageInfo_PodSandboxStats.DiscardUnknown(m) +} + +var xxx_messageInfo_PodSandboxStats proto.InternalMessageInfo + +func (m *PodSandboxStats) GetAttributes() *PodSandboxAttributes { + if m != nil { + return m.Attributes + } + return nil +} + +func (m *PodSandboxStats) GetLinux() *LinuxPodSandboxStats { + if m != nil { + return m.Linux + } + return nil +} + +func (m *PodSandboxStats) GetWindows() *WindowsPodSandboxStats { + if m != nil { + return m.Windows + } + return nil +} + +// LinuxPodSandboxStats provides the resource usage statistics for a pod sandbox on linux. +type LinuxPodSandboxStats struct { + // CPU usage gathered for the pod sandbox. + Cpu *CpuUsage `protobuf:"bytes,1,opt,name=cpu,proto3" json:"cpu,omitempty"` + // Memory usage gathered for the pod sandbox. + Memory *MemoryUsage `protobuf:"bytes,2,opt,name=memory,proto3" json:"memory,omitempty"` + // Network usage gathered for the pod sandbox + Network *NetworkUsage `protobuf:"bytes,3,opt,name=network,proto3" json:"network,omitempty"` + // Stats pertaining to processes in the pod sandbox. + Process *ProcessUsage `protobuf:"bytes,4,opt,name=process,proto3" json:"process,omitempty"` + // Stats of containers in the measured pod sandbox. + Containers []*ContainerStats `protobuf:"bytes,5,rep,name=containers,proto3" json:"containers,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *LinuxPodSandboxStats) Reset() { *m = LinuxPodSandboxStats{} } +func (*LinuxPodSandboxStats) ProtoMessage() {} +func (*LinuxPodSandboxStats) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{37} +} +func (m *LinuxPodSandboxStats) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *LinuxPodSandboxStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_LinuxPodSandboxStats.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *LinuxPodSandboxStats) XXX_Merge(src proto.Message) { + xxx_messageInfo_LinuxPodSandboxStats.Merge(m, src) +} +func (m *LinuxPodSandboxStats) XXX_Size() int { + return m.Size() +} +func (m *LinuxPodSandboxStats) XXX_DiscardUnknown() { + xxx_messageInfo_LinuxPodSandboxStats.DiscardUnknown(m) +} + +var xxx_messageInfo_LinuxPodSandboxStats proto.InternalMessageInfo + +func (m *LinuxPodSandboxStats) GetCpu() *CpuUsage { + if m != nil { + return m.Cpu + } + return nil +} + +func (m *LinuxPodSandboxStats) GetMemory() *MemoryUsage { + if m != nil { + return m.Memory + } + return nil +} + +func (m *LinuxPodSandboxStats) GetNetwork() *NetworkUsage { + if m != nil { + return m.Network + } + return nil +} + +func (m *LinuxPodSandboxStats) GetProcess() *ProcessUsage { + if m != nil { + return m.Process + } + return nil +} + +func (m *LinuxPodSandboxStats) GetContainers() []*ContainerStats { + if m != nil { + return m.Containers + } + return nil +} + +// WindowsPodSandboxStats provides the resource usage statistics for a pod sandbox on windows +type WindowsPodSandboxStats struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WindowsPodSandboxStats) Reset() { *m = WindowsPodSandboxStats{} } +func (*WindowsPodSandboxStats) ProtoMessage() {} +func (*WindowsPodSandboxStats) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{38} +} +func (m *WindowsPodSandboxStats) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *WindowsPodSandboxStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_WindowsPodSandboxStats.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *WindowsPodSandboxStats) XXX_Merge(src proto.Message) { + xxx_messageInfo_WindowsPodSandboxStats.Merge(m, src) +} +func (m *WindowsPodSandboxStats) XXX_Size() int { + return m.Size() +} +func (m *WindowsPodSandboxStats) XXX_DiscardUnknown() { + xxx_messageInfo_WindowsPodSandboxStats.DiscardUnknown(m) +} + +var xxx_messageInfo_WindowsPodSandboxStats proto.InternalMessageInfo + +// NetworkUsage contains data about network resources. +type NetworkUsage struct { + // The time at which these stats were updated. + Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + // Stats for the default network interface. + DefaultInterface *NetworkInterfaceUsage `protobuf:"bytes,2,opt,name=default_interface,json=defaultInterface,proto3" json:"default_interface,omitempty"` + // Stats for all found network interfaces, excluding the default. + Interfaces []*NetworkInterfaceUsage `protobuf:"bytes,3,rep,name=interfaces,proto3" json:"interfaces,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *NetworkUsage) Reset() { *m = NetworkUsage{} } +func (*NetworkUsage) ProtoMessage() {} +func (*NetworkUsage) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{39} +} +func (m *NetworkUsage) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *NetworkUsage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_NetworkUsage.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *NetworkUsage) XXX_Merge(src proto.Message) { + xxx_messageInfo_NetworkUsage.Merge(m, src) +} +func (m *NetworkUsage) XXX_Size() int { + return m.Size() +} +func (m *NetworkUsage) XXX_DiscardUnknown() { + xxx_messageInfo_NetworkUsage.DiscardUnknown(m) +} + +var xxx_messageInfo_NetworkUsage proto.InternalMessageInfo + +func (m *NetworkUsage) GetTimestamp() int64 { + if m != nil { + return m.Timestamp + } + return 0 +} + +func (m *NetworkUsage) GetDefaultInterface() *NetworkInterfaceUsage { + if m != nil { + return m.DefaultInterface + } + return nil +} + +func (m *NetworkUsage) GetInterfaces() []*NetworkInterfaceUsage { + if m != nil { + return m.Interfaces + } + return nil +} + +// NetworkInterfaceUsage contains resource value data about a network interface. +type NetworkInterfaceUsage struct { + // The name of the network interface. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Cumulative count of bytes received. + RxBytes *UInt64Value `protobuf:"bytes,2,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"` + // Cumulative count of receive errors encountered. + RxErrors *UInt64Value `protobuf:"bytes,3,opt,name=rx_errors,json=rxErrors,proto3" json:"rx_errors,omitempty"` + // Cumulative count of bytes transmitted. + TxBytes *UInt64Value `protobuf:"bytes,4,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"` + // Cumulative count of transmit errors encountered. + TxErrors *UInt64Value `protobuf:"bytes,5,opt,name=tx_errors,json=txErrors,proto3" json:"tx_errors,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *NetworkInterfaceUsage) Reset() { *m = NetworkInterfaceUsage{} } +func (*NetworkInterfaceUsage) ProtoMessage() {} +func (*NetworkInterfaceUsage) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{40} +} +func (m *NetworkInterfaceUsage) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *NetworkInterfaceUsage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_NetworkInterfaceUsage.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *NetworkInterfaceUsage) XXX_Merge(src proto.Message) { + xxx_messageInfo_NetworkInterfaceUsage.Merge(m, src) +} +func (m *NetworkInterfaceUsage) XXX_Size() int { + return m.Size() +} +func (m *NetworkInterfaceUsage) XXX_DiscardUnknown() { + xxx_messageInfo_NetworkInterfaceUsage.DiscardUnknown(m) +} + +var xxx_messageInfo_NetworkInterfaceUsage proto.InternalMessageInfo + +func (m *NetworkInterfaceUsage) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *NetworkInterfaceUsage) GetRxBytes() *UInt64Value { + if m != nil { + return m.RxBytes + } + return nil +} + +func (m *NetworkInterfaceUsage) GetRxErrors() *UInt64Value { + if m != nil { + return m.RxErrors + } + return nil +} + +func (m *NetworkInterfaceUsage) GetTxBytes() *UInt64Value { + if m != nil { + return m.TxBytes + } + return nil +} + +func (m *NetworkInterfaceUsage) GetTxErrors() *UInt64Value { + if m != nil { + return m.TxErrors + } + return nil +} + +// ProcessUsage are stats pertaining to processes. +type ProcessUsage struct { + // The time at which these stats were updated. + Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + // Number of processes. + ProcessCount *UInt64Value `protobuf:"bytes,2,opt,name=process_count,json=processCount,proto3" json:"process_count,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ProcessUsage) Reset() { *m = ProcessUsage{} } +func (*ProcessUsage) ProtoMessage() {} +func (*ProcessUsage) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{41} +} +func (m *ProcessUsage) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ProcessUsage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ProcessUsage.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ProcessUsage) XXX_Merge(src proto.Message) { + xxx_messageInfo_ProcessUsage.Merge(m, src) +} +func (m *ProcessUsage) XXX_Size() int { + return m.Size() +} +func (m *ProcessUsage) XXX_DiscardUnknown() { + xxx_messageInfo_ProcessUsage.DiscardUnknown(m) +} + +var xxx_messageInfo_ProcessUsage proto.InternalMessageInfo + +func (m *ProcessUsage) GetTimestamp() int64 { + if m != nil { + return m.Timestamp + } + return 0 +} + +func (m *ProcessUsage) GetProcessCount() *UInt64Value { + if m != nil { + return m.ProcessCount + } + return nil +} + // ImageSpec is an internal representation of an image. type ImageSpec struct { // Container's Image field (e.g. imageID or imageDigest). @@ -2241,7 +2978,7 @@ type ImageSpec struct { func (m *ImageSpec) Reset() { *m = ImageSpec{} } func (*ImageSpec) ProtoMessage() {} func (*ImageSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{30} + return fileDescriptor_00212fb1f9d3bf1c, []int{42} } func (m *ImageSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2294,7 +3031,7 @@ type KeyValue struct { func (m *KeyValue) Reset() { *m = KeyValue{} } func (*KeyValue) ProtoMessage() {} func (*KeyValue) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{31} + return fileDescriptor_00212fb1f9d3bf1c, []int{43} } func (m *KeyValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2357,15 +3094,21 @@ type LinuxContainerResources struct { // CpusetMems constrains the allowed set of memory nodes. Default: "" (not specified). CpusetMems string `protobuf:"bytes,7,opt,name=cpuset_mems,json=cpusetMems,proto3" json:"cpuset_mems,omitempty"` // List of HugepageLimits to limit the HugeTLB usage of container per page size. Default: nil (not specified). - HugepageLimits []*HugepageLimit `protobuf:"bytes,8,rep,name=hugepage_limits,json=hugepageLimits,proto3" json:"hugepage_limits,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_sizecache int32 `json:"-"` + HugepageLimits []*HugepageLimit `protobuf:"bytes,8,rep,name=hugepage_limits,json=hugepageLimits,proto3" json:"hugepage_limits,omitempty"` + // Unified resources for cgroup v2. Default: nil (not specified). + // Each key/value in the map refers to the cgroup v2. + // e.g. "memory.max": "6937202688" or "io.weight": "default 100". + Unified map[string]string `protobuf:"bytes,9,rep,name=unified,proto3" json:"unified,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Memory swap limit in bytes. Default 0 (not specified). + MemorySwapLimitInBytes int64 `protobuf:"varint,10,opt,name=memory_swap_limit_in_bytes,json=memorySwapLimitInBytes,proto3" json:"memory_swap_limit_in_bytes,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *LinuxContainerResources) Reset() { *m = LinuxContainerResources{} } func (*LinuxContainerResources) ProtoMessage() {} func (*LinuxContainerResources) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{32} + return fileDescriptor_00212fb1f9d3bf1c, []int{44} } func (m *LinuxContainerResources) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2450,6 +3193,20 @@ func (m *LinuxContainerResources) GetHugepageLimits() []*HugepageLimit { return nil } +func (m *LinuxContainerResources) GetUnified() map[string]string { + if m != nil { + return m.Unified + } + return nil +} + +func (m *LinuxContainerResources) GetMemorySwapLimitInBytes() int64 { + if m != nil { + return m.MemorySwapLimitInBytes + } + return 0 +} + // HugepageLimit corresponds to the file`hugetlb..limit_in_byte` in container level cgroup. // For example, `PageSize=1GB`, `Limit=1073741824` means setting `1073741824` bytes to hugetlb.1GB.limit_in_bytes. type HugepageLimit struct { @@ -2466,7 +3223,7 @@ type HugepageLimit struct { func (m *HugepageLimit) Reset() { *m = HugepageLimit{} } func (*HugepageLimit) ProtoMessage() {} func (*HugepageLimit) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{33} + return fileDescriptor_00212fb1f9d3bf1c, []int{45} } func (m *HugepageLimit) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2522,7 +3279,7 @@ type SELinuxOption struct { func (m *SELinuxOption) Reset() { *m = SELinuxOption{} } func (*SELinuxOption) ProtoMessage() {} func (*SELinuxOption) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{34} + return fileDescriptor_00212fb1f9d3bf1c, []int{46} } func (m *SELinuxOption) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2592,7 +3349,7 @@ type Capability struct { func (m *Capability) Reset() { *m = Capability{} } func (*Capability) ProtoMessage() {} func (*Capability) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{35} + return fileDescriptor_00212fb1f9d3bf1c, []int{47} } func (m *Capability) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2712,7 +3469,7 @@ type LinuxContainerSecurityContext struct { func (m *LinuxContainerSecurityContext) Reset() { *m = LinuxContainerSecurityContext{} } func (*LinuxContainerSecurityContext) ProtoMessage() {} func (*LinuxContainerSecurityContext) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{36} + return fileDescriptor_00212fb1f9d3bf1c, []int{48} } func (m *LinuxContainerSecurityContext) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2869,7 +3626,7 @@ type LinuxContainerConfig struct { func (m *LinuxContainerConfig) Reset() { *m = LinuxContainerConfig{} } func (*LinuxContainerConfig) ProtoMessage() {} func (*LinuxContainerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{37} + return fileDescriptor_00212fb1f9d3bf1c, []int{49} } func (m *LinuxContainerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2912,6 +3669,123 @@ func (m *LinuxContainerConfig) GetSecurityContext() *LinuxContainerSecurityConte return nil } +// WindowsSandboxSecurityContext holds platform-specific configurations that will be +// applied to a sandbox. +// These settings will only apply to the sandbox container. +type WindowsSandboxSecurityContext struct { + // User name to run the container process as. If specified, the user MUST + // exist in the container image and be resolved there by the runtime; + // otherwise, the runtime MUST return error. + RunAsUsername string `protobuf:"bytes,1,opt,name=run_as_username,json=runAsUsername,proto3" json:"run_as_username,omitempty"` + // The contents of the GMSA credential spec to use to run this container. + CredentialSpec string `protobuf:"bytes,2,opt,name=credential_spec,json=credentialSpec,proto3" json:"credential_spec,omitempty"` + // Indicates whether the container be asked to run as a HostProcess container. + HostProcess bool `protobuf:"varint,3,opt,name=host_process,json=hostProcess,proto3" json:"host_process,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WindowsSandboxSecurityContext) Reset() { *m = WindowsSandboxSecurityContext{} } +func (*WindowsSandboxSecurityContext) ProtoMessage() {} +func (*WindowsSandboxSecurityContext) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{50} +} +func (m *WindowsSandboxSecurityContext) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *WindowsSandboxSecurityContext) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_WindowsSandboxSecurityContext.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *WindowsSandboxSecurityContext) XXX_Merge(src proto.Message) { + xxx_messageInfo_WindowsSandboxSecurityContext.Merge(m, src) +} +func (m *WindowsSandboxSecurityContext) XXX_Size() int { + return m.Size() +} +func (m *WindowsSandboxSecurityContext) XXX_DiscardUnknown() { + xxx_messageInfo_WindowsSandboxSecurityContext.DiscardUnknown(m) +} + +var xxx_messageInfo_WindowsSandboxSecurityContext proto.InternalMessageInfo + +func (m *WindowsSandboxSecurityContext) GetRunAsUsername() string { + if m != nil { + return m.RunAsUsername + } + return "" +} + +func (m *WindowsSandboxSecurityContext) GetCredentialSpec() string { + if m != nil { + return m.CredentialSpec + } + return "" +} + +func (m *WindowsSandboxSecurityContext) GetHostProcess() bool { + if m != nil { + return m.HostProcess + } + return false +} + +// WindowsPodSandboxConfig holds platform-specific configurations for Windows +// host platforms and Windows-based containers. +type WindowsPodSandboxConfig struct { + // WindowsSandboxSecurityContext holds sandbox security attributes. + SecurityContext *WindowsSandboxSecurityContext `protobuf:"bytes,1,opt,name=security_context,json=securityContext,proto3" json:"security_context,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WindowsPodSandboxConfig) Reset() { *m = WindowsPodSandboxConfig{} } +func (*WindowsPodSandboxConfig) ProtoMessage() {} +func (*WindowsPodSandboxConfig) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{51} +} +func (m *WindowsPodSandboxConfig) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *WindowsPodSandboxConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_WindowsPodSandboxConfig.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *WindowsPodSandboxConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_WindowsPodSandboxConfig.Merge(m, src) +} +func (m *WindowsPodSandboxConfig) XXX_Size() int { + return m.Size() +} +func (m *WindowsPodSandboxConfig) XXX_DiscardUnknown() { + xxx_messageInfo_WindowsPodSandboxConfig.DiscardUnknown(m) +} + +var xxx_messageInfo_WindowsPodSandboxConfig proto.InternalMessageInfo + +func (m *WindowsPodSandboxConfig) GetSecurityContext() *WindowsSandboxSecurityContext { + if m != nil { + return m.SecurityContext + } + return nil +} + // WindowsContainerSecurityContext holds windows security configuration that will be applied to a container. type WindowsContainerSecurityContext struct { // User name to run the container process as. If specified, the user MUST @@ -2919,7 +3793,9 @@ type WindowsContainerSecurityContext struct { // otherwise, the runtime MUST return error. RunAsUsername string `protobuf:"bytes,1,opt,name=run_as_username,json=runAsUsername,proto3" json:"run_as_username,omitempty"` // The contents of the GMSA credential spec to use to run this container. - CredentialSpec string `protobuf:"bytes,2,opt,name=credential_spec,json=credentialSpec,proto3" json:"credential_spec,omitempty"` + CredentialSpec string `protobuf:"bytes,2,opt,name=credential_spec,json=credentialSpec,proto3" json:"credential_spec,omitempty"` + // Indicates whether a container is to be run as a HostProcess container. + HostProcess bool `protobuf:"varint,3,opt,name=host_process,json=hostProcess,proto3" json:"host_process,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_sizecache int32 `json:"-"` } @@ -2927,7 +3803,7 @@ type WindowsContainerSecurityContext struct { func (m *WindowsContainerSecurityContext) Reset() { *m = WindowsContainerSecurityContext{} } func (*WindowsContainerSecurityContext) ProtoMessage() {} func (*WindowsContainerSecurityContext) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{38} + return fileDescriptor_00212fb1f9d3bf1c, []int{52} } func (m *WindowsContainerSecurityContext) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2970,6 +3846,13 @@ func (m *WindowsContainerSecurityContext) GetCredentialSpec() string { return "" } +func (m *WindowsContainerSecurityContext) GetHostProcess() bool { + if m != nil { + return m.HostProcess + } + return false +} + // WindowsContainerConfig contains platform-specific configuration for // Windows-based containers. type WindowsContainerConfig struct { @@ -2984,7 +3867,7 @@ type WindowsContainerConfig struct { func (m *WindowsContainerConfig) Reset() { *m = WindowsContainerConfig{} } func (*WindowsContainerConfig) ProtoMessage() {} func (*WindowsContainerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{39} + return fileDescriptor_00212fb1f9d3bf1c, []int{53} } func (m *WindowsContainerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3045,7 +3928,7 @@ type WindowsContainerResources struct { func (m *WindowsContainerResources) Reset() { *m = WindowsContainerResources{} } func (*WindowsContainerResources) ProtoMessage() {} func (*WindowsContainerResources) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{40} + return fileDescriptor_00212fb1f9d3bf1c, []int{54} } func (m *WindowsContainerResources) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3119,7 +4002,7 @@ type ContainerMetadata struct { func (m *ContainerMetadata) Reset() { *m = ContainerMetadata{} } func (*ContainerMetadata) ProtoMessage() {} func (*ContainerMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{41} + return fileDescriptor_00212fb1f9d3bf1c, []int{55} } func (m *ContainerMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3180,7 +4063,7 @@ type Device struct { func (m *Device) Reset() { *m = Device{} } func (*Device) ProtoMessage() {} func (*Device) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{42} + return fileDescriptor_00212fb1f9d3bf1c, []int{56} } func (m *Device) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3299,7 +4182,7 @@ type ContainerConfig struct { func (m *ContainerConfig) Reset() { *m = ContainerConfig{} } func (*ContainerConfig) ProtoMessage() {} func (*ContainerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{43} + return fileDescriptor_00212fb1f9d3bf1c, []int{57} } func (m *ContainerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3457,7 +4340,7 @@ type CreateContainerRequest struct { func (m *CreateContainerRequest) Reset() { *m = CreateContainerRequest{} } func (*CreateContainerRequest) ProtoMessage() {} func (*CreateContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{44} + return fileDescriptor_00212fb1f9d3bf1c, []int{58} } func (m *CreateContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3517,7 +4400,7 @@ type CreateContainerResponse struct { func (m *CreateContainerResponse) Reset() { *m = CreateContainerResponse{} } func (*CreateContainerResponse) ProtoMessage() {} func (*CreateContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{45} + return fileDescriptor_00212fb1f9d3bf1c, []int{59} } func (m *CreateContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3563,7 +4446,7 @@ type StartContainerRequest struct { func (m *StartContainerRequest) Reset() { *m = StartContainerRequest{} } func (*StartContainerRequest) ProtoMessage() {} func (*StartContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{46} + return fileDescriptor_00212fb1f9d3bf1c, []int{60} } func (m *StartContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3607,7 +4490,7 @@ type StartContainerResponse struct { func (m *StartContainerResponse) Reset() { *m = StartContainerResponse{} } func (*StartContainerResponse) ProtoMessage() {} func (*StartContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{47} + return fileDescriptor_00212fb1f9d3bf1c, []int{61} } func (m *StartContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3649,7 +4532,7 @@ type StopContainerRequest struct { func (m *StopContainerRequest) Reset() { *m = StopContainerRequest{} } func (*StopContainerRequest) ProtoMessage() {} func (*StopContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{48} + return fileDescriptor_00212fb1f9d3bf1c, []int{62} } func (m *StopContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3700,7 +4583,7 @@ type StopContainerResponse struct { func (m *StopContainerResponse) Reset() { *m = StopContainerResponse{} } func (*StopContainerResponse) ProtoMessage() {} func (*StopContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{49} + return fileDescriptor_00212fb1f9d3bf1c, []int{63} } func (m *StopContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3739,7 +4622,7 @@ type RemoveContainerRequest struct { func (m *RemoveContainerRequest) Reset() { *m = RemoveContainerRequest{} } func (*RemoveContainerRequest) ProtoMessage() {} func (*RemoveContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{50} + return fileDescriptor_00212fb1f9d3bf1c, []int{64} } func (m *RemoveContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3783,7 +4666,7 @@ type RemoveContainerResponse struct { func (m *RemoveContainerResponse) Reset() { *m = RemoveContainerResponse{} } func (*RemoveContainerResponse) ProtoMessage() {} func (*RemoveContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{51} + return fileDescriptor_00212fb1f9d3bf1c, []int{65} } func (m *RemoveContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3823,7 +4706,7 @@ type ContainerStateValue struct { func (m *ContainerStateValue) Reset() { *m = ContainerStateValue{} } func (*ContainerStateValue) ProtoMessage() {} func (*ContainerStateValue) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{52} + return fileDescriptor_00212fb1f9d3bf1c, []int{66} } func (m *ContainerStateValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3879,7 +4762,7 @@ type ContainerFilter struct { func (m *ContainerFilter) Reset() { *m = ContainerFilter{} } func (*ContainerFilter) ProtoMessage() {} func (*ContainerFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{53} + return fileDescriptor_00212fb1f9d3bf1c, []int{67} } func (m *ContainerFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3945,7 +4828,7 @@ type ListContainersRequest struct { func (m *ListContainersRequest) Reset() { *m = ListContainersRequest{} } func (*ListContainersRequest) ProtoMessage() {} func (*ListContainersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{54} + return fileDescriptor_00212fb1f9d3bf1c, []int{68} } func (m *ListContainersRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4014,7 +4897,7 @@ type Container struct { func (m *Container) Reset() { *m = Container{} } func (*Container) ProtoMessage() {} func (*Container) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{55} + return fileDescriptor_00212fb1f9d3bf1c, []int{69} } func (m *Container) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4116,7 +4999,7 @@ type ListContainersResponse struct { func (m *ListContainersResponse) Reset() { *m = ListContainersResponse{} } func (*ListContainersResponse) ProtoMessage() {} func (*ListContainersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{56} + return fileDescriptor_00212fb1f9d3bf1c, []int{70} } func (m *ListContainersResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4164,7 +5047,7 @@ type ContainerStatusRequest struct { func (m *ContainerStatusRequest) Reset() { *m = ContainerStatusRequest{} } func (*ContainerStatusRequest) ProtoMessage() {} func (*ContainerStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{57} + return fileDescriptor_00212fb1f9d3bf1c, []int{71} } func (m *ContainerStatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4251,7 +5134,7 @@ type ContainerStatus struct { func (m *ContainerStatus) Reset() { *m = ContainerStatus{} } func (*ContainerStatus) ProtoMessage() {} func (*ContainerStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{58} + return fileDescriptor_00212fb1f9d3bf1c, []int{72} } func (m *ContainerStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4400,7 +5283,7 @@ type ContainerStatusResponse struct { func (m *ContainerStatusResponse) Reset() { *m = ContainerStatusResponse{} } func (*ContainerStatusResponse) ProtoMessage() {} func (*ContainerStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{59} + return fileDescriptor_00212fb1f9d3bf1c, []int{73} } func (m *ContainerStatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4461,7 +5344,7 @@ type UpdateContainerResourcesRequest struct { func (m *UpdateContainerResourcesRequest) Reset() { *m = UpdateContainerResourcesRequest{} } func (*UpdateContainerResourcesRequest) ProtoMessage() {} func (*UpdateContainerResourcesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{60} + return fileDescriptor_00212fb1f9d3bf1c, []int{74} } func (m *UpdateContainerResourcesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4526,7 +5409,7 @@ type UpdateContainerResourcesResponse struct { func (m *UpdateContainerResourcesResponse) Reset() { *m = UpdateContainerResourcesResponse{} } func (*UpdateContainerResourcesResponse) ProtoMessage() {} func (*UpdateContainerResourcesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{61} + return fileDescriptor_00212fb1f9d3bf1c, []int{75} } func (m *UpdateContainerResourcesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4569,7 +5452,7 @@ type ExecSyncRequest struct { func (m *ExecSyncRequest) Reset() { *m = ExecSyncRequest{} } func (*ExecSyncRequest) ProtoMessage() {} func (*ExecSyncRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{62} + return fileDescriptor_00212fb1f9d3bf1c, []int{76} } func (m *ExecSyncRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4633,7 +5516,7 @@ type ExecSyncResponse struct { func (m *ExecSyncResponse) Reset() { *m = ExecSyncResponse{} } func (*ExecSyncResponse) ProtoMessage() {} func (*ExecSyncResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{63} + return fileDescriptor_00212fb1f9d3bf1c, []int{77} } func (m *ExecSyncResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4709,7 +5592,7 @@ type ExecRequest struct { func (m *ExecRequest) Reset() { *m = ExecRequest{} } func (*ExecRequest) ProtoMessage() {} func (*ExecRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{64} + return fileDescriptor_00212fb1f9d3bf1c, []int{78} } func (m *ExecRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4790,7 +5673,7 @@ type ExecResponse struct { func (m *ExecResponse) Reset() { *m = ExecResponse{} } func (*ExecResponse) ProtoMessage() {} func (*ExecResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{65} + return fileDescriptor_00212fb1f9d3bf1c, []int{79} } func (m *ExecResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4851,7 +5734,7 @@ type AttachRequest struct { func (m *AttachRequest) Reset() { *m = AttachRequest{} } func (*AttachRequest) ProtoMessage() {} func (*AttachRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{66} + return fileDescriptor_00212fb1f9d3bf1c, []int{80} } func (m *AttachRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4925,7 +5808,7 @@ type AttachResponse struct { func (m *AttachResponse) Reset() { *m = AttachResponse{} } func (*AttachResponse) ProtoMessage() {} func (*AttachResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{67} + return fileDescriptor_00212fb1f9d3bf1c, []int{81} } func (m *AttachResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4973,7 +5856,7 @@ type PortForwardRequest struct { func (m *PortForwardRequest) Reset() { *m = PortForwardRequest{} } func (*PortForwardRequest) ProtoMessage() {} func (*PortForwardRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{68} + return fileDescriptor_00212fb1f9d3bf1c, []int{82} } func (m *PortForwardRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5026,7 +5909,7 @@ type PortForwardResponse struct { func (m *PortForwardResponse) Reset() { *m = PortForwardResponse{} } func (*PortForwardResponse) ProtoMessage() {} func (*PortForwardResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{69} + return fileDescriptor_00212fb1f9d3bf1c, []int{83} } func (m *PortForwardResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5072,7 +5955,7 @@ type ImageFilter struct { func (m *ImageFilter) Reset() { *m = ImageFilter{} } func (*ImageFilter) ProtoMessage() {} func (*ImageFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{70} + return fileDescriptor_00212fb1f9d3bf1c, []int{84} } func (m *ImageFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5118,7 +6001,7 @@ type ListImagesRequest struct { func (m *ListImagesRequest) Reset() { *m = ListImagesRequest{} } func (*ListImagesRequest) ProtoMessage() {} func (*ListImagesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{71} + return fileDescriptor_00212fb1f9d3bf1c, []int{85} } func (m *ListImagesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5180,7 +6063,7 @@ type Image struct { func (m *Image) Reset() { *m = Image{} } func (*Image) ProtoMessage() {} func (*Image) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{72} + return fileDescriptor_00212fb1f9d3bf1c, []int{86} } func (m *Image) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5268,7 +6151,7 @@ type ListImagesResponse struct { func (m *ListImagesResponse) Reset() { *m = ListImagesResponse{} } func (*ListImagesResponse) ProtoMessage() {} func (*ListImagesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{73} + return fileDescriptor_00212fb1f9d3bf1c, []int{87} } func (m *ListImagesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5316,7 +6199,7 @@ type ImageStatusRequest struct { func (m *ImageStatusRequest) Reset() { *m = ImageStatusRequest{} } func (*ImageStatusRequest) ProtoMessage() {} func (*ImageStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{74} + return fileDescriptor_00212fb1f9d3bf1c, []int{88} } func (m *ImageStatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5374,7 +6257,7 @@ type ImageStatusResponse struct { func (m *ImageStatusResponse) Reset() { *m = ImageStatusResponse{} } func (*ImageStatusResponse) ProtoMessage() {} func (*ImageStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{75} + return fileDescriptor_00212fb1f9d3bf1c, []int{89} } func (m *ImageStatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5435,7 +6318,7 @@ type AuthConfig struct { func (m *AuthConfig) Reset() { *m = AuthConfig{} } func (*AuthConfig) ProtoMessage() {} func (*AuthConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{76} + return fileDescriptor_00212fb1f9d3bf1c, []int{90} } func (m *AuthConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5520,7 +6403,7 @@ type PullImageRequest struct { func (m *PullImageRequest) Reset() { *m = PullImageRequest{} } func (*PullImageRequest) ProtoMessage() {} func (*PullImageRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{77} + return fileDescriptor_00212fb1f9d3bf1c, []int{91} } func (m *PullImageRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5581,7 +6464,7 @@ type PullImageResponse struct { func (m *PullImageResponse) Reset() { *m = PullImageResponse{} } func (*PullImageResponse) ProtoMessage() {} func (*PullImageResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{78} + return fileDescriptor_00212fb1f9d3bf1c, []int{92} } func (m *PullImageResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5627,7 +6510,7 @@ type RemoveImageRequest struct { func (m *RemoveImageRequest) Reset() { *m = RemoveImageRequest{} } func (*RemoveImageRequest) ProtoMessage() {} func (*RemoveImageRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{79} + return fileDescriptor_00212fb1f9d3bf1c, []int{93} } func (m *RemoveImageRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5671,7 +6554,7 @@ type RemoveImageResponse struct { func (m *RemoveImageResponse) Reset() { *m = RemoveImageResponse{} } func (*RemoveImageResponse) ProtoMessage() {} func (*RemoveImageResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{80} + return fileDescriptor_00212fb1f9d3bf1c, []int{94} } func (m *RemoveImageResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5711,7 +6594,7 @@ type NetworkConfig struct { func (m *NetworkConfig) Reset() { *m = NetworkConfig{} } func (*NetworkConfig) ProtoMessage() {} func (*NetworkConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{81} + return fileDescriptor_00212fb1f9d3bf1c, []int{95} } func (m *NetworkConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5756,7 +6639,7 @@ type RuntimeConfig struct { func (m *RuntimeConfig) Reset() { *m = RuntimeConfig{} } func (*RuntimeConfig) ProtoMessage() {} func (*RuntimeConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{82} + return fileDescriptor_00212fb1f9d3bf1c, []int{96} } func (m *RuntimeConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5801,7 +6684,7 @@ type UpdateRuntimeConfigRequest struct { func (m *UpdateRuntimeConfigRequest) Reset() { *m = UpdateRuntimeConfigRequest{} } func (*UpdateRuntimeConfigRequest) ProtoMessage() {} func (*UpdateRuntimeConfigRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{83} + return fileDescriptor_00212fb1f9d3bf1c, []int{97} } func (m *UpdateRuntimeConfigRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5845,7 +6728,7 @@ type UpdateRuntimeConfigResponse struct { func (m *UpdateRuntimeConfigResponse) Reset() { *m = UpdateRuntimeConfigResponse{} } func (*UpdateRuntimeConfigResponse) ProtoMessage() {} func (*UpdateRuntimeConfigResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{84} + return fileDescriptor_00212fb1f9d3bf1c, []int{98} } func (m *UpdateRuntimeConfigResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5903,7 +6786,7 @@ type RuntimeCondition struct { func (m *RuntimeCondition) Reset() { *m = RuntimeCondition{} } func (*RuntimeCondition) ProtoMessage() {} func (*RuntimeCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{85} + return fileDescriptor_00212fb1f9d3bf1c, []int{99} } func (m *RuntimeCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5971,7 +6854,7 @@ type RuntimeStatus struct { func (m *RuntimeStatus) Reset() { *m = RuntimeStatus{} } func (*RuntimeStatus) ProtoMessage() {} func (*RuntimeStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{86} + return fileDescriptor_00212fb1f9d3bf1c, []int{100} } func (m *RuntimeStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6017,7 +6900,7 @@ type StatusRequest struct { func (m *StatusRequest) Reset() { *m = StatusRequest{} } func (*StatusRequest) ProtoMessage() {} func (*StatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{87} + return fileDescriptor_00212fb1f9d3bf1c, []int{101} } func (m *StatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6068,7 +6951,7 @@ type StatusResponse struct { func (m *StatusResponse) Reset() { *m = StatusResponse{} } func (*StatusResponse) ProtoMessage() {} func (*StatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{88} + return fileDescriptor_00212fb1f9d3bf1c, []int{102} } func (m *StatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6119,7 +7002,7 @@ type ImageFsInfoRequest struct { func (m *ImageFsInfoRequest) Reset() { *m = ImageFsInfoRequest{} } func (*ImageFsInfoRequest) ProtoMessage() {} func (*ImageFsInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{89} + return fileDescriptor_00212fb1f9d3bf1c, []int{103} } func (m *ImageFsInfoRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6159,7 +7042,7 @@ type UInt64Value struct { func (m *UInt64Value) Reset() { *m = UInt64Value{} } func (*UInt64Value) ProtoMessage() {} func (*UInt64Value) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{90} + return fileDescriptor_00212fb1f9d3bf1c, []int{104} } func (m *UInt64Value) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6206,7 +7089,7 @@ type FilesystemIdentifier struct { func (m *FilesystemIdentifier) Reset() { *m = FilesystemIdentifier{} } func (*FilesystemIdentifier) ProtoMessage() {} func (*FilesystemIdentifier) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{91} + return fileDescriptor_00212fb1f9d3bf1c, []int{105} } func (m *FilesystemIdentifier) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6263,7 +7146,7 @@ type FilesystemUsage struct { func (m *FilesystemUsage) Reset() { *m = FilesystemUsage{} } func (*FilesystemUsage) ProtoMessage() {} func (*FilesystemUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{92} + return fileDescriptor_00212fb1f9d3bf1c, []int{106} } func (m *FilesystemUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6330,7 +7213,7 @@ type ImageFsInfoResponse struct { func (m *ImageFsInfoResponse) Reset() { *m = ImageFsInfoResponse{} } func (*ImageFsInfoResponse) ProtoMessage() {} func (*ImageFsInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{93} + return fileDescriptor_00212fb1f9d3bf1c, []int{107} } func (m *ImageFsInfoResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6376,7 +7259,7 @@ type ContainerStatsRequest struct { func (m *ContainerStatsRequest) Reset() { *m = ContainerStatsRequest{} } func (*ContainerStatsRequest) ProtoMessage() {} func (*ContainerStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{94} + return fileDescriptor_00212fb1f9d3bf1c, []int{108} } func (m *ContainerStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6422,7 +7305,7 @@ type ContainerStatsResponse struct { func (m *ContainerStatsResponse) Reset() { *m = ContainerStatsResponse{} } func (*ContainerStatsResponse) ProtoMessage() {} func (*ContainerStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{95} + return fileDescriptor_00212fb1f9d3bf1c, []int{109} } func (m *ContainerStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6468,7 +7351,7 @@ type ListContainerStatsRequest struct { func (m *ListContainerStatsRequest) Reset() { *m = ListContainerStatsRequest{} } func (*ListContainerStatsRequest) ProtoMessage() {} func (*ListContainerStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{96} + return fileDescriptor_00212fb1f9d3bf1c, []int{110} } func (m *ListContainerStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6522,7 +7405,7 @@ type ContainerStatsFilter struct { func (m *ContainerStatsFilter) Reset() { *m = ContainerStatsFilter{} } func (*ContainerStatsFilter) ProtoMessage() {} func (*ContainerStatsFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{97} + return fileDescriptor_00212fb1f9d3bf1c, []int{111} } func (m *ContainerStatsFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6582,7 +7465,7 @@ type ListContainerStatsResponse struct { func (m *ListContainerStatsResponse) Reset() { *m = ListContainerStatsResponse{} } func (*ListContainerStatsResponse) ProtoMessage() {} func (*ListContainerStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{98} + return fileDescriptor_00212fb1f9d3bf1c, []int{112} } func (m *ListContainerStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6638,7 +7521,7 @@ type ContainerAttributes struct { func (m *ContainerAttributes) Reset() { *m = ContainerAttributes{} } func (*ContainerAttributes) ProtoMessage() {} func (*ContainerAttributes) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{99} + return fileDescriptor_00212fb1f9d3bf1c, []int{113} } func (m *ContainerAttributes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6712,7 +7595,7 @@ type ContainerStats struct { func (m *ContainerStats) Reset() { *m = ContainerStats{} } func (*ContainerStats) ProtoMessage() {} func (*ContainerStats) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{100} + return fileDescriptor_00212fb1f9d3bf1c, []int{114} } func (m *ContainerStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6775,6 +7658,9 @@ type CpuUsage struct { Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Cumulative CPU usage (sum across all cores) since object creation. UsageCoreNanoSeconds *UInt64Value `protobuf:"bytes,2,opt,name=usage_core_nano_seconds,json=usageCoreNanoSeconds,proto3" json:"usage_core_nano_seconds,omitempty"` + // Total CPU usage (sum of all cores) averaged over the sample window. + // The "core" unit can be interpreted as CPU core-nanoseconds per second. + UsageNanoCores *UInt64Value `protobuf:"bytes,3,opt,name=usage_nano_cores,json=usageNanoCores,proto3" json:"usage_nano_cores,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_sizecache int32 `json:"-"` } @@ -6782,7 +7668,7 @@ type CpuUsage struct { func (m *CpuUsage) Reset() { *m = CpuUsage{} } func (*CpuUsage) ProtoMessage() {} func (*CpuUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{101} + return fileDescriptor_00212fb1f9d3bf1c, []int{115} } func (m *CpuUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6825,12 +7711,29 @@ func (m *CpuUsage) GetUsageCoreNanoSeconds() *UInt64Value { return nil } +func (m *CpuUsage) GetUsageNanoCores() *UInt64Value { + if m != nil { + return m.UsageNanoCores + } + return nil +} + // MemoryUsage provides the memory usage information. type MemoryUsage struct { // Timestamp in nanoseconds at which the information were collected. Must be > 0. Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // The amount of working set memory in bytes. - WorkingSetBytes *UInt64Value `protobuf:"bytes,2,opt,name=working_set_bytes,json=workingSetBytes,proto3" json:"working_set_bytes,omitempty"` + WorkingSetBytes *UInt64Value `protobuf:"bytes,2,opt,name=working_set_bytes,json=workingSetBytes,proto3" json:"working_set_bytes,omitempty"` + // Available memory for use. This is defined as the memory limit = workingSetBytes. + AvailableBytes *UInt64Value `protobuf:"bytes,3,opt,name=available_bytes,json=availableBytes,proto3" json:"available_bytes,omitempty"` + // Total memory in use. This includes all memory regardless of when it was accessed. + UsageBytes *UInt64Value `protobuf:"bytes,4,opt,name=usage_bytes,json=usageBytes,proto3" json:"usage_bytes,omitempty"` + // The amount of anonymous and swap cache memory (includes transparent hugepages). + RssBytes *UInt64Value `protobuf:"bytes,5,opt,name=rss_bytes,json=rssBytes,proto3" json:"rss_bytes,omitempty"` + // Cumulative number of minor page faults. + PageFaults *UInt64Value `protobuf:"bytes,6,opt,name=page_faults,json=pageFaults,proto3" json:"page_faults,omitempty"` + // Cumulative number of major page faults. + MajorPageFaults *UInt64Value `protobuf:"bytes,7,opt,name=major_page_faults,json=majorPageFaults,proto3" json:"major_page_faults,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_sizecache int32 `json:"-"` } @@ -6838,7 +7741,7 @@ type MemoryUsage struct { func (m *MemoryUsage) Reset() { *m = MemoryUsage{} } func (*MemoryUsage) ProtoMessage() {} func (*MemoryUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{102} + return fileDescriptor_00212fb1f9d3bf1c, []int{116} } func (m *MemoryUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6881,6 +7784,41 @@ func (m *MemoryUsage) GetWorkingSetBytes() *UInt64Value { return nil } +func (m *MemoryUsage) GetAvailableBytes() *UInt64Value { + if m != nil { + return m.AvailableBytes + } + return nil +} + +func (m *MemoryUsage) GetUsageBytes() *UInt64Value { + if m != nil { + return m.UsageBytes + } + return nil +} + +func (m *MemoryUsage) GetRssBytes() *UInt64Value { + if m != nil { + return m.RssBytes + } + return nil +} + +func (m *MemoryUsage) GetPageFaults() *UInt64Value { + if m != nil { + return m.PageFaults + } + return nil +} + +func (m *MemoryUsage) GetMajorPageFaults() *UInt64Value { + if m != nil { + return m.MajorPageFaults + } + return nil +} + type ReopenContainerLogRequest struct { // ID of the container for which to reopen the log. ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` @@ -6891,7 +7829,7 @@ type ReopenContainerLogRequest struct { func (m *ReopenContainerLogRequest) Reset() { *m = ReopenContainerLogRequest{} } func (*ReopenContainerLogRequest) ProtoMessage() {} func (*ReopenContainerLogRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{103} + return fileDescriptor_00212fb1f9d3bf1c, []int{117} } func (m *ReopenContainerLogRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6935,7 +7873,7 @@ type ReopenContainerLogResponse struct { func (m *ReopenContainerLogResponse) Reset() { *m = ReopenContainerLogResponse{} } func (*ReopenContainerLogResponse) ProtoMessage() {} func (*ReopenContainerLogResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{104} + return fileDescriptor_00212fb1f9d3bf1c, []int{118} } func (m *ReopenContainerLogResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7010,15 +7948,33 @@ func init() { proto.RegisterMapType((map[string]string)(nil), "runtime.v1alpha2.PodSandbox.AnnotationsEntry") proto.RegisterMapType((map[string]string)(nil), "runtime.v1alpha2.PodSandbox.LabelsEntry") proto.RegisterType((*ListPodSandboxResponse)(nil), "runtime.v1alpha2.ListPodSandboxResponse") + proto.RegisterType((*PodSandboxStatsRequest)(nil), "runtime.v1alpha2.PodSandboxStatsRequest") + proto.RegisterType((*PodSandboxStatsResponse)(nil), "runtime.v1alpha2.PodSandboxStatsResponse") + proto.RegisterType((*PodSandboxStatsFilter)(nil), "runtime.v1alpha2.PodSandboxStatsFilter") + proto.RegisterMapType((map[string]string)(nil), "runtime.v1alpha2.PodSandboxStatsFilter.LabelSelectorEntry") + proto.RegisterType((*ListPodSandboxStatsRequest)(nil), "runtime.v1alpha2.ListPodSandboxStatsRequest") + proto.RegisterType((*ListPodSandboxStatsResponse)(nil), "runtime.v1alpha2.ListPodSandboxStatsResponse") + proto.RegisterType((*PodSandboxAttributes)(nil), "runtime.v1alpha2.PodSandboxAttributes") + proto.RegisterMapType((map[string]string)(nil), "runtime.v1alpha2.PodSandboxAttributes.AnnotationsEntry") + proto.RegisterMapType((map[string]string)(nil), "runtime.v1alpha2.PodSandboxAttributes.LabelsEntry") + proto.RegisterType((*PodSandboxStats)(nil), "runtime.v1alpha2.PodSandboxStats") + proto.RegisterType((*LinuxPodSandboxStats)(nil), "runtime.v1alpha2.LinuxPodSandboxStats") + proto.RegisterType((*WindowsPodSandboxStats)(nil), "runtime.v1alpha2.WindowsPodSandboxStats") + proto.RegisterType((*NetworkUsage)(nil), "runtime.v1alpha2.NetworkUsage") + proto.RegisterType((*NetworkInterfaceUsage)(nil), "runtime.v1alpha2.NetworkInterfaceUsage") + proto.RegisterType((*ProcessUsage)(nil), "runtime.v1alpha2.ProcessUsage") proto.RegisterType((*ImageSpec)(nil), "runtime.v1alpha2.ImageSpec") proto.RegisterMapType((map[string]string)(nil), "runtime.v1alpha2.ImageSpec.AnnotationsEntry") proto.RegisterType((*KeyValue)(nil), "runtime.v1alpha2.KeyValue") proto.RegisterType((*LinuxContainerResources)(nil), "runtime.v1alpha2.LinuxContainerResources") + proto.RegisterMapType((map[string]string)(nil), "runtime.v1alpha2.LinuxContainerResources.UnifiedEntry") proto.RegisterType((*HugepageLimit)(nil), "runtime.v1alpha2.HugepageLimit") proto.RegisterType((*SELinuxOption)(nil), "runtime.v1alpha2.SELinuxOption") proto.RegisterType((*Capability)(nil), "runtime.v1alpha2.Capability") proto.RegisterType((*LinuxContainerSecurityContext)(nil), "runtime.v1alpha2.LinuxContainerSecurityContext") proto.RegisterType((*LinuxContainerConfig)(nil), "runtime.v1alpha2.LinuxContainerConfig") + proto.RegisterType((*WindowsSandboxSecurityContext)(nil), "runtime.v1alpha2.WindowsSandboxSecurityContext") + proto.RegisterType((*WindowsPodSandboxConfig)(nil), "runtime.v1alpha2.WindowsPodSandboxConfig") proto.RegisterType((*WindowsContainerSecurityContext)(nil), "runtime.v1alpha2.WindowsContainerSecurityContext") proto.RegisterType((*WindowsContainerConfig)(nil), "runtime.v1alpha2.WindowsContainerConfig") proto.RegisterType((*WindowsContainerResources)(nil), "runtime.v1alpha2.WindowsContainerResources") @@ -7105,322 +8061,359 @@ func init() { func init() { proto.RegisterFile("api.proto", fileDescriptor_00212fb1f9d3bf1c) } var fileDescriptor_00212fb1f9d3bf1c = []byte{ - // 5033 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x7c, 0x4d, 0x6c, 0x1b, 0x49, - 0x76, 0xbf, 0x9a, 0xa4, 0x24, 0xf2, 0x51, 0xa4, 0xa8, 0xb2, 0x6c, 0xd1, 0xf4, 0xd8, 0x63, 0xb7, - 0xc7, 0x9f, 0x33, 0x96, 0xd7, 0x9a, 0x59, 0xcf, 0xdf, 0xf6, 0x8c, 0x6d, 0x5a, 0x92, 0x6d, 0xfe, - 0xd7, 0xa6, 0x98, 0xa6, 0x34, 0x1f, 0x3b, 0x03, 0xf4, 0xb6, 0xd8, 0x25, 0xaa, 0xd7, 0x64, 0x77, - 0x4f, 0x77, 0xd3, 0xb6, 0x36, 0x40, 0xb0, 0xc0, 0x02, 0x7b, 0xc8, 0x29, 0xe7, 0x1c, 0x37, 0x87, - 0x1c, 0x72, 0xca, 0x21, 0xa7, 0x9c, 0x36, 0xc8, 0x61, 0x11, 0x20, 0x48, 0x4e, 0x9b, 0x04, 0xb9, - 0x64, 0x26, 0x08, 0xb0, 0x08, 0x90, 0x20, 0xc8, 0x39, 0x87, 0xa0, 0xbe, 0xfa, 0xbb, 0xf9, 0x61, - 0x7b, 0x76, 0x36, 0x27, 0xb1, 0x5e, 0xbf, 0xf7, 0xea, 0xf5, 0xab, 0x57, 0xaf, 0x5e, 0xfd, 0xaa, - 0x5a, 0x50, 0xd2, 0x6c, 0x63, 0xdd, 0x76, 0x2c, 0xcf, 0x42, 0x35, 0x67, 0x64, 0x7a, 0xc6, 0x10, - 0xaf, 0x3f, 0xbf, 0xa1, 0x0d, 0xec, 0x43, 0x6d, 0xa3, 0x71, 0xad, 0x6f, 0x78, 0x87, 0xa3, 0xfd, - 0xf5, 0x9e, 0x35, 0xbc, 0xde, 0xb7, 0xfa, 0xd6, 0x75, 0xca, 0xb8, 0x3f, 0x3a, 0xa0, 0x2d, 0xda, - 0xa0, 0xbf, 0x98, 0x02, 0xf9, 0x2a, 0x54, 0x3f, 0xc1, 0x8e, 0x6b, 0x58, 0xa6, 0x82, 0xbf, 0x1a, - 0x61, 0xd7, 0x43, 0x75, 0x58, 0x7c, 0xce, 0x28, 0x75, 0xe9, 0xac, 0x74, 0xb9, 0xa4, 0x88, 0xa6, - 0xfc, 0xa7, 0x12, 0x2c, 0xfb, 0xcc, 0xae, 0x6d, 0x99, 0x2e, 0xce, 0xe6, 0x46, 0xe7, 0x60, 0x89, - 0x1b, 0xa7, 0x9a, 0xda, 0x10, 0xd7, 0x73, 0xf4, 0x71, 0x99, 0xd3, 0xda, 0xda, 0x10, 0xa3, 0x4b, - 0xb0, 0x2c, 0x58, 0x84, 0x92, 0x3c, 0xe5, 0xaa, 0x72, 0x32, 0xef, 0x0d, 0xad, 0xc3, 0x31, 0xc1, - 0xa8, 0xd9, 0x86, 0xcf, 0x5c, 0xa0, 0xcc, 0x2b, 0xfc, 0x51, 0xd3, 0x36, 0x38, 0xbf, 0xfc, 0x05, - 0x94, 0xb6, 0xda, 0xdd, 0x4d, 0xcb, 0x3c, 0x30, 0xfa, 0xc4, 0x44, 0x17, 0x3b, 0x44, 0xa6, 0x2e, - 0x9d, 0xcd, 0x13, 0x13, 0x79, 0x13, 0x35, 0xa0, 0xe8, 0x62, 0xcd, 0xe9, 0x1d, 0x62, 0xb7, 0x9e, - 0xa3, 0x8f, 0xfc, 0x36, 0x91, 0xb2, 0x6c, 0xcf, 0xb0, 0x4c, 0xb7, 0x9e, 0x67, 0x52, 0xbc, 0x29, - 0xff, 0x42, 0x82, 0x72, 0xc7, 0x72, 0xbc, 0xa7, 0x9a, 0x6d, 0x1b, 0x66, 0x1f, 0xdd, 0x84, 0x22, - 0xf5, 0x65, 0xcf, 0x1a, 0x50, 0x1f, 0x54, 0x37, 0x1a, 0xeb, 0xf1, 0x61, 0x59, 0xef, 0x70, 0x0e, - 0xc5, 0xe7, 0x45, 0x17, 0xa0, 0xda, 0xb3, 0x4c, 0x4f, 0x33, 0x4c, 0xec, 0xa8, 0xb6, 0xe5, 0x78, - 0xd4, 0x45, 0xf3, 0x4a, 0xc5, 0xa7, 0x92, 0x5e, 0xd0, 0x29, 0x28, 0x1d, 0x5a, 0xae, 0xc7, 0x38, - 0xf2, 0x94, 0xa3, 0x48, 0x08, 0xf4, 0xe1, 0x1a, 0x2c, 0xd2, 0x87, 0x86, 0xcd, 0x9d, 0xb1, 0x40, - 0x9a, 0x2d, 0x5b, 0xfe, 0xb5, 0x04, 0xf3, 0x4f, 0xad, 0x91, 0xe9, 0xc5, 0xba, 0xd1, 0xbc, 0x43, - 0x3e, 0x50, 0xa1, 0x6e, 0x34, 0xef, 0x30, 0xe8, 0x86, 0x70, 0xb0, 0xb1, 0x62, 0xdd, 0x90, 0x87, - 0x0d, 0x28, 0x3a, 0x58, 0xd3, 0x2d, 0x73, 0x70, 0x44, 0x4d, 0x28, 0x2a, 0x7e, 0x9b, 0x0c, 0xa2, - 0x8b, 0x07, 0x86, 0x39, 0x7a, 0xa9, 0x3a, 0x78, 0xa0, 0xed, 0xe3, 0x01, 0x35, 0xa5, 0xa8, 0x54, - 0x39, 0x59, 0x61, 0x54, 0xb4, 0x05, 0x65, 0xdb, 0xb1, 0x6c, 0xad, 0xaf, 0x11, 0x3f, 0xd6, 0xe7, - 0xa9, 0xab, 0xe4, 0xa4, 0xab, 0xa8, 0xd9, 0x9d, 0x80, 0x53, 0x09, 0x8b, 0xc9, 0x7f, 0x27, 0xc1, - 0x32, 0x09, 0x1e, 0xd7, 0xd6, 0x7a, 0x78, 0x87, 0x0e, 0x09, 0xba, 0x05, 0x8b, 0x26, 0xf6, 0x5e, - 0x58, 0xce, 0x33, 0x3e, 0x00, 0x6f, 0x27, 0xb5, 0xfa, 0x32, 0x4f, 0x2d, 0x1d, 0x2b, 0x82, 0x1f, - 0xdd, 0x80, 0xbc, 0x6d, 0xe8, 0xf4, 0x85, 0xa7, 0x10, 0x23, 0xbc, 0x44, 0xc4, 0xb0, 0x7b, 0xd4, - 0x0f, 0xd3, 0x88, 0x18, 0x76, 0x8f, 0x38, 0xd7, 0xd3, 0x9c, 0x3e, 0xf6, 0x54, 0x43, 0xe7, 0x03, - 0x55, 0x64, 0x84, 0x96, 0x2e, 0xcb, 0x00, 0x2d, 0xd3, 0xbb, 0xf9, 0xc1, 0x27, 0xda, 0x60, 0x84, - 0xd1, 0x2a, 0xcc, 0x3f, 0x27, 0x3f, 0xe8, 0x9b, 0xe4, 0x15, 0xd6, 0x90, 0xbf, 0x2e, 0xc0, 0xa9, - 0x27, 0xc4, 0x99, 0x5d, 0xcd, 0xd4, 0xf7, 0xad, 0x97, 0x5d, 0xdc, 0x1b, 0x39, 0x86, 0x77, 0xb4, - 0x69, 0x99, 0x1e, 0x7e, 0xe9, 0xa1, 0x36, 0xac, 0x98, 0xa2, 0x5b, 0x55, 0xc4, 0x2d, 0xd1, 0x50, - 0xde, 0x38, 0x37, 0xc6, 0x42, 0xe6, 0x3f, 0xa5, 0x66, 0x46, 0x09, 0x2e, 0x7a, 0x1c, 0x0c, 0xaa, - 0xd0, 0x96, 0xa3, 0xda, 0x52, 0xde, 0xb7, 0xbb, 0x4d, 0x2d, 0xe3, 0xba, 0xc4, 0xa8, 0x0b, 0x4d, - 0x1f, 0x01, 0x99, 0xf2, 0xaa, 0xe6, 0xaa, 0x23, 0x17, 0x3b, 0xd4, 0x6b, 0xe5, 0x8d, 0xb7, 0x92, - 0x5a, 0x02, 0x17, 0x28, 0x25, 0x67, 0x64, 0x36, 0xdd, 0x3d, 0x17, 0x3b, 0xe8, 0x2e, 0x4d, 0x22, - 0x44, 0xba, 0xef, 0x58, 0x23, 0xbb, 0x5e, 0x9c, 0x42, 0x1c, 0xa8, 0xf8, 0x23, 0xc2, 0x4f, 0x33, - 0x0c, 0x0f, 0x54, 0xd5, 0xb1, 0x2c, 0xef, 0xc0, 0x15, 0xc1, 0x29, 0xc8, 0x0a, 0xa5, 0xa2, 0xeb, - 0x70, 0xcc, 0x1d, 0xd9, 0xf6, 0x00, 0x0f, 0xb1, 0xe9, 0x69, 0x03, 0xd6, 0x9d, 0x5b, 0x9f, 0x3f, - 0x9b, 0xbf, 0x9c, 0x57, 0x50, 0xf8, 0x11, 0x55, 0xec, 0xa2, 0x33, 0x00, 0xb6, 0x63, 0x3c, 0x37, - 0x06, 0xb8, 0x8f, 0xf5, 0xfa, 0x02, 0x55, 0x1a, 0xa2, 0xa0, 0x3b, 0x24, 0xeb, 0xf4, 0x7a, 0xd6, - 0xd0, 0xae, 0x97, 0xb2, 0xc6, 0x41, 0x8c, 0x62, 0xc7, 0xb1, 0x0e, 0x8c, 0x01, 0x56, 0x84, 0x04, - 0xfa, 0x18, 0x8a, 0x9a, 0x6d, 0x6b, 0xce, 0xd0, 0x72, 0xea, 0x30, 0xad, 0xb4, 0x2f, 0x82, 0x3e, - 0x80, 0x55, 0xae, 0x49, 0xb5, 0xd9, 0x43, 0x36, 0xad, 0x17, 0x49, 0xe4, 0x3d, 0xc8, 0xd5, 0x25, - 0x05, 0xf1, 0xe7, 0x5c, 0x96, 0x4c, 0x72, 0xf9, 0x6f, 0x24, 0x58, 0x8e, 0xe9, 0x44, 0x1d, 0x58, - 0x12, 0x1a, 0xbc, 0x23, 0x1b, 0xf3, 0xe9, 0x75, 0x6d, 0xa2, 0x31, 0xeb, 0xfc, 0xef, 0xee, 0x91, - 0x8d, 0xe9, 0xfc, 0x15, 0x0d, 0x74, 0x1e, 0x2a, 0x03, 0xab, 0xa7, 0x0d, 0x68, 0xb2, 0x71, 0xf0, - 0x01, 0xcf, 0x35, 0x4b, 0x3e, 0x51, 0xc1, 0x07, 0xf2, 0x7d, 0x28, 0x87, 0x14, 0x20, 0x04, 0x55, - 0x85, 0x75, 0xb8, 0x85, 0x0f, 0xb4, 0xd1, 0xc0, 0xab, 0xcd, 0xa1, 0x2a, 0xc0, 0x9e, 0xd9, 0x23, - 0x19, 0xde, 0xc4, 0x7a, 0x4d, 0x42, 0x15, 0x28, 0x3d, 0x11, 0x2a, 0x6a, 0x39, 0xf9, 0x17, 0x39, - 0x38, 0x4e, 0xc3, 0xb2, 0x63, 0xe9, 0x7c, 0xce, 0xf0, 0xe5, 0xe0, 0x3c, 0x54, 0x7a, 0x74, 0x74, - 0x55, 0x5b, 0x73, 0xb0, 0xe9, 0xf1, 0x74, 0xb8, 0xc4, 0x88, 0x1d, 0x4a, 0x43, 0x9f, 0x41, 0xcd, - 0xe5, 0x6f, 0xa4, 0xf6, 0xd8, 0x1c, 0xe3, 0x13, 0x20, 0xe5, 0xdd, 0xc7, 0x4c, 0x4c, 0x65, 0xd9, - 0x4d, 0xcc, 0xd4, 0x45, 0xf7, 0xc8, 0xed, 0x79, 0x03, 0xb6, 0xae, 0x94, 0x37, 0x3e, 0xc8, 0x50, - 0x18, 0x37, 0x7c, 0xbd, 0xcb, 0xc4, 0xb6, 0x4d, 0xcf, 0x39, 0x52, 0x84, 0x92, 0xc6, 0x6d, 0x58, - 0x0a, 0x3f, 0x40, 0x35, 0xc8, 0x3f, 0xc3, 0x47, 0xfc, 0xa5, 0xc8, 0xcf, 0x20, 0xa3, 0x30, 0x4f, - 0xb3, 0xc6, 0xed, 0xdc, 0xff, 0x93, 0x64, 0x07, 0x50, 0xd0, 0xcb, 0x53, 0xec, 0x69, 0xba, 0xe6, - 0x69, 0x08, 0x41, 0x81, 0x2e, 0xd8, 0x4c, 0x05, 0xfd, 0x4d, 0xb4, 0x8e, 0x78, 0x9a, 0x2c, 0x29, - 0xe4, 0x27, 0x7a, 0x0b, 0x4a, 0x7e, 0xd6, 0xe0, 0xab, 0x76, 0x40, 0x20, 0xab, 0xa7, 0xe6, 0x79, - 0x78, 0x68, 0x7b, 0x74, 0xbe, 0x55, 0x14, 0xd1, 0x94, 0xff, 0xb3, 0x00, 0xb5, 0xc4, 0x98, 0xdc, - 0x87, 0xe2, 0x90, 0x77, 0xcf, 0xb3, 0xd6, 0x3b, 0x29, 0x4b, 0x68, 0xc2, 0x54, 0xc5, 0x97, 0x22, - 0x2b, 0x14, 0x19, 0xf9, 0x50, 0xa5, 0xe1, 0xb7, 0x59, 0xc8, 0xf5, 0x55, 0xdd, 0x70, 0x70, 0xcf, - 0xb3, 0x9c, 0x23, 0x6e, 0xee, 0xd2, 0xc0, 0xea, 0x6f, 0x09, 0x1a, 0xba, 0x0d, 0xa0, 0x9b, 0xae, - 0x4a, 0x23, 0xaa, 0x4f, 0x8d, 0x2e, 0x6f, 0x9c, 0x4a, 0x1a, 0xe1, 0x97, 0x15, 0x4a, 0x49, 0x37, - 0x5d, 0x6e, 0xfe, 0x03, 0xa8, 0x90, 0xd5, 0x59, 0x1d, 0xb2, 0x8a, 0x80, 0xa5, 0x8d, 0xf2, 0xc6, - 0xe9, 0xb4, 0x77, 0xf0, 0xeb, 0x06, 0x65, 0xc9, 0x0e, 0x1a, 0x2e, 0x7a, 0x08, 0x0b, 0x74, 0x99, - 0x74, 0xeb, 0x0b, 0x54, 0x78, 0x7d, 0x9c, 0x03, 0x78, 0x44, 0x3c, 0xa1, 0x02, 0x2c, 0x20, 0xb8, - 0x34, 0xda, 0x83, 0xb2, 0x66, 0x9a, 0x96, 0xa7, 0xb1, 0xac, 0xbd, 0x48, 0x95, 0xbd, 0x3f, 0x85, - 0xb2, 0x66, 0x20, 0xc5, 0x34, 0x86, 0xf5, 0xa0, 0x8f, 0x61, 0x9e, 0xa6, 0x75, 0x9e, 0x81, 0x2f, - 0x4d, 0x19, 0xb4, 0x0a, 0x93, 0x6a, 0xdc, 0x82, 0x72, 0xc8, 0xd8, 0x59, 0x82, 0xb4, 0x71, 0x17, - 0x6a, 0x71, 0xd3, 0x66, 0x0a, 0xf2, 0xdf, 0x87, 0x55, 0x65, 0x64, 0x06, 0x86, 0x89, 0x3a, 0xf7, - 0x36, 0x2c, 0xf0, 0xc1, 0x66, 0x11, 0x27, 0x4f, 0xf6, 0x91, 0xc2, 0x25, 0xc2, 0x85, 0xeb, 0xa1, - 0x66, 0xea, 0x03, 0xec, 0xf0, 0x7e, 0x45, 0xe1, 0xfa, 0x98, 0x51, 0xe5, 0x8f, 0xe1, 0x78, 0xac, - 0x73, 0x5e, 0x37, 0xbf, 0x03, 0x55, 0xdb, 0xd2, 0x55, 0x97, 0x91, 0x49, 0x59, 0xc0, 0xd3, 0x90, - 0xed, 0xf3, 0xb6, 0x74, 0x22, 0xde, 0xf5, 0x2c, 0x3b, 0x69, 0xfc, 0x74, 0xe2, 0x75, 0x38, 0x11, - 0x17, 0x67, 0xdd, 0xcb, 0xf7, 0x60, 0x4d, 0xc1, 0x43, 0xeb, 0x39, 0x7e, 0x55, 0xd5, 0x0d, 0xa8, - 0x27, 0x15, 0x70, 0xe5, 0x9f, 0xc3, 0x5a, 0x40, 0xed, 0x7a, 0x9a, 0x37, 0x72, 0x67, 0x52, 0xce, - 0x37, 0x15, 0xfb, 0x96, 0xcb, 0x86, 0xb3, 0xa8, 0x88, 0xa6, 0xbc, 0x06, 0xf3, 0x1d, 0x4b, 0x6f, - 0x75, 0x50, 0x15, 0x72, 0x86, 0xcd, 0x85, 0x73, 0x86, 0x2d, 0x1b, 0xe1, 0x3e, 0xdb, 0xac, 0xb8, - 0x63, 0x5d, 0xc7, 0x59, 0xd1, 0x5d, 0xa8, 0x6a, 0xba, 0x6e, 0x90, 0x70, 0xd2, 0x06, 0xaa, 0x61, - 0xb3, 0xda, 0xbf, 0xbc, 0xb1, 0x96, 0x1a, 0x00, 0xad, 0x8e, 0x52, 0x09, 0xd8, 0x5b, 0xb6, 0x2b, - 0x3f, 0x86, 0x92, 0x5f, 0x40, 0x91, 0x65, 0x3e, 0x5a, 0x20, 0x4d, 0x51, 0x6e, 0xf9, 0x3b, 0x89, - 0xdd, 0xc4, 0x1a, 0xc5, 0x4d, 0xbe, 0x03, 0xe0, 0xe7, 0x52, 0x51, 0xc7, 0x9d, 0x1a, 0xa3, 0x58, - 0x09, 0xb1, 0xcb, 0x3f, 0x9b, 0x0f, 0x67, 0xd8, 0x90, 0x13, 0x74, 0xdf, 0x09, 0x7a, 0x24, 0xe3, - 0xe6, 0x5e, 0x29, 0xe3, 0x7e, 0x08, 0xf3, 0xae, 0xa7, 0x79, 0x98, 0x17, 0xc2, 0xe7, 0xc6, 0x89, - 0x13, 0x23, 0xb0, 0xc2, 0xf8, 0xd1, 0x69, 0x80, 0x9e, 0x83, 0x35, 0x0f, 0xeb, 0xaa, 0xc6, 0x96, - 0x87, 0xbc, 0x52, 0xe2, 0x94, 0xa6, 0x87, 0x36, 0x83, 0x62, 0x7e, 0x9e, 0x1a, 0x76, 0x65, 0x9c, - 0xe6, 0xc8, 0x50, 0x07, 0x65, 0xbd, 0x9f, 0xae, 0x16, 0xa6, 0x4c, 0x57, 0x5c, 0x01, 0x93, 0x0a, - 0x25, 0xe3, 0xc5, 0xc9, 0xc9, 0x98, 0x89, 0x4e, 0x93, 0x8c, 0x8b, 0x93, 0x93, 0x31, 0x57, 0x36, - 0x3e, 0x19, 0xa7, 0xa4, 0x9f, 0x52, 0x5a, 0xfa, 0xf9, 0x2e, 0xd3, 0xee, 0x3f, 0x49, 0x50, 0x4f, - 0x66, 0x01, 0x9e, 0xfd, 0x6e, 0xc3, 0x82, 0x4b, 0x29, 0xd3, 0xe4, 0x5e, 0x2e, 0xcb, 0x25, 0xd0, - 0x63, 0x28, 0x18, 0xe6, 0x81, 0xc5, 0x27, 0xed, 0x07, 0x53, 0x48, 0xf2, 0x5e, 0xd7, 0x5b, 0xe6, - 0x81, 0xc5, 0xbc, 0x49, 0x35, 0x34, 0x3e, 0x84, 0x92, 0x4f, 0x9a, 0xe9, 0xdd, 0x76, 0x60, 0x35, - 0x16, 0xdb, 0x6c, 0xef, 0xe6, 0x4f, 0x09, 0x69, 0xb6, 0x29, 0x21, 0xff, 0x34, 0x17, 0x9e, 0xb2, - 0x0f, 0x8d, 0x81, 0x87, 0x9d, 0xc4, 0x94, 0xfd, 0x48, 0x68, 0x67, 0xf3, 0xf5, 0xe2, 0x44, 0xed, - 0x6c, 0x3b, 0xc4, 0x67, 0xdd, 0x97, 0x50, 0xa5, 0x41, 0xa9, 0xba, 0x78, 0x40, 0x4b, 0x1e, 0x5e, - 0x7e, 0x7e, 0x7f, 0x9c, 0x1a, 0x66, 0x09, 0x0b, 0xed, 0x2e, 0x97, 0x63, 0x1e, 0xac, 0x0c, 0xc2, - 0xb4, 0xc6, 0x7d, 0x40, 0x49, 0xa6, 0x99, 0x7c, 0xda, 0x25, 0xb9, 0xd0, 0xf5, 0x52, 0xd7, 0xe9, - 0x03, 0x6a, 0xc6, 0x34, 0xb1, 0xc2, 0x0c, 0x56, 0xb8, 0x84, 0xfc, 0x1f, 0x79, 0x80, 0xe0, 0xe1, - 0xff, 0xa1, 0x24, 0x78, 0xdf, 0x4f, 0x40, 0xac, 0x94, 0xbc, 0x3c, 0x4e, 0x71, 0x6a, 0xea, 0xd9, - 0x89, 0xa6, 0x1e, 0x56, 0x54, 0x5e, 0x1b, 0xab, 0x66, 0xe6, 0xa4, 0xb3, 0xf8, 0xbb, 0x96, 0x74, - 0x9e, 0xc0, 0x89, 0x78, 0x10, 0xf1, 0x8c, 0xb3, 0x01, 0xf3, 0x86, 0x87, 0x87, 0x0c, 0x02, 0x4c, - 0x45, 0x10, 0x42, 0x42, 0x8c, 0x55, 0xfe, 0x73, 0x09, 0x4a, 0xad, 0xa1, 0xd6, 0xc7, 0x5d, 0x1b, - 0xf7, 0x48, 0xaf, 0x06, 0x69, 0x70, 0x4b, 0x58, 0x03, 0xb5, 0xa3, 0x6e, 0x66, 0x49, 0xe9, 0xbd, - 0x14, 0x7c, 0x42, 0xe8, 0x19, 0xef, 0xe5, 0xd7, 0xf6, 0xc0, 0x06, 0x14, 0x7f, 0x80, 0x8f, 0x58, - 0x3a, 0x9a, 0x52, 0x4e, 0xfe, 0x87, 0x1c, 0xac, 0xd1, 0xe5, 0x70, 0x53, 0x20, 0x82, 0x0a, 0x76, - 0xad, 0x91, 0xd3, 0xc3, 0x2e, 0x8d, 0x53, 0x7b, 0xa4, 0xda, 0xd8, 0x31, 0x2c, 0x9d, 0x63, 0x52, - 0xa5, 0x9e, 0x3d, 0xea, 0x50, 0x02, 0x3a, 0x05, 0xa4, 0xa1, 0x7e, 0x35, 0xb2, 0xf8, 0x14, 0xca, - 0x2b, 0xc5, 0x9e, 0x3d, 0xfa, 0x3d, 0xd2, 0x16, 0xb2, 0xee, 0xa1, 0xe6, 0x60, 0x97, 0xce, 0x10, - 0x26, 0xdb, 0xa5, 0x04, 0x74, 0x03, 0x8e, 0x0f, 0xf1, 0xd0, 0x72, 0x8e, 0xd4, 0x81, 0x31, 0x34, - 0x3c, 0xd5, 0x30, 0xd5, 0xfd, 0x23, 0x0f, 0xbb, 0x7c, 0x36, 0x20, 0xf6, 0xf0, 0x09, 0x79, 0xd6, - 0x32, 0x1f, 0x90, 0x27, 0x48, 0x86, 0x8a, 0x65, 0x0d, 0x55, 0xb7, 0x67, 0x39, 0x58, 0xd5, 0xf4, - 0x1f, 0xd3, 0x0a, 0x21, 0xaf, 0x94, 0x2d, 0x6b, 0xd8, 0x25, 0xb4, 0xa6, 0xfe, 0x63, 0xf4, 0x36, - 0x94, 0x7b, 0xf6, 0xc8, 0xc5, 0x9e, 0x4a, 0xfe, 0xd0, 0x02, 0xa0, 0xa4, 0x00, 0x23, 0x6d, 0xda, - 0x23, 0x37, 0xc4, 0x30, 0x24, 0x01, 0xb1, 0x18, 0x66, 0x78, 0x8a, 0x87, 0x14, 0xfc, 0x3a, 0x1c, - 0xf5, 0xb1, 0xad, 0xf5, 0x31, 0x33, 0x4d, 0xac, 0xdc, 0x29, 0xe0, 0xd7, 0x63, 0xce, 0x48, 0xcd, - 0x54, 0xaa, 0x87, 0xe1, 0xa6, 0x2b, 0x3f, 0x80, 0x4a, 0x84, 0x81, 0xf8, 0x8b, 0xaa, 0x75, 0x8d, - 0x9f, 0x88, 0x40, 0x2a, 0x12, 0x42, 0xd7, 0xf8, 0x09, 0x85, 0xfe, 0x68, 0x77, 0xd4, 0x91, 0x05, - 0x85, 0x35, 0x64, 0x0d, 0x2a, 0x11, 0x84, 0x8d, 0xec, 0xcf, 0x29, 0x94, 0xc6, 0xf7, 0xe7, 0xe4, - 0x37, 0xa1, 0x39, 0xd6, 0x40, 0x8c, 0x2b, 0xfd, 0x4d, 0x68, 0x14, 0xb3, 0x61, 0xbb, 0x5d, 0xfa, - 0x9b, 0x76, 0x81, 0x9f, 0x73, 0x88, 0xb6, 0xa4, 0xb0, 0x86, 0xac, 0x03, 0x6c, 0x6a, 0xb6, 0xb6, - 0x6f, 0x0c, 0x0c, 0xef, 0x08, 0x5d, 0x81, 0x9a, 0xa6, 0xeb, 0x6a, 0x4f, 0x50, 0x0c, 0x2c, 0x80, - 0xf3, 0x65, 0x4d, 0xd7, 0x37, 0x43, 0x64, 0xf4, 0x2e, 0xac, 0xe8, 0x8e, 0x65, 0x47, 0x79, 0x19, - 0x92, 0x5e, 0x23, 0x0f, 0xc2, 0xcc, 0xf2, 0x6f, 0x16, 0xe0, 0x74, 0x34, 0xcc, 0xe2, 0x28, 0xe6, - 0x7d, 0x58, 0x8a, 0xf5, 0x9a, 0x81, 0xf6, 0x05, 0xd6, 0x2a, 0x11, 0x89, 0x18, 0x2a, 0x97, 0x4b, - 0xa0, 0x72, 0xa9, 0x38, 0x69, 0xfe, 0x8d, 0xe2, 0xa4, 0x85, 0x37, 0x82, 0x93, 0xce, 0xbf, 0x1e, - 0x4e, 0xba, 0x34, 0x23, 0x4e, 0x7a, 0x91, 0x26, 0x77, 0xd1, 0x3b, 0x45, 0x51, 0xd8, 0xc4, 0xa9, - 0xf8, 0x7d, 0x98, 0xe2, 0xc4, 0x26, 0x86, 0xa7, 0x2e, 0xce, 0x82, 0xa7, 0x16, 0x33, 0xf1, 0xd4, - 0xb3, 0xb0, 0x64, 0x5a, 0xaa, 0x89, 0x5f, 0xa8, 0x64, 0xb8, 0xdc, 0x7a, 0x99, 0x8d, 0x9d, 0x69, - 0xb5, 0xf1, 0x8b, 0x0e, 0xa1, 0xa0, 0x73, 0xb0, 0x34, 0xd4, 0xdc, 0x67, 0x58, 0xa7, 0x60, 0xa6, - 0x5b, 0xaf, 0xd0, 0x38, 0x2b, 0x33, 0x5a, 0x87, 0x90, 0xd0, 0x05, 0xf0, 0xed, 0xe0, 0x4c, 0x55, - 0xca, 0x54, 0x11, 0x54, 0xc6, 0x16, 0xc2, 0x66, 0x97, 0x5f, 0x0b, 0x9b, 0xad, 0xcd, 0x8e, 0xcd, - 0x5e, 0x83, 0x9a, 0xf8, 0x2d, 0xc0, 0x59, 0x56, 0xbc, 0x53, 0x5c, 0x76, 0x59, 0x3c, 0x13, 0x00, - 0x6c, 0x16, 0x94, 0x0b, 0x63, 0xa1, 0xdc, 0xbf, 0x94, 0x60, 0x35, 0x3a, 0xd5, 0x38, 0x52, 0xf5, - 0x08, 0x4a, 0x8e, 0xc8, 0xed, 0x7c, 0x7a, 0x5d, 0xc9, 0xd8, 0x1b, 0x25, 0x17, 0x03, 0x25, 0x90, - 0x45, 0x3f, 0xcc, 0x04, 0x48, 0xaf, 0x4f, 0xd2, 0x37, 0x09, 0x22, 0x95, 0x1d, 0x78, 0xfb, 0x53, - 0xc3, 0xd4, 0xad, 0x17, 0x6e, 0x66, 0xa6, 0x48, 0x89, 0x57, 0x29, 0x23, 0x5e, 0x7b, 0x0e, 0xd6, - 0xb1, 0xe9, 0x19, 0xda, 0x40, 0x75, 0x6d, 0xdc, 0x13, 0x40, 0x4d, 0x40, 0x26, 0xab, 0xb2, 0xfc, - 0x4b, 0x09, 0x4e, 0xc4, 0x3b, 0xe5, 0x3e, 0x6b, 0x25, 0x7d, 0xf6, 0x6e, 0xf2, 0x1d, 0xe3, 0xc2, - 0xa9, 0x5e, 0xfb, 0x32, 0xd3, 0x6b, 0x37, 0x26, 0x6b, 0x9c, 0xe8, 0xb7, 0x3f, 0x93, 0xe0, 0x64, - 0xa6, 0x19, 0xb1, 0xd5, 0x58, 0x8a, 0xaf, 0xc6, 0x7c, 0x25, 0xef, 0x59, 0x23, 0xd3, 0x0b, 0xad, - 0xe4, 0x9b, 0xf4, 0x0c, 0x91, 0x2d, 0x99, 0xea, 0x50, 0x7b, 0x69, 0x0c, 0x47, 0x43, 0xbe, 0x94, - 0x13, 0x75, 0x4f, 0x19, 0xe5, 0x15, 0xd6, 0x72, 0xb9, 0x09, 0x2b, 0xbe, 0x95, 0x63, 0xb1, 0xe7, - 0x10, 0x96, 0x9c, 0x8b, 0x62, 0xc9, 0x26, 0x2c, 0x6c, 0xe1, 0xe7, 0x46, 0x0f, 0xbf, 0x91, 0x43, - 0xce, 0xb3, 0x50, 0xb6, 0xb1, 0x33, 0x34, 0x5c, 0xd7, 0x5f, 0x15, 0x4a, 0x4a, 0x98, 0x24, 0xff, - 0xdb, 0x02, 0x2c, 0xc7, 0xa3, 0xe3, 0x5e, 0x02, 0xba, 0x3e, 0x9f, 0xb2, 0x5e, 0xc5, 0x5f, 0x34, - 0xb4, 0x85, 0xb8, 0x21, 0xea, 0xca, 0x5c, 0x16, 0xcc, 0xe3, 0xd7, 0x8e, 0xa2, 0xe8, 0xac, 0xc3, - 0x62, 0xcf, 0x1a, 0x0e, 0x35, 0x53, 0x17, 0x67, 0xd3, 0xbc, 0x49, 0xfc, 0xa7, 0x39, 0x7d, 0xe2, - 0x76, 0x42, 0xa6, 0xbf, 0xc9, 0xe0, 0xbd, 0xb0, 0x9c, 0x67, 0x86, 0x49, 0x21, 0x70, 0xba, 0xb2, - 0x94, 0x14, 0xe0, 0xa4, 0x2d, 0xc3, 0x41, 0xeb, 0x50, 0xc0, 0xe6, 0x73, 0xb1, 0x47, 0x48, 0x39, - 0xbc, 0x16, 0x15, 0xa5, 0x42, 0xf9, 0xd0, 0x75, 0x58, 0x18, 0x92, 0xb0, 0x10, 0xe8, 0xc8, 0x5a, - 0xc6, 0x19, 0xae, 0xc2, 0xd9, 0xd0, 0x06, 0x2c, 0xea, 0x74, 0x9c, 0x44, 0x21, 0x55, 0x4f, 0x01, - 0xd6, 0x29, 0x83, 0x22, 0x18, 0xd1, 0xb6, 0xbf, 0x03, 0x2a, 0x65, 0x6d, 0x5d, 0x62, 0x43, 0x91, - 0xba, 0x0d, 0xda, 0x8d, 0xd6, 0xe7, 0x40, 0x75, 0x6d, 0x4c, 0xd6, 0x35, 0x7e, 0x2f, 0x74, 0x12, - 0x8a, 0x03, 0xab, 0xcf, 0xc2, 0xa8, 0xcc, 0xae, 0x3d, 0x0c, 0xac, 0x3e, 0x8d, 0xa2, 0x55, 0xb2, - 0x23, 0xd4, 0x0d, 0x93, 0x2e, 0xc1, 0x45, 0x85, 0x35, 0xc8, 0xe4, 0xa3, 0x3f, 0x54, 0xcb, 0xec, - 0xe1, 0x7a, 0x85, 0x3e, 0x2a, 0x51, 0xca, 0x8e, 0xd9, 0xa3, 0x95, 0xba, 0xe7, 0x1d, 0xd5, 0xab, - 0x94, 0x4e, 0x7e, 0x92, 0xcd, 0x3e, 0x03, 0xb0, 0x96, 0xb3, 0x36, 0xfb, 0x69, 0xf9, 0x5d, 0xe0, - 0x57, 0x0f, 0x60, 0xf1, 0x05, 0x4b, 0x04, 0x7c, 0x89, 0xba, 0x3c, 0x39, 0xbd, 0x70, 0x0d, 0x42, - 0xf0, 0xbb, 0xdc, 0xc6, 0xfd, 0xb5, 0x04, 0x27, 0x36, 0xe9, 0x5e, 0x38, 0x94, 0xc7, 0x66, 0x01, - 0x90, 0x6f, 0xf9, 0xd8, 0x7e, 0x26, 0x28, 0x1b, 0x7f, 0x6f, 0x01, 0xed, 0xb7, 0xa0, 0x2a, 0x94, - 0x73, 0x15, 0xf9, 0xa9, 0x8f, 0x07, 0x2a, 0x6e, 0xb8, 0x29, 0x7f, 0x04, 0x6b, 0x89, 0xb7, 0xe0, - 0xdb, 0xd1, 0x73, 0xb0, 0x14, 0xe4, 0x2b, 0xff, 0x25, 0xca, 0x3e, 0xad, 0xa5, 0xcb, 0xb7, 0xe1, - 0x78, 0xd7, 0xd3, 0x1c, 0x2f, 0xe1, 0x82, 0x29, 0x64, 0x29, 0xf0, 0x1f, 0x95, 0xe5, 0xd8, 0x7c, - 0x17, 0x56, 0xbb, 0x9e, 0x65, 0xbf, 0x82, 0x52, 0x92, 0x75, 0xc8, 0xfb, 0x5b, 0x23, 0xb1, 0x3e, - 0x88, 0xa6, 0xbc, 0xc6, 0x8e, 0x29, 0x92, 0xbd, 0xdd, 0x81, 0x13, 0xec, 0x94, 0xe0, 0x55, 0x5e, - 0xe2, 0xa4, 0x38, 0xa3, 0x48, 0xea, 0x7d, 0x0a, 0xc7, 0x82, 0x65, 0x31, 0xc0, 0xdf, 0x6e, 0x46, - 0xf1, 0xb7, 0xb3, 0x63, 0x46, 0x3d, 0x02, 0xbf, 0xfd, 0x49, 0x2e, 0x94, 0xd7, 0x33, 0xd0, 0xb7, - 0x3b, 0x51, 0xf4, 0xed, 0xc2, 0x24, 0xdd, 0x11, 0xf0, 0x2d, 0x19, 0xb5, 0xf9, 0x94, 0xa8, 0xfd, - 0x22, 0x01, 0xd1, 0x15, 0xb2, 0x30, 0xce, 0x98, 0xb5, 0xbf, 0x15, 0x84, 0x4e, 0x61, 0x08, 0x9d, - 0xdf, 0xb5, 0x7f, 0xa8, 0x73, 0x2b, 0x86, 0xd0, 0x9d, 0x9b, 0x68, 0xaf, 0x0f, 0xd0, 0xfd, 0x45, - 0x01, 0x4a, 0xfe, 0xb3, 0x84, 0xcf, 0x93, 0x6e, 0xcb, 0xa5, 0xb8, 0x2d, 0xbc, 0x02, 0xe7, 0x5f, - 0x6b, 0x05, 0x2e, 0x4c, 0xbd, 0x02, 0x9f, 0x82, 0x12, 0xfd, 0x41, 0x6f, 0x30, 0xb0, 0x15, 0xb5, - 0x48, 0x09, 0x0a, 0x3e, 0x08, 0xc2, 0x70, 0x61, 0xa6, 0x30, 0x8c, 0x61, 0x82, 0x8b, 0x71, 0x4c, - 0xf0, 0x9e, 0xbf, 0x22, 0xb2, 0x45, 0xf4, 0xd2, 0x18, 0xbd, 0xa9, 0x6b, 0x61, 0x0c, 0xab, 0x2a, - 0x65, 0x61, 0x55, 0x81, 0x96, 0xf1, 0x58, 0xd5, 0x77, 0xb8, 0x42, 0xec, 0x31, 0xa0, 0x2f, 0x1c, - 0x8b, 0x3c, 0xb3, 0xde, 0x01, 0xf0, 0x93, 0x88, 0x40, 0xfb, 0x4e, 0x8d, 0x79, 0x47, 0x25, 0xc4, - 0x4e, 0xd4, 0x46, 0x86, 0x26, 0x38, 0xb8, 0x9c, 0x2e, 0x3f, 0x66, 0x9c, 0x5a, 0xfe, 0xcf, 0x7c, - 0x28, 0xbf, 0x64, 0x1c, 0xc8, 0xdd, 0x4b, 0x60, 0xd1, 0x33, 0x46, 0xf1, 0xcd, 0x28, 0x14, 0xfd, - 0x8a, 0x51, 0x97, 0x40, 0xa2, 0x69, 0xe5, 0xa2, 0x39, 0xfc, 0x31, 0xc3, 0xdb, 0x4a, 0x9c, 0xd2, - 0xa4, 0x3b, 0x83, 0x03, 0xc3, 0x34, 0xdc, 0x43, 0xf6, 0x7c, 0x81, 0xed, 0x0c, 0x04, 0xa9, 0x49, - 0x11, 0x2f, 0xfc, 0xd2, 0xf0, 0xd4, 0x9e, 0xa5, 0x63, 0x1a, 0xd3, 0xf3, 0x4a, 0x91, 0x10, 0x36, - 0x2d, 0x1d, 0x07, 0x33, 0xaf, 0xf8, 0x6a, 0x33, 0xaf, 0x14, 0x9b, 0x79, 0x27, 0x60, 0xc1, 0xc1, - 0x9a, 0x6b, 0x99, 0x6c, 0x7f, 0xac, 0xf0, 0x16, 0x19, 0x9a, 0x21, 0x76, 0x5d, 0xd2, 0x13, 0x2f, - 0xd7, 0x78, 0x33, 0x54, 0x66, 0x2e, 0x4d, 0x2c, 0x33, 0xc7, 0x1c, 0xf4, 0xc5, 0xca, 0xcc, 0xca, - 0xc4, 0x32, 0x73, 0xaa, 0x73, 0xbe, 0xa0, 0xd0, 0xae, 0x4e, 0x57, 0x68, 0x87, 0xeb, 0xd2, 0xe5, - 0x48, 0x5d, 0xfa, 0x5d, 0x4e, 0xd6, 0x5f, 0x4b, 0xb0, 0x96, 0x98, 0x56, 0x7c, 0xba, 0xde, 0x8a, - 0x9d, 0x04, 0x9e, 0x9b, 0xe8, 0x33, 0xff, 0x20, 0xf0, 0x51, 0xe4, 0x20, 0xf0, 0xfd, 0xc9, 0x82, - 0x6f, 0xfc, 0x1c, 0xf0, 0xbf, 0x73, 0xf0, 0xf6, 0x9e, 0xad, 0xc7, 0x2a, 0x3c, 0xbe, 0xed, 0x9f, - 0x3e, 0x71, 0xdc, 0x13, 0xb5, 0x7e, 0x6e, 0x56, 0x40, 0x86, 0x97, 0xfb, 0xdb, 0x41, 0xb9, 0x9f, - 0x9f, 0x1d, 0x9f, 0x10, 0xb2, 0x48, 0x8f, 0x06, 0x31, 0x2b, 0x3e, 0x1e, 0x24, 0x55, 0x4d, 0x78, - 0xe5, 0x6f, 0xf9, 0x84, 0x43, 0x86, 0xb3, 0xd9, 0x06, 0xf0, 0xfa, 0xf0, 0x47, 0xb0, 0xbc, 0xfd, - 0x12, 0xf7, 0xba, 0x47, 0x66, 0x6f, 0x86, 0x71, 0xa8, 0x41, 0xbe, 0x37, 0xd4, 0x39, 0x7e, 0x4d, - 0x7e, 0x86, 0x4b, 0xde, 0x7c, 0xb4, 0xe4, 0x55, 0xa1, 0x16, 0xf4, 0xc0, 0x63, 0xf9, 0x04, 0x89, - 0x65, 0x9d, 0x30, 0x13, 0xe5, 0x4b, 0x0a, 0x6f, 0x71, 0x3a, 0x76, 0xd8, 0x25, 0x21, 0x46, 0xc7, - 0x8e, 0x13, 0x4d, 0x8d, 0xf9, 0x68, 0x6a, 0x94, 0xff, 0x58, 0x82, 0x32, 0xe9, 0xe1, 0xb5, 0xec, - 0xe7, 0xfb, 0xca, 0x7c, 0xb0, 0xaf, 0xf4, 0xb7, 0xa7, 0x85, 0xf0, 0xf6, 0x34, 0xb0, 0x7c, 0x9e, - 0x92, 0x93, 0x96, 0x2f, 0xf8, 0x74, 0xec, 0x38, 0xf2, 0x59, 0x58, 0x62, 0xb6, 0xf1, 0x37, 0xaf, - 0x41, 0x7e, 0xe4, 0x0c, 0xc4, 0xf8, 0x8d, 0x9c, 0x81, 0xfc, 0x87, 0x12, 0x54, 0x9a, 0x9e, 0xa7, - 0xf5, 0x0e, 0x67, 0x78, 0x01, 0xdf, 0xb8, 0x5c, 0xd8, 0xb8, 0xe4, 0x4b, 0x04, 0xe6, 0x16, 0x32, - 0xcc, 0x9d, 0x8f, 0x98, 0x2b, 0x43, 0x55, 0xd8, 0x92, 0x69, 0x70, 0x1b, 0x50, 0xc7, 0x72, 0xbc, - 0x87, 0x96, 0xf3, 0x42, 0x73, 0xf4, 0xd9, 0xb6, 0x9b, 0x08, 0x0a, 0xfc, 0xfe, 0x7e, 0xfe, 0xf2, - 0xbc, 0x42, 0x7f, 0xcb, 0x97, 0xe0, 0x58, 0x44, 0x5f, 0x66, 0xc7, 0xf7, 0xa1, 0x4c, 0x17, 0x39, - 0xbe, 0xef, 0xb8, 0x11, 0x3e, 0x66, 0x9c, 0x6a, 0x49, 0x94, 0xff, 0x3f, 0xac, 0x90, 0x62, 0x88, - 0xd2, 0xfd, 0xbc, 0xf3, 0xfd, 0x58, 0x51, 0x7e, 0x3a, 0x43, 0x51, 0xac, 0x20, 0xff, 0x8d, 0x04, - 0xf3, 0x94, 0x9e, 0x28, 0x50, 0x4e, 0x41, 0xc9, 0xc1, 0xb6, 0xa5, 0x7a, 0x5a, 0xdf, 0xff, 0x5a, - 0x82, 0x10, 0x76, 0xb5, 0x3e, 0xc5, 0xe6, 0xe9, 0x43, 0xdd, 0xe8, 0x63, 0xd7, 0x13, 0x9f, 0x4c, - 0x94, 0x09, 0x6d, 0x8b, 0x91, 0x88, 0x93, 0xe8, 0xa9, 0x57, 0x81, 0x1e, 0x6e, 0xd1, 0xdf, 0x68, - 0x9d, 0x5d, 0x2b, 0x9d, 0xe6, 0xb0, 0x83, 0x5e, 0x3a, 0x6d, 0x40, 0x31, 0x76, 0x3e, 0xe1, 0xb7, - 0xd1, 0x75, 0x28, 0x50, 0x7c, 0x77, 0x71, 0xb2, 0xdf, 0x28, 0xa3, 0xbc, 0x0d, 0x28, 0xec, 0x36, - 0x3e, 0x40, 0xd7, 0x61, 0x81, 0x7a, 0x55, 0xd4, 0x8e, 0x6b, 0x19, 0x8a, 0x14, 0xce, 0x26, 0x6b, - 0x80, 0x98, 0xe6, 0x48, 0xbd, 0x38, 0xfb, 0x30, 0x8e, 0xa9, 0x1f, 0xff, 0x4a, 0x82, 0x63, 0x91, - 0x3e, 0xb8, 0xad, 0xd7, 0xa2, 0x9d, 0x64, 0x9a, 0xca, 0x3b, 0xd8, 0x8c, 0x2c, 0x98, 0xd7, 0xb3, - 0x4c, 0xfa, 0x96, 0x16, 0xcb, 0xbf, 0x95, 0x00, 0x9a, 0x23, 0xef, 0x90, 0xe3, 0xa6, 0xe1, 0xa1, - 0x94, 0x62, 0x43, 0xd9, 0x80, 0xa2, 0xad, 0xb9, 0xee, 0x0b, 0xcb, 0x11, 0x3b, 0x3e, 0xbf, 0x4d, - 0x11, 0xce, 0x91, 0x77, 0x28, 0x4e, 0x35, 0xc9, 0x6f, 0x74, 0x01, 0xaa, 0xec, 0x93, 0x1e, 0x55, - 0xd3, 0x75, 0x07, 0xbb, 0x2e, 0x3f, 0xde, 0xac, 0x30, 0x6a, 0x93, 0x11, 0x09, 0x9b, 0x41, 0x31, - 0x7f, 0xef, 0x48, 0xf5, 0xac, 0x67, 0xd8, 0xe4, 0x3b, 0xb7, 0x8a, 0xa0, 0xee, 0x12, 0x22, 0x3b, - 0x44, 0xea, 0x1b, 0xae, 0xe7, 0x08, 0x36, 0x71, 0x14, 0xc6, 0xa9, 0x94, 0x8d, 0x0c, 0x4a, 0xad, - 0x33, 0x1a, 0x0c, 0x98, 0x8b, 0x5f, 0x7d, 0xd8, 0xbf, 0xc7, 0x5f, 0x28, 0x97, 0x35, 0x09, 0x02, - 0xa7, 0xf1, 0xd7, 0x7d, 0x83, 0x10, 0xd5, 0xf7, 0x60, 0x25, 0xf4, 0x0e, 0x3c, 0xac, 0x22, 0x25, - 0xb6, 0x14, 0x2d, 0xb1, 0xe5, 0x47, 0x80, 0x18, 0x2a, 0xf3, 0x9a, 0xef, 0x2d, 0x1f, 0x87, 0x63, - 0x11, 0x45, 0x7c, 0xe9, 0xbe, 0x0a, 0x15, 0x7e, 0xa7, 0x8f, 0x07, 0xca, 0x49, 0x28, 0x92, 0x14, - 0xdc, 0x33, 0x74, 0x71, 0xe4, 0xbd, 0x68, 0x5b, 0xfa, 0xa6, 0xa1, 0x3b, 0xf2, 0xa7, 0x50, 0xe1, - 0xdf, 0x05, 0x70, 0xde, 0x87, 0x50, 0xe5, 0x37, 0x00, 0xd5, 0xc8, 0xdd, 0xde, 0xb4, 0xaf, 0x74, - 0xc2, 0x9d, 0x28, 0x15, 0x33, 0xdc, 0x94, 0x75, 0x68, 0xb0, 0x1a, 0x23, 0xa2, 0x5e, 0xbc, 0xec, - 0x43, 0x10, 0x57, 0x5e, 0x26, 0xf6, 0x12, 0x95, 0xaf, 0x38, 0xe1, 0xa6, 0x7c, 0x1a, 0x4e, 0xa5, - 0xf6, 0xc2, 0x3d, 0x61, 0x43, 0x2d, 0x78, 0xc0, 0x2e, 0xa0, 0xfa, 0x67, 0xfa, 0x52, 0xe8, 0x4c, - 0xff, 0x84, 0x5f, 0x42, 0xe7, 0xc4, 0xaa, 0x47, 0xeb, 0xe3, 0x60, 0x33, 0x94, 0xcf, 0xda, 0x0c, - 0x15, 0x22, 0x9b, 0x21, 0xb9, 0xeb, 0xfb, 0x93, 0x6f, 0x52, 0x1f, 0xd0, 0xcd, 0x34, 0xeb, 0x5b, - 0x24, 0x44, 0x79, 0xdc, 0x5b, 0x32, 0x56, 0x25, 0x24, 0x25, 0x5f, 0x81, 0x4a, 0x34, 0x35, 0x86, - 0xf2, 0x9c, 0x94, 0xc8, 0x73, 0xd5, 0x58, 0x8a, 0xfb, 0x30, 0xb6, 0x3f, 0xc8, 0xf6, 0x71, 0x6c, - 0x77, 0x70, 0x37, 0x92, 0xec, 0xae, 0xa6, 0x1c, 0xd1, 0x7e, 0x4b, 0x79, 0x6e, 0x95, 0xaf, 0x07, - 0x0f, 0x5d, 0x22, 0xcf, 0x5f, 0x5a, 0x3e, 0x0f, 0xe5, 0xbd, 0xac, 0xaf, 0xbc, 0x0a, 0xe2, 0x22, - 0xce, 0x4d, 0x58, 0x7d, 0x68, 0x0c, 0xb0, 0x7b, 0xe4, 0x7a, 0x78, 0xd8, 0xa2, 0x49, 0xe9, 0xc0, - 0xc0, 0x0e, 0x3a, 0x03, 0x40, 0x37, 0x78, 0xb6, 0x65, 0xf8, 0xdf, 0xab, 0x84, 0x28, 0xf2, 0xbf, - 0x4b, 0xb0, 0x1c, 0x08, 0xee, 0xd1, 0x8d, 0xed, 0x5b, 0x50, 0x22, 0xef, 0xeb, 0x7a, 0xda, 0xd0, - 0x16, 0xa7, 0x7d, 0x3e, 0x01, 0xdd, 0x81, 0xf9, 0x03, 0x57, 0x00, 0x6a, 0xa9, 0xc7, 0x0b, 0x69, - 0x86, 0x28, 0x85, 0x03, 0xb7, 0xa5, 0xa3, 0x8f, 0x00, 0x46, 0x2e, 0xd6, 0xf9, 0x09, 0x5f, 0x3e, - 0xab, 0xbc, 0xd8, 0x0b, 0x5f, 0x55, 0x20, 0x02, 0xec, 0x0e, 0xcf, 0x5d, 0x28, 0x1b, 0xa6, 0xa5, - 0x63, 0x7a, 0x74, 0xab, 0x73, 0xcc, 0x6d, 0x82, 0x38, 0x30, 0x89, 0x3d, 0x17, 0xeb, 0x32, 0xe6, - 0x6b, 0xa1, 0xf0, 0x2f, 0x0f, 0x94, 0x36, 0xac, 0xb0, 0xa4, 0x75, 0xe0, 0x1b, 0x2e, 0x22, 0xf6, - 0xdc, 0xb8, 0xb7, 0xa3, 0xde, 0x52, 0x6a, 0x06, 0xaf, 0x85, 0x84, 0xa8, 0x7c, 0x1b, 0x8e, 0x47, - 0xf6, 0x8f, 0x33, 0x6c, 0xe8, 0xe4, 0x4e, 0x0c, 0x46, 0x0a, 0xc2, 0x99, 0x83, 0x34, 0x22, 0x9a, - 0x27, 0x81, 0x34, 0x2e, 0x03, 0x69, 0x5c, 0xf9, 0x0b, 0x38, 0x19, 0xc1, 0xbb, 0x22, 0x16, 0xdd, - 0x8d, 0x95, 0x7a, 0x17, 0x27, 0x69, 0x8d, 0xd5, 0x7c, 0xff, 0x25, 0xc1, 0x6a, 0x1a, 0xc3, 0x2b, - 0xe2, 0xb1, 0x3f, 0xca, 0xb8, 0x69, 0x7a, 0x6b, 0x3a, 0xb3, 0x7e, 0x2b, 0x58, 0xf6, 0x2e, 0x34, - 0xd2, 0xfc, 0x99, 0x1c, 0xa5, 0xfc, 0x2c, 0xa3, 0xf4, 0xf3, 0x7c, 0xe8, 0x5c, 0xa2, 0xe9, 0x79, - 0x8e, 0xb1, 0x3f, 0x22, 0x21, 0xff, 0xc6, 0xb1, 0xbe, 0x96, 0x8f, 0x5a, 0x31, 0xd7, 0xde, 0x18, - 0x23, 0x1e, 0xd8, 0x91, 0x8a, 0x5c, 0x7d, 0x96, 0xb6, 0xe9, 0xbf, 0x39, 0x9d, 0xbe, 0xdf, 0x59, - 0x78, 0xf8, 0xe7, 0x39, 0xa8, 0x46, 0x87, 0x08, 0x6d, 0x03, 0x68, 0xbe, 0xe5, 0x7c, 0xa2, 0x5c, - 0x98, 0xea, 0x35, 0x95, 0x90, 0x20, 0x7a, 0x0f, 0xf2, 0x3d, 0x7b, 0xc4, 0x47, 0x2d, 0xe5, 0xa8, - 0x7c, 0xd3, 0x1e, 0xb1, 0x8c, 0x42, 0xd8, 0xc8, 0x26, 0x8c, 0xdd, 0x7c, 0xc8, 0xce, 0x92, 0x4f, - 0xe9, 0x73, 0x26, 0xc3, 0x99, 0xd1, 0x63, 0xa8, 0xbe, 0x70, 0x0c, 0x4f, 0xdb, 0x1f, 0x60, 0x75, - 0xa0, 0x1d, 0x61, 0x87, 0x67, 0xc9, 0x29, 0x12, 0x59, 0x45, 0x08, 0x3e, 0x21, 0x72, 0xf2, 0x1f, - 0x40, 0x51, 0x58, 0x34, 0x61, 0x45, 0xd8, 0x85, 0xb5, 0x11, 0x61, 0x53, 0xe9, 0xdd, 0x4a, 0x53, - 0x33, 0x2d, 0xd5, 0xc5, 0x64, 0x19, 0x17, 0x1f, 0xb6, 0x4c, 0x48, 0xd1, 0xab, 0x54, 0x7a, 0xd3, - 0x72, 0x70, 0x5b, 0x33, 0xad, 0x2e, 0x13, 0x95, 0x9f, 0x43, 0x39, 0xf4, 0x82, 0x13, 0x4c, 0x68, - 0xc1, 0x8a, 0xb8, 0xa8, 0xe0, 0x62, 0x8f, 0x2f, 0x2f, 0x53, 0x75, 0xbe, 0xcc, 0xe5, 0xba, 0xd8, - 0x63, 0x97, 0x4b, 0xee, 0xc2, 0x49, 0x05, 0x5b, 0x36, 0x36, 0xfd, 0xf1, 0x7c, 0x62, 0xf5, 0x67, - 0xc8, 0xe0, 0x6f, 0x41, 0x23, 0x4d, 0x9e, 0xe5, 0x87, 0xab, 0x17, 0xa1, 0x28, 0xbe, 0xe7, 0x47, - 0x8b, 0x90, 0xdf, 0xdd, 0xec, 0xd4, 0xe6, 0xc8, 0x8f, 0xbd, 0xad, 0x4e, 0x4d, 0x42, 0x45, 0x28, - 0x74, 0x37, 0x77, 0x3b, 0xb5, 0xdc, 0xd5, 0x21, 0xd4, 0xe2, 0x1f, 0xb3, 0xa3, 0x35, 0x38, 0xd6, - 0x51, 0x76, 0x3a, 0xcd, 0x47, 0xcd, 0xdd, 0xd6, 0x4e, 0x5b, 0xed, 0x28, 0xad, 0x4f, 0x9a, 0xbb, - 0xdb, 0xb5, 0x39, 0x74, 0x0e, 0x4e, 0x87, 0x1f, 0x3c, 0xde, 0xe9, 0xee, 0xaa, 0xbb, 0x3b, 0xea, - 0xe6, 0x4e, 0x7b, 0xb7, 0xd9, 0x6a, 0x6f, 0x2b, 0x35, 0x09, 0x9d, 0x86, 0x93, 0x61, 0x96, 0x07, - 0xad, 0xad, 0x96, 0xb2, 0xbd, 0x49, 0x7e, 0x37, 0x9f, 0xd4, 0x72, 0x57, 0x3f, 0x86, 0x4a, 0xe4, - 0xdb, 0x73, 0x62, 0x52, 0x67, 0x67, 0xab, 0x36, 0x87, 0x2a, 0x50, 0x0a, 0xeb, 0x29, 0x42, 0xa1, - 0xbd, 0xb3, 0xb5, 0x5d, 0xcb, 0x21, 0x80, 0x85, 0xdd, 0xa6, 0xf2, 0x68, 0x7b, 0xb7, 0x96, 0xbf, - 0x7a, 0x1b, 0x96, 0x63, 0x97, 0xd5, 0xd1, 0x0a, 0x54, 0xba, 0xcd, 0xf6, 0xd6, 0x83, 0x9d, 0xcf, - 0x54, 0x65, 0xbb, 0xb9, 0xf5, 0x79, 0x6d, 0x0e, 0xad, 0x42, 0x4d, 0x90, 0xda, 0x3b, 0xbb, 0x8c, - 0x2a, 0x5d, 0x7d, 0x16, 0x9b, 0x6f, 0x18, 0x1d, 0x87, 0x15, 0xbf, 0x4b, 0x75, 0x53, 0xd9, 0x6e, - 0xee, 0x6e, 0x13, 0x4b, 0x22, 0x64, 0x65, 0xaf, 0xdd, 0x6e, 0xb5, 0x1f, 0xd5, 0x24, 0xa2, 0x35, - 0x20, 0x6f, 0x7f, 0xd6, 0x22, 0xcc, 0xb9, 0x28, 0xf3, 0x5e, 0xfb, 0x07, 0xed, 0x9d, 0x4f, 0xdb, - 0xb5, 0xfc, 0xc6, 0x2f, 0x57, 0xfc, 0xef, 0x81, 0xbb, 0xd8, 0xa1, 0xf7, 0x7f, 0x3a, 0xb0, 0x28, - 0xfe, 0x57, 0x44, 0x4a, 0xb6, 0x8e, 0xfe, 0x87, 0x8b, 0xc6, 0xb9, 0x31, 0x1c, 0xbc, 0xf6, 0x9e, - 0x43, 0xfb, 0xb4, 0x16, 0x0e, 0x7d, 0x3c, 0x70, 0x31, 0xb5, 0xf2, 0x4c, 0x7c, 0xaf, 0xd0, 0xb8, - 0x34, 0x91, 0xcf, 0xef, 0x03, 0x93, 0x72, 0x37, 0xfc, 0x7d, 0x1e, 0xba, 0x94, 0x56, 0xa7, 0xa6, - 0x7c, 0x00, 0xd8, 0xb8, 0x3c, 0x99, 0xd1, 0xef, 0xe6, 0x19, 0xd4, 0xe2, 0xdf, 0xea, 0xa1, 0x14, - 0x90, 0x39, 0xe3, 0x83, 0xc0, 0xc6, 0xd5, 0x69, 0x58, 0xc3, 0x9d, 0x25, 0x3e, 0x3e, 0xbb, 0x32, - 0xcd, 0x47, 0x3a, 0x99, 0x9d, 0x65, 0x7d, 0xcf, 0xc3, 0x1c, 0x18, 0xbd, 0xef, 0x8f, 0x52, 0xbf, - 0xf4, 0x4a, 0xf9, 0xac, 0x24, 0xcd, 0x81, 0xe9, 0x9f, 0x0e, 0xc8, 0x73, 0xe8, 0x10, 0x96, 0x63, - 0x17, 0x39, 0x50, 0x8a, 0x78, 0xfa, 0x8d, 0x95, 0xc6, 0x95, 0x29, 0x38, 0xa3, 0x11, 0x11, 0xbe, - 0xb8, 0x91, 0x1e, 0x11, 0x29, 0xd7, 0x42, 0xd2, 0x23, 0x22, 0xf5, 0x0e, 0x08, 0x0d, 0xee, 0xc8, - 0x85, 0x8d, 0xb4, 0xe0, 0x4e, 0xbb, 0x26, 0xd2, 0xb8, 0x34, 0x91, 0x2f, 0xec, 0xb4, 0xd8, 0xf5, - 0x8d, 0x34, 0xa7, 0xa5, 0x5f, 0x0f, 0x69, 0x5c, 0x99, 0x82, 0x33, 0x1e, 0x05, 0xc1, 0x61, 0x70, - 0x56, 0x14, 0x24, 0xae, 0x2e, 0x64, 0x45, 0x41, 0xf2, 0x5c, 0x99, 0x47, 0x41, 0xec, 0x10, 0xf7, - 0xf2, 0x14, 0x87, 0x4e, 0xd9, 0x51, 0x90, 0x7e, 0x3c, 0x25, 0xcf, 0xa1, 0x9f, 0x49, 0x50, 0xcf, - 0x3a, 0xe3, 0x40, 0x37, 0x66, 0x3e, 0x90, 0x69, 0x6c, 0xcc, 0x22, 0xe2, 0x5b, 0xf1, 0x15, 0xa0, - 0xe4, 0x1a, 0x88, 0xde, 0x4d, 0x1b, 0x99, 0x8c, 0x95, 0xb6, 0xf1, 0xde, 0x74, 0xcc, 0x7e, 0x97, - 0x5d, 0x28, 0x8a, 0x53, 0x15, 0x94, 0x92, 0xa5, 0x63, 0x67, 0x3a, 0x0d, 0x79, 0x1c, 0x8b, 0xaf, - 0xf4, 0x11, 0x14, 0x08, 0x15, 0x9d, 0x4e, 0xe7, 0x16, 0xca, 0xce, 0x64, 0x3d, 0xf6, 0x15, 0x3d, - 0x85, 0x05, 0x76, 0x8c, 0x80, 0x52, 0x50, 0x88, 0xc8, 0x61, 0x47, 0xe3, 0x6c, 0x36, 0x83, 0xaf, - 0xee, 0x4b, 0xf6, 0x6f, 0x84, 0xf8, 0x09, 0x01, 0x7a, 0x27, 0xfd, 0xbf, 0x05, 0x44, 0x0f, 0x24, - 0x1a, 0x17, 0x26, 0x70, 0x85, 0x27, 0x45, 0xac, 0x02, 0xbe, 0x34, 0x71, 0x1b, 0x93, 0x3d, 0x29, - 0xd2, 0x37, 0x4a, 0x2c, 0x48, 0x92, 0x1b, 0xa9, 0xb4, 0x20, 0xc9, 0xdc, 0xbe, 0xa6, 0x05, 0x49, - 0xf6, 0xde, 0x4c, 0x9e, 0x43, 0x1e, 0x1c, 0x4b, 0x81, 0xcd, 0xd0, 0x7b, 0x59, 0x41, 0x9e, 0x86, - 0xe1, 0x35, 0xae, 0x4d, 0xc9, 0x1d, 0x1e, 0x7c, 0x3e, 0xe9, 0xdf, 0xce, 0xc6, 0x92, 0x32, 0x07, - 0x3f, 0x3e, 0xc5, 0x37, 0xfe, 0x39, 0x0f, 0x4b, 0x0c, 0x12, 0xe5, 0x15, 0xcc, 0xe7, 0x00, 0xc1, - 0x69, 0x04, 0x3a, 0x9f, 0xee, 0x93, 0xc8, 0x11, 0x4f, 0xe3, 0x9d, 0xf1, 0x4c, 0xe1, 0x40, 0x0b, - 0x21, 0xfb, 0x69, 0x81, 0x96, 0x3c, 0xc0, 0x48, 0x0b, 0xb4, 0x94, 0xe3, 0x01, 0x79, 0x0e, 0x7d, - 0x02, 0x25, 0x1f, 0x42, 0x46, 0x69, 0x10, 0x74, 0x0c, 0x23, 0x6f, 0x9c, 0x1f, 0xcb, 0x13, 0xb6, - 0x3a, 0x84, 0x0f, 0xa7, 0x59, 0x9d, 0xc4, 0xa1, 0xd3, 0xac, 0x4e, 0x03, 0x99, 0x03, 0x9f, 0x30, - 0x14, 0x29, 0xd3, 0x27, 0x11, 0x10, 0x2f, 0xd3, 0x27, 0x51, 0x28, 0x4a, 0x9e, 0x7b, 0x70, 0xf1, - 0x57, 0x5f, 0x9f, 0x91, 0xfe, 0xf1, 0xeb, 0x33, 0x73, 0x3f, 0xfd, 0xe6, 0x8c, 0xf4, 0xab, 0x6f, - 0xce, 0x48, 0x7f, 0xff, 0xcd, 0x19, 0xe9, 0x5f, 0xbe, 0x39, 0x23, 0xfd, 0xd1, 0xbf, 0x9e, 0x99, - 0xfb, 0x61, 0x51, 0x48, 0xef, 0x2f, 0xd0, 0x7f, 0x06, 0xf6, 0xfe, 0xff, 0x06, 0x00, 0x00, 0xff, - 0xff, 0x9e, 0x13, 0x0f, 0x8c, 0xd2, 0x4d, 0x00, 0x00, + // 5632 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3c, 0x4b, 0x6c, 0x1b, 0x59, + 0x72, 0x6a, 0x92, 0x92, 0xc8, 0xa2, 0x48, 0xd1, 0xcf, 0xb2, 0x45, 0xd3, 0x63, 0xd9, 0x6e, 0x8f, + 0xbf, 0x33, 0x96, 0xd7, 0x9a, 0x19, 0xcf, 0x58, 0x9e, 0xb1, 0x2d, 0x4b, 0xb2, 0xcd, 0x5d, 0x5b, + 0x62, 0x9a, 0xd2, 0x7c, 0x76, 0x26, 0xe8, 0x6d, 0xb1, 0x9f, 0xa8, 0x1e, 0x93, 0xdd, 0x3d, 0xdd, + 0x4d, 0xdb, 0xda, 0x5c, 0x16, 0x58, 0x60, 0x0f, 0x7b, 0x0a, 0x10, 0x04, 0x01, 0x72, 0xdb, 0xe4, + 0x90, 0x43, 0x4e, 0x9b, 0x20, 0xa7, 0x9c, 0x12, 0x24, 0xc8, 0x22, 0x1f, 0x24, 0xa7, 0x45, 0x82, + 0xbd, 0x64, 0x26, 0x08, 0xb0, 0x08, 0x10, 0x20, 0xc8, 0x39, 0x87, 0xe0, 0xfd, 0xfa, 0xc7, 0x6e, + 0xb2, 0x69, 0xcf, 0x6f, 0x4f, 0xec, 0x57, 0x5d, 0x55, 0xaf, 0x5e, 0xbd, 0x7a, 0xf5, 0xea, 0xbd, + 0xaa, 0x26, 0x94, 0x34, 0xdb, 0x58, 0xb6, 0x1d, 0xcb, 0xb3, 0x50, 0xcd, 0x19, 0x98, 0x9e, 0xd1, + 0xc7, 0xcb, 0x4f, 0xaf, 0x6b, 0x3d, 0xfb, 0x40, 0x5b, 0x69, 0x5c, 0xed, 0x1a, 0xde, 0xc1, 0x60, + 0x6f, 0xb9, 0x63, 0xf5, 0xaf, 0x75, 0xad, 0xae, 0x75, 0x8d, 0x22, 0xee, 0x0d, 0xf6, 0x69, 0x8b, + 0x36, 0xe8, 0x13, 0x63, 0x20, 0x5f, 0x81, 0xea, 0xfb, 0xd8, 0x71, 0x0d, 0xcb, 0x54, 0xf0, 0x67, + 0x03, 0xec, 0x7a, 0xa8, 0x0e, 0xb3, 0x4f, 0x19, 0xa4, 0x2e, 0x9d, 0x91, 0x2e, 0x95, 0x14, 0xd1, + 0x94, 0xff, 0x44, 0x82, 0x79, 0x1f, 0xd9, 0xb5, 0x2d, 0xd3, 0xc5, 0xe9, 0xd8, 0xe8, 0x2c, 0xcc, + 0x71, 0xe1, 0x54, 0x53, 0xeb, 0xe3, 0x7a, 0x8e, 0xbe, 0x2e, 0x73, 0xd8, 0x96, 0xd6, 0xc7, 0xe8, + 0x22, 0xcc, 0x0b, 0x14, 0xc1, 0x24, 0x4f, 0xb1, 0xaa, 0x1c, 0xcc, 0x7b, 0x43, 0xcb, 0x70, 0x54, + 0x20, 0x6a, 0xb6, 0xe1, 0x23, 0x17, 0x28, 0xf2, 0x11, 0xfe, 0x6a, 0xcd, 0x36, 0x38, 0xbe, 0xfc, + 0x31, 0x94, 0x36, 0xb6, 0xda, 0xeb, 0x96, 0xb9, 0x6f, 0x74, 0x89, 0x88, 0x2e, 0x76, 0x08, 0x4d, + 0x5d, 0x3a, 0x93, 0x27, 0x22, 0xf2, 0x26, 0x6a, 0x40, 0xd1, 0xc5, 0x9a, 0xd3, 0x39, 0xc0, 0x6e, + 0x3d, 0x47, 0x5f, 0xf9, 0x6d, 0x42, 0x65, 0xd9, 0x9e, 0x61, 0x99, 0x6e, 0x3d, 0xcf, 0xa8, 0x78, + 0x53, 0xfe, 0x23, 0x09, 0xca, 0x2d, 0xcb, 0xf1, 0x1e, 0x6b, 0xb6, 0x6d, 0x98, 0x5d, 0x74, 0x03, + 0x8a, 0x54, 0x97, 0x1d, 0xab, 0x47, 0x75, 0x50, 0x5d, 0x69, 0x2c, 0xc7, 0xa7, 0x65, 0xb9, 0xc5, + 0x31, 0x14, 0x1f, 0x17, 0x9d, 0x87, 0x6a, 0xc7, 0x32, 0x3d, 0xcd, 0x30, 0xb1, 0xa3, 0xda, 0x96, + 0xe3, 0x51, 0x15, 0x4d, 0x2b, 0x15, 0x1f, 0x4a, 0x7a, 0x41, 0x27, 0xa1, 0x74, 0x60, 0xb9, 0x1e, + 0xc3, 0xc8, 0x53, 0x8c, 0x22, 0x01, 0xd0, 0x97, 0x8b, 0x30, 0x4b, 0x5f, 0x1a, 0x36, 0x57, 0xc6, + 0x0c, 0x69, 0x36, 0x6d, 0xf9, 0x97, 0x12, 0x4c, 0x3f, 0xb6, 0x06, 0xa6, 0x17, 0xeb, 0x46, 0xf3, + 0x0e, 0xf8, 0x44, 0x85, 0xba, 0xd1, 0xbc, 0x83, 0xa0, 0x1b, 0x82, 0xc1, 0xe6, 0x8a, 0x75, 0x43, + 0x5e, 0x36, 0xa0, 0xe8, 0x60, 0x4d, 0xb7, 0xcc, 0xde, 0x21, 0x15, 0xa1, 0xa8, 0xf8, 0x6d, 0x32, + 0x89, 0x2e, 0xee, 0x19, 0xe6, 0xe0, 0xb9, 0xea, 0xe0, 0x9e, 0xb6, 0x87, 0x7b, 0x54, 0x94, 0xa2, + 0x52, 0xe5, 0x60, 0x85, 0x41, 0xd1, 0x06, 0x94, 0x6d, 0xc7, 0xb2, 0xb5, 0xae, 0x46, 0xf4, 0x58, + 0x9f, 0xa6, 0xaa, 0x92, 0x87, 0x55, 0x45, 0xc5, 0x6e, 0x05, 0x98, 0x4a, 0x98, 0x4c, 0xfe, 0x67, + 0x09, 0xe6, 0x89, 0xf1, 0xb8, 0xb6, 0xd6, 0xc1, 0xdb, 0x74, 0x4a, 0xd0, 0x4d, 0x98, 0x35, 0xb1, + 0xf7, 0xcc, 0x72, 0x9e, 0xf0, 0x09, 0x38, 0x3d, 0xcc, 0xd5, 0xa7, 0x79, 0x6c, 0xe9, 0x58, 0x11, + 0xf8, 0xe8, 0x3a, 0xe4, 0x6d, 0x43, 0xa7, 0x03, 0xce, 0x40, 0x46, 0x70, 0x09, 0x89, 0x61, 0x77, + 0xa8, 0x1e, 0xb2, 0x90, 0x18, 0x76, 0x87, 0x28, 0xd7, 0xd3, 0x9c, 0x2e, 0xf6, 0x54, 0x43, 0xe7, + 0x13, 0x55, 0x64, 0x80, 0xa6, 0x2e, 0xcb, 0x00, 0x4d, 0xd3, 0xbb, 0xf1, 0xe6, 0xfb, 0x5a, 0x6f, + 0x80, 0xd1, 0x02, 0x4c, 0x3f, 0x25, 0x0f, 0x74, 0x24, 0x79, 0x85, 0x35, 0xe4, 0xcf, 0x0b, 0x70, + 0xf2, 0x11, 0x51, 0x66, 0x5b, 0x33, 0xf5, 0x3d, 0xeb, 0x79, 0x1b, 0x77, 0x06, 0x8e, 0xe1, 0x1d, + 0xae, 0x5b, 0xa6, 0x87, 0x9f, 0x7b, 0x68, 0x0b, 0x8e, 0x98, 0xa2, 0x5b, 0x55, 0xd8, 0x2d, 0xe1, + 0x50, 0x5e, 0x39, 0x3b, 0x42, 0x42, 0xa6, 0x3f, 0xa5, 0x66, 0x46, 0x01, 0x2e, 0x7a, 0x18, 0x4c, + 0xaa, 0xe0, 0x96, 0xa3, 0xdc, 0x12, 0xc6, 0xdb, 0xde, 0xa4, 0x92, 0x71, 0x5e, 0x62, 0xd6, 0x05, + 0xa7, 0x77, 0x81, 0x2c, 0x79, 0x55, 0x73, 0xd5, 0x81, 0x8b, 0x1d, 0xaa, 0xb5, 0xf2, 0xca, 0x2b, + 0xc3, 0x5c, 0x02, 0x15, 0x28, 0x25, 0x67, 0x60, 0xae, 0xb9, 0xbb, 0x2e, 0x76, 0xd0, 0x6d, 0xea, + 0x44, 0x08, 0x75, 0xd7, 0xb1, 0x06, 0x76, 0xbd, 0x98, 0x81, 0x1c, 0x28, 0xf9, 0x03, 0x82, 0x4f, + 0x3d, 0x0c, 0x37, 0x54, 0xd5, 0xb1, 0x2c, 0x6f, 0xdf, 0x15, 0xc6, 0x29, 0xc0, 0x0a, 0x85, 0xa2, + 0x6b, 0x70, 0xd4, 0x1d, 0xd8, 0x76, 0x0f, 0xf7, 0xb1, 0xe9, 0x69, 0x3d, 0xd6, 0x9d, 0x5b, 0x9f, + 0x3e, 0x93, 0xbf, 0x94, 0x57, 0x50, 0xf8, 0x15, 0x65, 0xec, 0xa2, 0x25, 0x00, 0xdb, 0x31, 0x9e, + 0x1a, 0x3d, 0xdc, 0xc5, 0x7a, 0x7d, 0x86, 0x32, 0x0d, 0x41, 0xd0, 0x2d, 0xe2, 0x75, 0x3a, 0x1d, + 0xab, 0x6f, 0xd7, 0x4b, 0x69, 0xf3, 0x20, 0x66, 0xb1, 0xe5, 0x58, 0xfb, 0x46, 0x0f, 0x2b, 0x82, + 0x02, 0xbd, 0x07, 0x45, 0xcd, 0xb6, 0x35, 0xa7, 0x6f, 0x39, 0x75, 0xc8, 0x4a, 0xed, 0x93, 0xa0, + 0x37, 0x61, 0x81, 0x73, 0x52, 0x6d, 0xf6, 0x92, 0x2d, 0xeb, 0x59, 0x62, 0x79, 0xf7, 0x72, 0x75, + 0x49, 0x41, 0xfc, 0x3d, 0xa7, 0x25, 0x8b, 0x5c, 0xfe, 0x7b, 0x09, 0xe6, 0x63, 0x3c, 0x51, 0x0b, + 0xe6, 0x04, 0x07, 0xef, 0xd0, 0xc6, 0x7c, 0x79, 0x5d, 0x1d, 0x2b, 0xcc, 0x32, 0xff, 0xdd, 0x39, + 0xb4, 0x31, 0x5d, 0xbf, 0xa2, 0x81, 0xce, 0x41, 0xa5, 0x67, 0x75, 0xb4, 0x1e, 0x75, 0x36, 0x0e, + 0xde, 0xe7, 0xbe, 0x66, 0xce, 0x07, 0x2a, 0x78, 0x5f, 0xbe, 0x0b, 0xe5, 0x10, 0x03, 0x84, 0xa0, + 0xaa, 0xb0, 0x0e, 0x37, 0xf0, 0xbe, 0x36, 0xe8, 0x79, 0xb5, 0x29, 0x54, 0x05, 0xd8, 0x35, 0x3b, + 0xc4, 0xc3, 0x9b, 0x58, 0xaf, 0x49, 0xa8, 0x02, 0xa5, 0x47, 0x82, 0x45, 0x2d, 0x27, 0xff, 0x59, + 0x1e, 0x8e, 0x51, 0xb3, 0x6c, 0x59, 0x3a, 0x5f, 0x33, 0x7c, 0x3b, 0x38, 0x07, 0x95, 0x0e, 0x9d, + 0x5d, 0xd5, 0xd6, 0x1c, 0x6c, 0x7a, 0xdc, 0x1d, 0xce, 0x31, 0x60, 0x8b, 0xc2, 0xd0, 0x87, 0x50, + 0x73, 0xf9, 0x88, 0xd4, 0x0e, 0x5b, 0x63, 0x7c, 0x01, 0x24, 0x8c, 0x7d, 0xc4, 0xc2, 0x54, 0xe6, + 0xdd, 0xa1, 0x95, 0x3a, 0xeb, 0x1e, 0xba, 0x1d, 0xaf, 0xc7, 0xf6, 0x95, 0xf2, 0xca, 0x9b, 0x29, + 0x0c, 0xe3, 0x82, 0x2f, 0xb7, 0x19, 0xd9, 0xa6, 0xe9, 0x39, 0x87, 0x8a, 0x60, 0x82, 0x36, 0xa1, + 0x68, 0x3d, 0xc5, 0xce, 0x01, 0xd6, 0x98, 0x67, 0x29, 0xaf, 0x5c, 0x4e, 0x61, 0xb8, 0x2e, 0xfc, + 0xbd, 0x82, 0x5d, 0x6b, 0xe0, 0x74, 0xb0, 0xab, 0xf8, 0xa4, 0xe8, 0x01, 0x94, 0x1c, 0x01, 0xa6, + 0xae, 0x79, 0x22, 0x3e, 0x01, 0x6d, 0x63, 0x15, 0xe6, 0xc2, 0x82, 0xa2, 0x1a, 0xe4, 0x9f, 0xe0, + 0x43, 0xae, 0x64, 0xf2, 0x18, 0x78, 0x38, 0x36, 0xf3, 0xac, 0xb1, 0x9a, 0x7b, 0x47, 0x92, 0x1d, + 0x40, 0xc1, 0xa8, 0x1f, 0x63, 0x4f, 0xd3, 0x35, 0x4f, 0x43, 0x08, 0x0a, 0x34, 0x80, 0x60, 0x2c, + 0xe8, 0x33, 0xe1, 0x3a, 0xe0, 0x6e, 0xbb, 0xa4, 0x90, 0x47, 0xf4, 0x0a, 0x94, 0x7c, 0x2f, 0xc6, + 0xa3, 0x88, 0x00, 0x40, 0x76, 0x73, 0xcd, 0xf3, 0x70, 0xdf, 0xf6, 0xa8, 0x92, 0x2a, 0x8a, 0x68, + 0xca, 0x7f, 0x3e, 0x0d, 0xb5, 0x21, 0x1b, 0xb9, 0x0b, 0xc5, 0x3e, 0xef, 0x9e, 0x7b, 0xd1, 0x57, + 0x13, 0xb6, 0xf4, 0x21, 0x51, 0x15, 0x9f, 0x8a, 0xec, 0x98, 0xc4, 0x12, 0x43, 0x91, 0x8f, 0xdf, + 0x66, 0x4b, 0xa0, 0xab, 0xea, 0x86, 0x83, 0x3b, 0x9e, 0xe5, 0x1c, 0x72, 0x71, 0xe7, 0x7a, 0x56, + 0x77, 0x43, 0xc0, 0xd0, 0x2a, 0x80, 0x6e, 0xba, 0x2a, 0xb5, 0xf0, 0x2e, 0x9f, 0xd9, 0x93, 0xc3, + 0x42, 0xf8, 0x61, 0x8e, 0x52, 0xd2, 0x4d, 0x97, 0x8b, 0x7f, 0x0f, 0x2a, 0x24, 0x5a, 0x50, 0xfb, + 0x2c, 0x42, 0x61, 0x6e, 0xac, 0xbc, 0x72, 0x2a, 0x69, 0x0c, 0x7e, 0x1c, 0xa3, 0xcc, 0xd9, 0x41, + 0xc3, 0x45, 0xf7, 0x61, 0x86, 0x6e, 0xdb, 0x6e, 0x7d, 0x86, 0x12, 0x2f, 0x8f, 0x52, 0x00, 0xb7, + 0xd0, 0x47, 0x94, 0x80, 0x19, 0x28, 0xa7, 0x46, 0xbb, 0x50, 0xd6, 0x4c, 0xd3, 0xf2, 0x34, 0xb6, + 0x8b, 0xcc, 0x52, 0x66, 0x6f, 0x64, 0x60, 0xb6, 0x16, 0x50, 0x31, 0x8e, 0x61, 0x3e, 0xe8, 0x3d, + 0x98, 0xa6, 0xdb, 0x0c, 0xdf, 0x11, 0x2e, 0x66, 0x5c, 0x44, 0x0a, 0xa3, 0x42, 0xeb, 0x30, 0xfb, + 0xcc, 0x30, 0x75, 0xeb, 0x99, 0xcb, 0xbd, 0x73, 0x82, 0xb1, 0x7f, 0xc0, 0x10, 0x86, 0x58, 0x08, + 0xca, 0xc6, 0x4d, 0x28, 0x87, 0x46, 0x3c, 0x89, 0xa5, 0x37, 0x6e, 0x43, 0x2d, 0x3e, 0xbe, 0x89, + 0x56, 0xca, 0xef, 0xc0, 0x82, 0x32, 0x30, 0x03, 0xd1, 0x44, 0xf0, 0xbe, 0x0a, 0x33, 0xdc, 0x62, + 0x98, 0xd9, 0xca, 0xe3, 0x15, 0xad, 0x70, 0x8a, 0x70, 0x34, 0x7e, 0xa0, 0x99, 0x7a, 0x0f, 0x3b, + 0xbc, 0x5f, 0x11, 0x8d, 0x3f, 0x64, 0x50, 0xf9, 0x3d, 0x38, 0x16, 0xeb, 0x9c, 0x1f, 0x06, 0x5e, + 0x85, 0xaa, 0x6d, 0xe9, 0xaa, 0xcb, 0xc0, 0x24, 0xd6, 0xe1, 0xbe, 0xd5, 0xf6, 0x71, 0x9b, 0x3a, + 0x21, 0x6f, 0x7b, 0x96, 0x3d, 0x2c, 0x7c, 0x36, 0xf2, 0x3a, 0x1c, 0x8f, 0x93, 0xb3, 0xee, 0xe5, + 0x3b, 0xb0, 0xa8, 0xe0, 0xbe, 0xf5, 0x14, 0xbf, 0x28, 0xeb, 0x06, 0xd4, 0x87, 0x19, 0x70, 0xe6, + 0x1f, 0xc1, 0x62, 0x00, 0x6d, 0x7b, 0x9a, 0x37, 0x70, 0x27, 0x62, 0xce, 0x4f, 0x4a, 0x7b, 0x96, + 0xcb, 0xa6, 0xb3, 0xa8, 0x88, 0xa6, 0xbc, 0x08, 0xd3, 0x2d, 0x4b, 0x6f, 0xb6, 0x50, 0x15, 0x72, + 0x86, 0xcd, 0x89, 0x73, 0x86, 0x2d, 0x1b, 0xe1, 0x3e, 0xb7, 0x58, 0xc4, 0xca, 0xba, 0x8e, 0xa3, + 0xa2, 0xdb, 0x50, 0xd5, 0x74, 0xdd, 0x20, 0xe6, 0xa4, 0xf5, 0x54, 0xc3, 0x66, 0x07, 0x9a, 0xf2, + 0xca, 0x62, 0xa2, 0x01, 0x34, 0x5b, 0x4a, 0x25, 0x40, 0x6f, 0xda, 0xae, 0xfc, 0x10, 0x4a, 0x7e, + 0x54, 0x48, 0x62, 0x97, 0x68, 0xd4, 0x97, 0x21, 0x86, 0xf4, 0x8f, 0x47, 0x3b, 0x43, 0x1b, 0x2f, + 0x17, 0xf9, 0x16, 0x80, 0xef, 0x90, 0x45, 0x70, 0x7a, 0x72, 0x04, 0x63, 0x25, 0x84, 0x2e, 0xff, + 0x38, 0xe2, 0xa6, 0x43, 0x4a, 0xd0, 0x7d, 0x25, 0xe8, 0x11, 0xb7, 0x9d, 0x7b, 0x21, 0xb7, 0xfd, + 0x36, 0x4c, 0xbb, 0x9e, 0xe6, 0x61, 0x1e, 0xdd, 0x9f, 0x1d, 0x45, 0x4e, 0x84, 0xc0, 0x0a, 0xc3, + 0x47, 0xa7, 0x00, 0x3a, 0x0e, 0xd6, 0x3c, 0xac, 0xab, 0x1a, 0xdb, 0x63, 0xf2, 0x4a, 0x89, 0x43, + 0xd6, 0x3c, 0xe2, 0x6f, 0xc4, 0x09, 0x25, 0x75, 0x73, 0x4d, 0x99, 0xea, 0xe0, 0xac, 0xe2, 0xfb, + 0xbc, 0x99, 0x8c, 0x3e, 0x8f, 0x33, 0xe0, 0x3e, 0x2f, 0xf0, 0xe8, 0xb3, 0xe3, 0x3d, 0x3a, 0x23, + 0xcd, 0xe2, 0xd1, 0x8b, 0xe3, 0x3d, 0x3a, 0x67, 0x36, 0xda, 0xa3, 0x27, 0xb8, 0x9f, 0x52, 0x92, + 0xfb, 0xf9, 0x26, 0xdd, 0xee, 0xbf, 0x49, 0x50, 0x1f, 0xf6, 0x02, 0xdc, 0xfb, 0xad, 0xc2, 0x8c, + 0x4b, 0x21, 0x59, 0x7c, 0x2f, 0xa7, 0xe5, 0x14, 0xe8, 0x21, 0x14, 0x0c, 0x73, 0xdf, 0xe2, 0x8b, + 0xf6, 0xcd, 0x0c, 0x94, 0xbc, 0xd7, 0xe5, 0xa6, 0xb9, 0x6f, 0x31, 0x6d, 0x52, 0x0e, 0x8d, 0xb7, + 0xa1, 0xe4, 0x83, 0x26, 0x1a, 0xdb, 0x36, 0x2c, 0xc4, 0x6c, 0x9b, 0x1d, 0x48, 0xfd, 0x25, 0x21, + 0x4d, 0xb6, 0x24, 0xe4, 0x1f, 0xe5, 0xc2, 0x4b, 0xf6, 0xbe, 0xd1, 0xf3, 0xb0, 0x33, 0xb4, 0x64, + 0xdf, 0x15, 0xdc, 0xd9, 0x7a, 0xbd, 0x30, 0x96, 0x3b, 0x3b, 0xe3, 0xf1, 0x55, 0xf7, 0x09, 0x54, + 0xa9, 0x51, 0xaa, 0x2e, 0xee, 0xd1, 0xb8, 0x89, 0xc7, 0xd4, 0x6f, 0x8d, 0x62, 0xc3, 0x24, 0x61, + 0xa6, 0xdd, 0xe6, 0x74, 0x4c, 0x83, 0x95, 0x5e, 0x18, 0xd6, 0xb8, 0x0b, 0x68, 0x18, 0x69, 0x22, + 0x9d, 0xb6, 0x89, 0x2f, 0x74, 0xbd, 0xc4, 0x7d, 0x7a, 0x9f, 0x8a, 0x91, 0xc5, 0x56, 0x98, 0xc0, + 0x0a, 0xa7, 0x90, 0xff, 0x3b, 0x0f, 0x10, 0xbc, 0xfc, 0x0d, 0x72, 0x82, 0x77, 0x7d, 0x07, 0xc4, + 0xe2, 0xd1, 0x4b, 0xa3, 0x18, 0x27, 0xba, 0x9e, 0xed, 0xa8, 0xeb, 0x61, 0x91, 0xe9, 0xd5, 0x91, + 0x6c, 0x26, 0x76, 0x3a, 0xb3, 0xdf, 0x36, 0xa7, 0xf3, 0x08, 0x8e, 0xc7, 0x8d, 0x88, 0x7b, 0x9c, + 0x15, 0x98, 0x36, 0x3c, 0xdc, 0x67, 0xf7, 0x9a, 0x89, 0xd7, 0x22, 0x21, 0x22, 0x86, 0x2a, 0xdf, + 0x86, 0xe3, 0xd1, 0xd9, 0x9b, 0x2c, 0x8c, 0x91, 0x95, 0x78, 0x1c, 0x14, 0x38, 0x40, 0x6e, 0x37, + 0x23, 0x2e, 0x9e, 0xe2, 0x94, 0x0c, 0x5f, 0xfe, 0x47, 0x09, 0x8e, 0xc5, 0x5e, 0xa5, 0xb8, 0x0b, + 0x6d, 0x68, 0xc1, 0x33, 0x8f, 0xb9, 0x3a, 0xb6, 0xaf, 0xaf, 0x71, 0xd5, 0xff, 0x36, 0x34, 0xa2, + 0x13, 0x16, 0x51, 0xf3, 0x9d, 0xd8, 0xd2, 0xbf, 0x98, 0x51, 0x74, 0x7f, 0xfd, 0xbf, 0x0f, 0x27, + 0x13, 0xd9, 0x0f, 0xcf, 0x42, 0x7e, 0xa2, 0x59, 0xf8, 0x69, 0x3e, 0xbc, 0x03, 0xac, 0x79, 0x9e, + 0x63, 0xec, 0x0d, 0x3c, 0xfc, 0x55, 0x84, 0x59, 0xdf, 0xf5, 0x3d, 0x01, 0xf3, 0xd7, 0x2b, 0xa3, + 0xe8, 0x03, 0x49, 0x12, 0x7d, 0xc2, 0x47, 0x51, 0x9f, 0x50, 0xa0, 0x0c, 0xdf, 0xce, 0xc8, 0x70, + 0xa4, 0x77, 0xf8, 0x26, 0x17, 0xfd, 0xaf, 0x24, 0x98, 0x8f, 0xcd, 0x13, 0xba, 0x0f, 0xa0, 0xf9, + 0xa2, 0x73, 0xeb, 0xb9, 0x90, 0x6d, 0xa0, 0x4a, 0x88, 0x92, 0xec, 0xb9, 0x2c, 0x8e, 0x4c, 0xdd, + 0x73, 0x13, 0xe2, 0x48, 0x3f, 0x8c, 0xbc, 0x17, 0x1c, 0x9d, 0xd9, 0x65, 0xee, 0xa5, 0x0c, 0x47, + 0x67, 0xc6, 0x41, 0x10, 0xca, 0x3f, 0xcf, 0xc1, 0x42, 0x52, 0x1f, 0xe8, 0x75, 0xc8, 0x77, 0xec, + 0x01, 0x1f, 0x5b, 0x42, 0x1a, 0x65, 0xdd, 0x1e, 0xec, 0xba, 0x5a, 0x17, 0x2b, 0x04, 0x0d, 0xbd, + 0x05, 0x33, 0x7d, 0xdc, 0xb7, 0x9c, 0x43, 0x3e, 0x92, 0x84, 0x0b, 0x8e, 0xc7, 0xf4, 0x3d, 0xa3, + 0xe1, 0xc8, 0xe8, 0x9d, 0x20, 0x18, 0x67, 0x23, 0x58, 0x4a, 0x38, 0x85, 0x30, 0x04, 0x46, 0xe8, + 0x47, 0xe0, 0xef, 0xc0, 0xac, 0xed, 0x58, 0x1d, 0xec, 0xba, 0xfc, 0x46, 0x66, 0x29, 0x31, 0xd3, + 0x43, 0x10, 0x38, 0x25, 0x47, 0x47, 0x77, 0x01, 0xfc, 0x7c, 0x8b, 0xd8, 0xff, 0xce, 0x24, 0x8c, + 0x4f, 0xe0, 0x30, 0x85, 0x85, 0x68, 0xc8, 0xb9, 0x37, 0x59, 0xad, 0xf2, 0x3f, 0x48, 0x30, 0x17, + 0x96, 0x17, 0xbd, 0x02, 0x25, 0xc2, 0xd6, 0xf5, 0xb4, 0xbe, 0xcd, 0xf3, 0x08, 0x01, 0x00, 0xed, + 0xc0, 0x11, 0x9d, 0x5d, 0xa3, 0xaa, 0x86, 0xe9, 0x61, 0x67, 0x5f, 0xeb, 0x88, 0xf0, 0xeb, 0x62, + 0xaa, 0x22, 0x9a, 0x02, 0x93, 0x8d, 0xab, 0xc6, 0x39, 0xf8, 0x60, 0xf4, 0x00, 0xc0, 0xe7, 0x26, + 0x96, 0x75, 0x66, 0x76, 0x21, 0x52, 0xf9, 0x0f, 0x72, 0x70, 0x2c, 0x11, 0x2b, 0xf1, 0x22, 0xf0, + 0x1d, 0x28, 0x3a, 0xcf, 0xd5, 0xbd, 0x43, 0x0f, 0xbb, 0xe9, 0x46, 0xb0, 0x1b, 0xca, 0x0e, 0xcc, + 0x3a, 0xcf, 0xef, 0x11, 0x6c, 0xb4, 0x0a, 0x25, 0xe7, 0xb9, 0x8a, 0x1d, 0xc7, 0x72, 0x84, 0x25, + 0x8f, 0x21, 0x2d, 0x3a, 0xcf, 0x37, 0x29, 0x3a, 0xe9, 0xd5, 0x13, 0xbd, 0x16, 0x32, 0xf5, 0xea, + 0x05, 0xbd, 0x7a, 0x7e, 0xaf, 0xd3, 0x99, 0x7a, 0xf5, 0x78, 0xaf, 0xb2, 0x0d, 0x73, 0x61, 0xe3, + 0x1a, 0x33, 0xcd, 0xf7, 0xa0, 0xc2, 0x8d, 0x4f, 0xed, 0x58, 0x03, 0xd3, 0xcb, 0xa6, 0x9e, 0x39, + 0x4e, 0xb3, 0x4e, 0x48, 0xe4, 0x9f, 0x4b, 0x50, 0x6a, 0xf6, 0xb5, 0x2e, 0x6e, 0xdb, 0xb8, 0x43, + 0xbc, 0x95, 0x41, 0x1a, 0x7c, 0x02, 0x58, 0x03, 0x6d, 0x45, 0xfd, 0x2f, 0xdb, 0x8f, 0x5f, 0x4f, + 0xc8, 0xd0, 0x08, 0x3e, 0x63, 0x9c, 0xee, 0xcb, 0x7a, 0xce, 0x15, 0x28, 0x7e, 0x0f, 0x1f, 0xb2, + 0xb3, 0x4b, 0x46, 0x3a, 0xf9, 0x67, 0x05, 0x58, 0x4c, 0xb9, 0xdb, 0xa6, 0x41, 0xad, 0x3d, 0x50, + 0x6d, 0xec, 0x18, 0x96, 0x2e, 0xd4, 0xdc, 0xb1, 0x07, 0x2d, 0x0a, 0x40, 0x27, 0x81, 0x34, 0xd4, + 0xcf, 0x06, 0x16, 0xdf, 0x0d, 0xf3, 0x4a, 0xb1, 0x63, 0x0f, 0x7e, 0x8b, 0xb4, 0x05, 0xad, 0x7b, + 0xa0, 0x39, 0x98, 0x19, 0x19, 0xa3, 0x6d, 0x53, 0x00, 0xba, 0x0e, 0xc7, 0x98, 0x4b, 0x52, 0x7b, + 0x46, 0xdf, 0x20, 0xcb, 0x31, 0x64, 0x53, 0x79, 0x05, 0xb1, 0x97, 0x8f, 0xc8, 0xbb, 0xa6, 0xc9, + 0xec, 0x47, 0x86, 0x8a, 0x65, 0xf5, 0x55, 0xb7, 0x63, 0x39, 0x58, 0xd5, 0xf4, 0x4f, 0xa9, 0x0d, + 0xe5, 0x95, 0xb2, 0x65, 0xf5, 0xdb, 0x04, 0xb6, 0xa6, 0x7f, 0x8a, 0x4e, 0x43, 0xb9, 0x63, 0x0f, + 0x5c, 0xec, 0xa9, 0xe4, 0x87, 0xde, 0x16, 0x94, 0x14, 0x60, 0xa0, 0x75, 0x7b, 0xe0, 0x86, 0x10, + 0xfa, 0x24, 0x7a, 0x9c, 0x0d, 0x23, 0x3c, 0xc6, 0x7d, 0x9a, 0xfe, 0x3b, 0x18, 0x74, 0xb1, 0xad, + 0x75, 0x31, 0x13, 0x4d, 0x1c, 0xf3, 0x13, 0xd2, 0x7f, 0x0f, 0x39, 0x22, 0x15, 0x53, 0xa9, 0x1e, + 0x84, 0x9b, 0x2e, 0x6a, 0xc1, 0xec, 0xc0, 0x34, 0xf6, 0x0d, 0xac, 0xd7, 0x4b, 0x94, 0xc3, 0x8d, + 0xcc, 0x59, 0x85, 0xe5, 0x5d, 0x46, 0xc8, 0x13, 0x1e, 0x9c, 0x0d, 0x5a, 0x85, 0x06, 0x57, 0x9a, + 0xfb, 0x4c, 0xb3, 0xe3, 0x9a, 0x03, 0xaa, 0x8e, 0xe3, 0x0c, 0xa3, 0xfd, 0x4c, 0xb3, 0xc3, 0xda, + 0x6b, 0xac, 0xc2, 0x5c, 0x98, 0xe9, 0x44, 0x76, 0x75, 0x0f, 0x2a, 0x91, 0xa1, 0x92, 0x99, 0xa7, + 0x0a, 0x72, 0x8d, 0x1f, 0x8a, 0x25, 0x51, 0x24, 0x80, 0xb6, 0xf1, 0x43, 0x9a, 0xc6, 0xa5, 0x92, + 0x51, 0x3e, 0x05, 0x85, 0x35, 0x64, 0x0d, 0x2a, 0x91, 0x6c, 0x29, 0x71, 0x69, 0x34, 0x2d, 0xca, + 0x5d, 0x1a, 0x79, 0x26, 0x30, 0xc7, 0xea, 0x09, 0x09, 0xe8, 0x33, 0x81, 0xd1, 0xfc, 0x1b, 0xcb, + 0x14, 0xd0, 0x67, 0xda, 0x05, 0x7e, 0xca, 0xd3, 0xed, 0x25, 0x85, 0x35, 0x64, 0x1d, 0x60, 0x5d, + 0xb3, 0xb5, 0x3d, 0xa3, 0x67, 0x78, 0x87, 0xe8, 0x32, 0xd4, 0x34, 0x5d, 0x57, 0x3b, 0x02, 0x62, + 0x60, 0x51, 0x04, 0x31, 0xaf, 0xe9, 0xfa, 0x7a, 0x08, 0x8c, 0x5e, 0x83, 0x23, 0xba, 0x63, 0xd9, + 0x51, 0x5c, 0x56, 0x15, 0x51, 0x23, 0x2f, 0xc2, 0xc8, 0xf2, 0xaf, 0x67, 0xe0, 0x54, 0x74, 0xda, + 0xe2, 0x19, 0xe9, 0xbb, 0x30, 0x17, 0xeb, 0x35, 0x25, 0x73, 0x1b, 0x48, 0xab, 0x44, 0x28, 0x62, + 0x19, 0xd6, 0xdc, 0x50, 0x86, 0x35, 0x31, 0xe7, 0x9d, 0xff, 0x52, 0x73, 0xde, 0x85, 0x2f, 0x25, + 0xe7, 0x3d, 0xfd, 0x72, 0x39, 0xef, 0xb9, 0x09, 0x73, 0xde, 0x17, 0xe8, 0x99, 0x56, 0xf4, 0x4e, + 0x77, 0x4c, 0xe6, 0x02, 0x2a, 0x7e, 0x1f, 0xa6, 0xa8, 0xbe, 0x89, 0xe5, 0xc6, 0x67, 0x27, 0xc9, + 0x8d, 0x17, 0x53, 0x73, 0xe3, 0x67, 0x60, 0xce, 0xb4, 0x54, 0x13, 0x3f, 0x53, 0xc9, 0x74, 0xb9, + 0xf5, 0x32, 0x9b, 0x3b, 0xd3, 0xda, 0xc2, 0xcf, 0x5a, 0x04, 0x82, 0xce, 0xc2, 0x5c, 0x5f, 0x73, + 0x9f, 0x60, 0x9d, 0x26, 0xa6, 0xdd, 0x7a, 0x85, 0xda, 0x59, 0x99, 0xc1, 0x5a, 0x04, 0x84, 0xce, + 0x83, 0x2f, 0x07, 0x47, 0xaa, 0x52, 0xa4, 0x8a, 0x80, 0x32, 0xb4, 0x50, 0x9e, 0x7d, 0xfe, 0xa5, + 0xf2, 0xec, 0xb5, 0xc9, 0xf3, 0xec, 0x57, 0xa1, 0x26, 0x9e, 0x45, 0xa2, 0x9d, 0xdd, 0x59, 0xd2, + 0x1c, 0xfb, 0xbc, 0x78, 0x27, 0x92, 0xe9, 0x69, 0x69, 0x79, 0x18, 0x99, 0x96, 0xff, 0x4b, 0x89, + 0xc7, 0xca, 0xfe, 0x52, 0xe3, 0x59, 0xbe, 0x48, 0xca, 0x56, 0x7a, 0xf1, 0x94, 0x2d, 0xfa, 0x7e, + 0x6a, 0xb2, 0xfb, 0xda, 0x38, 0x7e, 0xe3, 0xd2, 0xdd, 0xf2, 0xef, 0x49, 0x70, 0x8a, 0x87, 0xad, + 0x29, 0xa5, 0x2b, 0x09, 0xe6, 0x2a, 0xa5, 0x98, 0x6b, 0xc7, 0xc1, 0x3a, 0x36, 0x3d, 0x43, 0xeb, + 0xa9, 0xae, 0x8d, 0x3b, 0x22, 0x3d, 0x15, 0x80, 0x69, 0x98, 0x72, 0x16, 0xe6, 0x58, 0x25, 0x13, + 0x8f, 0xd4, 0x59, 0xc1, 0x52, 0x99, 0x16, 0x33, 0x31, 0x90, 0x3c, 0x80, 0xc5, 0x94, 0xec, 0x5e, + 0xa2, 0x32, 0xa4, 0x34, 0x65, 0x8c, 0x1c, 0xd9, 0xb0, 0x32, 0x7e, 0x5f, 0x82, 0xd3, 0x9c, 0x24, + 0xd5, 0x6f, 0x7e, 0x13, 0xea, 0xf8, 0x2b, 0xc9, 0x3f, 0x5b, 0xc4, 0x8d, 0xac, 0x39, 0x6c, 0x64, + 0xaf, 0xa5, 0xea, 0x61, 0xb4, 0x99, 0x7d, 0x92, 0x6a, 0x66, 0xd7, 0xc7, 0x73, 0x1c, 0xab, 0xdb, + 0x3f, 0x95, 0xe0, 0x44, 0xaa, 0x18, 0xb1, 0x40, 0x4c, 0x8a, 0x07, 0x62, 0x3c, 0x88, 0x0b, 0xe2, + 0x64, 0x16, 0xc4, 0xd1, 0x20, 0x98, 0x47, 0x4b, 0x6a, 0x5f, 0x7b, 0x6e, 0xf4, 0x07, 0x7d, 0x1e, + 0xc5, 0x11, 0x76, 0x8f, 0x19, 0xe4, 0x05, 0xc2, 0x38, 0x79, 0x0d, 0x8e, 0xf8, 0x52, 0x8e, 0x2c, + 0x74, 0x08, 0x15, 0x2e, 0xe4, 0xa2, 0x85, 0x0b, 0x26, 0xcc, 0x6c, 0xe0, 0xa7, 0x46, 0x07, 0x7f, + 0x29, 0x15, 0x7e, 0x67, 0xa0, 0x6c, 0x63, 0xa7, 0x6f, 0xb8, 0xae, 0xbf, 0x8d, 0x96, 0x94, 0x30, + 0x48, 0xfe, 0xcf, 0x19, 0x98, 0x8f, 0x5b, 0xc7, 0x9d, 0xa1, 0x3a, 0x89, 0x73, 0x23, 0xce, 0xb4, + 0x09, 0x17, 0x41, 0xd7, 0xc5, 0x91, 0x22, 0x97, 0x96, 0x0e, 0xf4, 0x8f, 0x0d, 0xe2, 0xbc, 0x51, + 0x87, 0xd9, 0x8e, 0xd5, 0xef, 0x6b, 0xa6, 0x2e, 0x0a, 0x33, 0x79, 0x93, 0xe8, 0x4f, 0x73, 0xba, + 0xec, 0x0a, 0xa8, 0xa4, 0xd0, 0x67, 0x32, 0x79, 0xe4, 0x24, 0x69, 0x98, 0xb4, 0xde, 0x82, 0x6e, + 0xc5, 0x25, 0x05, 0x38, 0x68, 0xc3, 0x70, 0xd0, 0x32, 0x14, 0xb0, 0xf9, 0x54, 0xdc, 0x25, 0x27, + 0x5c, 0x39, 0x88, 0xc3, 0x84, 0x42, 0xf1, 0xd0, 0x35, 0x98, 0xe9, 0x13, 0xb3, 0x10, 0x59, 0xb4, + 0xc5, 0x94, 0x02, 0x46, 0x85, 0xa3, 0xa1, 0x15, 0x98, 0xd5, 0xe9, 0x3c, 0x89, 0x18, 0xba, 0x9e, + 0x50, 0xc5, 0x41, 0x11, 0x14, 0x81, 0x88, 0x36, 0xfd, 0xfb, 0xb1, 0x52, 0xda, 0x15, 0x77, 0x6c, + 0x2a, 0x12, 0xaf, 0xc6, 0x76, 0xa2, 0x47, 0x33, 0x48, 0xbb, 0x6b, 0x8b, 0xf3, 0x1a, 0x7d, 0x67, + 0x7e, 0x02, 0x8a, 0x3d, 0xab, 0xcb, 0xcc, 0xa8, 0xcc, 0x6a, 0x7e, 0x7b, 0x56, 0x97, 0x5a, 0xd1, + 0x02, 0x4c, 0xbb, 0x9e, 0x6e, 0x98, 0x34, 0x66, 0x29, 0x2a, 0xac, 0x41, 0x16, 0x1f, 0x7d, 0x50, + 0x2d, 0xb3, 0x83, 0xeb, 0x15, 0xfa, 0xaa, 0x44, 0x21, 0xdb, 0x66, 0x87, 0x1e, 0xd2, 0x3c, 0xef, + 0xb0, 0x5e, 0xa5, 0x70, 0xf2, 0x18, 0x5c, 0x50, 0xcd, 0x8f, 0xbc, 0xa0, 0x8a, 0x89, 0x9d, 0x70, + 0x41, 0x55, 0x1b, 0x73, 0x41, 0x15, 0xe7, 0xf0, 0x6d, 0x28, 0xed, 0xf8, 0x1b, 0x09, 0x8e, 0xaf, + 0xd3, 0x9c, 0x49, 0xc8, 0x8f, 0x4d, 0x52, 0x68, 0x70, 0xd3, 0xaf, 0x01, 0x49, 0x4d, 0xde, 0xc7, + 0xc7, 0x2d, 0x4a, 0x40, 0x9a, 0x50, 0x15, 0xcc, 0x39, 0x8b, 0x7c, 0xe6, 0x32, 0x92, 0x8a, 0x1b, + 0x6e, 0xca, 0xef, 0xc2, 0xe2, 0xd0, 0x28, 0xf8, 0x0d, 0xf5, 0x59, 0x98, 0x0b, 0xfc, 0x95, 0x3f, + 0x88, 0xb2, 0x0f, 0x6b, 0xea, 0xf2, 0x2a, 0x1c, 0x6b, 0x7b, 0x9a, 0xe3, 0x0d, 0xa9, 0x20, 0x03, + 0x2d, 0x2d, 0x10, 0x89, 0xd2, 0xf2, 0x1a, 0x8e, 0x36, 0x2c, 0xb4, 0x3d, 0xcb, 0x7e, 0x01, 0xa6, + 0xc4, 0xeb, 0x90, 0xf1, 0x5b, 0x03, 0xb1, 0x3f, 0x88, 0xa6, 0xbc, 0xc8, 0xca, 0x59, 0x86, 0x7b, + 0xbb, 0x05, 0xc7, 0x59, 0x35, 0xc9, 0x8b, 0x0c, 0xe2, 0x84, 0xa8, 0x65, 0x19, 0xe6, 0xfb, 0x18, + 0x8e, 0x46, 0xae, 0x09, 0x79, 0x9e, 0xf6, 0x46, 0x34, 0x4f, 0x3b, 0xee, 0x72, 0xd1, 0x4f, 0xd3, + 0xfe, 0x71, 0x2e, 0xe4, 0xd7, 0x53, 0xd2, 0x2e, 0xb7, 0xa2, 0x59, 0xda, 0xf3, 0xe3, 0x78, 0x47, + 0x92, 0xb4, 0xc3, 0x56, 0x9b, 0x4f, 0xb0, 0xda, 0x8f, 0x87, 0x32, 0x3b, 0x85, 0xb4, 0x5c, 0x78, + 0x4c, 0xda, 0xaf, 0x25, 0xa7, 0xa3, 0xb0, 0x4c, 0xae, 0xdf, 0xb5, 0x9f, 0xce, 0xb9, 0x19, 0x4b, + 0xe7, 0x9c, 0x1d, 0x2b, 0xaf, 0x9f, 0xc8, 0xf9, 0x8b, 0x02, 0x94, 0xfc, 0x77, 0x43, 0x3a, 0x1f, + 0x56, 0x5b, 0x2e, 0x41, 0x6d, 0xe1, 0x1d, 0x38, 0xff, 0x52, 0x3b, 0x70, 0x21, 0xf3, 0x0e, 0x7c, + 0x12, 0x4a, 0xf4, 0x81, 0x96, 0xef, 0xb2, 0x1d, 0xb5, 0x48, 0x01, 0x0a, 0xde, 0x0f, 0xcc, 0x70, + 0x66, 0x22, 0x33, 0x8c, 0xe5, 0x8e, 0x67, 0xe3, 0xb9, 0xe3, 0x3b, 0xfe, 0x8e, 0x58, 0x4c, 0xbb, + 0x5a, 0xf6, 0xf9, 0x26, 0xee, 0x85, 0xb1, 0x6b, 0xca, 0x52, 0xda, 0x35, 0x65, 0xc0, 0xe5, 0x5b, + 0x9b, 0x1b, 0xda, 0x65, 0x09, 0xe1, 0xb0, 0x2d, 0x72, 0xcf, 0x7a, 0x2b, 0x92, 0x65, 0x60, 0x09, + 0xc0, 0x93, 0x23, 0xc6, 0x18, 0x49, 0x30, 0xec, 0xc2, 0xf1, 0xc8, 0xd4, 0x04, 0x05, 0x6e, 0xd9, + 0xfc, 0x63, 0x4a, 0x75, 0xdb, 0xff, 0x4d, 0x87, 0xfc, 0x4b, 0x4a, 0xe1, 0xd6, 0x9d, 0xa1, 0x8c, + 0xe2, 0x84, 0x56, 0x7c, 0x23, 0x5a, 0xb2, 0xf0, 0x82, 0x56, 0x37, 0x54, 0xb1, 0x40, 0x23, 0x17, + 0xcd, 0xe1, 0xaf, 0xd9, 0x55, 0x6b, 0x89, 0x43, 0xd6, 0xe8, 0xc9, 0x60, 0xdf, 0x30, 0x0d, 0xf7, + 0x80, 0xbd, 0x9f, 0x61, 0x27, 0x03, 0x01, 0x5a, 0xa3, 0x57, 0x84, 0xf8, 0xb9, 0xe1, 0xa9, 0x1d, + 0x4b, 0xc7, 0xd4, 0xa6, 0xa7, 0x95, 0x22, 0x01, 0xac, 0x5b, 0x3a, 0x0e, 0x56, 0x5e, 0xf1, 0xc5, + 0x56, 0x5e, 0x29, 0xb6, 0xf2, 0x8e, 0xc3, 0x8c, 0x83, 0x35, 0xd7, 0x32, 0xd9, 0x85, 0x82, 0xc2, + 0x5b, 0x64, 0x6a, 0xfa, 0xd8, 0x75, 0x49, 0x4f, 0x3c, 0x5c, 0xe3, 0xcd, 0x50, 0x98, 0x39, 0x37, + 0x36, 0xcc, 0x1c, 0x51, 0x10, 0x16, 0x0b, 0x33, 0x2b, 0x63, 0xc3, 0xcc, 0x4c, 0xf5, 0x60, 0x41, + 0xa0, 0x5d, 0xcd, 0x16, 0x68, 0x87, 0xe3, 0xd2, 0xf9, 0x48, 0x5c, 0xfa, 0x4d, 0x2e, 0xd6, 0x5f, + 0x4a, 0xb0, 0x38, 0xb4, 0xac, 0xf8, 0x72, 0xbd, 0x19, 0xab, 0x18, 0x3b, 0x3b, 0x56, 0x67, 0x7e, + 0xc1, 0xd8, 0x83, 0x48, 0xc1, 0xd8, 0x1b, 0xe3, 0x09, 0xbf, 0xf4, 0x7a, 0xb1, 0xff, 0xcd, 0xc1, + 0xe9, 0x5d, 0x5b, 0x8f, 0x45, 0x78, 0xfc, 0xd8, 0x9f, 0xdd, 0x71, 0xdc, 0x89, 0x26, 0xa3, 0x27, + 0xb8, 0xc1, 0xe2, 0xe1, 0xfe, 0x66, 0x3c, 0x1f, 0x3d, 0xd1, 0xfd, 0x84, 0xa0, 0x45, 0x7a, 0x52, + 0x19, 0xc1, 0xbd, 0x84, 0x64, 0xd9, 0xe8, 0x21, 0x7f, 0xc5, 0xc9, 0x2d, 0x19, 0xce, 0xa4, 0x0b, + 0xc0, 0xe3, 0xc3, 0x1f, 0xc0, 0xfc, 0xe6, 0x73, 0xdc, 0x69, 0x1f, 0x9a, 0x9d, 0x09, 0xe6, 0xa1, + 0x06, 0xf9, 0x4e, 0x5f, 0xe7, 0x17, 0xfe, 0xe4, 0x31, 0x1c, 0xf2, 0xe6, 0xa3, 0x21, 0xaf, 0x0a, + 0xb5, 0xa0, 0x07, 0x6e, 0xcb, 0xc7, 0x89, 0x2d, 0xeb, 0x04, 0x99, 0x30, 0x9f, 0x53, 0x78, 0x8b, + 0xc3, 0xb1, 0xc3, 0x8a, 0xc9, 0x19, 0x1c, 0x3b, 0x4e, 0xd4, 0x35, 0xe6, 0xa3, 0xae, 0x51, 0xfe, + 0x43, 0x09, 0xca, 0xa4, 0x87, 0x97, 0x92, 0x9f, 0x9f, 0x2b, 0xf3, 0xc1, 0xb9, 0xd2, 0x3f, 0x9e, + 0x16, 0xc2, 0xc7, 0xd3, 0x40, 0xf2, 0x69, 0x0a, 0x1e, 0x96, 0x7c, 0xc6, 0x87, 0x63, 0xc7, 0x91, + 0xcf, 0xc0, 0x1c, 0x93, 0x8d, 0x8f, 0xbc, 0x06, 0xf9, 0x81, 0xd3, 0x13, 0xf3, 0x37, 0x70, 0x7a, + 0xf2, 0x4f, 0x25, 0xa8, 0xac, 0x79, 0x9e, 0xd6, 0x39, 0x98, 0x60, 0x00, 0xbe, 0x70, 0xb9, 0xb0, + 0x70, 0xc3, 0x83, 0x08, 0xc4, 0x2d, 0xa4, 0x88, 0x3b, 0x1d, 0x11, 0x57, 0x86, 0xaa, 0x90, 0x25, + 0x55, 0xe0, 0x2d, 0x40, 0x2d, 0xcb, 0xf1, 0xee, 0x5b, 0xce, 0x33, 0xcd, 0xd1, 0x27, 0x3b, 0x6e, + 0x22, 0x28, 0xf0, 0x8f, 0x57, 0xf3, 0x97, 0xa6, 0x15, 0xfa, 0x2c, 0x5f, 0x84, 0xa3, 0x11, 0x7e, + 0xa9, 0x1d, 0xdf, 0x85, 0x32, 0xdd, 0xe4, 0xf8, 0xb9, 0xe3, 0x7a, 0x38, 0xc3, 0x9c, 0x69, 0x4b, + 0x94, 0xbf, 0x0b, 0x47, 0x48, 0x30, 0x44, 0xe1, 0xbe, 0xdf, 0x79, 0x2b, 0x16, 0x94, 0x9f, 0x4a, + 0x61, 0x14, 0x0b, 0xc8, 0x7f, 0x2d, 0xc1, 0x34, 0x85, 0x0f, 0x05, 0x28, 0x27, 0xa1, 0xe4, 0x60, + 0xdb, 0x52, 0x3d, 0xad, 0xeb, 0x7f, 0x2a, 0x4c, 0x00, 0x3b, 0x5a, 0x97, 0x26, 0x33, 0xe8, 0x4b, + 0xdd, 0xe8, 0x62, 0xd7, 0x13, 0xdf, 0x0b, 0x97, 0x09, 0x6c, 0x83, 0x81, 0x88, 0x92, 0x68, 0x9a, + 0xb0, 0x40, 0xb3, 0x81, 0xf4, 0x19, 0x2d, 0xb3, 0x6f, 0x98, 0xb2, 0x64, 0x87, 0xe8, 0x17, 0x4e, + 0x0d, 0x28, 0xc6, 0x12, 0x3a, 0x7e, 0x1b, 0x5d, 0x83, 0x02, 0xbd, 0x02, 0x9e, 0x1d, 0xaf, 0x37, + 0x8a, 0x28, 0x6f, 0x02, 0x0a, 0xab, 0x8d, 0x4f, 0xd0, 0x35, 0x98, 0xa1, 0x5a, 0x15, 0xb1, 0xe3, + 0x62, 0x0a, 0x23, 0x85, 0xa3, 0xc9, 0x1a, 0x20, 0xc6, 0x39, 0x12, 0x2f, 0x4e, 0x3e, 0x8d, 0x23, + 0xe2, 0xc7, 0xbf, 0x96, 0xe0, 0x68, 0xa4, 0x0f, 0x2e, 0xeb, 0xd5, 0x68, 0x27, 0xa9, 0xa2, 0xf2, + 0x0e, 0xd6, 0x23, 0x1b, 0xe6, 0xb5, 0x34, 0x91, 0xbe, 0xa2, 0xcd, 0xf2, 0x9f, 0x24, 0x80, 0xb5, + 0x81, 0x77, 0xc0, 0xef, 0x4d, 0xc3, 0x53, 0x29, 0xc5, 0xa6, 0xb2, 0x01, 0x45, 0x5b, 0x73, 0xdd, + 0x67, 0x96, 0x23, 0x4e, 0x7c, 0x7e, 0x9b, 0xde, 0x70, 0x0e, 0xbc, 0x03, 0x91, 0x06, 0x26, 0xcf, + 0xe8, 0x3c, 0x54, 0xd9, 0xf7, 0xec, 0xaa, 0xa6, 0xeb, 0x8e, 0x28, 0x4d, 0x2a, 0x29, 0x15, 0x06, + 0x5d, 0x63, 0x40, 0x82, 0x66, 0xd0, 0xb4, 0x80, 0x77, 0xa8, 0x7a, 0xd6, 0x13, 0x6c, 0xf2, 0x93, + 0x5b, 0x45, 0x40, 0x77, 0x08, 0x90, 0x65, 0xdd, 0xba, 0x86, 0xeb, 0x39, 0x02, 0x4d, 0xe4, 0x0e, + 0x39, 0x94, 0xa2, 0x91, 0x49, 0xa9, 0xb5, 0x06, 0xbd, 0x1e, 0x53, 0xf1, 0x8b, 0x4f, 0xfb, 0x77, + 0xf8, 0x80, 0x72, 0x69, 0x8b, 0x20, 0x50, 0x1a, 0x1f, 0xee, 0x97, 0x78, 0x45, 0xf5, 0x1d, 0x38, + 0x12, 0x1a, 0x03, 0x37, 0xab, 0x48, 0x88, 0x2d, 0x45, 0x43, 0x6c, 0xf9, 0x01, 0x20, 0x76, 0x2b, + 0xf3, 0x92, 0xe3, 0x96, 0x8f, 0xc1, 0xd1, 0x08, 0x23, 0xbe, 0x75, 0x5f, 0x81, 0x0a, 0x2f, 0x7d, + 0xe2, 0x86, 0x72, 0x02, 0x8a, 0xc4, 0x05, 0x77, 0x0c, 0x5d, 0xd4, 0x08, 0xcc, 0xda, 0x96, 0xbe, + 0x6e, 0xe8, 0x8e, 0xfc, 0x01, 0x54, 0xf8, 0x47, 0xb1, 0x1c, 0xf7, 0x3e, 0x54, 0x79, 0x9d, 0x9a, + 0x1a, 0xf9, 0x06, 0xec, 0x74, 0x6a, 0x15, 0x96, 0x50, 0x8b, 0x19, 0x6e, 0xca, 0x3a, 0x34, 0x58, + 0x8c, 0x11, 0x61, 0x2f, 0x06, 0x7b, 0x1f, 0x44, 0x69, 0xf4, 0xd8, 0x5e, 0xa2, 0xf4, 0x15, 0x27, + 0xdc, 0x94, 0x4f, 0xc1, 0xc9, 0xc4, 0x5e, 0xb8, 0x26, 0x6c, 0xa8, 0x05, 0x2f, 0xd8, 0x87, 0x4a, + 0x7e, 0x11, 0x84, 0x14, 0x2a, 0x82, 0x38, 0xee, 0x87, 0xd0, 0x39, 0xb1, 0xeb, 0xd1, 0xf8, 0x38, + 0x38, 0x0c, 0xe5, 0xd3, 0x0e, 0x43, 0x85, 0xc8, 0x61, 0x48, 0x6e, 0xfb, 0xfa, 0xe4, 0x87, 0xd4, + 0x7b, 0xf4, 0x30, 0xcd, 0xfa, 0x16, 0x0e, 0x51, 0x1e, 0x35, 0x4a, 0x86, 0xaa, 0x84, 0xa8, 0xe4, + 0xcb, 0x50, 0x89, 0xba, 0xc6, 0x90, 0x9f, 0x93, 0x86, 0xfc, 0x5c, 0x35, 0xe6, 0xe2, 0xde, 0x8e, + 0x9d, 0x0f, 0xd2, 0x75, 0x1c, 0x3b, 0x1d, 0xdc, 0x8e, 0x38, 0xbb, 0x2b, 0x09, 0x39, 0xed, 0xaf, + 0xc8, 0xcf, 0x2d, 0xf0, 0xfd, 0xe0, 0xbe, 0x4b, 0xe8, 0xf9, 0xa0, 0xe5, 0x73, 0x50, 0xde, 0x4d, + 0xfb, 0x8b, 0x83, 0x82, 0xa8, 0xc1, 0xba, 0x01, 0x0b, 0xf7, 0x8d, 0x1e, 0x76, 0x0f, 0x5d, 0x0f, + 0xf7, 0x9b, 0xd4, 0x29, 0xed, 0x1b, 0xd8, 0x41, 0x4b, 0x00, 0xf4, 0x80, 0x67, 0x5b, 0x86, 0xff, + 0xb1, 0x76, 0x08, 0x22, 0xff, 0x97, 0x04, 0xf3, 0x01, 0x61, 0x96, 0xca, 0xb8, 0x5b, 0x30, 0xbd, + 0xef, 0x8a, 0x0b, 0xb5, 0xc4, 0xf4, 0x42, 0x92, 0x20, 0x4a, 0x61, 0xdf, 0x6d, 0xea, 0xe8, 0x5d, + 0x80, 0x81, 0x8b, 0x75, 0x9e, 0xe1, 0xcb, 0x54, 0x37, 0x58, 0x22, 0x04, 0xac, 0x7c, 0xeb, 0x36, + 0x94, 0x0d, 0xd3, 0xd2, 0x31, 0xcd, 0xee, 0xea, 0xd9, 0x6a, 0x07, 0x81, 0x51, 0xec, 0xba, 0x58, + 0x97, 0x31, 0xdf, 0x0b, 0x85, 0x7e, 0xb9, 0xa1, 0x6c, 0xc1, 0x11, 0xe6, 0xb4, 0xf6, 0x7d, 0xc1, + 0x47, 0xd4, 0x7f, 0xc7, 0xb4, 0xa5, 0xd4, 0x0c, 0x1e, 0x0b, 0x09, 0x52, 0x79, 0x15, 0x8e, 0xc5, + 0x2a, 0x51, 0xb3, 0xdf, 0x5c, 0xb7, 0x62, 0xd7, 0x48, 0x81, 0x39, 0xdf, 0x88, 0x7e, 0x1f, 0x30, + 0xbe, 0xfc, 0x95, 0x17, 0xa6, 0x7f, 0x0c, 0x27, 0x22, 0xf7, 0x5d, 0x11, 0x89, 0x6e, 0xc7, 0x42, + 0xbd, 0x0b, 0xe3, 0xb8, 0xc6, 0x62, 0xbe, 0xff, 0x91, 0x60, 0x21, 0x09, 0xe1, 0x05, 0xef, 0x63, + 0x7f, 0x90, 0xf2, 0x45, 0xd2, 0xcd, 0x6c, 0x62, 0x7d, 0x2d, 0x77, 0xd9, 0x3b, 0xec, 0xfb, 0x84, + 0xf1, 0xb3, 0x94, 0x9f, 0x64, 0x96, 0x7e, 0x92, 0x0f, 0xe5, 0x25, 0x46, 0x7c, 0x3d, 0xf0, 0xd2, + 0x77, 0x7d, 0xcd, 0xd8, 0xc7, 0x03, 0xd7, 0x47, 0x90, 0x8f, 0xf9, 0x76, 0xe0, 0xc3, 0xa4, 0x43, + 0xff, 0x8d, 0x6c, 0xfc, 0xbe, 0xb5, 0xd7, 0xc3, 0x3f, 0xc9, 0x41, 0x35, 0x3a, 0x45, 0x68, 0x33, + 0xe1, 0xcb, 0x81, 0xf3, 0x99, 0x86, 0x19, 0xf9, 0x70, 0x80, 0x57, 0xe7, 0xe7, 0x26, 0xad, 0xce, + 0xcf, 0x4f, 0x52, 0x9d, 0xff, 0x10, 0xaa, 0xcf, 0x1c, 0xc3, 0xd3, 0xf6, 0x7a, 0x58, 0xed, 0x69, + 0x87, 0xd8, 0xe1, 0x5e, 0x32, 0x83, 0x23, 0xab, 0x08, 0xc2, 0x47, 0x84, 0x4e, 0xfe, 0x3b, 0x09, + 0x8a, 0x42, 0xa4, 0xb1, 0x35, 0xf1, 0x8b, 0x03, 0x82, 0xa6, 0xd2, 0xba, 0x5a, 0x53, 0x33, 0x2d, + 0xd5, 0xc5, 0x64, 0x1f, 0xcf, 0x58, 0x55, 0xbe, 0x40, 0xa9, 0xd7, 0x2d, 0x07, 0x6f, 0x69, 0xa6, + 0xd5, 0x66, 0xa4, 0xe8, 0x01, 0xd4, 0x18, 0x57, 0xca, 0x90, 0xb0, 0xce, 0xb8, 0x63, 0x54, 0x29, + 0x19, 0x61, 0x45, 0x58, 0xba, 0xf2, 0xdf, 0xe6, 0xa1, 0x1c, 0xd2, 0xd5, 0x98, 0xc1, 0x34, 0xe1, + 0x88, 0xa8, 0x79, 0x70, 0xb1, 0x37, 0x49, 0x71, 0xfc, 0x3c, 0xa7, 0x6b, 0x63, 0x8f, 0xed, 0x57, + 0xf7, 0x61, 0x5e, 0x7b, 0xaa, 0x19, 0x3d, 0x3a, 0x1b, 0x13, 0x6c, 0x79, 0x55, 0x9f, 0xca, 0xdf, + 0xf7, 0x98, 0x26, 0x26, 0xa8, 0x99, 0x07, 0x4a, 0x11, 0x14, 0xeb, 0xbb, 0x2e, 0xa7, 0xce, 0x56, + 0x36, 0xef, 0xb8, 0xae, 0xdf, 0x37, 0xad, 0xd3, 0xa5, 0x1f, 0x2c, 0xb8, 0xfc, 0xe3, 0xe9, 0x71, + 0x7d, 0x13, 0x8a, 0xfb, 0x94, 0x80, 0xa8, 0xb3, 0xaf, 0x7d, 0x6a, 0x39, 0x6a, 0x98, 0xcb, 0x6c, + 0x26, 0x75, 0x52, 0xba, 0x96, 0xcf, 0x4a, 0xbe, 0x0d, 0x27, 0x14, 0x6c, 0xd9, 0xd8, 0xf4, 0x57, + 0xda, 0x23, 0xab, 0x3b, 0xc1, 0xde, 0xfa, 0x0a, 0x34, 0x92, 0xe8, 0x99, 0xe7, 0xbe, 0x72, 0x01, + 0x8a, 0xe2, 0x6f, 0xc6, 0xd0, 0x2c, 0xe4, 0x77, 0xd6, 0x5b, 0xb5, 0x29, 0xf2, 0xb0, 0xbb, 0xd1, + 0xaa, 0x49, 0xa8, 0x08, 0x85, 0xf6, 0xfa, 0x4e, 0xab, 0x96, 0xbb, 0xd2, 0x87, 0x5a, 0xfc, 0x3f, + 0xb6, 0xd0, 0x22, 0x1c, 0x6d, 0x29, 0xdb, 0xad, 0xb5, 0x07, 0x6b, 0x3b, 0xcd, 0xed, 0x2d, 0xb5, + 0xa5, 0x34, 0xdf, 0x5f, 0xdb, 0xd9, 0xac, 0x4d, 0xa1, 0xb3, 0x70, 0x2a, 0xfc, 0xe2, 0xe1, 0x76, + 0x7b, 0x47, 0xdd, 0xd9, 0x56, 0xd7, 0xb7, 0xb7, 0x76, 0xd6, 0x9a, 0x5b, 0x9b, 0x4a, 0x4d, 0x42, + 0xa7, 0xe0, 0x44, 0x18, 0xe5, 0x5e, 0x73, 0xa3, 0xa9, 0x6c, 0xae, 0x93, 0xe7, 0xb5, 0x47, 0xb5, + 0xdc, 0x95, 0xf7, 0xa0, 0x12, 0xf9, 0x4b, 0x2c, 0x22, 0x52, 0x6b, 0x7b, 0xa3, 0x36, 0x85, 0x2a, + 0x50, 0x0a, 0xf3, 0x29, 0x42, 0x61, 0x6b, 0x7b, 0x63, 0xb3, 0x96, 0x43, 0x00, 0x33, 0x3b, 0x6b, + 0xca, 0x83, 0xcd, 0x9d, 0x5a, 0xfe, 0xca, 0x6a, 0xfc, 0x43, 0x28, 0x8c, 0x8e, 0x40, 0xa5, 0xbd, + 0xb6, 0xb5, 0x71, 0x6f, 0xfb, 0x43, 0x55, 0xd9, 0x5c, 0xdb, 0xf8, 0xa8, 0x36, 0x85, 0x16, 0xa0, + 0x26, 0x40, 0x5b, 0xdb, 0x3b, 0x0c, 0x2a, 0x5d, 0x79, 0x12, 0xf3, 0x84, 0x18, 0x1d, 0x83, 0x23, + 0x7e, 0x97, 0xea, 0xba, 0xb2, 0xb9, 0xb6, 0xb3, 0x49, 0x24, 0x89, 0x80, 0x95, 0xdd, 0xad, 0xad, + 0xe6, 0xd6, 0x83, 0x9a, 0x44, 0xb8, 0x06, 0xe0, 0xcd, 0x0f, 0x9b, 0x04, 0x39, 0x17, 0x45, 0xde, + 0xdd, 0xfa, 0xde, 0xd6, 0xf6, 0x07, 0x5b, 0xb5, 0xfc, 0xca, 0xcf, 0x8e, 0xfa, 0x7f, 0x53, 0xd4, + 0xc6, 0x0e, 0xad, 0xcc, 0x6a, 0xc1, 0xac, 0xf8, 0x0b, 0xbb, 0x84, 0x7d, 0x34, 0xfa, 0xc7, 0x7b, + 0x8d, 0xb3, 0x23, 0x30, 0xf8, 0xa9, 0x68, 0x0a, 0xed, 0xd1, 0x53, 0x4a, 0xe8, 0xf3, 0xdf, 0x0b, + 0x89, 0x67, 0x82, 0xa1, 0x2f, 0x8e, 0x1b, 0x17, 0xc7, 0xe2, 0xf9, 0x7d, 0x60, 0x72, 0x10, 0x09, + 0xff, 0xc3, 0x06, 0xba, 0x98, 0x74, 0x82, 0x48, 0xf8, 0x0b, 0x8f, 0xc6, 0xa5, 0xf1, 0x88, 0x7e, + 0x37, 0x4f, 0xa0, 0x16, 0xff, 0xb7, 0x0d, 0x94, 0x70, 0xfd, 0x9f, 0xf2, 0x97, 0x1e, 0x8d, 0x2b, + 0x59, 0x50, 0xc3, 0x9d, 0x0d, 0xfd, 0x7d, 0xc4, 0xe5, 0x2c, 0x9f, 0xd9, 0xa7, 0x76, 0x96, 0xf6, + 0x45, 0x3e, 0x53, 0x60, 0xf4, 0x0b, 0x4d, 0x94, 0xf8, 0x5f, 0x0d, 0x09, 0x1f, 0x86, 0x27, 0x29, + 0x30, 0xf9, 0xe3, 0x5f, 0x79, 0x0a, 0x1d, 0xc0, 0x7c, 0xac, 0xc4, 0x06, 0x25, 0x90, 0x27, 0xd7, + 0x12, 0x35, 0x2e, 0x67, 0xc0, 0x8c, 0x5a, 0x44, 0xb8, 0xa4, 0x26, 0xd9, 0x22, 0x12, 0x0a, 0x76, + 0x92, 0x2d, 0x22, 0xb1, 0x3a, 0x87, 0x1a, 0x77, 0xa4, 0x94, 0x26, 0xc9, 0xb8, 0x93, 0x0a, 0x78, + 0x1a, 0x17, 0xc7, 0xe2, 0x85, 0x95, 0x16, 0x2b, 0xac, 0x49, 0x52, 0x5a, 0x72, 0xe1, 0x4e, 0xe3, + 0x72, 0x06, 0xcc, 0xb8, 0x15, 0x04, 0x69, 0xfa, 0x34, 0x2b, 0x18, 0x2a, 0x2a, 0x49, 0xb3, 0x82, + 0xe1, 0x8c, 0x3f, 0xb7, 0x82, 0x58, 0x7a, 0xfd, 0x52, 0x86, 0x74, 0x60, 0xba, 0x15, 0x24, 0x27, + 0x0e, 0xe5, 0x29, 0xf4, 0x63, 0x09, 0xea, 0x69, 0xd9, 0x27, 0x74, 0x7d, 0xe2, 0x54, 0x59, 0x63, + 0x65, 0x12, 0x12, 0x5f, 0x8a, 0xcf, 0x00, 0x0d, 0xef, 0x81, 0xe8, 0xb5, 0xa4, 0x99, 0x49, 0xd9, + 0x69, 0x1b, 0xaf, 0x67, 0x43, 0xf6, 0xbb, 0x6c, 0x43, 0x51, 0xe4, 0xbb, 0x50, 0x82, 0x97, 0x8e, + 0x65, 0xdb, 0x1a, 0xf2, 0x28, 0x14, 0x9f, 0xe9, 0x03, 0x28, 0x10, 0x28, 0x3a, 0x95, 0x8c, 0x2d, + 0x98, 0x2d, 0xa5, 0xbd, 0xf6, 0x19, 0x3d, 0x86, 0x19, 0x96, 0xe0, 0x41, 0x09, 0xf7, 0x43, 0x91, + 0x34, 0x54, 0xe3, 0x4c, 0x3a, 0x82, 0xcf, 0xee, 0x13, 0xf6, 0xef, 0xa6, 0x3c, 0x77, 0x83, 0x5e, + 0x4d, 0xfe, 0xd3, 0xb0, 0x68, 0xaa, 0xa8, 0x71, 0x7e, 0x0c, 0x56, 0x78, 0x51, 0xc4, 0xce, 0x26, + 0x17, 0xc7, 0x1e, 0x30, 0xd3, 0x17, 0x45, 0xf2, 0x11, 0x96, 0x19, 0xc9, 0xf0, 0x11, 0x37, 0xc9, + 0x48, 0x52, 0x2f, 0x16, 0x92, 0x8c, 0x24, 0xfd, 0xd4, 0xcc, 0xd6, 0x61, 0xfc, 0x6b, 0xe6, 0x4b, + 0xe3, 0xbf, 0xbd, 0x4f, 0x5f, 0x87, 0x29, 0xdf, 0xf7, 0xcb, 0x53, 0xc8, 0x83, 0xa3, 0x09, 0x7f, + 0x00, 0x80, 0x5e, 0x1f, 0xb7, 0x75, 0x44, 0x7a, 0xbc, 0x9a, 0x11, 0x3b, 0xdc, 0x6b, 0xc2, 0x85, + 0x6d, 0x52, 0xaf, 0xe9, 0xb7, 0xc7, 0x49, 0xbd, 0x8e, 0xba, 0x05, 0xa6, 0xc6, 0xcd, 0x9d, 0xda, + 0xe9, 0xf4, 0x5b, 0xcc, 0x54, 0xe3, 0x8e, 0xbb, 0xb0, 0x95, 0x5f, 0xe5, 0x61, 0x8e, 0x5d, 0xc6, + 0xf3, 0x08, 0xed, 0x23, 0x80, 0x20, 0x0f, 0x86, 0xce, 0x25, 0x2b, 0x25, 0x92, 0x5c, 0x6c, 0xbc, + 0x3a, 0x1a, 0x29, 0xbc, 0x90, 0x42, 0x39, 0xa5, 0xa4, 0x85, 0x34, 0x9c, 0x3a, 0x4b, 0x5a, 0x48, + 0x09, 0x89, 0x29, 0x79, 0x0a, 0xbd, 0x0f, 0x25, 0x3f, 0x79, 0x81, 0x92, 0x92, 0x1f, 0xb1, 0xec, + 0x4c, 0xe3, 0xdc, 0x48, 0x9c, 0xb0, 0xd4, 0xa1, 0xcc, 0x44, 0x92, 0xd4, 0xc3, 0x19, 0x90, 0x24, + 0xa9, 0x93, 0xd2, 0x1b, 0x81, 0x4e, 0xd8, 0xfd, 0x65, 0xaa, 0x4e, 0x22, 0xd7, 0xc7, 0xa9, 0x3a, + 0x89, 0x5e, 0x82, 0xca, 0x53, 0xf7, 0x2e, 0xfc, 0xe2, 0xf3, 0x25, 0xe9, 0x5f, 0x3f, 0x5f, 0x9a, + 0xfa, 0xd1, 0x17, 0x4b, 0xd2, 0x2f, 0xbe, 0x58, 0x92, 0xfe, 0xe5, 0x8b, 0x25, 0xe9, 0xdf, 0xbf, + 0x58, 0x92, 0x7e, 0xf7, 0x3f, 0x96, 0xa6, 0xbe, 0x5f, 0x14, 0xd4, 0x7b, 0x33, 0xf4, 0x3f, 0x98, + 0xdf, 0xf8, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2a, 0xb2, 0xfb, 0xb6, 0x49, 0x5b, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -7500,6 +8493,11 @@ type RuntimeServiceClient interface { ContainerStats(ctx context.Context, in *ContainerStatsRequest, opts ...grpc.CallOption) (*ContainerStatsResponse, error) // ListContainerStats returns stats of all running containers. ListContainerStats(ctx context.Context, in *ListContainerStatsRequest, opts ...grpc.CallOption) (*ListContainerStatsResponse, error) + // PodSandboxStats returns stats of the pod sandbox. If the pod sandbox does not + // exist, the call returns an error. + PodSandboxStats(ctx context.Context, in *PodSandboxStatsRequest, opts ...grpc.CallOption) (*PodSandboxStatsResponse, error) + // ListPodSandboxStats returns stats of the pod sandboxes matching a filter. + ListPodSandboxStats(ctx context.Context, in *ListPodSandboxStatsRequest, opts ...grpc.CallOption) (*ListPodSandboxStatsResponse, error) // UpdateRuntimeConfig updates the runtime configuration based on the given request. UpdateRuntimeConfig(ctx context.Context, in *UpdateRuntimeConfigRequest, opts ...grpc.CallOption) (*UpdateRuntimeConfigResponse, error) // Status returns the status of the runtime. @@ -7694,6 +8692,24 @@ func (c *runtimeServiceClient) ListContainerStats(ctx context.Context, in *ListC return out, nil } +func (c *runtimeServiceClient) PodSandboxStats(ctx context.Context, in *PodSandboxStatsRequest, opts ...grpc.CallOption) (*PodSandboxStatsResponse, error) { + out := new(PodSandboxStatsResponse) + err := c.cc.Invoke(ctx, "/runtime.v1alpha2.RuntimeService/PodSandboxStats", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *runtimeServiceClient) ListPodSandboxStats(ctx context.Context, in *ListPodSandboxStatsRequest, opts ...grpc.CallOption) (*ListPodSandboxStatsResponse, error) { + out := new(ListPodSandboxStatsResponse) + err := c.cc.Invoke(ctx, "/runtime.v1alpha2.RuntimeService/ListPodSandboxStats", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *runtimeServiceClient) UpdateRuntimeConfig(ctx context.Context, in *UpdateRuntimeConfigRequest, opts ...grpc.CallOption) (*UpdateRuntimeConfigResponse, error) { out := new(UpdateRuntimeConfigResponse) err := c.cc.Invoke(ctx, "/runtime.v1alpha2.RuntimeService/UpdateRuntimeConfig", in, out, opts...) @@ -7779,6 +8795,11 @@ type RuntimeServiceServer interface { ContainerStats(context.Context, *ContainerStatsRequest) (*ContainerStatsResponse, error) // ListContainerStats returns stats of all running containers. ListContainerStats(context.Context, *ListContainerStatsRequest) (*ListContainerStatsResponse, error) + // PodSandboxStats returns stats of the pod sandbox. If the pod sandbox does not + // exist, the call returns an error. + PodSandboxStats(context.Context, *PodSandboxStatsRequest) (*PodSandboxStatsResponse, error) + // ListPodSandboxStats returns stats of the pod sandboxes matching a filter. + ListPodSandboxStats(context.Context, *ListPodSandboxStatsRequest) (*ListPodSandboxStatsResponse, error) // UpdateRuntimeConfig updates the runtime configuration based on the given request. UpdateRuntimeConfig(context.Context, *UpdateRuntimeConfigRequest) (*UpdateRuntimeConfigResponse, error) // Status returns the status of the runtime. @@ -7849,6 +8870,12 @@ func (*UnimplementedRuntimeServiceServer) ContainerStats(ctx context.Context, re func (*UnimplementedRuntimeServiceServer) ListContainerStats(ctx context.Context, req *ListContainerStatsRequest) (*ListContainerStatsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListContainerStats not implemented") } +func (*UnimplementedRuntimeServiceServer) PodSandboxStats(ctx context.Context, req *PodSandboxStatsRequest) (*PodSandboxStatsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PodSandboxStats not implemented") +} +func (*UnimplementedRuntimeServiceServer) ListPodSandboxStats(ctx context.Context, req *ListPodSandboxStatsRequest) (*ListPodSandboxStatsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListPodSandboxStats not implemented") +} func (*UnimplementedRuntimeServiceServer) UpdateRuntimeConfig(ctx context.Context, req *UpdateRuntimeConfigRequest) (*UpdateRuntimeConfigResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateRuntimeConfig not implemented") } @@ -8220,6 +9247,42 @@ func _RuntimeService_ListContainerStats_Handler(srv interface{}, ctx context.Con return interceptor(ctx, in, info, handler) } +func _RuntimeService_PodSandboxStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PodSandboxStatsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RuntimeServiceServer).PodSandboxStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/runtime.v1alpha2.RuntimeService/PodSandboxStats", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RuntimeServiceServer).PodSandboxStats(ctx, req.(*PodSandboxStatsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _RuntimeService_ListPodSandboxStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListPodSandboxStatsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RuntimeServiceServer).ListPodSandboxStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/runtime.v1alpha2.RuntimeService/ListPodSandboxStats", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RuntimeServiceServer).ListPodSandboxStats(ctx, req.(*ListPodSandboxStatsRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _RuntimeService_UpdateRuntimeConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(UpdateRuntimeConfigRequest) if err := dec(in); err != nil { @@ -8340,6 +9403,14 @@ var _RuntimeService_serviceDesc = grpc.ServiceDesc{ MethodName: "ListContainerStats", Handler: _RuntimeService_ListContainerStats_Handler, }, + { + MethodName: "PodSandboxStats", + Handler: _RuntimeService_PodSandboxStats_Handler, + }, + { + MethodName: "ListPodSandboxStats", + Handler: _RuntimeService_ListPodSandboxStats_Handler, + }, { MethodName: "UpdateRuntimeConfig", Handler: _RuntimeService_UpdateRuntimeConfig_Handler, @@ -9094,6 +10165,30 @@ func (m *LinuxPodSandboxConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Resources != nil { + { + size, err := m.Resources.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + if m.Overhead != nil { + { + size, err := m.Overhead.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } if len(m.Sysctls) > 0 { for k := range m.Sysctls { v := m.Sysctls[k] @@ -9204,6 +10299,18 @@ func (m *PodSandboxConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Windows != nil { + { + size, err := m.Windows.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } if m.Linux != nil { { size, err := m.Linux.MarshalToSizedBuffer(dAtA[:i]) @@ -10104,6 +11211,611 @@ func (m *ListPodSandboxResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } +func (m *PodSandboxStatsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodSandboxStatsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PodSandboxStatsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.PodSandboxId) > 0 { + i -= len(m.PodSandboxId) + copy(dAtA[i:], m.PodSandboxId) + i = encodeVarintApi(dAtA, i, uint64(len(m.PodSandboxId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *PodSandboxStatsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodSandboxStatsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PodSandboxStatsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Stats != nil { + { + size, err := m.Stats.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *PodSandboxStatsFilter) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodSandboxStatsFilter) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PodSandboxStatsFilter) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.LabelSelector) > 0 { + for k := range m.LabelSelector { + v := m.LabelSelector[k] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarintApi(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(k) + copy(dAtA[i:], k) + i = encodeVarintApi(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = encodeVarintApi(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x12 + } + } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintApi(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ListPodSandboxStatsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ListPodSandboxStatsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ListPodSandboxStatsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Filter != nil { + { + size, err := m.Filter.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ListPodSandboxStatsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ListPodSandboxStatsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ListPodSandboxStatsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Stats) > 0 { + for iNdEx := len(m.Stats) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Stats[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *PodSandboxAttributes) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodSandboxAttributes) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PodSandboxAttributes) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Annotations) > 0 { + for k := range m.Annotations { + v := m.Annotations[k] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarintApi(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(k) + copy(dAtA[i:], k) + i = encodeVarintApi(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = encodeVarintApi(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x22 + } + } + if len(m.Labels) > 0 { + for k := range m.Labels { + v := m.Labels[k] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarintApi(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(k) + copy(dAtA[i:], k) + i = encodeVarintApi(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = encodeVarintApi(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x1a + } + } + if m.Metadata != nil { + { + size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintApi(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *PodSandboxStats) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodSandboxStats) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PodSandboxStats) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Windows != nil { + { + size, err := m.Windows.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.Linux != nil { + { + size, err := m.Linux.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.Attributes != nil { + { + size, err := m.Attributes.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *LinuxPodSandboxStats) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LinuxPodSandboxStats) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *LinuxPodSandboxStats) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Containers) > 0 { + for iNdEx := len(m.Containers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Containers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if m.Process != nil { + { + size, err := m.Process.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.Network != nil { + { + size, err := m.Network.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.Memory != nil { + { + size, err := m.Memory.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.Cpu != nil { + { + size, err := m.Cpu.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *WindowsPodSandboxStats) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *WindowsPodSandboxStats) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *WindowsPodSandboxStats) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *NetworkUsage) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NetworkUsage) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *NetworkUsage) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Interfaces) > 0 { + for iNdEx := len(m.Interfaces) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Interfaces[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if m.DefaultInterface != nil { + { + size, err := m.DefaultInterface.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.Timestamp != 0 { + i = encodeVarintApi(dAtA, i, uint64(m.Timestamp)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *NetworkInterfaceUsage) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NetworkInterfaceUsage) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *NetworkInterfaceUsage) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.TxErrors != nil { + { + size, err := m.TxErrors.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + if m.TxBytes != nil { + { + size, err := m.TxBytes.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.RxErrors != nil { + { + size, err := m.RxErrors.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.RxBytes != nil { + { + size, err := m.RxBytes.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintApi(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ProcessUsage) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ProcessUsage) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ProcessUsage) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.ProcessCount != nil { + { + size, err := m.ProcessCount.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.Timestamp != 0 { + i = encodeVarintApi(dAtA, i, uint64(m.Timestamp)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *ImageSpec) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -10210,6 +11922,30 @@ func (m *LinuxContainerResources) MarshalToSizedBuffer(dAtA []byte) (int, error) _ = i var l int _ = l + if m.MemorySwapLimitInBytes != 0 { + i = encodeVarintApi(dAtA, i, uint64(m.MemorySwapLimitInBytes)) + i-- + dAtA[i] = 0x50 + } + if len(m.Unified) > 0 { + for k := range m.Unified { + v := m.Unified[k] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarintApi(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(k) + copy(dAtA[i:], k) + i = encodeVarintApi(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = encodeVarintApi(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x4a + } + } if len(m.HugepageLimits) > 0 { for iNdEx := len(m.HugepageLimits) - 1; iNdEx >= 0; iNdEx-- { { @@ -10494,21 +12230,21 @@ func (m *LinuxContainerSecurityContext) MarshalToSizedBuffer(dAtA []byte) (int, dAtA[i] = 0x4a } if len(m.SupplementalGroups) > 0 { - dAtA27 := make([]byte, len(m.SupplementalGroups)*10) - var j26 int + dAtA46 := make([]byte, len(m.SupplementalGroups)*10) + var j45 int for _, num1 := range m.SupplementalGroups { num := uint64(num1) for num >= 1<<7 { - dAtA27[j26] = uint8(uint64(num)&0x7f | 0x80) + dAtA46[j45] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j26++ + j45++ } - dAtA27[j26] = uint8(num) - j26++ + dAtA46[j45] = uint8(num) + j45++ } - i -= j26 - copy(dAtA[i:], dAtA27[:j26]) - i = encodeVarintApi(dAtA, i, uint64(j26)) + i -= j45 + copy(dAtA[i:], dAtA46[:j45]) + i = encodeVarintApi(dAtA, i, uint64(j45)) i-- dAtA[i] = 0x42 } @@ -10637,6 +12373,88 @@ func (m *LinuxContainerConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *WindowsSandboxSecurityContext) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *WindowsSandboxSecurityContext) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *WindowsSandboxSecurityContext) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.HostProcess { + i-- + if m.HostProcess { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if len(m.CredentialSpec) > 0 { + i -= len(m.CredentialSpec) + copy(dAtA[i:], m.CredentialSpec) + i = encodeVarintApi(dAtA, i, uint64(len(m.CredentialSpec))) + i-- + dAtA[i] = 0x12 + } + if len(m.RunAsUsername) > 0 { + i -= len(m.RunAsUsername) + copy(dAtA[i:], m.RunAsUsername) + i = encodeVarintApi(dAtA, i, uint64(len(m.RunAsUsername))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *WindowsPodSandboxConfig) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *WindowsPodSandboxConfig) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *WindowsPodSandboxConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.SecurityContext != nil { + { + size, err := m.SecurityContext.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *WindowsContainerSecurityContext) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -10657,6 +12475,16 @@ func (m *WindowsContainerSecurityContext) MarshalToSizedBuffer(dAtA []byte) (int _ = i var l int _ = l + if m.HostProcess { + i-- + if m.HostProcess { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } if len(m.CredentialSpec) > 0 { i -= len(m.CredentialSpec) copy(dAtA[i:], m.CredentialSpec) @@ -12255,21 +14083,21 @@ func (m *PortForwardRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { var l int _ = l if len(m.Port) > 0 { - dAtA52 := make([]byte, len(m.Port)*10) - var j51 int + dAtA72 := make([]byte, len(m.Port)*10) + var j71 int for _, num1 := range m.Port { num := uint64(num1) for num >= 1<<7 { - dAtA52[j51] = uint8(uint64(num)&0x7f | 0x80) + dAtA72[j71] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j51++ + j71++ } - dAtA52[j51] = uint8(num) - j51++ + dAtA72[j71] = uint8(num) + j71++ } - i -= j51 - copy(dAtA[i:], dAtA52[:j51]) - i = encodeVarintApi(dAtA, i, uint64(j51)) + i -= j71 + copy(dAtA[i:], dAtA72[:j71]) + i = encodeVarintApi(dAtA, i, uint64(j71)) i-- dAtA[i] = 0x12 } @@ -13662,6 +15490,18 @@ func (m *CpuUsage) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.UsageNanoCores != nil { + { + size, err := m.UsageNanoCores.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } if m.UsageCoreNanoSeconds != nil { { size, err := m.UsageCoreNanoSeconds.MarshalToSizedBuffer(dAtA[:i]) @@ -13702,6 +15542,66 @@ func (m *MemoryUsage) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.MajorPageFaults != nil { + { + size, err := m.MajorPageFaults.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + if m.PageFaults != nil { + { + size, err := m.PageFaults.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + if m.RssBytes != nil { + { + size, err := m.RssBytes.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + if m.UsageBytes != nil { + { + size, err := m.UsageBytes.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.AvailableBytes != nil { + { + size, err := m.AvailableBytes.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } if m.WorkingSetBytes != nil { { size, err := m.WorkingSetBytes.MarshalToSizedBuffer(dAtA[:i]) @@ -14021,6 +15921,14 @@ func (m *LinuxPodSandboxConfig) Size() (n int) { n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) } } + if m.Overhead != nil { + l = m.Overhead.Size() + n += 1 + l + sovApi(uint64(l)) + } + if m.Resources != nil { + l = m.Resources.Size() + n += 1 + l + sovApi(uint64(l)) + } return n } @@ -14096,6 +16004,10 @@ func (m *PodSandboxConfig) Size() (n int) { l = m.Linux.Size() n += 1 + l + sovApi(uint64(l)) } + if m.Windows != nil { + l = m.Windows.Size() + n += 1 + l + sovApi(uint64(l)) + } return n } @@ -14427,6 +16339,242 @@ func (m *ListPodSandboxResponse) Size() (n int) { return n } +func (m *PodSandboxStatsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.PodSandboxId) + if l > 0 { + n += 1 + l + sovApi(uint64(l)) + } + return n +} + +func (m *PodSandboxStatsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Stats != nil { + l = m.Stats.Size() + n += 1 + l + sovApi(uint64(l)) + } + return n +} + +func (m *PodSandboxStatsFilter) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovApi(uint64(l)) + } + if len(m.LabelSelector) > 0 { + for k, v := range m.LabelSelector { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) + n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) + } + } + return n +} + +func (m *ListPodSandboxStatsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Filter != nil { + l = m.Filter.Size() + n += 1 + l + sovApi(uint64(l)) + } + return n +} + +func (m *ListPodSandboxStatsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Stats) > 0 { + for _, e := range m.Stats { + l = e.Size() + n += 1 + l + sovApi(uint64(l)) + } + } + return n +} + +func (m *PodSandboxAttributes) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovApi(uint64(l)) + } + if m.Metadata != nil { + l = m.Metadata.Size() + n += 1 + l + sovApi(uint64(l)) + } + if len(m.Labels) > 0 { + for k, v := range m.Labels { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) + n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) + } + } + if len(m.Annotations) > 0 { + for k, v := range m.Annotations { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) + n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) + } + } + return n +} + +func (m *PodSandboxStats) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Attributes != nil { + l = m.Attributes.Size() + n += 1 + l + sovApi(uint64(l)) + } + if m.Linux != nil { + l = m.Linux.Size() + n += 1 + l + sovApi(uint64(l)) + } + if m.Windows != nil { + l = m.Windows.Size() + n += 1 + l + sovApi(uint64(l)) + } + return n +} + +func (m *LinuxPodSandboxStats) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Cpu != nil { + l = m.Cpu.Size() + n += 1 + l + sovApi(uint64(l)) + } + if m.Memory != nil { + l = m.Memory.Size() + n += 1 + l + sovApi(uint64(l)) + } + if m.Network != nil { + l = m.Network.Size() + n += 1 + l + sovApi(uint64(l)) + } + if m.Process != nil { + l = m.Process.Size() + n += 1 + l + sovApi(uint64(l)) + } + if len(m.Containers) > 0 { + for _, e := range m.Containers { + l = e.Size() + n += 1 + l + sovApi(uint64(l)) + } + } + return n +} + +func (m *WindowsPodSandboxStats) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *NetworkUsage) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Timestamp != 0 { + n += 1 + sovApi(uint64(m.Timestamp)) + } + if m.DefaultInterface != nil { + l = m.DefaultInterface.Size() + n += 1 + l + sovApi(uint64(l)) + } + if len(m.Interfaces) > 0 { + for _, e := range m.Interfaces { + l = e.Size() + n += 1 + l + sovApi(uint64(l)) + } + } + return n +} + +func (m *NetworkInterfaceUsage) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + if l > 0 { + n += 1 + l + sovApi(uint64(l)) + } + if m.RxBytes != nil { + l = m.RxBytes.Size() + n += 1 + l + sovApi(uint64(l)) + } + if m.RxErrors != nil { + l = m.RxErrors.Size() + n += 1 + l + sovApi(uint64(l)) + } + if m.TxBytes != nil { + l = m.TxBytes.Size() + n += 1 + l + sovApi(uint64(l)) + } + if m.TxErrors != nil { + l = m.TxErrors.Size() + n += 1 + l + sovApi(uint64(l)) + } + return n +} + +func (m *ProcessUsage) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Timestamp != 0 { + n += 1 + sovApi(uint64(m.Timestamp)) + } + if m.ProcessCount != nil { + l = m.ProcessCount.Size() + n += 1 + l + sovApi(uint64(l)) + } + return n +} + func (m *ImageSpec) Size() (n int) { if m == nil { return 0 @@ -14500,6 +16648,17 @@ func (m *LinuxContainerResources) Size() (n int) { n += 1 + l + sovApi(uint64(l)) } } + if len(m.Unified) > 0 { + for k, v := range m.Unified { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v))) + n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize)) + } + } + if m.MemorySwapLimitInBytes != 0 { + n += 1 + sovApi(uint64(m.MemorySwapLimitInBytes)) + } return n } @@ -14659,6 +16818,39 @@ func (m *LinuxContainerConfig) Size() (n int) { return n } +func (m *WindowsSandboxSecurityContext) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.RunAsUsername) + if l > 0 { + n += 1 + l + sovApi(uint64(l)) + } + l = len(m.CredentialSpec) + if l > 0 { + n += 1 + l + sovApi(uint64(l)) + } + if m.HostProcess { + n += 2 + } + return n +} + +func (m *WindowsPodSandboxConfig) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.SecurityContext != nil { + l = m.SecurityContext.Size() + n += 1 + l + sovApi(uint64(l)) + } + return n +} + func (m *WindowsContainerSecurityContext) Size() (n int) { if m == nil { return 0 @@ -14673,6 +16865,9 @@ func (m *WindowsContainerSecurityContext) Size() (n int) { if l > 0 { n += 1 + l + sovApi(uint64(l)) } + if m.HostProcess { + n += 2 + } return n } @@ -15918,6 +18113,10 @@ func (m *CpuUsage) Size() (n int) { l = m.UsageCoreNanoSeconds.Size() n += 1 + l + sovApi(uint64(l)) } + if m.UsageNanoCores != nil { + l = m.UsageNanoCores.Size() + n += 1 + l + sovApi(uint64(l)) + } return n } @@ -15934,6 +18133,26 @@ func (m *MemoryUsage) Size() (n int) { l = m.WorkingSetBytes.Size() n += 1 + l + sovApi(uint64(l)) } + if m.AvailableBytes != nil { + l = m.AvailableBytes.Size() + n += 1 + l + sovApi(uint64(l)) + } + if m.UsageBytes != nil { + l = m.UsageBytes.Size() + n += 1 + l + sovApi(uint64(l)) + } + if m.RssBytes != nil { + l = m.RssBytes.Size() + n += 1 + l + sovApi(uint64(l)) + } + if m.PageFaults != nil { + l = m.PageFaults.Size() + n += 1 + l + sovApi(uint64(l)) + } + if m.MajorPageFaults != nil { + l = m.MajorPageFaults.Size() + n += 1 + l + sovApi(uint64(l)) + } return n } @@ -16098,6 +18317,8 @@ func (this *LinuxPodSandboxConfig) String() string { `CgroupParent:` + fmt.Sprintf("%v", this.CgroupParent) + `,`, `SecurityContext:` + strings.Replace(this.SecurityContext.String(), "LinuxSandboxSecurityContext", "LinuxSandboxSecurityContext", 1) + `,`, `Sysctls:` + mapStringForSysctls + `,`, + `Overhead:` + strings.Replace(this.Overhead.String(), "LinuxContainerResources", "LinuxContainerResources", 1) + `,`, + `Resources:` + strings.Replace(this.Resources.String(), "LinuxContainerResources", "LinuxContainerResources", 1) + `,`, `}`, }, "") return s @@ -16153,6 +18374,7 @@ func (this *PodSandboxConfig) String() string { `Labels:` + mapStringForLabels + `,`, `Annotations:` + mapStringForAnnotations + `,`, `Linux:` + strings.Replace(this.Linux.String(), "LinuxPodSandboxConfig", "LinuxPodSandboxConfig", 1) + `,`, + `Windows:` + strings.Replace(this.Windows.String(), "WindowsPodSandboxConfig", "WindowsPodSandboxConfig", 1) + `,`, `}`, }, "") return s @@ -16425,6 +18647,187 @@ func (this *ListPodSandboxResponse) String() string { }, "") return s } +func (this *PodSandboxStatsRequest) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodSandboxStatsRequest{`, + `PodSandboxId:` + fmt.Sprintf("%v", this.PodSandboxId) + `,`, + `}`, + }, "") + return s +} +func (this *PodSandboxStatsResponse) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodSandboxStatsResponse{`, + `Stats:` + strings.Replace(this.Stats.String(), "PodSandboxStats", "PodSandboxStats", 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodSandboxStatsFilter) String() string { + if this == nil { + return "nil" + } + keysForLabelSelector := make([]string, 0, len(this.LabelSelector)) + for k := range this.LabelSelector { + keysForLabelSelector = append(keysForLabelSelector, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForLabelSelector) + mapStringForLabelSelector := "map[string]string{" + for _, k := range keysForLabelSelector { + mapStringForLabelSelector += fmt.Sprintf("%v: %v,", k, this.LabelSelector[k]) + } + mapStringForLabelSelector += "}" + s := strings.Join([]string{`&PodSandboxStatsFilter{`, + `Id:` + fmt.Sprintf("%v", this.Id) + `,`, + `LabelSelector:` + mapStringForLabelSelector + `,`, + `}`, + }, "") + return s +} +func (this *ListPodSandboxStatsRequest) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ListPodSandboxStatsRequest{`, + `Filter:` + strings.Replace(this.Filter.String(), "PodSandboxStatsFilter", "PodSandboxStatsFilter", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ListPodSandboxStatsResponse) String() string { + if this == nil { + return "nil" + } + repeatedStringForStats := "[]*PodSandboxStats{" + for _, f := range this.Stats { + repeatedStringForStats += strings.Replace(f.String(), "PodSandboxStats", "PodSandboxStats", 1) + "," + } + repeatedStringForStats += "}" + s := strings.Join([]string{`&ListPodSandboxStatsResponse{`, + `Stats:` + repeatedStringForStats + `,`, + `}`, + }, "") + return s +} +func (this *PodSandboxAttributes) String() string { + if this == nil { + return "nil" + } + keysForLabels := make([]string, 0, len(this.Labels)) + for k := range this.Labels { + keysForLabels = append(keysForLabels, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForLabels) + mapStringForLabels := "map[string]string{" + for _, k := range keysForLabels { + mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k]) + } + mapStringForLabels += "}" + keysForAnnotations := make([]string, 0, len(this.Annotations)) + for k := range this.Annotations { + keysForAnnotations = append(keysForAnnotations, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations) + mapStringForAnnotations := "map[string]string{" + for _, k := range keysForAnnotations { + mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k]) + } + mapStringForAnnotations += "}" + s := strings.Join([]string{`&PodSandboxAttributes{`, + `Id:` + fmt.Sprintf("%v", this.Id) + `,`, + `Metadata:` + strings.Replace(this.Metadata.String(), "PodSandboxMetadata", "PodSandboxMetadata", 1) + `,`, + `Labels:` + mapStringForLabels + `,`, + `Annotations:` + mapStringForAnnotations + `,`, + `}`, + }, "") + return s +} +func (this *PodSandboxStats) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodSandboxStats{`, + `Attributes:` + strings.Replace(this.Attributes.String(), "PodSandboxAttributes", "PodSandboxAttributes", 1) + `,`, + `Linux:` + strings.Replace(this.Linux.String(), "LinuxPodSandboxStats", "LinuxPodSandboxStats", 1) + `,`, + `Windows:` + strings.Replace(this.Windows.String(), "WindowsPodSandboxStats", "WindowsPodSandboxStats", 1) + `,`, + `}`, + }, "") + return s +} +func (this *LinuxPodSandboxStats) String() string { + if this == nil { + return "nil" + } + repeatedStringForContainers := "[]*ContainerStats{" + for _, f := range this.Containers { + repeatedStringForContainers += strings.Replace(f.String(), "ContainerStats", "ContainerStats", 1) + "," + } + repeatedStringForContainers += "}" + s := strings.Join([]string{`&LinuxPodSandboxStats{`, + `Cpu:` + strings.Replace(this.Cpu.String(), "CpuUsage", "CpuUsage", 1) + `,`, + `Memory:` + strings.Replace(this.Memory.String(), "MemoryUsage", "MemoryUsage", 1) + `,`, + `Network:` + strings.Replace(this.Network.String(), "NetworkUsage", "NetworkUsage", 1) + `,`, + `Process:` + strings.Replace(this.Process.String(), "ProcessUsage", "ProcessUsage", 1) + `,`, + `Containers:` + repeatedStringForContainers + `,`, + `}`, + }, "") + return s +} +func (this *WindowsPodSandboxStats) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&WindowsPodSandboxStats{`, + `}`, + }, "") + return s +} +func (this *NetworkUsage) String() string { + if this == nil { + return "nil" + } + repeatedStringForInterfaces := "[]*NetworkInterfaceUsage{" + for _, f := range this.Interfaces { + repeatedStringForInterfaces += strings.Replace(f.String(), "NetworkInterfaceUsage", "NetworkInterfaceUsage", 1) + "," + } + repeatedStringForInterfaces += "}" + s := strings.Join([]string{`&NetworkUsage{`, + `Timestamp:` + fmt.Sprintf("%v", this.Timestamp) + `,`, + `DefaultInterface:` + strings.Replace(this.DefaultInterface.String(), "NetworkInterfaceUsage", "NetworkInterfaceUsage", 1) + `,`, + `Interfaces:` + repeatedStringForInterfaces + `,`, + `}`, + }, "") + return s +} +func (this *NetworkInterfaceUsage) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NetworkInterfaceUsage{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `RxBytes:` + strings.Replace(this.RxBytes.String(), "UInt64Value", "UInt64Value", 1) + `,`, + `RxErrors:` + strings.Replace(this.RxErrors.String(), "UInt64Value", "UInt64Value", 1) + `,`, + `TxBytes:` + strings.Replace(this.TxBytes.String(), "UInt64Value", "UInt64Value", 1) + `,`, + `TxErrors:` + strings.Replace(this.TxErrors.String(), "UInt64Value", "UInt64Value", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ProcessUsage) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ProcessUsage{`, + `Timestamp:` + fmt.Sprintf("%v", this.Timestamp) + `,`, + `ProcessCount:` + strings.Replace(this.ProcessCount.String(), "UInt64Value", "UInt64Value", 1) + `,`, + `}`, + }, "") + return s +} func (this *ImageSpec) String() string { if this == nil { return "nil" @@ -16466,6 +18869,16 @@ func (this *LinuxContainerResources) String() string { repeatedStringForHugepageLimits += strings.Replace(f.String(), "HugepageLimit", "HugepageLimit", 1) + "," } repeatedStringForHugepageLimits += "}" + keysForUnified := make([]string, 0, len(this.Unified)) + for k := range this.Unified { + keysForUnified = append(keysForUnified, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForUnified) + mapStringForUnified := "map[string]string{" + for _, k := range keysForUnified { + mapStringForUnified += fmt.Sprintf("%v: %v,", k, this.Unified[k]) + } + mapStringForUnified += "}" s := strings.Join([]string{`&LinuxContainerResources{`, `CpuPeriod:` + fmt.Sprintf("%v", this.CpuPeriod) + `,`, `CpuQuota:` + fmt.Sprintf("%v", this.CpuQuota) + `,`, @@ -16475,6 +18888,8 @@ func (this *LinuxContainerResources) String() string { `CpusetCpus:` + fmt.Sprintf("%v", this.CpusetCpus) + `,`, `CpusetMems:` + fmt.Sprintf("%v", this.CpusetMems) + `,`, `HugepageLimits:` + repeatedStringForHugepageLimits + `,`, + `Unified:` + mapStringForUnified + `,`, + `MemorySwapLimitInBytes:` + fmt.Sprintf("%v", this.MemorySwapLimitInBytes) + `,`, `}`, }, "") return s @@ -16550,6 +18965,28 @@ func (this *LinuxContainerConfig) String() string { }, "") return s } +func (this *WindowsSandboxSecurityContext) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&WindowsSandboxSecurityContext{`, + `RunAsUsername:` + fmt.Sprintf("%v", this.RunAsUsername) + `,`, + `CredentialSpec:` + fmt.Sprintf("%v", this.CredentialSpec) + `,`, + `HostProcess:` + fmt.Sprintf("%v", this.HostProcess) + `,`, + `}`, + }, "") + return s +} +func (this *WindowsPodSandboxConfig) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&WindowsPodSandboxConfig{`, + `SecurityContext:` + strings.Replace(this.SecurityContext.String(), "WindowsSandboxSecurityContext", "WindowsSandboxSecurityContext", 1) + `,`, + `}`, + }, "") + return s +} func (this *WindowsContainerSecurityContext) String() string { if this == nil { return "nil" @@ -16557,6 +18994,7 @@ func (this *WindowsContainerSecurityContext) String() string { s := strings.Join([]string{`&WindowsContainerSecurityContext{`, `RunAsUsername:` + fmt.Sprintf("%v", this.RunAsUsername) + `,`, `CredentialSpec:` + fmt.Sprintf("%v", this.CredentialSpec) + `,`, + `HostProcess:` + fmt.Sprintf("%v", this.HostProcess) + `,`, `}`, }, "") return s @@ -17465,6 +19903,7 @@ func (this *CpuUsage) String() string { s := strings.Join([]string{`&CpuUsage{`, `Timestamp:` + fmt.Sprintf("%v", this.Timestamp) + `,`, `UsageCoreNanoSeconds:` + strings.Replace(this.UsageCoreNanoSeconds.String(), "UInt64Value", "UInt64Value", 1) + `,`, + `UsageNanoCores:` + strings.Replace(this.UsageNanoCores.String(), "UInt64Value", "UInt64Value", 1) + `,`, `}`, }, "") return s @@ -17476,6 +19915,11 @@ func (this *MemoryUsage) String() string { s := strings.Join([]string{`&MemoryUsage{`, `Timestamp:` + fmt.Sprintf("%v", this.Timestamp) + `,`, `WorkingSetBytes:` + strings.Replace(this.WorkingSetBytes.String(), "UInt64Value", "UInt64Value", 1) + `,`, + `AvailableBytes:` + strings.Replace(this.AvailableBytes.String(), "UInt64Value", "UInt64Value", 1) + `,`, + `UsageBytes:` + strings.Replace(this.UsageBytes.String(), "UInt64Value", "UInt64Value", 1) + `,`, + `RssBytes:` + strings.Replace(this.RssBytes.String(), "UInt64Value", "UInt64Value", 1) + `,`, + `PageFaults:` + strings.Replace(this.PageFaults.String(), "UInt64Value", "UInt64Value", 1) + `,`, + `MajorPageFaults:` + strings.Replace(this.MajorPageFaults.String(), "UInt64Value", "UInt64Value", 1) + `,`, `}`, }, "") return s @@ -19172,6 +21616,78 @@ func (m *LinuxPodSandboxConfig) Unmarshal(dAtA []byte) error { } m.Sysctls[mapkey] = mapvalue iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Overhead", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Overhead == nil { + m.Overhead = &LinuxContainerResources{} + } + if err := m.Overhead.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Resources == nil { + m.Resources = &LinuxContainerResources{} + } + if err := m.Resources.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -19847,6 +22363,42 @@ func (m *PodSandboxConfig) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Windows", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Windows == nil { + m.Windows = &WindowsPodSandboxConfig{} + } + if err := m.Windows.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -22457,6 +25009,1831 @@ func (m *ListPodSandboxResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *PodSandboxStatsRequest) 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 ErrIntOverflowApi + } + 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: PodSandboxStatsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodSandboxStatsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + 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 ErrInvalidLengthApi + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PodSandboxId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodSandboxStatsResponse) 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 ErrIntOverflowApi + } + 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: PodSandboxStatsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodSandboxStatsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Stats", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Stats == nil { + m.Stats = &PodSandboxStats{} + } + if err := m.Stats.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodSandboxStatsFilter) 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 ErrIntOverflowApi + } + 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: PodSandboxStatsFilter: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodSandboxStatsFilter: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + 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 ErrInvalidLengthApi + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LabelSelector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LabelSelector == nil { + m.LabelSelector = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthApi + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthApi + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthApi + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthApi + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.LabelSelector[mapkey] = mapvalue + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListPodSandboxStatsRequest) 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 ErrIntOverflowApi + } + 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: ListPodSandboxStatsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListPodSandboxStatsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Filter", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Filter == nil { + m.Filter = &PodSandboxStatsFilter{} + } + if err := m.Filter.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListPodSandboxStatsResponse) 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 ErrIntOverflowApi + } + 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: ListPodSandboxStatsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListPodSandboxStatsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Stats", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Stats = append(m.Stats, &PodSandboxStats{}) + if err := m.Stats[len(m.Stats)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodSandboxAttributes) 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 ErrIntOverflowApi + } + 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: PodSandboxAttributes: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodSandboxAttributes: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + 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 ErrInvalidLengthApi + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Metadata == nil { + m.Metadata = &PodSandboxMetadata{} + } + if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Labels == nil { + m.Labels = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthApi + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthApi + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthApi + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthApi + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Labels[mapkey] = mapvalue + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Annotations == nil { + m.Annotations = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthApi + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthApi + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthApi + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthApi + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Annotations[mapkey] = mapvalue + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodSandboxStats) 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 ErrIntOverflowApi + } + 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: PodSandboxStats: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodSandboxStats: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Attributes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Attributes == nil { + m.Attributes = &PodSandboxAttributes{} + } + if err := m.Attributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Linux", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Linux == nil { + m.Linux = &LinuxPodSandboxStats{} + } + if err := m.Linux.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Windows", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Windows == nil { + m.Windows = &WindowsPodSandboxStats{} + } + if err := m.Windows.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LinuxPodSandboxStats) 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 ErrIntOverflowApi + } + 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: LinuxPodSandboxStats: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LinuxPodSandboxStats: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Cpu", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Cpu == nil { + m.Cpu = &CpuUsage{} + } + if err := m.Cpu.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Memory", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Memory == nil { + m.Memory = &MemoryUsage{} + } + if err := m.Memory.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Network", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Network == nil { + m.Network = &NetworkUsage{} + } + if err := m.Network.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Process", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Process == nil { + m.Process = &ProcessUsage{} + } + if err := m.Process.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Containers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Containers = append(m.Containers, &ContainerStats{}) + if err := m.Containers[len(m.Containers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *WindowsPodSandboxStats) 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 ErrIntOverflowApi + } + 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: WindowsPodSandboxStats: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: WindowsPodSandboxStats: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NetworkUsage) 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 ErrIntOverflowApi + } + 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: NetworkUsage: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetworkUsage: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + 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 ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Timestamp |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultInterface", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.DefaultInterface == nil { + m.DefaultInterface = &NetworkInterfaceUsage{} + } + if err := m.DefaultInterface.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Interfaces", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Interfaces = append(m.Interfaces, &NetworkInterfaceUsage{}) + if err := m.Interfaces[len(m.Interfaces)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NetworkInterfaceUsage) 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 ErrIntOverflowApi + } + 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: NetworkInterfaceUsage: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetworkInterfaceUsage: 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 ErrIntOverflowApi + } + 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 ErrInvalidLengthApi + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RxBytes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RxBytes == nil { + m.RxBytes = &UInt64Value{} + } + if err := m.RxBytes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RxErrors", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RxErrors == nil { + m.RxErrors = &UInt64Value{} + } + if err := m.RxErrors.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TxBytes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TxBytes == nil { + m.TxBytes = &UInt64Value{} + } + if err := m.TxBytes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TxErrors", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TxErrors == nil { + m.TxErrors = &UInt64Value{} + } + if err := m.TxErrors.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ProcessUsage) 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 ErrIntOverflowApi + } + 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: ProcessUsage: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ProcessUsage: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + 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 ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Timestamp |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ProcessCount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ProcessCount == nil { + m.ProcessCount = &UInt64Value{} + } + if err := m.ProcessCount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *ImageSpec) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -23002,6 +27379,152 @@ func (m *LinuxContainerResources) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Unified", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Unified == nil { + m.Unified = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthApi + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthApi + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthApi + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthApi + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Unified[mapkey] = mapvalue + iNdEx = postIndex + case 10: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MemorySwapLimitInBytes", wireType) + } + m.MemorySwapLimitInBytes = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MemorySwapLimitInBytes |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -24136,6 +28659,226 @@ func (m *LinuxContainerConfig) Unmarshal(dAtA []byte) error { } return nil } +func (m *WindowsSandboxSecurityContext) 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 ErrIntOverflowApi + } + 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: WindowsSandboxSecurityContext: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: WindowsSandboxSecurityContext: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RunAsUsername", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + 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 ErrInvalidLengthApi + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RunAsUsername = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CredentialSpec", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + 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 ErrInvalidLengthApi + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CredentialSpec = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HostProcess", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.HostProcess = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *WindowsPodSandboxConfig) 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 ErrIntOverflowApi + } + 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: WindowsPodSandboxConfig: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: WindowsPodSandboxConfig: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecurityContext", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SecurityContext == nil { + m.SecurityContext = &WindowsSandboxSecurityContext{} + } + if err := m.SecurityContext.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *WindowsContainerSecurityContext) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -24229,6 +28972,26 @@ func (m *WindowsContainerSecurityContext) Unmarshal(dAtA []byte) error { } m.CredentialSpec = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HostProcess", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.HostProcess = bool(v != 0) default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -33491,6 +38254,42 @@ func (m *CpuUsage) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UsageNanoCores", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.UsageNanoCores == nil { + m.UsageNanoCores = &UInt64Value{} + } + if err := m.UsageNanoCores.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -33596,6 +38395,186 @@ func (m *MemoryUsage) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AvailableBytes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AvailableBytes == nil { + m.AvailableBytes = &UInt64Value{} + } + if err := m.AvailableBytes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UsageBytes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.UsageBytes == nil { + m.UsageBytes = &UInt64Value{} + } + if err := m.UsageBytes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RssBytes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RssBytes == nil { + m.RssBytes = &UInt64Value{} + } + if err := m.RssBytes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PageFaults", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PageFaults == nil { + m.PageFaults = &UInt64Value{} + } + if err := m.PageFaults.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MajorPageFaults", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.MajorPageFaults == nil { + m.MajorPageFaults = &UInt64Value{} + } + if err := m.MajorPageFaults.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) diff --git a/src/runtime/vendor/k8s.io/cri-api/pkg/apis/runtime/v1alpha2/api.proto b/src/runtime/vendor/k8s.io/cri-api/pkg/apis/runtime/v1alpha2/api.proto index a8701692f..22194efb6 100644 --- a/src/runtime/vendor/k8s.io/cri-api/pkg/apis/runtime/v1alpha2/api.proto +++ b/src/runtime/vendor/k8s.io/cri-api/pkg/apis/runtime/v1alpha2/api.proto @@ -102,6 +102,12 @@ service RuntimeService { // ListContainerStats returns stats of all running containers. rpc ListContainerStats(ListContainerStatsRequest) returns (ListContainerStatsResponse) {} + // PodSandboxStats returns stats of the pod sandbox. If the pod sandbox does not + // exist, the call returns an error. + rpc PodSandboxStats(PodSandboxStatsRequest) returns (PodSandboxStatsResponse) {} + // ListPodSandboxStats returns stats of the pod sandboxes matching a filter. + rpc ListPodSandboxStats(ListPodSandboxStatsRequest) returns (ListPodSandboxStatsResponse) {} + // UpdateRuntimeConfig updates the runtime configuration based on the given request. rpc UpdateRuntimeConfig(UpdateRuntimeConfigRequest) returns (UpdateRuntimeConfigResponse) {} @@ -323,6 +329,10 @@ message LinuxPodSandboxConfig { LinuxSandboxSecurityContext security_context = 2; // Sysctls holds linux sysctls config for the sandbox. map sysctls = 3; + // Optional overhead represents the overheads associated with this sandbox + LinuxContainerResources overhead = 4; + // Optional resources represents the sum of container resources for this sandbox + LinuxContainerResources resources = 5; } // PodSandboxMetadata holds all necessary information for building the sandbox name. @@ -392,6 +402,8 @@ message PodSandboxConfig { map annotations = 7; // Optional configurations specific to Linux hosts. LinuxPodSandboxConfig linux = 8; + // Optional configurations specific to Windows hosts. + WindowsPodSandboxConfig windows = 9; } message RunPodSandboxRequest { @@ -401,7 +413,7 @@ message RunPodSandboxRequest { // If the runtime handler is unknown, this request should be rejected. An // empty string should select the default handler, equivalent to the // behavior before this feature was added. - // See https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md + // See https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class string runtime_handler = 2; } @@ -547,6 +559,113 @@ message ListPodSandboxResponse { repeated PodSandbox items = 1; } +message PodSandboxStatsRequest { + // ID of the pod sandbox for which to retrieve stats. + string pod_sandbox_id = 1; +} + +message PodSandboxStatsResponse { + PodSandboxStats stats = 1; +} + +// PodSandboxStatsFilter is used to filter pod sandboxes. +// All those fields are combined with 'AND'. +message PodSandboxStatsFilter { + // ID of the pod sandbox. + string id = 1; + // LabelSelector to select matches. + // Only api.MatchLabels is supported for now and the requirements + // are ANDed. MatchExpressions is not supported yet. + map label_selector = 2; +} + +message ListPodSandboxStatsRequest { + // Filter for the list request. + PodSandboxStatsFilter filter = 1; +} + +message ListPodSandboxStatsResponse { + // Stats of the pod sandbox. + repeated PodSandboxStats stats = 1; +} + +// PodSandboxAttributes provides basic information of the pod sandbox. +message PodSandboxAttributes { + // ID of the pod sandbox. + string id = 1; + // Metadata of the pod sandbox. + PodSandboxMetadata metadata = 2; + // Key-value pairs that may be used to scope and select individual resources. + map labels = 3; + // Unstructured key-value map holding arbitrary metadata. + // Annotations MUST NOT be altered by the runtime; the value of this field + // MUST be identical to that of the corresponding PodSandboxStatus used to + // instantiate the PodSandbox this status represents. + map annotations = 4; +} + +// PodSandboxStats provides the resource usage statistics for a pod. +// The linux or windows field will be populated depending on the platform. +message PodSandboxStats { + // Information of the pod. + PodSandboxAttributes attributes = 1; + // Stats from linux. + LinuxPodSandboxStats linux = 2; + // Stats from windows. + WindowsPodSandboxStats windows = 3; +} + +// LinuxPodSandboxStats provides the resource usage statistics for a pod sandbox on linux. +message LinuxPodSandboxStats { + // CPU usage gathered for the pod sandbox. + CpuUsage cpu = 1; + // Memory usage gathered for the pod sandbox. + MemoryUsage memory = 2; + // Network usage gathered for the pod sandbox + NetworkUsage network = 3; + // Stats pertaining to processes in the pod sandbox. + ProcessUsage process = 4; + // Stats of containers in the measured pod sandbox. + repeated ContainerStats containers = 5; +} + +// WindowsPodSandboxStats provides the resource usage statistics for a pod sandbox on windows +message WindowsPodSandboxStats { + // TODO: Add stats relevant to windows. +} + +// NetworkUsage contains data about network resources. +message NetworkUsage { + // The time at which these stats were updated. + int64 timestamp = 1; + // Stats for the default network interface. + NetworkInterfaceUsage default_interface = 2; + // Stats for all found network interfaces, excluding the default. + repeated NetworkInterfaceUsage interfaces = 3; +} + +// NetworkInterfaceUsage contains resource value data about a network interface. +message NetworkInterfaceUsage { + // The name of the network interface. + string name = 1; + // Cumulative count of bytes received. + UInt64Value rx_bytes = 2; + // Cumulative count of receive errors encountered. + UInt64Value rx_errors = 3; + // Cumulative count of bytes transmitted. + UInt64Value tx_bytes = 4; + // Cumulative count of transmit errors encountered. + UInt64Value tx_errors = 5; +} + +// ProcessUsage are stats pertaining to processes. +message ProcessUsage { + // The time at which these stats were updated. + int64 timestamp = 1; + // Number of processes. + UInt64Value process_count = 2; +} + // ImageSpec is an internal representation of an image. message ImageSpec { // Container's Image field (e.g. imageID or imageDigest). @@ -583,6 +702,12 @@ message LinuxContainerResources { string cpuset_mems = 7; // List of HugepageLimits to limit the HugeTLB usage of container per page size. Default: nil (not specified). repeated HugepageLimit hugepage_limits = 8; + // Unified resources for cgroup v2. Default: nil (not specified). + // Each key/value in the map refers to the cgroup v2. + // e.g. "memory.max": "6937202688" or "io.weight": "default 100". + map unified = 9; + // Memory swap limit in bytes. Default 0 (not specified). + int64 memory_swap_limit_in_bytes = 10; } // HugepageLimit corresponds to the file`hugetlb..limit_in_byte` in container level cgroup. @@ -693,6 +818,29 @@ message LinuxContainerConfig { LinuxContainerSecurityContext security_context = 2; } +// WindowsSandboxSecurityContext holds platform-specific configurations that will be +// applied to a sandbox. +// These settings will only apply to the sandbox container. +message WindowsSandboxSecurityContext { + // User name to run the container process as. If specified, the user MUST + // exist in the container image and be resolved there by the runtime; + // otherwise, the runtime MUST return error. + string run_as_username = 1; + + // The contents of the GMSA credential spec to use to run this container. + string credential_spec = 2; + + // Indicates whether the container be asked to run as a HostProcess container. + bool host_process = 3; +} + +// WindowsPodSandboxConfig holds platform-specific configurations for Windows +// host platforms and Windows-based containers. +message WindowsPodSandboxConfig { + // WindowsSandboxSecurityContext holds sandbox security attributes. + WindowsSandboxSecurityContext security_context = 1; +} + // WindowsContainerSecurityContext holds windows security configuration that will be applied to a container. message WindowsContainerSecurityContext { // User name to run the container process as. If specified, the user MUST @@ -702,6 +850,9 @@ message WindowsContainerSecurityContext { // The contents of the GMSA credential spec to use to run this container. string credential_spec = 2; + + // Indicates whether a container is to be run as a HostProcess container. + bool host_process = 3; } // WindowsContainerConfig contains platform-specific configuration for @@ -1325,6 +1476,9 @@ message CpuUsage { int64 timestamp = 1; // Cumulative CPU usage (sum across all cores) since object creation. UInt64Value usage_core_nano_seconds = 2; + // Total CPU usage (sum of all cores) averaged over the sample window. + // The "core" unit can be interpreted as CPU core-nanoseconds per second. + UInt64Value usage_nano_cores = 3; } // MemoryUsage provides the memory usage information. @@ -1333,6 +1487,16 @@ message MemoryUsage { int64 timestamp = 1; // The amount of working set memory in bytes. UInt64Value working_set_bytes = 2; + // Available memory for use. This is defined as the memory limit = workingSetBytes. + UInt64Value available_bytes = 3; + // Total memory in use. This includes all memory regardless of when it was accessed. + UInt64Value usage_bytes = 4; + // The amount of anonymous and swap cache memory (includes transparent hugepages). + UInt64Value rss_bytes = 5; + // Cumulative number of minor page faults. + UInt64Value page_faults = 6; + // Cumulative number of major page faults. + UInt64Value major_page_faults = 7; } message ReopenContainerLogRequest { diff --git a/src/runtime/vendor/modules.txt b/src/runtime/vendor/modules.txt index df7e889b0..2f331d1c4 100644 --- a/src/runtime/vendor/modules.txt +++ b/src/runtime/vendor/modules.txt @@ -1,12 +1,12 @@ # github.com/BurntSushi/toml v0.3.1 ## explicit github.com/BurntSushi/toml -# github.com/Microsoft/go-winio v0.4.17 +# github.com/Microsoft/go-winio v0.5.1 github.com/Microsoft/go-winio github.com/Microsoft/go-winio/pkg/guid github.com/Microsoft/go-winio/pkg/security github.com/Microsoft/go-winio/vhd -# github.com/Microsoft/hcsshim v0.8.23 +# github.com/Microsoft/hcsshim v0.9.1 github.com/Microsoft/hcsshim github.com/Microsoft/hcsshim/computestorage github.com/Microsoft/hcsshim/internal/cow @@ -52,21 +52,20 @@ github.com/cilium/ebpf/internal github.com/cilium/ebpf/internal/btf github.com/cilium/ebpf/internal/unix github.com/cilium/ebpf/link -# github.com/containerd/cgroups v1.0.1 +# github.com/containerd/cgroups v1.0.2 ## explicit github.com/containerd/cgroups github.com/containerd/cgroups/stats/v1 -# github.com/containerd/console v1.0.2 +# github.com/containerd/console v1.0.3 ## explicit github.com/containerd/console -# github.com/containerd/containerd v1.5.7 => github.com/containerd/containerd v1.5.8 +# github.com/containerd/containerd v1.6.0-beta.4 ## explicit -github.com/containerd/containerd/api/events -github.com/containerd/containerd/api/services/ttrpc/events/v1 -github.com/containerd/containerd/api/types -github.com/containerd/containerd/api/types/task +github.com/containerd/containerd/defaults github.com/containerd/containerd/errdefs github.com/containerd/containerd/events +github.com/containerd/containerd/events/exchange +github.com/containerd/containerd/filters github.com/containerd/containerd/identifiers github.com/containerd/containerd/log github.com/containerd/containerd/mount @@ -74,8 +73,10 @@ github.com/containerd/containerd/namespaces github.com/containerd/containerd/pkg/cri/annotations github.com/containerd/containerd/pkg/dialer github.com/containerd/containerd/pkg/runtimeoptions/v1 +github.com/containerd/containerd/pkg/shutdown github.com/containerd/containerd/pkg/ttrpcutil github.com/containerd/containerd/pkg/userns +github.com/containerd/containerd/plugin github.com/containerd/containerd/runtime github.com/containerd/containerd/runtime/linux/runctypes github.com/containerd/containerd/runtime/v2/runc/options @@ -84,6 +85,12 @@ github.com/containerd/containerd/runtime/v2/task github.com/containerd/containerd/sys github.com/containerd/containerd/sys/reaper github.com/containerd/containerd/version +# github.com/containerd/containerd/api v1.6.0-beta.3 +## explicit +github.com/containerd/containerd/api/events +github.com/containerd/containerd/api/services/ttrpc/events/v1 +github.com/containerd/containerd/api/types +github.com/containerd/containerd/api/types/task # github.com/containerd/cri-containerd v1.11.1-0.20190125013620-4dd6735020f5 ## explicit github.com/containerd/cri-containerd/pkg/api/runtimeoptions/v1 @@ -98,14 +105,17 @@ github.com/containerd/ttrpc # github.com/containerd/typeurl v1.0.2 ## explicit github.com/containerd/typeurl -# github.com/containernetworking/cni v0.8.1 +# github.com/containernetworking/cni v1.0.1 github.com/containernetworking/cni/pkg/skel github.com/containernetworking/cni/pkg/types github.com/containernetworking/cni/pkg/types/020 -github.com/containernetworking/cni/pkg/types/current +github.com/containernetworking/cni/pkg/types/040 +github.com/containernetworking/cni/pkg/types/100 +github.com/containernetworking/cni/pkg/types/create +github.com/containernetworking/cni/pkg/types/internal github.com/containernetworking/cni/pkg/utils github.com/containernetworking/cni/pkg/version -# github.com/containernetworking/plugins v0.9.1 +# github.com/containernetworking/plugins v1.0.1 ## explicit github.com/containernetworking/plugins/pkg/ns github.com/containernetworking/plugins/pkg/testutils @@ -121,6 +131,8 @@ github.com/cri-o/cri-o/pkg/annotations github.com/cyphar/filepath-securejoin # github.com/davecgh/go-spew v1.1.1 github.com/davecgh/go-spew/spew +# github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c +github.com/docker/go-events # github.com/docker/go-units v0.4.0 github.com/docker/go-units # github.com/fsnotify/fsnotify v1.4.9 @@ -138,9 +150,9 @@ github.com/go-openapi/analysis/internal # github.com/go-openapi/errors v0.18.0 ## explicit github.com/go-openapi/errors -# github.com/go-openapi/jsonpointer v0.19.3 +# github.com/go-openapi/jsonpointer v0.19.5 github.com/go-openapi/jsonpointer -# github.com/go-openapi/jsonreference v0.19.3 +# github.com/go-openapi/jsonreference v0.19.5 github.com/go-openapi/jsonreference # github.com/go-openapi/loads v0.17.2 github.com/go-openapi/loads @@ -159,7 +171,7 @@ github.com/go-openapi/spec # github.com/go-openapi/strfmt v0.18.0 ## explicit github.com/go-openapi/strfmt -# github.com/go-openapi/swag v0.19.5 +# github.com/go-openapi/swag v0.19.14 ## explicit github.com/go-openapi/swag # github.com/go-openapi/validate v0.18.0 @@ -176,9 +188,9 @@ github.com/gogo/protobuf/proto github.com/gogo/protobuf/protoc-gen-gogo/descriptor github.com/gogo/protobuf/sortkeys github.com/gogo/protobuf/types -# github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e +# github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da github.com/golang/groupcache/lru -# github.com/golang/protobuf v1.5.0 +# github.com/golang/protobuf v1.5.2 github.com/golang/protobuf/proto github.com/golang/protobuf/ptypes github.com/golang/protobuf/ptypes/any @@ -192,10 +204,12 @@ github.com/hashicorp/go-multierror # github.com/intel-go/cpuid v0.0.0-20210602155658-5747e5cec0d9 ## explicit github.com/intel-go/cpuid +# github.com/josharian/intern v1.0.0 +github.com/josharian/intern # github.com/kata-containers/govmm v0.0.0-20210909155007-1b60b536f3c7 ## explicit github.com/kata-containers/govmm/qemu -# github.com/mailru/easyjson v0.7.0 +# github.com/mailru/easyjson v0.7.6 github.com/mailru/easyjson/buffer github.com/mailru/easyjson/jlexer github.com/mailru/easyjson/jwriter @@ -206,11 +220,14 @@ github.com/matttproud/golang_protobuf_extensions/pbutil github.com/mdlayher/vsock # github.com/mitchellh/mapstructure v1.1.2 github.com/mitchellh/mapstructure -# github.com/moby/sys/mountinfo v0.4.1 +# github.com/moby/sys/mountinfo v0.5.0 github.com/moby/sys/mountinfo # github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/go-digest -# github.com/opencontainers/runc v1.0.2 => github.com/opencontainers/runc v1.0.1 +# github.com/opencontainers/image-spec v1.0.2-0.20211117181255-693428a734f5 +github.com/opencontainers/image-spec/specs-go +github.com/opencontainers/image-spec/specs-go/v1 +# github.com/opencontainers/runc v1.0.3 => github.com/opencontainers/runc v1.0.1 ## explicit github.com/opencontainers/runc/libcontainer/cgroups github.com/opencontainers/runc/libcontainer/cgroups/devices @@ -238,14 +255,14 @@ github.com/opencontainers/selinux/pkg/pwalk github.com/pkg/errors # github.com/pmezard/go-difflib v1.0.0 github.com/pmezard/go-difflib/difflib -# github.com/prometheus/client_golang v1.7.1 +# github.com/prometheus/client_golang v1.11.0 ## explicit github.com/prometheus/client_golang/prometheus github.com/prometheus/client_golang/prometheus/internal # github.com/prometheus/client_model v0.2.0 ## explicit github.com/prometheus/client_model/go -# github.com/prometheus/common v0.10.0 +# github.com/prometheus/common v0.26.0 ## explicit github.com/prometheus/common/expfmt github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg @@ -257,7 +274,7 @@ github.com/prometheus/procfs/internal/fs github.com/prometheus/procfs/internal/util # github.com/russross/blackfriday/v2 v2.0.1 github.com/russross/blackfriday/v2 -# github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8 +# github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1 ## explicit github.com/safchain/ethtool # github.com/shurcooL/sanitized_anchor_name v1.0.0 @@ -266,8 +283,6 @@ github.com/shurcooL/sanitized_anchor_name ## explicit github.com/sirupsen/logrus github.com/sirupsen/logrus/hooks/syslog -# github.com/smartystreets/goconvey v1.6.4 -## explicit # github.com/stretchr/testify v1.7.0 ## explicit github.com/stretchr/testify/assert @@ -278,7 +293,7 @@ github.com/urfave/cli ## explicit github.com/vishvananda/netlink github.com/vishvananda/netlink/nl -# github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae +# github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f ## explicit github.com/vishvananda/netns # go.opencensus.io v0.23.0 @@ -288,7 +303,7 @@ go.opencensus.io/internal go.opencensus.io/trace go.opencensus.io/trace/internal go.opencensus.io/trace/tracestate -# go.opentelemetry.io/otel v1.0.0 +# go.opentelemetry.io/otel v1.0.1 ## explicit go.opentelemetry.io/otel go.opentelemetry.io/otel/attribute @@ -306,16 +321,16 @@ go.opentelemetry.io/otel/exporters/jaeger/internal/gen-go/agent go.opentelemetry.io/otel/exporters/jaeger/internal/gen-go/jaeger go.opentelemetry.io/otel/exporters/jaeger/internal/gen-go/zipkincore go.opentelemetry.io/otel/exporters/jaeger/internal/third_party/thrift/lib/go/thrift -# go.opentelemetry.io/otel/sdk v1.0.0 +# go.opentelemetry.io/otel/sdk v1.0.1 ## explicit go.opentelemetry.io/otel/sdk/instrumentation go.opentelemetry.io/otel/sdk/internal go.opentelemetry.io/otel/sdk/resource go.opentelemetry.io/otel/sdk/trace -# go.opentelemetry.io/otel/trace v1.0.0 +# go.opentelemetry.io/otel/trace v1.0.1 ## explicit go.opentelemetry.io/otel/trace -# golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 +# golang.org/x/net v0.0.0-20210825183410-e898025ed96a ## explicit golang.org/x/net/context golang.org/x/net/context/ctxhttp @@ -329,14 +344,16 @@ golang.org/x/net/trace ## explicit golang.org/x/oauth2 golang.org/x/oauth2/internal -# golang.org/x/sys v0.0.0-20210426230700-d19ff857e887 +# golang.org/x/sync v0.0.0-20210220032951-036812b2e83c +golang.org/x/sync/errgroup +# golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359 ## explicit +golang.org/x/sys/execabs golang.org/x/sys/internal/unsafeheader golang.org/x/sys/unix golang.org/x/sys/windows golang.org/x/sys/windows/registry -# golang.org/x/text v0.3.5 -## explicit +# golang.org/x/text v0.3.6 golang.org/x/text/secure/bidirule golang.org/x/text/transform golang.org/x/text/unicode/bidi @@ -351,10 +368,9 @@ google.golang.org/appengine/internal/log google.golang.org/appengine/internal/remote_api google.golang.org/appengine/internal/urlfetch google.golang.org/appengine/urlfetch -# google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb => google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 -## explicit +# google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c => google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 google.golang.org/genproto/googleapis/rpc/status -# google.golang.org/grpc v1.36.0 +# google.golang.org/grpc v1.41.0 ## explicit google.golang.org/grpc google.golang.org/grpc/attributes @@ -392,6 +408,7 @@ google.golang.org/grpc/internal/status google.golang.org/grpc/internal/syscall google.golang.org/grpc/internal/transport google.golang.org/grpc/internal/transport/networktype +google.golang.org/grpc/internal/xds/env google.golang.org/grpc/keepalive google.golang.org/grpc/metadata google.golang.org/grpc/peer @@ -435,15 +452,14 @@ google.golang.org/protobuf/types/known/timestamppb gopkg.in/inf.v0 # gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v2 -# gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c +# gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b gopkg.in/yaml.v3 -# k8s.io/apimachinery v0.20.6 +# k8s.io/apimachinery v0.22.0 ## explicit k8s.io/apimachinery/pkg/api/resource -# k8s.io/cri-api v0.20.6 +# k8s.io/cri-api v0.23.0-alpha.4 ## explicit k8s.io/cri-api/pkg/apis/runtime/v1alpha2 -# github.com/containerd/containerd => github.com/containerd/containerd v1.5.8 # github.com/opencontainers/runc => github.com/opencontainers/runc v1.0.1 # github.com/uber-go/atomic => go.uber.org/atomic v1.5.1 # google.golang.org/genproto => google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 From 330e3dcc93c7e5e874e049cd0ecf8fc1c30f2028 Mon Sep 17 00:00:00 2001 From: Fupan Li Date: Fri, 24 Dec 2021 17:37:47 +0800 Subject: [PATCH 274/385] agent: move the oci crate to upper libs Move the oci crate to upper libs thus it can be shared between agent and other rust runtimes. Fixes: #3348 Signed-off-by: Fupan Li --- src/agent/Cargo.toml | 3 +-- src/agent/rustjail/Cargo.toml | 2 +- src/{agent => libs}/oci/Cargo.toml | 0 src/{agent => libs}/oci/src/lib.rs | 0 src/{agent => libs}/oci/src/serialize.rs | 0 src/tools/agent-ctl/Cargo.toml | 2 +- 6 files changed, 3 insertions(+), 4 deletions(-) rename src/{agent => libs}/oci/Cargo.toml (100%) rename src/{agent => libs}/oci/src/lib.rs (100%) rename src/{agent => libs}/oci/src/serialize.rs (100%) diff --git a/src/agent/Cargo.toml b/src/agent/Cargo.toml index 492666023..b39b487a2 100644 --- a/src/agent/Cargo.toml +++ b/src/agent/Cargo.toml @@ -5,7 +5,7 @@ authors = ["The Kata Containers community "] edition = "2018" [dependencies] -oci = { path = "oci" } +oci = { path = "../libs/oci" } rustjail = { path = "rustjail" } protocols = { path = "protocols" } lazy_static = "1.3.0" @@ -66,7 +66,6 @@ tempfile = "3.1.0" [workspace] members = [ - "oci", "protocols", "rustjail", ] diff --git a/src/agent/rustjail/Cargo.toml b/src/agent/rustjail/Cargo.toml index 715152572..62e85ecfa 100644 --- a/src/agent/rustjail/Cargo.toml +++ b/src/agent/rustjail/Cargo.toml @@ -8,7 +8,7 @@ edition = "2018" serde = "1.0.91" serde_json = "1.0.39" serde_derive = "1.0.91" -oci = { path = "../oci" } +oci = { path = "../../libs/oci" } protocols = { path ="../protocols" } caps = "0.5.0" nix = "0.23.0" diff --git a/src/agent/oci/Cargo.toml b/src/libs/oci/Cargo.toml similarity index 100% rename from src/agent/oci/Cargo.toml rename to src/libs/oci/Cargo.toml diff --git a/src/agent/oci/src/lib.rs b/src/libs/oci/src/lib.rs similarity index 100% rename from src/agent/oci/src/lib.rs rename to src/libs/oci/src/lib.rs diff --git a/src/agent/oci/src/serialize.rs b/src/libs/oci/src/serialize.rs similarity index 100% rename from src/agent/oci/src/serialize.rs rename to src/libs/oci/src/serialize.rs diff --git a/src/tools/agent-ctl/Cargo.toml b/src/tools/agent-ctl/Cargo.toml index 8fc30dbb8..303db2161 100644 --- a/src/tools/agent-ctl/Cargo.toml +++ b/src/tools/agent-ctl/Cargo.toml @@ -12,7 +12,7 @@ edition = "2018" [dependencies] protocols = { path = "../../agent/protocols", features = ["with-serde"] } rustjail = { path = "../../agent/rustjail" } -oci = { path = "../../agent/oci" } +oci = { path = "../../libs/oci" } clap = "2.33.0" lazy_static = "1.4.0" From 615224e9939a0e3e6313e23f3534b327a66e737d Mon Sep 17 00:00:00 2001 From: Fupan Li Date: Fri, 24 Dec 2021 17:42:18 +0800 Subject: [PATCH 275/385] agent: move the protocols to upper libs move the protocols to upper libs thus it can be shared between agent and other rust runtime. Depends-on: github.com/kata-containers/tests#4306 Fixes: #3348 Signed-off-by: Fupan Li --- src/agent/Cargo.lock | 2 -- src/agent/Cargo.toml | 3 +-- src/agent/rustjail/Cargo.toml | 2 +- src/{agent => libs}/protocols/Cargo.toml | 0 src/{agent => libs}/protocols/build.rs | 0 src/{agent => libs}/protocols/hack/update-generated-proto.sh | 0 src/{agent => libs}/protocols/protos/agent.proto | 0 .../protocols/protos/gogo/protobuf/gogoproto/gogo.proto | 0 .../protocols/protos/google/protobuf/descriptor.proto | 0 .../protocols/protos/google/protobuf/empty.proto | 0 .../protocols/protos/google/protobuf/wrappers.proto | 0 src/{agent => libs}/protocols/protos/health.proto | 0 src/{agent => libs}/protocols/protos/oci.proto | 0 src/{agent => libs}/protocols/protos/types.proto | 0 src/{agent => libs}/protocols/src/lib.rs | 0 src/tools/agent-ctl/Cargo.toml | 2 +- 16 files changed, 3 insertions(+), 6 deletions(-) rename src/{agent => libs}/protocols/Cargo.toml (100%) rename src/{agent => libs}/protocols/build.rs (100%) rename src/{agent => libs}/protocols/hack/update-generated-proto.sh (100%) rename src/{agent => libs}/protocols/protos/agent.proto (100%) rename src/{agent => libs}/protocols/protos/gogo/protobuf/gogoproto/gogo.proto (100%) rename src/{agent => libs}/protocols/protos/google/protobuf/descriptor.proto (100%) rename src/{agent => libs}/protocols/protos/google/protobuf/empty.proto (100%) rename src/{agent => libs}/protocols/protos/google/protobuf/wrappers.proto (100%) rename src/{agent => libs}/protocols/protos/health.proto (100%) rename src/{agent => libs}/protocols/protos/oci.proto (100%) rename src/{agent => libs}/protocols/protos/types.proto (100%) rename src/{agent => libs}/protocols/src/lib.rs (100%) diff --git a/src/agent/Cargo.lock b/src/agent/Cargo.lock index 6c2215d66..2ca62774c 100644 --- a/src/agent/Cargo.lock +++ b/src/agent/Cargo.lock @@ -1104,8 +1104,6 @@ version = "0.1.0" dependencies = [ "async-trait", "protobuf", - "serde", - "serde_json", "ttrpc", "ttrpc-codegen", ] diff --git a/src/agent/Cargo.toml b/src/agent/Cargo.toml index b39b487a2..9a79263ac 100644 --- a/src/agent/Cargo.toml +++ b/src/agent/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] oci = { path = "../libs/oci" } rustjail = { path = "rustjail" } -protocols = { path = "protocols" } +protocols = { path = "../libs/protocols" } lazy_static = "1.3.0" ttrpc = { version = "0.5.0", features = ["async", "protobuf-codec"], default-features = false } protobuf = "=2.14.0" @@ -66,7 +66,6 @@ tempfile = "3.1.0" [workspace] members = [ - "protocols", "rustjail", ] diff --git a/src/agent/rustjail/Cargo.toml b/src/agent/rustjail/Cargo.toml index 62e85ecfa..9e0624649 100644 --- a/src/agent/rustjail/Cargo.toml +++ b/src/agent/rustjail/Cargo.toml @@ -9,7 +9,7 @@ serde = "1.0.91" serde_json = "1.0.39" serde_derive = "1.0.91" oci = { path = "../../libs/oci" } -protocols = { path ="../protocols" } +protocols = { path ="../../libs/protocols" } caps = "0.5.0" nix = "0.23.0" scopeguard = "1.0.0" diff --git a/src/agent/protocols/Cargo.toml b/src/libs/protocols/Cargo.toml similarity index 100% rename from src/agent/protocols/Cargo.toml rename to src/libs/protocols/Cargo.toml diff --git a/src/agent/protocols/build.rs b/src/libs/protocols/build.rs similarity index 100% rename from src/agent/protocols/build.rs rename to src/libs/protocols/build.rs diff --git a/src/agent/protocols/hack/update-generated-proto.sh b/src/libs/protocols/hack/update-generated-proto.sh similarity index 100% rename from src/agent/protocols/hack/update-generated-proto.sh rename to src/libs/protocols/hack/update-generated-proto.sh diff --git a/src/agent/protocols/protos/agent.proto b/src/libs/protocols/protos/agent.proto similarity index 100% rename from src/agent/protocols/protos/agent.proto rename to src/libs/protocols/protos/agent.proto diff --git a/src/agent/protocols/protos/gogo/protobuf/gogoproto/gogo.proto b/src/libs/protocols/protos/gogo/protobuf/gogoproto/gogo.proto similarity index 100% rename from src/agent/protocols/protos/gogo/protobuf/gogoproto/gogo.proto rename to src/libs/protocols/protos/gogo/protobuf/gogoproto/gogo.proto diff --git a/src/agent/protocols/protos/google/protobuf/descriptor.proto b/src/libs/protocols/protos/google/protobuf/descriptor.proto similarity index 100% rename from src/agent/protocols/protos/google/protobuf/descriptor.proto rename to src/libs/protocols/protos/google/protobuf/descriptor.proto diff --git a/src/agent/protocols/protos/google/protobuf/empty.proto b/src/libs/protocols/protos/google/protobuf/empty.proto similarity index 100% rename from src/agent/protocols/protos/google/protobuf/empty.proto rename to src/libs/protocols/protos/google/protobuf/empty.proto diff --git a/src/agent/protocols/protos/google/protobuf/wrappers.proto b/src/libs/protocols/protos/google/protobuf/wrappers.proto similarity index 100% rename from src/agent/protocols/protos/google/protobuf/wrappers.proto rename to src/libs/protocols/protos/google/protobuf/wrappers.proto diff --git a/src/agent/protocols/protos/health.proto b/src/libs/protocols/protos/health.proto similarity index 100% rename from src/agent/protocols/protos/health.proto rename to src/libs/protocols/protos/health.proto diff --git a/src/agent/protocols/protos/oci.proto b/src/libs/protocols/protos/oci.proto similarity index 100% rename from src/agent/protocols/protos/oci.proto rename to src/libs/protocols/protos/oci.proto diff --git a/src/agent/protocols/protos/types.proto b/src/libs/protocols/protos/types.proto similarity index 100% rename from src/agent/protocols/protos/types.proto rename to src/libs/protocols/protos/types.proto diff --git a/src/agent/protocols/src/lib.rs b/src/libs/protocols/src/lib.rs similarity index 100% rename from src/agent/protocols/src/lib.rs rename to src/libs/protocols/src/lib.rs diff --git a/src/tools/agent-ctl/Cargo.toml b/src/tools/agent-ctl/Cargo.toml index 303db2161..8847f734f 100644 --- a/src/tools/agent-ctl/Cargo.toml +++ b/src/tools/agent-ctl/Cargo.toml @@ -10,7 +10,7 @@ authors = ["The Kata Containers community "] edition = "2018" [dependencies] -protocols = { path = "../../agent/protocols", features = ["with-serde"] } +protocols = { path = "../../libs/protocols", features = ["with-serde"] } rustjail = { path = "../../agent/rustjail" } oci = { path = "../../libs/oci" } From 905e124b776a6f2a933ec94e5ff01dea7b38625a Mon Sep 17 00:00:00 2001 From: Shengjing Zhu Date: Thu, 6 Jan 2022 00:22:24 +0800 Subject: [PATCH 276/385] docs: fix agent proto file path Fixes: #3391 Signed-off-by: Shengjing Zhu --- docs/design/architecture/README.md | 4 ++-- src/agent/README.md | 4 ++-- src/tools/agent-ctl/README.md | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/design/architecture/README.md b/docs/design/architecture/README.md index 946b457fa..043959226 100644 --- a/docs/design/architecture/README.md +++ b/docs/design/architecture/README.md @@ -250,7 +250,7 @@ runtime cleans up the environment (which includes terminating the If the container manager requests the container be deleted, the [runtime](#runtime) will signal the agent by sending it a -`DestroySandbox` [ttRPC API](../../../src/agent/protocols/protos/agent.proto) request. +`DestroySandbox` [ttRPC API](../../../src/libs/protocols/protos/agent.proto) request. ## Guest assets @@ -291,7 +291,7 @@ for each VM created. The agent communicates with the other Kata components (primarily the [runtime](#runtime)) using a [`ttRPC`](https://github.com/containerd/ttrpc-rust) based -[protocol](../../../src/agent/protocols/protos). +[protocol](../../../src/libs/protocols/protos). > **Note:** > diff --git a/src/agent/README.md b/src/agent/README.md index 97b6acc07..fb181c03f 100644 --- a/src/agent/README.md +++ b/src/agent/README.md @@ -60,7 +60,7 @@ $ make -C ${dir}/kata-containers/src/agent The Kata runtime communicates with the Kata agent using a ttRPC based API protocol. -This ttRPC API is defined by a set of [protocol buffers files](protocols/protos). +This ttRPC API is defined by a set of [protocol buffers files](../libs/protocols/protos). The protocol files are used to generate the bindings for the following components: | Component | Language | Generation method `[*]` | Tooling required | @@ -74,7 +74,7 @@ The protocol files are used to generate the bindings for the following component If you wish to change the API, these files must be regenerated. Although the rust code will be automatically generated by the -[build script](protocols/build.rs), +[build script](../libs/protocols/build.rs), the Golang code generation requires the external `protoc` command to be available in `$PATH`. diff --git a/src/tools/agent-ctl/README.md b/src/tools/agent-ctl/README.md index a351255cf..7a8d88d23 100644 --- a/src/tools/agent-ctl/README.md +++ b/src/tools/agent-ctl/README.md @@ -41,7 +41,7 @@ the agent protocol and the client and server implementations. | Description | File | Example RPC or function | Example summary | |-|-|-|-| -| Protocol buffers definition of the Kata Containers Agent API protocol | [`agent.proto`](../../agent/protocols/protos/agent.proto) | `CreateContainer` | API to create a Kata container. | +| Protocol buffers definition of the Kata Containers Agent API protocol | [`agent.proto`](../../libs/protocols/protos/agent.proto) | `CreateContainer` | API to create a Kata container. | | Agent Control (client) API calls | [`src/client.rs`](src/client.rs) | `agent_cmd_container_create()` | Agent Control tool function that calls the `CreateContainer` API. | | Agent (server) API implementations | [`rpc.rs`](../../agent/src/rpc.rs) | `create_container()` | Server function that implements the `CreateContainers` API. | From e2c1e65e2763d2680fc3e5460358fa3e9692bc1a Mon Sep 17 00:00:00 2001 From: Snir Sheriber Date: Wed, 5 Jan 2022 20:02:30 +0200 Subject: [PATCH 277/385] kata-deploy: fix tar command in dockerfile tar params are passed wrongly Fixes: #3394 Signed-off-by: Snir Sheriber --- tools/packaging/kata-deploy/action/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/packaging/kata-deploy/action/Dockerfile b/tools/packaging/kata-deploy/action/Dockerfile index c665a92cc..6e5605a44 100644 --- a/tools/packaging/kata-deploy/action/Dockerfile +++ b/tools/packaging/kata-deploy/action/Dockerfile @@ -21,7 +21,7 @@ RUN curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl - && mv ./kubectl /usr/local/bin/kubectl RUN curl -LO "https://github.com/Azure/aks-engine/releases/download/${AKS_ENGINE_VER}/aks-engine-${AKS_ENGINE_VER}-linux-${ARCH}.tar.gz" \ - && tar "xvf aks-engine-${AKS_ENGINE_VER}-linux-${ARCH}.tar.gz" \ + && tar xvf "aks-engine-${AKS_ENGINE_VER}-linux-${ARCH}.tar.gz" \ && mv "aks-engine-${AKS_ENGINE_VER}-linux-${ARCH}/aks-engine" /usr/local/bin/aks-engine \ && rm "aks-engine-${AKS_ENGINE_VER}-linux-${ARCH}.tar.gz" From 117fc9c9e90f9e2073f155b09791e23535c0357b Mon Sep 17 00:00:00 2001 From: Snir Sheriber Date: Thu, 6 Jan 2022 08:37:28 +0200 Subject: [PATCH 278/385] release: Kata Containers 2.4.0-alpha1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - kata-deploy: fix tar command in dockerfile - vendor: update to containerd v1.6.0-beta.4 - versions: Upgrade to Cloud Hypervisor v20.2 - vc: remove swagger binary - agent: Refactor command line parsing to use a framework - move the oci and protocols crates from agent to upper libs - docs: Remove word duplication - osbuilder: Restore Debian as a rootfs - runtime: fix a typo in kata-collect-data.sh - agent: return detail error message for RPC calls from shim - use-cases: clarify SPDK vhost-user-nvme target status in using-spdk-v… - Delint dockerfiles - Makefile: update `make go-test` call - docs: add how-to on DinD in Kata - agent: Ignore unknown seccomp system calls - agent: mount: Remove unneeded mount_point local variable - docs: Fix outdated links - docs: Fix kernel configs README spelling errors - security: Update rust crate versions - kata-manager: Retrieve static tarball - osbuilder: avoid to copy versions.txt which already deprecated - qemu: Disable libudev for QEMU 5.2 and newer - osbuilder: Add protoc to the alpine container - docs: Clarify where to run agent API generation commands - packaging/qemu: partial git clone - docs: Fix arch doc formatting - CI: Switch to a mirror as gnu.org is down - Split architecture doc into separate files - docs: Update the stable branch strategy - tracing: Add span name to logging error - docs: Update code PR advice document - agent: Add config file option to cli - update container type handling - docs: Update architecture document - runtime: update golang to 1.16 and remove ioutil package - kata-deploy: Deal with empty containerd conf file - src: reorg source code directory - osbuilder: show usage if no options/arguments specified - Upgrade to Cloud Hypervisor v20.1 - image_build: add help info for '-f' option and 'BLOCK_SIZE' env. - osbuilder: be runtime consistent with podman build - osbuilder: Revert to using apk.static for Alpine - runtime/template: Handling new attributes for hypervisor config - docs: fix check-markdown test - runtime: correct span name for stopSandbox function - runtime: only call stopVirtiofsd when shared_fs is virtio-fs - snap: read initrd and image distros from version.yaml - versions: Use Ubuntu initrd for non-musl archs - packaging: Fix missing commit message in building kata-runtime - virtcontainers: clh: Upgrade to openapi-generator v5.3.0 - agent: user container ID as watchable storage key for hashmap - runtime: enable vhost-net for rootless hypervisor - packaging: add help information for '-f' option in install_go.sh - Cleanup some unused variables, definitions - Upgrade to Cloud Hypervisor v20.0 - docs: Update limitation document regarding docker swarm - runtime: Enable FUSE_DAX kernel config for DAX - agent: copy empty directories for watchable-bind mounts - runtime: Update comments for virtcontainers to use kata 2.0 - Update rust crate versions - osbuilder: Remove debian as a rootfs e2c1e65e kata-deploy: fix tar command in dockerfile 615224e9 agent: move the protocols to upper libs 330e3dcc agent: move the oci crate to upper libs 7b03d78f vendor: update to containerd v1.6.0-beta.4 1f581a04 versions: Upgrade to Cloud Hypervisor v20.2 623d8f08 docs: Remove word duplication 1c4edb96 agent: Refactor arg parsing to use clap 3093f93a osbuilder: Restore Debian as a rootfs 073a3459 use-cases: clarify vhost-user-nvme status in using-spdk-vhost-user 2254fa86 runtime: fix a typo in kata-collect-data.sh 2d0f9d2d vc: remove swagger binary cf91307c agent: return detail error message for rpc calls from shim 137e217b docs: Fix outdated k8s link 55bac67a docs: Fix kernel configs README spelling errors 205420d2 docs: Replicate branch rename on runtime-spec 91abebf9 agent: mount: Remove unneeded mount_point local variable b1f4e945 security: Update rust crate versions d79268ac tools/packaging: add copyright to kata-monitor's Dockerfile 428cf0a6 packaging: delint tests dockerfiles 1ea9b703 packaging: delint kata-deploy dockerfiles 3669e1b6 ci/openshift-ci: delint dockerfiles aeb2b673 osbuilder: delint dockerfiles bc120289 packaging: delint kata-monitor dockerfiles bc71dd58 packaging: delint static-build dockerfiles 99ef52a3 osbuilder: Add protoc to the alpine container c2578cd9 docs: Clarify where to run agent API generation commands 321995b7 CI: Switch to a mirror as gnu.org is down fb1989b2 docs: Fix arch doc formatting 2938bb7f packaging/qemu: Use QEMU script to update submodules 5d49ccd6 packaging/qemu: Use partial git clone 87a219a1 docs: Update the stable branch strategy d1bc409d osbuilder: avoid to copy versions.txt which already deprecated 1653dd4a tracing: Add span name to logging error 12c8e41c qemu: Disable libudev for QEMU 5.2 and newer 233015a6 docs: Split guest assets details out of arch doc db411c23 docs: Split k8s info out of arch doc 7ac619b2 docs: Split networking out of arch doc 5df0cb64 docs: Split storage out of arch doc 7229b7a6 docs: Split background and example out of arch doc 283d7d52 docs: Split history out of arch doc 6f9efb40 docs: Move arch doc to separate directory 02608e13 docs: Update code PR advice document cb5c948a kata-manager: Retrieve static tarball 51bf9807 docs: Update architecture document f3a97e94 docs: add how-to on Docker in Kata 7a989a83 runtime: api-test: fixup 52f79aef utils: update container type handling 5b002f3c docs: change io/ioutil to io/os packages 03546f75 runtime: change io/ioutil to io/os packages 24a530ce versions: bump minimum golang version to 1.16.10 7c4263b3 src: reorg source directories 1a34fbcd agent: Add config file option to cli bbfb10e1 versions: Upgrade to Cloud Hypervisor v20.1 84571506 kata-deploy: Deal with empty containerd conf file 3f7cf7ae osbuilder: show usage if no options/arguments specified 2ebaaac7 osbuilder: be runtime consistent also with podman build f3103696 docs: fix check-markdown test 2204ecac versions: Upgrade Alpine, using minor version dfd0732f osbuilder: Revert to using apk.static for Alpine 6b3e4c21 image_build: add help info for '-f' option and 'BLOCK_SIZE' env. b92babf9 runtime/template: Handling new attributes for hypervisor config 40bd34ca runtime: only call stopVirtiofsd when shared_fs is virtio-fs 33f343ee runtime: correct span name for stopSandbox function d7cc952c versions: Use Ubuntu initrd for non-musl archs ff929fc0 snap: read initrd and image distros from version.yaml 8fae2631 packaging: Fix missing commit message in building kata-runtime 99530026 virtcontainers: clh: Upgrade to openapi-generator v5.3.0 b3bcb7b2 runtime: enable vhost-net for rootless hypervisor 7cb7b9d5 agent: remove unused field in mount handling f6ae1582 agent: drop unused fields from network 4756a04b virtcontainers: clh: Re-generate the client code 0bf4d257 versions: Upgrade to Cloud Hypervisor v20.0 647082b2 docs: Update limitation document regarding docker swarm 39b35d00 agent: user container ID as watchable storage key for hashmap 1e6f58e5 packaging: add help information for '-f' option in install_go.sh 2af95bc5 agent: create directories for watchable-bind mounts 6105e3ee runtime: enable FUSE_DAX kernel config for DAX 591d4af1 runtime: Update comments for virtcontainers to use kata 2.0 923e098d osbuilder: Remove debian as a rootfs afb96c00 agent: Wrap remaining nix errors with anyhow aba572e0 rustjail: Wrap remaining nix errors with anyhow 30d60078 uevent: Fix clippy issue in test code 4a2be13c agent: Upgrade nix version for security fix 256d5008 agent: Update crate versions 13257986 agent-ctl: Update rust lockfile 4ebdd424 forwarder: Update rust lockfile 6007322d agent: Fixed invalid error message 7b356151 agent: Log unknown seccomp system calls 7304e52a Makefile: update `make go-test` call c66b5668 agent: Ignore unknown seccomp system calls Signed-off-by: Snir Sheriber --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 261c86db3..3aba74f03 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.4.0-alpha0 +2.4.0-alpha1 From ad16d75c07bacfeaa9eceb21249c47f40781ea17 Mon Sep 17 00:00:00 2001 From: Gabriela Cervantes Date: Thu, 6 Jan 2022 16:08:10 +0000 Subject: [PATCH 279/385] runtime: Remove docker comments for kata 2.0 configuration.tomls This PR removes the reference of how to use disable_new_netns configuration with docker as for kata 2.0 we are not supporting docker and this information was used for kata 1.x Fixes #3400 Signed-off-by: Gabriela Cervantes --- src/runtime/config/configuration-acrn.toml.in | 1 - src/runtime/config/configuration-clh.toml.in | 1 - src/runtime/config/configuration-fc.toml.in | 1 - src/runtime/config/configuration-qemu.toml.in | 1 - 4 files changed, 4 deletions(-) diff --git a/src/runtime/config/configuration-acrn.toml.in b/src/runtime/config/configuration-acrn.toml.in index dff39c710..4ef211835 100644 --- a/src/runtime/config/configuration-acrn.toml.in +++ b/src/runtime/config/configuration-acrn.toml.in @@ -205,7 +205,6 @@ disable_guest_seccomp=@DEFDISABLEGUESTSECCOMP@ # `disable_new_netns` conflicts with `internetworking_model=bridged` and `internetworking_model=macvtap`. It works only # with `internetworking_model=none`. The tap device will be in the host network namespace and can connect to a bridge # (like OVS) directly. -# If you are using docker, `disable_new_netns` only works with `docker run --net=none` # (default: false) #disable_new_netns = true diff --git a/src/runtime/config/configuration-clh.toml.in b/src/runtime/config/configuration-clh.toml.in index 4cacb0fad..8bb8f3341 100644 --- a/src/runtime/config/configuration-clh.toml.in +++ b/src/runtime/config/configuration-clh.toml.in @@ -227,7 +227,6 @@ disable_guest_seccomp=@DEFDISABLEGUESTSECCOMP@ # `disable_new_netns` conflicts with `internetworking_model=bridged` and `internetworking_model=macvtap`. It works only # with `internetworking_model=none`. The tap device will be in the host network namespace and can connect to a bridge # (like OVS) directly. -# If you are using docker, `disable_new_netns` only works with `docker run --net=none` # (default: false) #disable_new_netns = true diff --git a/src/runtime/config/configuration-fc.toml.in b/src/runtime/config/configuration-fc.toml.in index 76060c9bd..33be336d7 100644 --- a/src/runtime/config/configuration-fc.toml.in +++ b/src/runtime/config/configuration-fc.toml.in @@ -333,7 +333,6 @@ disable_guest_seccomp=@DEFDISABLEGUESTSECCOMP@ # `disable_new_netns` conflicts with `internetworking_model=tcfilter` and `internetworking_model=macvtap`. It works only # with `internetworking_model=none`. The tap device will be in the host network namespace and can connect to a bridge # (like OVS) directly. -# If you are using docker, `disable_new_netns` only works with `docker run --net=none` # (default: false) #disable_new_netns = true diff --git a/src/runtime/config/configuration-qemu.toml.in b/src/runtime/config/configuration-qemu.toml.in index 406c51e75..fa549731d 100644 --- a/src/runtime/config/configuration-qemu.toml.in +++ b/src/runtime/config/configuration-qemu.toml.in @@ -509,7 +509,6 @@ disable_guest_seccomp=@DEFDISABLEGUESTSECCOMP@ # `disable_new_netns` conflicts with `internetworking_model=tcfilter` and `internetworking_model=macvtap`. It works only # with `internetworking_model=none`. The tap device will be in the host network namespace and can connect to a bridge # (like OVS) directly. -# If you are using docker, `disable_new_netns` only works with `docker run --net=none` # (default: false) #disable_new_netns = true From b48322d44ed2235952e8f4e6d6591b77a1e28d9b Mon Sep 17 00:00:00 2001 From: Gabriela Cervantes Date: Fri, 7 Jan 2022 17:06:20 +0000 Subject: [PATCH 280/385] packaging: Remove obs packages testing for kata 2.0 This PR removes the scripts and the dockerfiles that were used in kata 1.x to test the different kata components for different distributions in OBS. Currently for kata 2.0 we are not generating packages in OBS so these scripts are not longer being used. Fixes #3404 Signed-off-by: Gabriela Cervantes --- .../packaging/tests/Dockerfile/Dockerfile.in | 19 ---- .../tests/Dockerfile/FedoraDockerfile.in | 27 ----- tools/packaging/tests/run_obs_testing.sh | 98 ------------------- tools/packaging/tests/run_packages_testing.sh | 61 ------------ 4 files changed, 205 deletions(-) delete mode 100644 tools/packaging/tests/Dockerfile/Dockerfile.in delete mode 100644 tools/packaging/tests/Dockerfile/FedoraDockerfile.in delete mode 100755 tools/packaging/tests/run_obs_testing.sh delete mode 100755 tools/packaging/tests/run_packages_testing.sh diff --git a/tools/packaging/tests/Dockerfile/Dockerfile.in b/tools/packaging/tests/Dockerfile/Dockerfile.in deleted file mode 100644 index 31b7377bb..000000000 --- a/tools/packaging/tests/Dockerfile/Dockerfile.in +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (c) 2019 Intel Corporation -# -# SPDX-License-Identifier: Apache-2.0 - -# Usage: FROM [image name] -FROM @OS_DISTRIBUTION@ - -ARG TEST_REPO="https://github.com/kata-containers/tests" - -RUN @UPDATE@ - -RUN @DEPENDENCIES@ - -# Install packages -RUN cd "/home/" && git clone "${TEST_REPO}" -RUN cd "/home/tests" && ./cmd/kata-manager/kata-manager.sh install-packages -RUN kata-runtime kata-env - -CMD ["/bin/bash"] diff --git a/tools/packaging/tests/Dockerfile/FedoraDockerfile.in b/tools/packaging/tests/Dockerfile/FedoraDockerfile.in deleted file mode 100644 index e050ca971..000000000 --- a/tools/packaging/tests/Dockerfile/FedoraDockerfile.in +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright (c) 2020 Intel Corporation -# -# SPDX-License-Identifier: Apache-2.0 - -# Usage: FROM [image name] -FROM @OS_DISTRIBUTION@ - -ENV TESTS_REPO="github.com/kata-containers/tests" - -RUN @DEPENDENCIES@ - -ENV PATH=$PATH:/usr/local/go/bin -ENV GOPATH=/home/go -ENV TESTS_REPOSITORY_PATH="${GOPATH}/src/${TESTS_REPO}" -ENV AGENT_INIT=yes TEST_INITRD=yes OSBUILDER_DISTRO=alpine - -# Install packages and build and install Kata Containers -RUN dnf -y install kata-proxy kata-ksm-throttler kata-osbuilder kata-runtime kata-shim && \ - mkdir "${GOPATH}" && \ - dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo && \ - dnf makecache && dnf -y install docker-ce && dnf clean all && \ - go get -d "${TESTS_REPO}" && \ - cd "${TESTS_REPOSITORY_PATH}" && .ci/install_kata_image.sh && \ - cd "${TESTS_REPOSITORY_PATH}" && .ci/install_kata_kernel.sh && \ - kata-runtime kata-env - -CMD ["/bin/bash"] diff --git a/tools/packaging/tests/run_obs_testing.sh b/tools/packaging/tests/run_obs_testing.sh deleted file mode 100755 index 916ab3d3f..000000000 --- a/tools/packaging/tests/run_obs_testing.sh +++ /dev/null @@ -1,98 +0,0 @@ -#!/bin/bash -# -# Copyright (c) 2019 Intel Corporation -# -# SPDX-License-Identifier: Apache-2.0 - -set -o errexit -set -o nounset -set -o pipefail - -SCRIPT_PATH=$(dirname "$(readlink -f "$0")") -http_proxy="${http_proxy:-}" -https_proxy="${https_proxy:-}" -DOCKERFILE_PATH="${SCRIPT_PATH}/Dockerfile" - -declare -a OS_DISTRIBUTION=( \ - 'ubuntu:16.04' \ - 'ubuntu:18.04' \ - 'fedora:30' \ - 'opensuse/leap:15.1' \ - 'debian:9' \ - 'debian:10' \ - 'centos:7' \ -) - -install_packages() { - for i in "${OS_DISTRIBUTION[@]}"; do - echo "Test OBS packages for ${OS_DISTRIBUTION}" - run_test "${i}" "${DOCKERFILE_PATH}" - remove_image_and_dockerfile "${i}" "${DOCKERFILE_PATH}" - done -} - -run_test() { - local OS_DISTRIBUTION=${1:-} - local DOCKERFILE_PATH=${2:-} - generate_dockerfile "${OS_DISTRIBUTION}" "${DOCKERFILE_PATH}" - build_dockerfile "${OS_DISTRIBUTION}" "${DOCKERFILE_PATH}" -} - - -generate_dockerfile() { - local OS_DISTRIBUTION=${1:-} - local DOCKERFILE_PATH=${2:-} - DISTRIBUTION_NAME=$(echo "${OS_DISTRIBUTION}" | cut -d ':' -f1) - case "${DISTRIBUTION_NAME}" in - centos) - UPDATE="yum -y update" - DEPENDENCIES="yum install -y curl git gnupg2 lsb-release sudo" - ;; - debian|ubuntu) - UPDATE="apt-get -y update" - DEPENDENCIES="apt-get --no-install-recommends install -y apt-utils ca-certificates curl git gnupg2 lsb-release sudo" - ;; - fedora) - UPDATE="dnf -y update" - DEPENDENCIES="dnf install -y curl git gnupg2 sudo" - ;; - opensuse/leap) - UPDATE="zypper -n refresh" - DEPENDENCIES="zypper -n install curl git gnupg sudo" - esac - - echo "Building dockerfile for ${OS_DISTRIBUTION}" - sed \ - -e "s|@OS_DISTRIBUTION@|${OS_DISTRIBUTION}|g" \ - -e "s|@UPDATE@|${UPDATE}|g" \ - -e "s|@DEPENDENCIES@|${DEPENDENCIES}|g" \ - "${DOCKERFILE_PATH}/Dockerfile.in" > "${DOCKERFILE_PATH}"/Dockerfile -} - -build_dockerfile() { - local OS_DISTRIBUTION=${1:-} - local DOCKERFILE_PATH=${2:-} - pushd "${DOCKERFILE_PATH}" - sudo docker build \ - --build-arg http_proxy="${http_proxy}" \ - --build-arg https_proxy="${https_proxy}" \ - --tag "obs-kata-test-${OS_DISTRIBUTION}" . - popd -} - -remove_image_and_dockerfile() { - local OS_DISTRIBUTION=${1:-} - local DOCKERFILE_PATH=${2:-} - echo "Removing image test-${OS_DISTRIBUTION}" - sudo docker rmi "obs-kata-test-${OS_DISTRIBUTION}" - - echo "Removing dockerfile" - sudo rm -f "${DOCKERFILE_PATH}/Dockerfile" -} - -function main() { - echo "Run OBS testing" - install_packages -} - -main "$@" diff --git a/tools/packaging/tests/run_packages_testing.sh b/tools/packaging/tests/run_packages_testing.sh deleted file mode 100755 index 81decefe4..000000000 --- a/tools/packaging/tests/run_packages_testing.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash -# -# Copyright (c) 2020 Intel Corporation -# -# SPDX-License-Identifier: Apache-2.0 - -set -o errexit -set -o nounset -set -o pipefail - -SCRIPT_PATH=$(dirname "$(readlink -f "$0")") -http_proxy="${http_proxy:-}" -https_proxy="${https_proxy:-}" -DOCKERFILE_PATH="${SCRIPT_PATH}/Dockerfile" -OS_DISTRIBUTION="${OS_DISTRIBUTION:-fedora:31}" - -install_packages() { - echo "Test distribution packages for ${OS_DISTRIBUTION}" - run_test - remove_image_and_dockerfile -} - -run_test() { - generate_dockerfile - build_dockerfile -} - -generate_dockerfile() { - UPDATE="dnf -y update" - DEPENDENCIES="dnf install -y curl git make sudo golang dnf-plugin-config-manager" - - echo "Building dockerfile for ${OS_DISTRIBUTION}" - sed \ - -e "s|@OS_DISTRIBUTION@|${OS_DISTRIBUTION}|g" \ - -e "s|@DEPENDENCIES@|${DEPENDENCIES}|g" \ - "${DOCKERFILE_PATH}/FedoraDockerfile.in" > "${DOCKERFILE_PATH}"/Dockerfile -} - -build_dockerfile() { - pushd "${DOCKERFILE_PATH}" - sudo docker build \ - --build-arg http_proxy="${http_proxy}" \ - --build-arg https_proxy="${https_proxy}" \ - --tag "packaging-kata-test-${OS_DISTRIBUTION}" . - popd -} - -remove_image_and_dockerfile() { - echo "Removing image test-${OS_DISTRIBUTION}" - sudo docker rmi "packaging-kata-test-${OS_DISTRIBUTION}" - - echo "Removing dockerfile" - sudo rm -f "${DOCKERFILE_PATH}/Dockerfile" -} - -function main() { - echo "Run packaging testing" - install_packages -} - -main "$@" From f6cdf46496dcc7eb32881f88834a5b9c2bede2a9 Mon Sep 17 00:00:00 2001 From: Sebastian Hasler Date: Sun, 9 Jan 2022 13:48:16 +0100 Subject: [PATCH 281/385] docs: Default machine type is q35 meanwhile Fixes: #3412 Signed-off-by: Sebastian Hasler --- docs/design/virtualization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/design/virtualization.md b/docs/design/virtualization.md index 75ec62bf4..f12ab4447 100644 --- a/docs/design/virtualization.md +++ b/docs/design/virtualization.md @@ -40,7 +40,7 @@ Kata Containers with QEMU has complete compatibility with Kubernetes. Depending on the host architecture, Kata Containers supports various machine types, for example `pc` and `q35` on x86 systems, `virt` on ARM systems and `pseries` on IBM Power systems. The default Kata Containers -machine type is `pc`. The machine type and its [`Machine accelerators`](#machine-accelerators) can +machine type is `q35`. The machine type and its [`Machine accelerators`](#machine-accelerators) can be changed by editing the runtime [`configuration`](architecture/README.md#configuration) file. Devices and features used: From c486c2ca18e071f0f556f6ada04e34a847622732 Mon Sep 17 00:00:00 2001 From: Feng Wang Date: Mon, 10 Jan 2022 15:37:00 -0800 Subject: [PATCH 282/385] agent: fix the broken protobuf generation code After the protocols are moved to upper libs (PR3355), the runtime protocol generation is broken. This fixes it. Fixes: #3414 Signed-off-by: Feng Wang --- src/agent/Makefile | 2 +- .../protocols/hack/update-generated-proto.sh | 8 +- .../pkg/agent/protocols/grpc/agent.pb.go | 489 +++++++++--------- .../pkg/agent/protocols/grpc/health.pb.go | 66 +-- .../pkg/agent/protocols/grpc/healthpb_test.go | 2 +- .../pkg/agent/protocols/grpc/oci.pb.go | 328 ++++++------ .../pkg/agent/protocols/grpc/ocipb_test.go | 2 +- .../pkg/agent/protocols/types.pb.go | 79 +-- 8 files changed, 489 insertions(+), 487 deletions(-) diff --git a/src/agent/Makefile b/src/agent/Makefile index d6e7047bc..07439b09b 100644 --- a/src/agent/Makefile +++ b/src/agent/Makefile @@ -216,4 +216,4 @@ codecov-html: check_tarpaulin ##TARGET generate-protocols: generate/update grpc agent protocols generate-protocols: - protocols/hack/update-generated-proto.sh all + ../libs/protocols/hack/update-generated-proto.sh all diff --git a/src/libs/protocols/hack/update-generated-proto.sh b/src/libs/protocols/hack/update-generated-proto.sh index 9d5e8e3bc..63e6ef557 100755 --- a/src/libs/protocols/hack/update-generated-proto.sh +++ b/src/libs/protocols/hack/update-generated-proto.sh @@ -47,17 +47,17 @@ show_usage() { } generate_go_sources() { - local cmd="protoc -I$GOPATH/src:$GOPATH/src/github.com/kata-containers/kata-containers/src/agent/protocols/protos \ + local cmd="protoc -I$GOPATH/src:$GOPATH/src/github.com/kata-containers/kata-containers/src/libs/protocols/protos \ --gogottrpc_out=plugins=ttrpc+fieldpath,\ import_path=github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/agent/protocols/grpc,\ \ -Mgithub.com/kata-containers/kata-containers/src/agent/protocols/protos/types.proto=github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/agent/protocols,\ +Mgithub.com/kata-containers/kata-containers/src/libs/protocols/protos/types.proto=github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/agent/protocols,\ \ -Mgithub.com/kata-containers/kata-containers/src/agent/protocols/protos/oci.proto=github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/agent/protocols/grpc,\ +Mgithub.com/kata-containers/kata-containers/src/libs/protocols/protos/oci.proto=github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/agent/protocols/grpc,\ \ Mgogoproto/gogo.proto=github.com/gogo/protobuf/gogoproto,Mgoogle/protobuf/any.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/descriptor.proto=github.com/gogo/protobuf/protoc-gen-gogo/descriptor,Mgoogle/protobuf/duration.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/empty.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/field_mask.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/timestamp.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/wrappers.proto=github.com/gogo/protobuf/types,Mgoogle/rpc/status.proto=github.com/gogo/googleapis/google/rpc\ :$GOPATH/src \ -$GOPATH/src/github.com/kata-containers/kata-containers/src/agent/protocols/protos/$1" +$GOPATH/src/github.com/kata-containers/kata-containers/src/libs/protocols/protos/$1" echo $cmd $cmd diff --git a/src/runtime/virtcontainers/pkg/agent/protocols/grpc/agent.pb.go b/src/runtime/virtcontainers/pkg/agent/protocols/grpc/agent.pb.go index b3681f650..e4e79dee1 100644 --- a/src/runtime/virtcontainers/pkg/agent/protocols/grpc/agent.pb.go +++ b/src/runtime/virtcontainers/pkg/agent/protocols/grpc/agent.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: github.com/kata-containers/kata-containers/src/agent/protocols/protos/agent.proto +// source: github.com/kata-containers/kata-containers/src/libs/protocols/protos/agent.proto package grpc @@ -50,7 +50,7 @@ type CreateContainerRequest struct { func (m *CreateContainerRequest) Reset() { *m = CreateContainerRequest{} } func (*CreateContainerRequest) ProtoMessage() {} func (*CreateContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{0} + return fileDescriptor_712ce9a559fda969, []int{0} } func (m *CreateContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -89,7 +89,7 @@ type StartContainerRequest struct { func (m *StartContainerRequest) Reset() { *m = StartContainerRequest{} } func (*StartContainerRequest) ProtoMessage() {} func (*StartContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{1} + return fileDescriptor_712ce9a559fda969, []int{1} } func (m *StartContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -134,7 +134,7 @@ type RemoveContainerRequest struct { func (m *RemoveContainerRequest) Reset() { *m = RemoveContainerRequest{} } func (*RemoveContainerRequest) ProtoMessage() {} func (*RemoveContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{2} + return fileDescriptor_712ce9a559fda969, []int{2} } func (m *RemoveContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -176,7 +176,7 @@ type ExecProcessRequest struct { func (m *ExecProcessRequest) Reset() { *m = ExecProcessRequest{} } func (*ExecProcessRequest) ProtoMessage() {} func (*ExecProcessRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{3} + return fileDescriptor_712ce9a559fda969, []int{3} } func (m *ExecProcessRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -220,7 +220,7 @@ type SignalProcessRequest struct { func (m *SignalProcessRequest) Reset() { *m = SignalProcessRequest{} } func (*SignalProcessRequest) ProtoMessage() {} func (*SignalProcessRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{4} + return fileDescriptor_712ce9a559fda969, []int{4} } func (m *SignalProcessRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -260,7 +260,7 @@ type WaitProcessRequest struct { func (m *WaitProcessRequest) Reset() { *m = WaitProcessRequest{} } func (*WaitProcessRequest) ProtoMessage() {} func (*WaitProcessRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{5} + return fileDescriptor_712ce9a559fda969, []int{5} } func (m *WaitProcessRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -299,7 +299,7 @@ type WaitProcessResponse struct { func (m *WaitProcessResponse) Reset() { *m = WaitProcessResponse{} } func (*WaitProcessResponse) ProtoMessage() {} func (*WaitProcessResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{6} + return fileDescriptor_712ce9a559fda969, []int{6} } func (m *WaitProcessResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -339,7 +339,7 @@ type UpdateContainerRequest struct { func (m *UpdateContainerRequest) Reset() { *m = UpdateContainerRequest{} } func (*UpdateContainerRequest) ProtoMessage() {} func (*UpdateContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{7} + return fileDescriptor_712ce9a559fda969, []int{7} } func (m *UpdateContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -378,7 +378,7 @@ type StatsContainerRequest struct { func (m *StatsContainerRequest) Reset() { *m = StatsContainerRequest{} } func (*StatsContainerRequest) ProtoMessage() {} func (*StatsContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{8} + return fileDescriptor_712ce9a559fda969, []int{8} } func (m *StatsContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -417,7 +417,7 @@ type PauseContainerRequest struct { func (m *PauseContainerRequest) Reset() { *m = PauseContainerRequest{} } func (*PauseContainerRequest) ProtoMessage() {} func (*PauseContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{9} + return fileDescriptor_712ce9a559fda969, []int{9} } func (m *PauseContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -456,7 +456,7 @@ type ResumeContainerRequest struct { func (m *ResumeContainerRequest) Reset() { *m = ResumeContainerRequest{} } func (*ResumeContainerRequest) ProtoMessage() {} func (*ResumeContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{10} + return fileDescriptor_712ce9a559fda969, []int{10} } func (m *ResumeContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -498,7 +498,7 @@ type CpuUsage struct { func (m *CpuUsage) Reset() { *m = CpuUsage{} } func (*CpuUsage) ProtoMessage() {} func (*CpuUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{11} + return fileDescriptor_712ce9a559fda969, []int{11} } func (m *CpuUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -539,7 +539,7 @@ type ThrottlingData struct { func (m *ThrottlingData) Reset() { *m = ThrottlingData{} } func (*ThrottlingData) ProtoMessage() {} func (*ThrottlingData) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{12} + return fileDescriptor_712ce9a559fda969, []int{12} } func (m *ThrottlingData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -579,7 +579,7 @@ type CpuStats struct { func (m *CpuStats) Reset() { *m = CpuStats{} } func (*CpuStats) ProtoMessage() {} func (*CpuStats) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{13} + return fileDescriptor_712ce9a559fda969, []int{13} } func (m *CpuStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -619,7 +619,7 @@ type PidsStats struct { func (m *PidsStats) Reset() { *m = PidsStats{} } func (*PidsStats) ProtoMessage() {} func (*PidsStats) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{14} + return fileDescriptor_712ce9a559fda969, []int{14} } func (m *PidsStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -661,7 +661,7 @@ type MemoryData struct { func (m *MemoryData) Reset() { *m = MemoryData{} } func (*MemoryData) ProtoMessage() {} func (*MemoryData) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{15} + return fileDescriptor_712ce9a559fda969, []int{15} } func (m *MemoryData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -705,7 +705,7 @@ type MemoryStats struct { func (m *MemoryStats) Reset() { *m = MemoryStats{} } func (*MemoryStats) ProtoMessage() {} func (*MemoryStats) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{16} + return fileDescriptor_712ce9a559fda969, []int{16} } func (m *MemoryStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -747,7 +747,7 @@ type BlkioStatsEntry struct { func (m *BlkioStatsEntry) Reset() { *m = BlkioStatsEntry{} } func (*BlkioStatsEntry) ProtoMessage() {} func (*BlkioStatsEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{17} + return fileDescriptor_712ce9a559fda969, []int{17} } func (m *BlkioStatsEntry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -793,7 +793,7 @@ type BlkioStats struct { func (m *BlkioStats) Reset() { *m = BlkioStats{} } func (*BlkioStats) ProtoMessage() {} func (*BlkioStats) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{18} + return fileDescriptor_712ce9a559fda969, []int{18} } func (m *BlkioStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -834,7 +834,7 @@ type HugetlbStats struct { func (m *HugetlbStats) Reset() { *m = HugetlbStats{} } func (*HugetlbStats) ProtoMessage() {} func (*HugetlbStats) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{19} + return fileDescriptor_712ce9a559fda969, []int{19} } func (m *HugetlbStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -877,7 +877,7 @@ type CgroupStats struct { func (m *CgroupStats) Reset() { *m = CgroupStats{} } func (*CgroupStats) ProtoMessage() {} func (*CgroupStats) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{20} + return fileDescriptor_712ce9a559fda969, []int{20} } func (m *CgroupStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -924,7 +924,7 @@ type NetworkStats struct { func (m *NetworkStats) Reset() { *m = NetworkStats{} } func (*NetworkStats) ProtoMessage() {} func (*NetworkStats) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{21} + return fileDescriptor_712ce9a559fda969, []int{21} } func (m *NetworkStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -964,7 +964,7 @@ type StatsContainerResponse struct { func (m *StatsContainerResponse) Reset() { *m = StatsContainerResponse{} } func (*StatsContainerResponse) ProtoMessage() {} func (*StatsContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{22} + return fileDescriptor_712ce9a559fda969, []int{22} } func (m *StatsContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1005,7 +1005,7 @@ type WriteStreamRequest struct { func (m *WriteStreamRequest) Reset() { *m = WriteStreamRequest{} } func (*WriteStreamRequest) ProtoMessage() {} func (*WriteStreamRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{23} + return fileDescriptor_712ce9a559fda969, []int{23} } func (m *WriteStreamRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1044,7 +1044,7 @@ type WriteStreamResponse struct { func (m *WriteStreamResponse) Reset() { *m = WriteStreamResponse{} } func (*WriteStreamResponse) ProtoMessage() {} func (*WriteStreamResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{24} + return fileDescriptor_712ce9a559fda969, []int{24} } func (m *WriteStreamResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1085,7 +1085,7 @@ type ReadStreamRequest struct { func (m *ReadStreamRequest) Reset() { *m = ReadStreamRequest{} } func (*ReadStreamRequest) ProtoMessage() {} func (*ReadStreamRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{25} + return fileDescriptor_712ce9a559fda969, []int{25} } func (m *ReadStreamRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1124,7 +1124,7 @@ type ReadStreamResponse struct { func (m *ReadStreamResponse) Reset() { *m = ReadStreamResponse{} } func (*ReadStreamResponse) ProtoMessage() {} func (*ReadStreamResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{26} + return fileDescriptor_712ce9a559fda969, []int{26} } func (m *ReadStreamResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1164,7 +1164,7 @@ type CloseStdinRequest struct { func (m *CloseStdinRequest) Reset() { *m = CloseStdinRequest{} } func (*CloseStdinRequest) ProtoMessage() {} func (*CloseStdinRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{27} + return fileDescriptor_712ce9a559fda969, []int{27} } func (m *CloseStdinRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1206,7 +1206,7 @@ type TtyWinResizeRequest struct { func (m *TtyWinResizeRequest) Reset() { *m = TtyWinResizeRequest{} } func (*TtyWinResizeRequest) ProtoMessage() {} func (*TtyWinResizeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{28} + return fileDescriptor_712ce9a559fda969, []int{28} } func (m *TtyWinResizeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1249,7 +1249,7 @@ type KernelModule struct { func (m *KernelModule) Reset() { *m = KernelModule{} } func (*KernelModule) ProtoMessage() {} func (*KernelModule) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{29} + return fileDescriptor_712ce9a559fda969, []int{29} } func (m *KernelModule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1304,7 +1304,7 @@ type CreateSandboxRequest struct { func (m *CreateSandboxRequest) Reset() { *m = CreateSandboxRequest{} } func (*CreateSandboxRequest) ProtoMessage() {} func (*CreateSandboxRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{30} + return fileDescriptor_712ce9a559fda969, []int{30} } func (m *CreateSandboxRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1342,7 +1342,7 @@ type DestroySandboxRequest struct { func (m *DestroySandboxRequest) Reset() { *m = DestroySandboxRequest{} } func (*DestroySandboxRequest) ProtoMessage() {} func (*DestroySandboxRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{31} + return fileDescriptor_712ce9a559fda969, []int{31} } func (m *DestroySandboxRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1381,7 +1381,7 @@ type Interfaces struct { func (m *Interfaces) Reset() { *m = Interfaces{} } func (*Interfaces) ProtoMessage() {} func (*Interfaces) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{32} + return fileDescriptor_712ce9a559fda969, []int{32} } func (m *Interfaces) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1420,7 +1420,7 @@ type Routes struct { func (m *Routes) Reset() { *m = Routes{} } func (*Routes) ProtoMessage() {} func (*Routes) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{33} + return fileDescriptor_712ce9a559fda969, []int{33} } func (m *Routes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1459,7 +1459,7 @@ type UpdateInterfaceRequest struct { func (m *UpdateInterfaceRequest) Reset() { *m = UpdateInterfaceRequest{} } func (*UpdateInterfaceRequest) ProtoMessage() {} func (*UpdateInterfaceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{34} + return fileDescriptor_712ce9a559fda969, []int{34} } func (m *UpdateInterfaceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1498,7 +1498,7 @@ type UpdateRoutesRequest struct { func (m *UpdateRoutesRequest) Reset() { *m = UpdateRoutesRequest{} } func (*UpdateRoutesRequest) ProtoMessage() {} func (*UpdateRoutesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{35} + return fileDescriptor_712ce9a559fda969, []int{35} } func (m *UpdateRoutesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1536,7 +1536,7 @@ type ListInterfacesRequest struct { func (m *ListInterfacesRequest) Reset() { *m = ListInterfacesRequest{} } func (*ListInterfacesRequest) ProtoMessage() {} func (*ListInterfacesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{36} + return fileDescriptor_712ce9a559fda969, []int{36} } func (m *ListInterfacesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1574,7 +1574,7 @@ type ListRoutesRequest struct { func (m *ListRoutesRequest) Reset() { *m = ListRoutesRequest{} } func (*ListRoutesRequest) ProtoMessage() {} func (*ListRoutesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{37} + return fileDescriptor_712ce9a559fda969, []int{37} } func (m *ListRoutesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1613,7 +1613,7 @@ type ARPNeighbors struct { func (m *ARPNeighbors) Reset() { *m = ARPNeighbors{} } func (*ARPNeighbors) ProtoMessage() {} func (*ARPNeighbors) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{38} + return fileDescriptor_712ce9a559fda969, []int{38} } func (m *ARPNeighbors) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1652,7 +1652,7 @@ type AddARPNeighborsRequest struct { func (m *AddARPNeighborsRequest) Reset() { *m = AddARPNeighborsRequest{} } func (*AddARPNeighborsRequest) ProtoMessage() {} func (*AddARPNeighborsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{39} + return fileDescriptor_712ce9a559fda969, []int{39} } func (m *AddARPNeighborsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1698,7 +1698,7 @@ type OnlineCPUMemRequest struct { func (m *OnlineCPUMemRequest) Reset() { *m = OnlineCPUMemRequest{} } func (*OnlineCPUMemRequest) ProtoMessage() {} func (*OnlineCPUMemRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{40} + return fileDescriptor_712ce9a559fda969, []int{40} } func (m *OnlineCPUMemRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1738,7 +1738,7 @@ type ReseedRandomDevRequest struct { func (m *ReseedRandomDevRequest) Reset() { *m = ReseedRandomDevRequest{} } func (*ReseedRandomDevRequest) ProtoMessage() {} func (*ReseedRandomDevRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{41} + return fileDescriptor_712ce9a559fda969, []int{41} } func (m *ReseedRandomDevRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1788,7 +1788,7 @@ type AgentDetails struct { func (m *AgentDetails) Reset() { *m = AgentDetails{} } func (*AgentDetails) ProtoMessage() {} func (*AgentDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{42} + return fileDescriptor_712ce9a559fda969, []int{42} } func (m *AgentDetails) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1834,7 +1834,7 @@ type GuestDetailsRequest struct { func (m *GuestDetailsRequest) Reset() { *m = GuestDetailsRequest{} } func (*GuestDetailsRequest) ProtoMessage() {} func (*GuestDetailsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{43} + return fileDescriptor_712ce9a559fda969, []int{43} } func (m *GuestDetailsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1876,7 +1876,7 @@ type GuestDetailsResponse struct { func (m *GuestDetailsResponse) Reset() { *m = GuestDetailsResponse{} } func (*GuestDetailsResponse) ProtoMessage() {} func (*GuestDetailsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{44} + return fileDescriptor_712ce9a559fda969, []int{44} } func (m *GuestDetailsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1917,7 +1917,7 @@ type MemHotplugByProbeRequest struct { func (m *MemHotplugByProbeRequest) Reset() { *m = MemHotplugByProbeRequest{} } func (*MemHotplugByProbeRequest) ProtoMessage() {} func (*MemHotplugByProbeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{45} + return fileDescriptor_712ce9a559fda969, []int{45} } func (m *MemHotplugByProbeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1959,7 +1959,7 @@ type SetGuestDateTimeRequest struct { func (m *SetGuestDateTimeRequest) Reset() { *m = SetGuestDateTimeRequest{} } func (*SetGuestDateTimeRequest) ProtoMessage() {} func (*SetGuestDateTimeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{46} + return fileDescriptor_712ce9a559fda969, []int{46} } func (m *SetGuestDateTimeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2024,7 +2024,7 @@ type Storage struct { func (m *Storage) Reset() { *m = Storage{} } func (*Storage) ProtoMessage() {} func (*Storage) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{47} + return fileDescriptor_712ce9a559fda969, []int{47} } func (m *Storage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2095,7 +2095,7 @@ type Device struct { func (m *Device) Reset() { *m = Device{} } func (*Device) ProtoMessage() {} func (*Device) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{48} + return fileDescriptor_712ce9a559fda969, []int{48} } func (m *Device) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2136,7 +2136,7 @@ type StringUser struct { func (m *StringUser) Reset() { *m = StringUser{} } func (*StringUser) ProtoMessage() {} func (*StringUser) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{49} + return fileDescriptor_712ce9a559fda969, []int{49} } func (m *StringUser) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2193,7 +2193,7 @@ type CopyFileRequest struct { func (m *CopyFileRequest) Reset() { *m = CopyFileRequest{} } func (*CopyFileRequest) ProtoMessage() {} func (*CopyFileRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{50} + return fileDescriptor_712ce9a559fda969, []int{50} } func (m *CopyFileRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2231,7 +2231,7 @@ type GetOOMEventRequest struct { func (m *GetOOMEventRequest) Reset() { *m = GetOOMEventRequest{} } func (*GetOOMEventRequest) ProtoMessage() {} func (*GetOOMEventRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{51} + return fileDescriptor_712ce9a559fda969, []int{51} } func (m *GetOOMEventRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2270,7 +2270,7 @@ type OOMEvent struct { func (m *OOMEvent) Reset() { *m = OOMEvent{} } func (*OOMEvent) ProtoMessage() {} func (*OOMEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{52} + return fileDescriptor_712ce9a559fda969, []int{52} } func (m *OOMEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2309,7 +2309,7 @@ type AddSwapRequest struct { func (m *AddSwapRequest) Reset() { *m = AddSwapRequest{} } func (*AddSwapRequest) ProtoMessage() {} func (*AddSwapRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{53} + return fileDescriptor_712ce9a559fda969, []int{53} } func (m *AddSwapRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2347,7 +2347,7 @@ type GetMetricsRequest struct { func (m *GetMetricsRequest) Reset() { *m = GetMetricsRequest{} } func (*GetMetricsRequest) ProtoMessage() {} func (*GetMetricsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{54} + return fileDescriptor_712ce9a559fda969, []int{54} } func (m *GetMetricsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2386,7 +2386,7 @@ type Metrics struct { func (m *Metrics) Reset() { *m = Metrics{} } func (*Metrics) ProtoMessage() {} func (*Metrics) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{55} + return fileDescriptor_712ce9a559fda969, []int{55} } func (m *Metrics) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2477,197 +2477,198 @@ func init() { } func init() { - proto.RegisterFile("github.com/kata-containers/kata-containers/src/agent/protocols/protos/agent.proto", fileDescriptor_c1460208c38ccf5e) + proto.RegisterFile("github.com/kata-containers/kata-containers/src/libs/protocols/protos/agent.proto", fileDescriptor_712ce9a559fda969) } -var fileDescriptor_c1460208c38ccf5e = []byte{ - // 2973 bytes of a gzipped FileDescriptorProto +var fileDescriptor_712ce9a559fda969 = []byte{ + // 2978 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x3a, 0x4b, 0x6f, 0x23, 0xc7, 0xd1, 0xe6, 0x43, 0x22, 0x59, 0x7c, 0x89, 0x23, 0xad, 0x96, 0x4b, 0xdb, 0xfa, 0xd6, 0xb3, 0xf6, - 0x7a, 0x6d, 0x7f, 0xe6, 0xda, 0x6b, 0xe3, 0x5b, 0x3f, 0xe0, 0x6f, 0xa1, 0x97, 0x25, 0xd9, 0x96, - 0x45, 0x8f, 0x2c, 0xf8, 0xc3, 0x17, 0x24, 0x83, 0xd1, 0x4c, 0x8b, 0x6c, 0x8b, 0x33, 0x3d, 0xee, - 0xe9, 0xd1, 0x8a, 0x0e, 0x10, 0xe4, 0x94, 0xdc, 0x72, 0xcc, 0x2d, 0x7f, 0x20, 0xc8, 0x2d, 0x40, - 0x2e, 0xb9, 0xe6, 0x60, 0xe4, 0x94, 0x63, 0x4e, 0x41, 0xbc, 0x3f, 0x21, 0xbf, 0x20, 0xe8, 0xd7, - 0x3c, 0xf8, 0x90, 0x13, 0x41, 0x40, 0x2e, 0x44, 0x57, 0x75, 0x75, 0xbd, 0xba, 0xab, 0xba, 0xaa, - 0x87, 0xf0, 0xc5, 0x10, 0xb3, 0x51, 0x7c, 0xda, 0x77, 0x89, 0xff, 0xf0, 0xdc, 0x61, 0xce, 0x9b, - 0x2e, 0x09, 0x98, 0x83, 0x03, 0x44, 0xa3, 0x19, 0x38, 0xa2, 0xee, 0x43, 0x67, 0x88, 0x02, 0xf6, - 0x30, 0xa4, 0x84, 0x11, 0x97, 0x8c, 0x23, 0x39, 0x8a, 0x24, 0xba, 0x2f, 0x00, 0xa3, 0x3c, 0xa4, - 0xa1, 0xdb, 0xab, 0x11, 0x17, 0x4b, 0x44, 0xaf, 0xce, 0x26, 0x21, 0x8a, 0x14, 0xf0, 0xfc, 0x90, - 0x90, 0xe1, 0x18, 0xc9, 0x85, 0xa7, 0xf1, 0xd9, 0x43, 0xe4, 0x87, 0x6c, 0x22, 0x27, 0xcd, 0xdf, - 0x14, 0x61, 0x7d, 0x9b, 0x22, 0x87, 0xa1, 0x6d, 0x2d, 0xd6, 0x42, 0xdf, 0xc4, 0x28, 0x62, 0xc6, - 0x4b, 0xd0, 0x48, 0x54, 0xb1, 0xb1, 0xd7, 0x2d, 0xdc, 0x2d, 0x3c, 0xa8, 0x59, 0xf5, 0x04, 0x77, - 0xe0, 0x19, 0xb7, 0xa1, 0x82, 0x2e, 0x91, 0xcb, 0x67, 0x8b, 0x62, 0x76, 0x99, 0x83, 0x07, 0x9e, - 0xf1, 0x36, 0xd4, 0x23, 0x46, 0x71, 0x30, 0xb4, 0xe3, 0x08, 0xd1, 0x6e, 0xe9, 0x6e, 0xe1, 0x41, - 0xfd, 0xd1, 0x4a, 0x9f, 0xeb, 0xd9, 0x3f, 0x16, 0x13, 0x27, 0x11, 0xa2, 0x16, 0x44, 0xc9, 0xd8, - 0xb8, 0x0f, 0x15, 0x0f, 0x5d, 0x60, 0x17, 0x45, 0xdd, 0xf2, 0xdd, 0xd2, 0x83, 0xfa, 0xa3, 0x86, - 0x24, 0xdf, 0x11, 0x48, 0x4b, 0x4f, 0x1a, 0xaf, 0x41, 0x35, 0x62, 0x84, 0x3a, 0x43, 0x14, 0x75, - 0x97, 0x04, 0x61, 0x53, 0xf3, 0x15, 0x58, 0x2b, 0x99, 0x36, 0x5e, 0x80, 0xd2, 0xd1, 0xf6, 0x41, - 0x77, 0x59, 0x48, 0x07, 0x45, 0x15, 0x22, 0xd7, 0xe2, 0x68, 0xe3, 0x1e, 0x34, 0x23, 0x27, 0xf0, - 0x4e, 0xc9, 0xa5, 0x1d, 0x62, 0x2f, 0x88, 0xba, 0x95, 0xbb, 0x85, 0x07, 0x55, 0xab, 0xa1, 0x90, - 0x03, 0x8e, 0x33, 0x3f, 0x80, 0x5b, 0xc7, 0xcc, 0xa1, 0xec, 0x1a, 0xde, 0x31, 0x4f, 0x60, 0xdd, - 0x42, 0x3e, 0xb9, 0xb8, 0x96, 0x6b, 0xbb, 0x50, 0x61, 0xd8, 0x47, 0x24, 0x66, 0xc2, 0xb5, 0x4d, - 0x4b, 0x83, 0xe6, 0xef, 0x0a, 0x60, 0xec, 0x5e, 0x22, 0x77, 0x40, 0x89, 0x8b, 0xa2, 0xe8, 0x3f, - 0xb4, 0x5d, 0xaf, 0x42, 0x25, 0x94, 0x0a, 0x74, 0xcb, 0x82, 0x5c, 0xed, 0x82, 0xd6, 0x4a, 0xcf, - 0x9a, 0x5f, 0xc3, 0xda, 0x31, 0x1e, 0x06, 0xce, 0xf8, 0x06, 0xf5, 0x5d, 0x87, 0xe5, 0x48, 0xf0, - 0x14, 0xaa, 0x36, 0x2d, 0x05, 0x99, 0x03, 0x30, 0xbe, 0x72, 0x30, 0xbb, 0x39, 0x49, 0xe6, 0x9b, - 0xb0, 0x9a, 0xe3, 0x18, 0x85, 0x24, 0x88, 0x90, 0x50, 0x80, 0x39, 0x2c, 0x8e, 0x04, 0xb3, 0x25, - 0x4b, 0x41, 0x26, 0x81, 0xf5, 0x93, 0xd0, 0xbb, 0x66, 0x34, 0x3d, 0x82, 0x1a, 0x45, 0x11, 0x89, - 0x29, 0x8f, 0x81, 0xa2, 0x70, 0xea, 0x9a, 0x74, 0xea, 0x67, 0x38, 0x88, 0x2f, 0x2d, 0x3d, 0x67, - 0xa5, 0x64, 0xea, 0x7c, 0xb2, 0xe8, 0x3a, 0xe7, 0xf3, 0x03, 0xb8, 0x35, 0x70, 0xe2, 0xe8, 0x3a, - 0xba, 0x9a, 0x1f, 0xf2, 0xb3, 0x1d, 0xc5, 0xfe, 0xb5, 0x16, 0xff, 0xb6, 0x00, 0xd5, 0xed, 0x30, - 0x3e, 0x89, 0x9c, 0x21, 0x32, 0xfe, 0x0b, 0xea, 0x8c, 0x30, 0x67, 0x6c, 0xc7, 0x1c, 0x14, 0xe4, - 0x65, 0x0b, 0x04, 0x4a, 0x12, 0xbc, 0x04, 0x8d, 0x10, 0x51, 0x37, 0x8c, 0x15, 0x45, 0xf1, 0x6e, - 0xe9, 0x41, 0xd9, 0xaa, 0x4b, 0x9c, 0x24, 0xe9, 0xc3, 0xaa, 0x98, 0xb3, 0x71, 0x60, 0x9f, 0x23, - 0x1a, 0xa0, 0xb1, 0x4f, 0x3c, 0x24, 0x0e, 0x47, 0xd9, 0xea, 0x88, 0xa9, 0x83, 0xe0, 0xd3, 0x64, - 0xc2, 0x78, 0x1d, 0x3a, 0x09, 0x3d, 0x3f, 0xf1, 0x82, 0xba, 0x2c, 0xa8, 0xdb, 0x8a, 0xfa, 0x44, - 0xa1, 0xcd, 0x9f, 0x41, 0xeb, 0xcb, 0x11, 0x25, 0x8c, 0x8d, 0x71, 0x30, 0xdc, 0x71, 0x98, 0xc3, - 0x43, 0x33, 0x44, 0x14, 0x13, 0x2f, 0x52, 0xda, 0x6a, 0xd0, 0x78, 0x03, 0x3a, 0x4c, 0xd2, 0x22, - 0xcf, 0xd6, 0x34, 0x45, 0x41, 0xb3, 0x92, 0x4c, 0x0c, 0x14, 0xf1, 0x2b, 0xd0, 0x4a, 0x89, 0x79, - 0x70, 0x2b, 0x7d, 0x9b, 0x09, 0xf6, 0x4b, 0xec, 0x23, 0xf3, 0x42, 0xf8, 0x4a, 0x6c, 0xb2, 0xf1, - 0x06, 0xd4, 0x52, 0x3f, 0x14, 0xc4, 0x09, 0x69, 0xc9, 0x13, 0xa2, 0xdd, 0x69, 0x55, 0x13, 0xa7, - 0x7c, 0x04, 0x6d, 0x96, 0x28, 0x6e, 0x7b, 0x0e, 0x73, 0xf2, 0x87, 0x2a, 0x6f, 0x95, 0xd5, 0x62, - 0x39, 0xd8, 0xfc, 0x10, 0x6a, 0x03, 0xec, 0x45, 0x52, 0x70, 0x17, 0x2a, 0x6e, 0x4c, 0x29, 0x0a, - 0x98, 0x36, 0x59, 0x81, 0xc6, 0x1a, 0x2c, 0x8d, 0xb1, 0x8f, 0x99, 0x32, 0x53, 0x02, 0x26, 0x01, - 0x38, 0x44, 0x3e, 0xa1, 0x13, 0xe1, 0xb0, 0x35, 0x58, 0xca, 0x6e, 0xae, 0x04, 0x8c, 0xe7, 0xa1, - 0xe6, 0x3b, 0x97, 0xc9, 0xa6, 0xf2, 0x99, 0xaa, 0xef, 0x5c, 0x4a, 0xe5, 0xbb, 0x50, 0x39, 0x73, - 0xf0, 0xd8, 0x0d, 0x98, 0xf2, 0x8a, 0x06, 0x53, 0x81, 0xe5, 0xac, 0xc0, 0x3f, 0x15, 0xa1, 0x2e, - 0x25, 0x4a, 0x85, 0xd7, 0x60, 0xc9, 0x75, 0xdc, 0x51, 0x22, 0x52, 0x00, 0xc6, 0x7d, 0xad, 0x48, - 0x31, 0x9b, 0xe1, 0x52, 0x4d, 0xb5, 0x6a, 0x0f, 0x01, 0xa2, 0xa7, 0x4e, 0xa8, 0x74, 0x2b, 0x2d, - 0x20, 0xae, 0x71, 0x1a, 0xa9, 0xee, 0x3b, 0xd0, 0x90, 0xe7, 0x4e, 0x2d, 0x29, 0x2f, 0x58, 0x52, - 0x97, 0x54, 0x72, 0xd1, 0x3d, 0x68, 0xc6, 0x11, 0xb2, 0x47, 0x18, 0x51, 0x87, 0xba, 0xa3, 0x49, - 0x77, 0x49, 0x5e, 0x40, 0x71, 0x84, 0xf6, 0x35, 0xce, 0x78, 0x04, 0x4b, 0x3c, 0xb7, 0x44, 0xdd, - 0x65, 0x71, 0xd7, 0xbd, 0x90, 0x65, 0x29, 0x4c, 0xed, 0x8b, 0xdf, 0xdd, 0x80, 0xd1, 0x89, 0x25, - 0x49, 0x7b, 0xef, 0x01, 0xa4, 0x48, 0x63, 0x05, 0x4a, 0xe7, 0x68, 0xa2, 0xe2, 0x90, 0x0f, 0xb9, - 0x73, 0x2e, 0x9c, 0x71, 0xac, 0xbd, 0x2e, 0x81, 0x0f, 0x8a, 0xef, 0x15, 0x4c, 0x17, 0xda, 0x5b, - 0xe3, 0x73, 0x4c, 0x32, 0xcb, 0xd7, 0x60, 0xc9, 0x77, 0xbe, 0x26, 0x54, 0x7b, 0x52, 0x00, 0x02, - 0x8b, 0x03, 0x42, 0x35, 0x0b, 0x01, 0x18, 0x2d, 0x28, 0x92, 0x50, 0xf8, 0xab, 0x66, 0x15, 0x49, - 0x98, 0x0a, 0x2a, 0x67, 0x04, 0x99, 0x7f, 0x2b, 0x03, 0xa4, 0x52, 0x0c, 0x0b, 0x7a, 0x98, 0xd8, - 0x11, 0xa2, 0xfc, 0x7e, 0xb7, 0x4f, 0x27, 0x0c, 0x45, 0x36, 0x45, 0x6e, 0x4c, 0x23, 0x7c, 0xc1, - 0xf7, 0x8f, 0x9b, 0x7d, 0x4b, 0x9a, 0x3d, 0xa5, 0x9b, 0x75, 0x1b, 0x93, 0x63, 0xb9, 0x6e, 0x8b, - 0x2f, 0xb3, 0xf4, 0x2a, 0xe3, 0x00, 0x6e, 0xa5, 0x3c, 0xbd, 0x0c, 0xbb, 0xe2, 0x55, 0xec, 0x56, - 0x13, 0x76, 0x5e, 0xca, 0x6a, 0x17, 0x56, 0x31, 0xb1, 0xbf, 0x89, 0x51, 0x9c, 0x63, 0x54, 0xba, - 0x8a, 0x51, 0x07, 0x93, 0x2f, 0xc4, 0x82, 0x94, 0xcd, 0x00, 0xee, 0x64, 0xac, 0xe4, 0xe1, 0x9e, - 0x61, 0x56, 0xbe, 0x8a, 0xd9, 0x7a, 0xa2, 0x15, 0xcf, 0x07, 0x29, 0xc7, 0x4f, 0x60, 0x1d, 0x13, - 0xfb, 0xa9, 0x83, 0xd9, 0x34, 0xbb, 0xa5, 0x1f, 0x30, 0x92, 0xdf, 0x68, 0x79, 0x5e, 0xd2, 0x48, - 0x1f, 0xd1, 0x61, 0xce, 0xc8, 0xe5, 0x1f, 0x30, 0xf2, 0x50, 0x2c, 0x48, 0xd9, 0x6c, 0x42, 0x07, - 0x93, 0x69, 0x6d, 0x2a, 0x57, 0x31, 0x69, 0x63, 0x92, 0xd7, 0x64, 0x0b, 0x3a, 0x11, 0x72, 0x19, - 0xa1, 0xd9, 0x43, 0x50, 0xbd, 0x8a, 0xc5, 0x8a, 0xa2, 0x4f, 0x78, 0x98, 0x3f, 0x82, 0xc6, 0x7e, - 0x3c, 0x44, 0x6c, 0x7c, 0x9a, 0x24, 0x83, 0x1b, 0xcb, 0x3f, 0xe6, 0x3f, 0x8a, 0x50, 0xdf, 0x1e, - 0x52, 0x12, 0x87, 0xb9, 0x9c, 0x2c, 0x83, 0x74, 0x3a, 0x27, 0x0b, 0x12, 0x91, 0x93, 0x25, 0xf1, - 0xbb, 0xd0, 0xf0, 0x45, 0xe8, 0x2a, 0x7a, 0x99, 0x87, 0x3a, 0x33, 0x41, 0x6d, 0xd5, 0xfd, 0x4c, - 0x32, 0xeb, 0x03, 0x84, 0xd8, 0x8b, 0xd4, 0x1a, 0x99, 0x8e, 0xda, 0xaa, 0xdc, 0xd2, 0x29, 0xda, - 0xaa, 0x85, 0x49, 0xb6, 0x7e, 0x1b, 0xea, 0xa7, 0xdc, 0x49, 0x6a, 0x41, 0x2e, 0x19, 0xa5, 0xde, - 0xb3, 0xe0, 0x34, 0x0d, 0xc2, 0x7d, 0x68, 0x8e, 0xa4, 0xcb, 0xd4, 0x22, 0x79, 0x86, 0xee, 0x29, - 0x4b, 0x52, 0x7b, 0xfb, 0x59, 0xcf, 0xca, 0x0d, 0x68, 0x8c, 0x32, 0xa8, 0xde, 0x31, 0x74, 0x66, - 0x48, 0xe6, 0xe4, 0xa0, 0x07, 0xd9, 0x1c, 0x54, 0x7f, 0x64, 0x48, 0x41, 0xd9, 0x95, 0xd9, 0xbc, - 0xf4, 0xab, 0x22, 0x34, 0x3e, 0x47, 0xec, 0x29, 0xa1, 0xe7, 0x52, 0x5f, 0x03, 0xca, 0x81, 0xe3, - 0x23, 0xc5, 0x51, 0x8c, 0x8d, 0x3b, 0x50, 0xa5, 0x97, 0x32, 0x81, 0xa8, 0xfd, 0xac, 0xd0, 0x4b, - 0x91, 0x18, 0x8c, 0x17, 0x01, 0xe8, 0xa5, 0x1d, 0x3a, 0xee, 0x39, 0x52, 0x1e, 0x2c, 0x5b, 0x35, - 0x7a, 0x39, 0x90, 0x08, 0x7e, 0x14, 0xe8, 0xa5, 0x8d, 0x28, 0x25, 0x34, 0x52, 0xb9, 0xaa, 0x4a, - 0x2f, 0x77, 0x05, 0xac, 0xd6, 0x7a, 0x94, 0x84, 0x21, 0xf2, 0x44, 0x8e, 0x16, 0x6b, 0x77, 0x24, - 0x82, 0x4b, 0x65, 0x5a, 0xea, 0xb2, 0x94, 0xca, 0x52, 0xa9, 0x2c, 0x95, 0x5a, 0x91, 0x2b, 0x59, - 0x56, 0x2a, 0x4b, 0xa4, 0x56, 0xa5, 0x54, 0x96, 0x91, 0xca, 0x52, 0xa9, 0x35, 0xbd, 0x56, 0x49, - 0x35, 0x7f, 0x59, 0x80, 0xf5, 0xe9, 0xc2, 0x4f, 0xd5, 0xa6, 0xef, 0x42, 0xc3, 0x15, 0xfb, 0x95, - 0x3b, 0x93, 0x9d, 0x99, 0x9d, 0xb4, 0xea, 0x6e, 0xe6, 0x18, 0x3f, 0x86, 0x66, 0x20, 0x1d, 0x9c, - 0x1c, 0xcd, 0x52, 0xba, 0x2f, 0x59, 0xdf, 0x5b, 0x8d, 0x20, 0x03, 0x99, 0x1e, 0x18, 0x5f, 0x51, - 0xcc, 0xd0, 0x31, 0xa3, 0xc8, 0xf1, 0x6f, 0xa2, 0xba, 0x37, 0xa0, 0x2c, 0xaa, 0x15, 0xbe, 0x4d, - 0x0d, 0x4b, 0x8c, 0xcd, 0x57, 0x61, 0x35, 0x27, 0x45, 0xd9, 0xba, 0x02, 0xa5, 0x31, 0x0a, 0x04, - 0xf7, 0xa6, 0xc5, 0x87, 0xa6, 0x03, 0x1d, 0x0b, 0x39, 0xde, 0xcd, 0x69, 0xa3, 0x44, 0x94, 0x52, - 0x11, 0x0f, 0xc0, 0xc8, 0x8a, 0x50, 0xaa, 0x68, 0xad, 0x0b, 0x19, 0xad, 0x8f, 0xa0, 0xb3, 0x3d, - 0x26, 0x11, 0x3a, 0x66, 0x1e, 0x0e, 0x6e, 0xa2, 0x1d, 0xf9, 0x29, 0xac, 0x7e, 0xc9, 0x26, 0x5f, - 0x71, 0x66, 0x11, 0xfe, 0x16, 0xdd, 0x90, 0x7d, 0x94, 0x3c, 0xd5, 0xf6, 0x51, 0xf2, 0x94, 0x37, - 0x37, 0x2e, 0x19, 0xc7, 0x7e, 0x20, 0x42, 0xa1, 0x69, 0x29, 0xc8, 0xdc, 0x82, 0x86, 0xac, 0xa1, - 0x0f, 0x89, 0x17, 0x8f, 0xd1, 0xdc, 0x18, 0xdc, 0x00, 0x08, 0x1d, 0xea, 0xf8, 0x88, 0x21, 0x2a, - 0xcf, 0x50, 0xcd, 0xca, 0x60, 0xcc, 0x5f, 0x17, 0x61, 0x4d, 0xbe, 0x37, 0x1c, 0xcb, 0x36, 0x5b, - 0x9b, 0xd0, 0x83, 0xea, 0x88, 0x44, 0x2c, 0xc3, 0x30, 0x81, 0xb9, 0x8a, 0xbc, 0x3f, 0x97, 0xdc, - 0xf8, 0x30, 0xf7, 0x08, 0x50, 0xba, 0xfa, 0x11, 0x60, 0xa6, 0xcd, 0x2f, 0xcf, 0xb6, 0xf9, 0x3c, - 0xda, 0x34, 0x11, 0x96, 0x31, 0x5e, 0xb3, 0x6a, 0x0a, 0x73, 0xe0, 0x19, 0xf7, 0xa1, 0x3d, 0xe4, - 0x5a, 0xda, 0x23, 0x42, 0xce, 0xed, 0xd0, 0x61, 0x23, 0x11, 0xea, 0x35, 0xab, 0x29, 0xd0, 0xfb, - 0x84, 0x9c, 0x0f, 0x1c, 0x36, 0x32, 0xde, 0x87, 0x96, 0x2a, 0x03, 0x7d, 0xe1, 0xa2, 0x48, 0x5d, - 0x7e, 0x2a, 0x8a, 0xb2, 0xde, 0xb3, 0x9a, 0xe7, 0x19, 0x28, 0x32, 0x6f, 0xc3, 0xad, 0x1d, 0x14, - 0x31, 0x4a, 0x26, 0x79, 0xc7, 0x98, 0xff, 0x0b, 0x70, 0x10, 0x30, 0x44, 0xcf, 0x1c, 0x17, 0x45, - 0xc6, 0x5b, 0x59, 0x48, 0x15, 0x47, 0x2b, 0x7d, 0xf9, 0xdc, 0x93, 0x4c, 0x58, 0x19, 0x1a, 0xb3, - 0x0f, 0xcb, 0x16, 0x89, 0x79, 0x3a, 0x7a, 0x59, 0x8f, 0xd4, 0xba, 0x86, 0x5a, 0x27, 0x90, 0x96, - 0x9a, 0x33, 0xf7, 0x75, 0x0b, 0x9b, 0xb2, 0x53, 0x5b, 0xd4, 0x87, 0x1a, 0xd6, 0x38, 0x95, 0x55, - 0x66, 0x45, 0xa7, 0x24, 0xe6, 0x87, 0xb0, 0x2a, 0x39, 0x49, 0xce, 0x9a, 0xcd, 0xcb, 0xb0, 0x4c, - 0xb5, 0x1a, 0x85, 0xf4, 0x9d, 0x47, 0x11, 0xa9, 0x39, 0xee, 0x8f, 0xcf, 0x70, 0xc4, 0x52, 0x43, - 0xb4, 0x3f, 0x56, 0xa1, 0xc3, 0x27, 0x72, 0x3c, 0xcd, 0x8f, 0xa1, 0xb1, 0x69, 0x0d, 0x3e, 0x47, - 0x78, 0x38, 0x3a, 0xe5, 0xd9, 0xf3, 0x7f, 0xf2, 0xb0, 0x32, 0xd8, 0x50, 0xda, 0x66, 0xa6, 0xac, - 0x1c, 0x9d, 0xf9, 0x09, 0xac, 0x6f, 0x7a, 0x5e, 0x16, 0xa5, 0xb5, 0x7e, 0x0b, 0x6a, 0x41, 0x86, - 0x5d, 0xe6, 0xce, 0xca, 0x51, 0xa7, 0x44, 0xe6, 0x8f, 0x61, 0xf5, 0x28, 0x18, 0xe3, 0x00, 0x6d, - 0x0f, 0x4e, 0x0e, 0x51, 0x92, 0x8b, 0x0c, 0x28, 0xf3, 0x9a, 0x4d, 0xf0, 0xa8, 0x5a, 0x62, 0xcc, - 0x83, 0x33, 0x38, 0xb5, 0xdd, 0x30, 0x8e, 0xd4, 0x63, 0xcf, 0x72, 0x70, 0xba, 0x1d, 0xc6, 0x11, - 0xbf, 0x5c, 0x78, 0x71, 0x41, 0x82, 0xf1, 0x44, 0x44, 0x68, 0xd5, 0xaa, 0xb8, 0x61, 0x7c, 0x14, - 0x8c, 0x27, 0xe6, 0x7f, 0x8b, 0x0e, 0x1c, 0x21, 0xcf, 0x72, 0x02, 0x8f, 0xf8, 0x3b, 0xe8, 0x22, - 0x23, 0x21, 0xe9, 0xf6, 0x74, 0x26, 0xfa, 0xae, 0x00, 0x8d, 0xcd, 0x21, 0x0a, 0xd8, 0x0e, 0x62, - 0x0e, 0x1e, 0x8b, 0x8e, 0xee, 0x02, 0xd1, 0x08, 0x93, 0x40, 0x85, 0x9b, 0x06, 0x79, 0x43, 0x8e, - 0x03, 0xcc, 0x6c, 0xcf, 0x41, 0x3e, 0x09, 0x04, 0x97, 0xaa, 0x05, 0x1c, 0xb5, 0x23, 0x30, 0xc6, - 0xab, 0xd0, 0x96, 0x8f, 0x71, 0xf6, 0xc8, 0x09, 0xbc, 0x31, 0x0f, 0xf4, 0x92, 0x08, 0xcd, 0x96, - 0x44, 0xef, 0x2b, 0xac, 0xf1, 0x1a, 0xac, 0xa8, 0x30, 0x4c, 0x29, 0xcb, 0x82, 0xb2, 0xad, 0xf0, - 0x39, 0xd2, 0x38, 0x0c, 0x09, 0x65, 0x91, 0x1d, 0x21, 0xd7, 0x25, 0x7e, 0xa8, 0xda, 0xa1, 0xb6, - 0xc6, 0x1f, 0x4b, 0xb4, 0x39, 0x84, 0xd5, 0x3d, 0x6e, 0xa7, 0xb2, 0x24, 0x3d, 0x56, 0x2d, 0x1f, - 0xf9, 0xf6, 0xe9, 0x98, 0xb8, 0xe7, 0x36, 0x4f, 0x8e, 0xca, 0xc3, 0xbc, 0xe0, 0xda, 0xe2, 0xc8, - 0x63, 0xfc, 0xad, 0xe8, 0xfc, 0x39, 0xd5, 0x88, 0xb0, 0x70, 0x1c, 0x0f, 0xed, 0x90, 0x92, 0x53, - 0xa4, 0x4c, 0x6c, 0xfb, 0xc8, 0xdf, 0x97, 0xf8, 0x01, 0x47, 0x9b, 0x7f, 0x2c, 0xc0, 0x5a, 0x5e, - 0x92, 0x4a, 0xf5, 0x0f, 0x61, 0x2d, 0x2f, 0x4a, 0x5d, 0xff, 0xb2, 0xbc, 0xec, 0x64, 0x05, 0xca, - 0x42, 0xe0, 0x31, 0x34, 0xc5, 0x7b, 0xad, 0xed, 0x49, 0x4e, 0xf9, 0xa2, 0x27, 0xbb, 0x2f, 0x56, - 0xc3, 0xc9, 0xee, 0xd2, 0xfb, 0x70, 0x47, 0x99, 0x6f, 0xcf, 0xaa, 0x2d, 0x0f, 0xc4, 0xba, 0x22, - 0x38, 0x9c, 0xd2, 0xfe, 0x33, 0xe8, 0xa6, 0xa8, 0xad, 0x89, 0x40, 0xa6, 0x87, 0x79, 0x75, 0xca, - 0xd8, 0x4d, 0xcf, 0xa3, 0x22, 0x4a, 0xca, 0xd6, 0xbc, 0x29, 0xf3, 0x09, 0xdc, 0x3e, 0x46, 0x4c, - 0x7a, 0xc3, 0x61, 0xaa, 0x13, 0x91, 0xcc, 0x56, 0xa0, 0x74, 0x8c, 0x5c, 0x61, 0x7c, 0xc9, 0xe2, - 0x43, 0x7e, 0x00, 0x4f, 0x22, 0xe4, 0x0a, 0x2b, 0x4b, 0x96, 0x18, 0x9b, 0xbf, 0x2f, 0x40, 0x45, - 0x25, 0x67, 0x7e, 0xc1, 0x78, 0x14, 0x5f, 0x20, 0xaa, 0x8e, 0x9e, 0x82, 0x8c, 0x57, 0xa0, 0x25, - 0x47, 0x36, 0x09, 0x19, 0x26, 0x49, 0xca, 0x6f, 0x4a, 0xec, 0x91, 0x44, 0x8a, 0xc7, 0x37, 0xf1, - 0xfc, 0xa5, 0x3a, 0x4d, 0x05, 0x71, 0xfc, 0x59, 0xc4, 0x23, 0x5c, 0xa4, 0xf8, 0x9a, 0xa5, 0x20, - 0x7e, 0xd4, 0x35, 0xbf, 0x25, 0xc1, 0x4f, 0x83, 0xfc, 0xa8, 0xfb, 0x24, 0x0e, 0x98, 0x1d, 0x12, - 0x1c, 0x30, 0x95, 0xd3, 0x41, 0xa0, 0x06, 0x1c, 0x63, 0xfe, 0xa2, 0x00, 0xcb, 0xf2, 0x01, 0x9a, - 0xf7, 0xb6, 0xc9, 0xcd, 0x5a, 0xc4, 0xa2, 0x4a, 0x11, 0xb2, 0xe4, 0x6d, 0x2a, 0xc6, 0x3c, 0x8e, - 0x2f, 0x7c, 0x79, 0x3f, 0x28, 0xd5, 0x2e, 0x7c, 0x71, 0x31, 0xbc, 0x02, 0xad, 0xf4, 0x82, 0x16, - 0xf3, 0x52, 0xc5, 0x66, 0x82, 0x15, 0x64, 0x0b, 0x35, 0x35, 0xff, 0x8f, 0xb7, 0xf4, 0xc9, 0xe3, - 0xeb, 0x0a, 0x94, 0xe2, 0x44, 0x19, 0x3e, 0xe4, 0x98, 0x61, 0x72, 0xb5, 0xf3, 0xa1, 0x71, 0x1f, - 0x5a, 0x8e, 0xe7, 0x61, 0xbe, 0xdc, 0x19, 0xef, 0x61, 0x2f, 0x09, 0xd2, 0x3c, 0xd6, 0xfc, 0x73, - 0x01, 0xda, 0xdb, 0x24, 0x9c, 0x7c, 0x8c, 0xc7, 0x28, 0x93, 0x41, 0x84, 0x92, 0xea, 0x66, 0xe7, - 0x63, 0x5e, 0xad, 0x9e, 0xe1, 0x31, 0x92, 0xa1, 0x25, 0x77, 0xb6, 0xca, 0x11, 0x22, 0xac, 0xf4, - 0x64, 0xf2, 0xec, 0xd6, 0x94, 0x93, 0x87, 0xc4, 0x13, 0x75, 0xb9, 0x87, 0xa9, 0x9d, 0x3c, 0xb2, - 0x35, 0xad, 0x8a, 0x87, 0xa9, 0x98, 0x52, 0x86, 0x2c, 0x89, 0x47, 0xd4, 0xac, 0x21, 0xcb, 0x12, - 0xc3, 0x0d, 0x59, 0x87, 0x65, 0x72, 0x76, 0x16, 0x21, 0x26, 0x2a, 0xe8, 0x92, 0xa5, 0xa0, 0x24, - 0xcd, 0x55, 0x33, 0x69, 0x6e, 0x0d, 0x8c, 0x3d, 0xc4, 0x8e, 0x8e, 0x0e, 0x77, 0x2f, 0x50, 0xc0, - 0xf4, 0xed, 0xf0, 0x26, 0x54, 0x35, 0xea, 0x5f, 0x79, 0x9e, 0x7c, 0x1d, 0x5a, 0x9b, 0x9e, 0x77, - 0xfc, 0xd4, 0x09, 0xb5, 0x3f, 0xba, 0x50, 0x19, 0x6c, 0x1f, 0x0c, 0xa4, 0x4b, 0x4a, 0xdc, 0x00, - 0x05, 0xf2, 0xdb, 0x68, 0x0f, 0xb1, 0x43, 0xc4, 0x28, 0x76, 0x93, 0xdb, 0xe8, 0x1e, 0x54, 0x14, - 0x86, 0xaf, 0xf4, 0xe5, 0x50, 0xa7, 0x59, 0x05, 0x3e, 0xfa, 0xc3, 0x8a, 0xca, 0xc8, 0xaa, 0xb9, - 0x37, 0xf6, 0xa0, 0x3d, 0xf5, 0x25, 0xc6, 0x50, 0xaf, 0x3d, 0xf3, 0x3f, 0xd0, 0xf4, 0xd6, 0xfb, - 0xf2, 0xcb, 0x4e, 0x5f, 0x7f, 0xd9, 0xe9, 0xef, 0xfa, 0x21, 0x9b, 0x18, 0xbb, 0xd0, 0xca, 0x7f, - 0xb3, 0x30, 0x9e, 0xd7, 0xc5, 0xd1, 0x9c, 0x2f, 0x19, 0x0b, 0xd9, 0xec, 0x41, 0x7b, 0xea, 0xf3, - 0x85, 0xd6, 0x67, 0xfe, 0x57, 0x8d, 0x85, 0x8c, 0x9e, 0x40, 0x3d, 0xf3, 0xbd, 0xc2, 0xe8, 0x4a, - 0x26, 0xb3, 0x9f, 0x30, 0x16, 0x32, 0xd8, 0x86, 0x66, 0xee, 0x13, 0x82, 0xd1, 0x53, 0xf6, 0xcc, - 0xf9, 0xae, 0xb0, 0x90, 0xc9, 0x16, 0xd4, 0x33, 0x2f, 0xf9, 0x5a, 0x8b, 0xd9, 0xcf, 0x05, 0xbd, - 0x3b, 0x73, 0x66, 0x54, 0xe2, 0xdf, 0x83, 0xf6, 0xd4, 0xf3, 0xbe, 0x76, 0xc9, 0xfc, 0x57, 0xff, - 0x85, 0xca, 0x7c, 0x2a, 0xb6, 0x28, 0xd3, 0xbd, 0x65, 0xb6, 0x68, 0xf6, 0x31, 0xbf, 0xf7, 0xc2, - 0xfc, 0x49, 0xa5, 0xd5, 0x2e, 0xb4, 0xf2, 0xef, 0xf8, 0x9a, 0xd9, 0xdc, 0xd7, 0xfd, 0xab, 0xf7, - 0x3b, 0xf7, 0xa4, 0x9f, 0xee, 0xf7, 0xbc, 0x97, 0xfe, 0x85, 0x8c, 0x36, 0x01, 0x54, 0xaf, 0xe6, - 0xe1, 0x20, 0x71, 0xf4, 0x4c, 0x8f, 0x98, 0x38, 0x7a, 0x4e, 0x5f, 0xf7, 0x04, 0x40, 0xb6, 0x58, - 0x1e, 0x89, 0x99, 0x71, 0x5b, 0xab, 0x31, 0xd5, 0xd7, 0xf5, 0xba, 0xb3, 0x13, 0x33, 0x0c, 0x10, - 0xa5, 0xd7, 0x61, 0xf0, 0x11, 0x40, 0xda, 0xba, 0x69, 0x06, 0x33, 0xcd, 0xdc, 0x15, 0x3e, 0x68, - 0x64, 0x1b, 0x35, 0x43, 0xd9, 0x3a, 0xa7, 0x79, 0xbb, 0x82, 0x45, 0x7b, 0xaa, 0x10, 0xcf, 0x1f, - 0xb6, 0xe9, 0xfa, 0xbc, 0x37, 0x53, 0x8c, 0x1b, 0x8f, 0xa1, 0x91, 0xad, 0xc0, 0xb5, 0x16, 0x73, - 0xaa, 0xf2, 0x5e, 0xae, 0x0a, 0x37, 0x9e, 0x40, 0x2b, 0x5f, 0x7d, 0xeb, 0x23, 0x35, 0xb7, 0x26, - 0xef, 0xa9, 0xb7, 0xa5, 0x0c, 0xf9, 0x3b, 0x00, 0x69, 0x95, 0xae, 0xdd, 0x37, 0x53, 0xb7, 0x4f, - 0x49, 0xdd, 0x83, 0xf6, 0x54, 0xf5, 0xad, 0x2d, 0x9e, 0x5f, 0x94, 0x2f, 0x74, 0xdd, 0xbb, 0x00, - 0x69, 0x56, 0xd6, 0xd2, 0x67, 0xf2, 0x74, 0xaf, 0xa9, 0xdf, 0xdd, 0x24, 0xdd, 0x36, 0x34, 0x73, - 0xad, 0xa9, 0x4e, 0x33, 0xf3, 0xfa, 0xd5, 0xab, 0x92, 0x6f, 0xbe, 0x8f, 0xd3, 0x9e, 0x9b, 0xdb, - 0xdd, 0x5d, 0x75, 0x7e, 0xb2, 0xcd, 0x83, 0xde, 0xb9, 0x39, 0x0d, 0xc5, 0x0f, 0xc4, 0x73, 0xb6, - 0x41, 0xc8, 0xc4, 0xf3, 0x9c, 0xbe, 0x61, 0x21, 0xa3, 0x7d, 0x68, 0xef, 0xe9, 0xda, 0x4f, 0xd5, - 0xa5, 0x4a, 0x9d, 0x39, 0x75, 0x78, 0xaf, 0x37, 0x6f, 0x4a, 0x05, 0xd5, 0xa7, 0xd0, 0x99, 0xa9, - 0x49, 0x8d, 0x8d, 0xe4, 0xf5, 0x73, 0x6e, 0xb1, 0xba, 0x50, 0xad, 0x03, 0x58, 0x99, 0x2e, 0x49, - 0x8d, 0x17, 0x55, 0xa2, 0x9c, 0x5f, 0xaa, 0x2e, 0x64, 0xf5, 0x3e, 0x54, 0x75, 0x09, 0x64, 0xa8, - 0x57, 0xe6, 0xa9, 0x92, 0x68, 0xe1, 0xd2, 0xc7, 0x50, 0xcf, 0x54, 0x1c, 0x3a, 0xdb, 0xcd, 0x16, - 0x21, 0x3d, 0xf5, 0x28, 0x9c, 0x50, 0x3e, 0x86, 0x8a, 0xaa, 0x32, 0x8c, 0xb5, 0xe4, 0x90, 0x67, - 0x8a, 0x8e, 0x45, 0x12, 0xb7, 0x2e, 0xbf, 0xfb, 0x7e, 0xe3, 0xb9, 0xbf, 0x7e, 0xbf, 0xf1, 0xdc, - 0xcf, 0x9f, 0x6d, 0x14, 0xbe, 0x7b, 0xb6, 0x51, 0xf8, 0xcb, 0xb3, 0x8d, 0xc2, 0xdf, 0x9f, 0x6d, - 0x14, 0xfe, 0xff, 0x27, 0xff, 0xe6, 0x5f, 0x4b, 0x68, 0x1c, 0x30, 0xec, 0xa3, 0x87, 0x17, 0x98, - 0xb2, 0xcc, 0x54, 0x78, 0x3e, 0x9c, 0xf9, 0xd7, 0x09, 0x57, 0xf0, 0x74, 0x59, 0xc0, 0xef, 0xfc, - 0x33, 0x00, 0x00, 0xff, 0xff, 0xcc, 0x41, 0xae, 0xa1, 0xc3, 0x22, 0x00, 0x00, + 0x7a, 0x6d, 0x7f, 0xa6, 0xec, 0xb5, 0xf1, 0xad, 0x1f, 0xf0, 0xb7, 0x58, 0x69, 0x65, 0x49, 0xb6, + 0xe5, 0x65, 0x46, 0x16, 0x1c, 0x24, 0x48, 0x06, 0xc3, 0x99, 0x16, 0xd9, 0x16, 0x67, 0x7a, 0xdc, + 0xd3, 0xa3, 0x15, 0x1d, 0x20, 0xc8, 0x29, 0xb9, 0xe5, 0x98, 0x5b, 0xfe, 0x40, 0x90, 0x5b, 0x80, + 0x5c, 0x72, 0xcd, 0xc1, 0xc8, 0x29, 0xc7, 0x9c, 0x82, 0x78, 0x7f, 0x42, 0x7e, 0x41, 0xd0, 0xaf, + 0x79, 0xf0, 0x21, 0x27, 0x82, 0x80, 0x5c, 0x88, 0xae, 0xea, 0xea, 0x7a, 0x75, 0x57, 0x75, 0x55, + 0x0f, 0x61, 0x30, 0xc2, 0x6c, 0x1c, 0x0f, 0xfb, 0x2e, 0xf1, 0xb7, 0xcf, 0x1c, 0xe6, 0xbc, 0xe9, + 0x92, 0x80, 0x39, 0x38, 0x40, 0x34, 0x9a, 0x83, 0x23, 0xea, 0x6e, 0x4f, 0xf0, 0x30, 0xda, 0x0e, + 0x29, 0x61, 0xc4, 0x25, 0x13, 0x35, 0x8a, 0xb6, 0x9d, 0x11, 0x0a, 0x58, 0x5f, 0x00, 0x46, 0x79, + 0x44, 0x43, 0xb7, 0x57, 0x23, 0x2e, 0x96, 0x88, 0x5e, 0x9d, 0x4d, 0x43, 0x14, 0x29, 0xe0, 0xf9, + 0x11, 0x21, 0xa3, 0x09, 0x92, 0x0b, 0x87, 0xf1, 0xe9, 0x36, 0xf2, 0x43, 0x36, 0x95, 0x93, 0xe6, + 0x6f, 0x8b, 0xb0, 0xb9, 0x4b, 0x91, 0xc3, 0xd0, 0xae, 0x96, 0x6a, 0xa1, 0xaf, 0x63, 0x14, 0x31, + 0xe3, 0x25, 0x68, 0x24, 0x9a, 0xd8, 0xd8, 0xeb, 0x16, 0x6e, 0x17, 0xee, 0xd5, 0xac, 0x7a, 0x82, + 0x3b, 0xf4, 0x8c, 0x9b, 0x50, 0x41, 0x17, 0xc8, 0xe5, 0xb3, 0x45, 0x31, 0xbb, 0xca, 0xc1, 0x43, + 0xcf, 0x78, 0x1b, 0xea, 0x11, 0xa3, 0x38, 0x18, 0xd9, 0x71, 0x84, 0x68, 0xb7, 0x74, 0xbb, 0x70, + 0xaf, 0x7e, 0x7f, 0xad, 0xcf, 0xf5, 0xec, 0x1f, 0x8b, 0x89, 0x93, 0x08, 0x51, 0x0b, 0xa2, 0x64, + 0x6c, 0xdc, 0x85, 0x8a, 0x87, 0xce, 0xb1, 0x8b, 0xa2, 0x6e, 0xf9, 0x76, 0xe9, 0x5e, 0xfd, 0x7e, + 0x43, 0x92, 0x3f, 0x16, 0x48, 0x4b, 0x4f, 0x1a, 0xaf, 0x41, 0x35, 0x62, 0x84, 0x3a, 0x23, 0x14, + 0x75, 0x57, 0x04, 0x61, 0x53, 0xf3, 0x15, 0x58, 0x2b, 0x99, 0x36, 0x5e, 0x80, 0xd2, 0x93, 0xdd, + 0xc3, 0xee, 0xaa, 0x90, 0x0e, 0x8a, 0x2a, 0x44, 0xae, 0xc5, 0xd1, 0xc6, 0x1d, 0x68, 0x46, 0x4e, + 0xe0, 0x0d, 0xc9, 0x85, 0x1d, 0x62, 0x2f, 0x88, 0xba, 0x95, 0xdb, 0x85, 0x7b, 0x55, 0xab, 0xa1, + 0x90, 0x03, 0x8e, 0x33, 0x3f, 0x80, 0x1b, 0xc7, 0xcc, 0xa1, 0xec, 0x0a, 0xde, 0x31, 0x4f, 0x60, + 0xd3, 0x42, 0x3e, 0x39, 0xbf, 0x92, 0x6b, 0xbb, 0x50, 0x61, 0xd8, 0x47, 0x24, 0x66, 0xc2, 0xb5, + 0x4d, 0x4b, 0x83, 0xe6, 0xef, 0x0b, 0x60, 0xec, 0x5d, 0x20, 0x77, 0x40, 0x89, 0x8b, 0xa2, 0xe8, + 0xbf, 0xb4, 0x5d, 0xaf, 0x42, 0x25, 0x94, 0x0a, 0x74, 0xcb, 0x82, 0x5c, 0xed, 0x82, 0xd6, 0x4a, + 0xcf, 0x9a, 0x5f, 0xc1, 0xc6, 0x31, 0x1e, 0x05, 0xce, 0xe4, 0x1a, 0xf5, 0xdd, 0x84, 0xd5, 0x48, + 0xf0, 0x14, 0xaa, 0x36, 0x2d, 0x05, 0x99, 0x03, 0x30, 0xbe, 0x74, 0x30, 0xbb, 0x3e, 0x49, 0xe6, + 0x9b, 0xb0, 0x9e, 0xe3, 0x18, 0x85, 0x24, 0x88, 0x90, 0x50, 0x80, 0x39, 0x2c, 0x8e, 0x04, 0xb3, + 0x15, 0x4b, 0x41, 0x26, 0x81, 0xcd, 0x93, 0xd0, 0xbb, 0x62, 0x34, 0xdd, 0x87, 0x1a, 0x45, 0x11, + 0x89, 0x29, 0x8f, 0x81, 0xa2, 0x70, 0xea, 0x86, 0x74, 0xea, 0x67, 0x38, 0x88, 0x2f, 0x2c, 0x3d, + 0x67, 0xa5, 0x64, 0xea, 0x7c, 0xb2, 0xe8, 0x2a, 0xe7, 0xf3, 0x03, 0xb8, 0x31, 0x70, 0xe2, 0xe8, + 0x2a, 0xba, 0x9a, 0x1f, 0xf2, 0xb3, 0x1d, 0xc5, 0xfe, 0x95, 0x16, 0xff, 0xae, 0x00, 0xd5, 0xdd, + 0x30, 0x3e, 0x89, 0x9c, 0x11, 0x32, 0xfe, 0x07, 0xea, 0x8c, 0x30, 0x67, 0x62, 0xc7, 0x1c, 0x14, + 0xe4, 0x65, 0x0b, 0x04, 0x4a, 0x12, 0xbc, 0x04, 0x8d, 0x10, 0x51, 0x37, 0x8c, 0x15, 0x45, 0xf1, + 0x76, 0xe9, 0x5e, 0xd9, 0xaa, 0x4b, 0x9c, 0x24, 0xe9, 0xc3, 0xba, 0x98, 0xb3, 0x71, 0x60, 0x9f, + 0x21, 0x1a, 0xa0, 0x89, 0x4f, 0x3c, 0x24, 0x0e, 0x47, 0xd9, 0xea, 0x88, 0xa9, 0xc3, 0xe0, 0xd3, + 0x64, 0xc2, 0x78, 0x1d, 0x3a, 0x09, 0x3d, 0x3f, 0xf1, 0x82, 0xba, 0x2c, 0xa8, 0xdb, 0x8a, 0xfa, + 0x44, 0xa1, 0xcd, 0x9f, 0x43, 0xeb, 0x8b, 0x31, 0x25, 0x8c, 0x4d, 0x70, 0x30, 0x7a, 0xec, 0x30, + 0x87, 0x87, 0x66, 0x88, 0x28, 0x26, 0x5e, 0xa4, 0xb4, 0xd5, 0xa0, 0xf1, 0x06, 0x74, 0x98, 0xa4, + 0x45, 0x9e, 0xad, 0x69, 0x8a, 0x82, 0x66, 0x2d, 0x99, 0x18, 0x28, 0xe2, 0x57, 0xa0, 0x95, 0x12, + 0xf3, 0xe0, 0x56, 0xfa, 0x36, 0x13, 0xec, 0x17, 0xd8, 0x47, 0xe6, 0xb9, 0xf0, 0x95, 0xd8, 0x64, + 0xe3, 0x0d, 0xa8, 0xa5, 0x7e, 0x28, 0x88, 0x13, 0xd2, 0x92, 0x27, 0x44, 0xbb, 0xd3, 0xaa, 0x26, + 0x4e, 0xf9, 0x08, 0xda, 0x2c, 0x51, 0xdc, 0xf6, 0x1c, 0xe6, 0xe4, 0x0f, 0x55, 0xde, 0x2a, 0xab, + 0xc5, 0x72, 0xb0, 0xf9, 0x21, 0xd4, 0x06, 0xd8, 0x8b, 0xa4, 0xe0, 0x2e, 0x54, 0xdc, 0x98, 0x52, + 0x14, 0x30, 0x6d, 0xb2, 0x02, 0x8d, 0x0d, 0x58, 0x99, 0x60, 0x1f, 0x33, 0x65, 0xa6, 0x04, 0x4c, + 0x02, 0x70, 0x84, 0x7c, 0x42, 0xa7, 0xc2, 0x61, 0x1b, 0xb0, 0x92, 0xdd, 0x5c, 0x09, 0x18, 0xcf, + 0x43, 0xcd, 0x77, 0x2e, 0x92, 0x4d, 0xe5, 0x33, 0x55, 0xdf, 0xb9, 0x90, 0xca, 0x77, 0xa1, 0x72, + 0xea, 0xe0, 0x89, 0x1b, 0x30, 0xe5, 0x15, 0x0d, 0xa6, 0x02, 0xcb, 0x59, 0x81, 0x7f, 0x2e, 0x42, + 0x5d, 0x4a, 0x94, 0x0a, 0x6f, 0xc0, 0x8a, 0xeb, 0xb8, 0xe3, 0x44, 0xa4, 0x00, 0x8c, 0xbb, 0x5a, + 0x91, 0x62, 0x36, 0xc3, 0xa5, 0x9a, 0x6a, 0xd5, 0xb6, 0x01, 0xa2, 0xa7, 0x4e, 0xa8, 0x74, 0x2b, + 0x2d, 0x21, 0xae, 0x71, 0x1a, 0xa9, 0xee, 0x3b, 0xd0, 0x90, 0xe7, 0x4e, 0x2d, 0x29, 0x2f, 0x59, + 0x52, 0x97, 0x54, 0x72, 0xd1, 0x1d, 0x68, 0xc6, 0x11, 0xb2, 0xc7, 0x18, 0x51, 0x87, 0xba, 0xe3, + 0x69, 0x77, 0x45, 0x5e, 0x40, 0x71, 0x84, 0x0e, 0x34, 0xce, 0xb8, 0x0f, 0x2b, 0x3c, 0xb7, 0x44, + 0xdd, 0x55, 0x71, 0xd7, 0xbd, 0x90, 0x65, 0x29, 0x4c, 0xed, 0x8b, 0xdf, 0xbd, 0x80, 0xd1, 0xa9, + 0x25, 0x49, 0x7b, 0xef, 0x01, 0xa4, 0x48, 0x63, 0x0d, 0x4a, 0x67, 0x68, 0xaa, 0xe2, 0x90, 0x0f, + 0xb9, 0x73, 0xce, 0x9d, 0x49, 0xac, 0xbd, 0x2e, 0x81, 0x0f, 0x8a, 0xef, 0x15, 0x4c, 0x17, 0xda, + 0x3b, 0x93, 0x33, 0x4c, 0x32, 0xcb, 0x37, 0x60, 0xc5, 0x77, 0xbe, 0x22, 0x54, 0x7b, 0x52, 0x00, + 0x02, 0x8b, 0x03, 0x42, 0x35, 0x0b, 0x01, 0x18, 0x2d, 0x28, 0x92, 0x50, 0xf8, 0xab, 0x66, 0x15, + 0x49, 0x98, 0x0a, 0x2a, 0x67, 0x04, 0x99, 0x7f, 0x2f, 0x03, 0xa4, 0x52, 0x0c, 0x0b, 0x7a, 0x98, + 0xd8, 0x11, 0xa2, 0xfc, 0x7e, 0xb7, 0x87, 0x53, 0x86, 0x22, 0x9b, 0x22, 0x37, 0xa6, 0x11, 0x3e, + 0xe7, 0xfb, 0xc7, 0xcd, 0xbe, 0x21, 0xcd, 0x9e, 0xd1, 0xcd, 0xba, 0x89, 0xc9, 0xb1, 0x5c, 0xb7, + 0xc3, 0x97, 0x59, 0x7a, 0x95, 0x71, 0x08, 0x37, 0x52, 0x9e, 0x5e, 0x86, 0x5d, 0xf1, 0x32, 0x76, + 0xeb, 0x09, 0x3b, 0x2f, 0x65, 0xb5, 0x07, 0xeb, 0x98, 0xd8, 0x5f, 0xc7, 0x28, 0xce, 0x31, 0x2a, + 0x5d, 0xc6, 0xa8, 0x83, 0xc9, 0x0f, 0xc4, 0x82, 0x94, 0xcd, 0x00, 0x6e, 0x65, 0xac, 0xe4, 0xe1, + 0x9e, 0x61, 0x56, 0xbe, 0x8c, 0xd9, 0x66, 0xa2, 0x15, 0xcf, 0x07, 0x29, 0xc7, 0x4f, 0x60, 0x13, + 0x13, 0xfb, 0xa9, 0x83, 0xd9, 0x2c, 0xbb, 0x95, 0xef, 0x31, 0x92, 0xdf, 0x68, 0x79, 0x5e, 0xd2, + 0x48, 0x1f, 0xd1, 0x51, 0xce, 0xc8, 0xd5, 0xef, 0x31, 0xf2, 0x48, 0x2c, 0x48, 0xd9, 0x3c, 0x82, + 0x0e, 0x26, 0xb3, 0xda, 0x54, 0x2e, 0x63, 0xd2, 0xc6, 0x24, 0xaf, 0xc9, 0x0e, 0x74, 0x22, 0xe4, + 0x32, 0x42, 0xb3, 0x87, 0xa0, 0x7a, 0x19, 0x8b, 0x35, 0x45, 0x9f, 0xf0, 0x30, 0x7f, 0x0c, 0x8d, + 0x83, 0x78, 0x84, 0xd8, 0x64, 0x98, 0x24, 0x83, 0x6b, 0xcb, 0x3f, 0xe6, 0x3f, 0x8b, 0x50, 0xdf, + 0x1d, 0x51, 0x12, 0x87, 0xb9, 0x9c, 0x2c, 0x83, 0x74, 0x36, 0x27, 0x0b, 0x12, 0x91, 0x93, 0x25, + 0xf1, 0xbb, 0xd0, 0xf0, 0x45, 0xe8, 0x2a, 0x7a, 0x99, 0x87, 0x3a, 0x73, 0x41, 0x6d, 0xd5, 0xfd, + 0x4c, 0x32, 0xeb, 0x03, 0x84, 0xd8, 0x8b, 0xd4, 0x1a, 0x99, 0x8e, 0xda, 0xaa, 0xdc, 0xd2, 0x29, + 0xda, 0xaa, 0x85, 0x49, 0xb6, 0x7e, 0x1b, 0xea, 0x43, 0xee, 0x24, 0xb5, 0x20, 0x97, 0x8c, 0x52, + 0xef, 0x59, 0x30, 0x4c, 0x83, 0xf0, 0x00, 0x9a, 0x63, 0xe9, 0x32, 0xb5, 0x48, 0x9e, 0xa1, 0x3b, + 0xca, 0x92, 0xd4, 0xde, 0x7e, 0xd6, 0xb3, 0x72, 0x03, 0x1a, 0xe3, 0x0c, 0xaa, 0x77, 0x0c, 0x9d, + 0x39, 0x92, 0x05, 0x39, 0xe8, 0x5e, 0x36, 0x07, 0xd5, 0xef, 0x1b, 0x52, 0x50, 0x76, 0x65, 0x36, + 0x2f, 0xfd, 0xba, 0x08, 0x8d, 0xcf, 0x11, 0x7b, 0x4a, 0xe8, 0x99, 0xd4, 0xd7, 0x80, 0x72, 0xe0, + 0xf8, 0x48, 0x71, 0x14, 0x63, 0xe3, 0x16, 0x54, 0xe9, 0x85, 0x4c, 0x20, 0x6a, 0x3f, 0x2b, 0xf4, + 0x42, 0x24, 0x06, 0xe3, 0x45, 0x00, 0x7a, 0x61, 0x87, 0x8e, 0x7b, 0x86, 0x94, 0x07, 0xcb, 0x56, + 0x8d, 0x5e, 0x0c, 0x24, 0x82, 0x1f, 0x05, 0x7a, 0x61, 0x23, 0x4a, 0x09, 0x8d, 0x54, 0xae, 0xaa, + 0xd2, 0x8b, 0x3d, 0x01, 0xab, 0xb5, 0x1e, 0x25, 0x61, 0x88, 0x3c, 0x91, 0xa3, 0xc5, 0xda, 0xc7, + 0x12, 0xc1, 0xa5, 0x32, 0x2d, 0x75, 0x55, 0x4a, 0x65, 0xa9, 0x54, 0x96, 0x4a, 0xad, 0xc8, 0x95, + 0x2c, 0x2b, 0x95, 0x25, 0x52, 0xab, 0x52, 0x2a, 0xcb, 0x48, 0x65, 0xa9, 0xd4, 0x9a, 0x5e, 0xab, + 0xa4, 0x9a, 0xbf, 0x2a, 0xc0, 0xe6, 0x6c, 0xe1, 0xa7, 0x6a, 0xd3, 0x77, 0xa1, 0xe1, 0x8a, 0xfd, + 0xca, 0x9d, 0xc9, 0xce, 0xdc, 0x4e, 0x5a, 0x75, 0x37, 0x73, 0x8c, 0x1f, 0x40, 0x33, 0x90, 0x0e, + 0x4e, 0x8e, 0x66, 0x29, 0xdd, 0x97, 0xac, 0xef, 0xad, 0x46, 0x90, 0x81, 0x4c, 0x0f, 0x8c, 0x2f, + 0x29, 0x66, 0xe8, 0x98, 0x51, 0xe4, 0xf8, 0xd7, 0x51, 0xdd, 0x1b, 0x50, 0x16, 0xd5, 0x0a, 0xdf, + 0xa6, 0x86, 0x25, 0xc6, 0xe6, 0xab, 0xb0, 0x9e, 0x93, 0xa2, 0x6c, 0x5d, 0x83, 0xd2, 0x04, 0x05, + 0x82, 0x7b, 0xd3, 0xe2, 0x43, 0xd3, 0x81, 0x8e, 0x85, 0x1c, 0xef, 0xfa, 0xb4, 0x51, 0x22, 0x4a, + 0xa9, 0x88, 0x7b, 0x60, 0x64, 0x45, 0x28, 0x55, 0xb4, 0xd6, 0x85, 0x8c, 0xd6, 0x4f, 0xa0, 0xb3, + 0x3b, 0x21, 0x11, 0x3a, 0x66, 0x1e, 0x0e, 0xae, 0xa3, 0x1d, 0xf9, 0x19, 0xac, 0x7f, 0xc1, 0xa6, + 0x5f, 0x72, 0x66, 0x11, 0xfe, 0x06, 0x5d, 0x93, 0x7d, 0x94, 0x3c, 0xd5, 0xf6, 0x51, 0xf2, 0x94, + 0x37, 0x37, 0x2e, 0x99, 0xc4, 0x7e, 0x20, 0x42, 0xa1, 0x69, 0x29, 0xc8, 0xdc, 0x81, 0x86, 0xac, + 0xa1, 0x8f, 0x88, 0x17, 0x4f, 0xd0, 0xc2, 0x18, 0xdc, 0x02, 0x08, 0x1d, 0xea, 0xf8, 0x88, 0x21, + 0x2a, 0xcf, 0x50, 0xcd, 0xca, 0x60, 0xcc, 0xdf, 0x14, 0x61, 0x43, 0xbe, 0x37, 0x1c, 0xcb, 0x36, + 0x5b, 0x9b, 0xd0, 0x83, 0xea, 0x98, 0x44, 0x2c, 0xc3, 0x30, 0x81, 0xb9, 0x8a, 0xbc, 0x3f, 0x97, + 0xdc, 0xf8, 0x30, 0xf7, 0x08, 0x50, 0xba, 0xfc, 0x11, 0x60, 0xae, 0xcd, 0x2f, 0xcf, 0xb7, 0xf9, + 0x3c, 0xda, 0x34, 0x11, 0x96, 0x31, 0x5e, 0xb3, 0x6a, 0x0a, 0x73, 0xe8, 0x19, 0x77, 0xa1, 0x3d, + 0xe2, 0x5a, 0xda, 0x63, 0x42, 0xce, 0xec, 0xd0, 0x61, 0x63, 0x11, 0xea, 0x35, 0xab, 0x29, 0xd0, + 0x07, 0x84, 0x9c, 0x0d, 0x1c, 0x36, 0x36, 0xde, 0x87, 0x96, 0x2a, 0x03, 0x7d, 0xe1, 0xa2, 0x48, + 0x5d, 0x7e, 0x2a, 0x8a, 0xb2, 0xde, 0xb3, 0x9a, 0x67, 0x19, 0x28, 0x32, 0x6f, 0xc2, 0x8d, 0xc7, + 0x28, 0x62, 0x94, 0x4c, 0xf3, 0x8e, 0x31, 0xff, 0x1f, 0xe0, 0x30, 0x60, 0x88, 0x9e, 0x3a, 0x2e, + 0x8a, 0x8c, 0xb7, 0xb2, 0x90, 0x2a, 0x8e, 0xd6, 0xfa, 0xf2, 0xb9, 0x27, 0x99, 0xb0, 0x32, 0x34, + 0x66, 0x1f, 0x56, 0x2d, 0x12, 0xf3, 0x74, 0xf4, 0xb2, 0x1e, 0xa9, 0x75, 0x0d, 0xb5, 0x4e, 0x20, + 0x2d, 0x35, 0x67, 0x1e, 0xe8, 0x16, 0x36, 0x65, 0xa7, 0xb6, 0xa8, 0x0f, 0x35, 0xac, 0x71, 0x2a, + 0xab, 0xcc, 0x8b, 0x4e, 0x49, 0xcc, 0x0f, 0x61, 0x5d, 0x72, 0x92, 0x9c, 0x35, 0x9b, 0x97, 0x61, + 0x95, 0x6a, 0x35, 0x0a, 0xe9, 0x3b, 0x8f, 0x22, 0x52, 0x73, 0xdc, 0x1f, 0x9f, 0xe1, 0x88, 0xa5, + 0x86, 0x68, 0x7f, 0xac, 0x43, 0x87, 0x4f, 0xe4, 0x78, 0x9a, 0x1f, 0x43, 0xe3, 0x91, 0x35, 0xf8, + 0x1c, 0xe1, 0xd1, 0x78, 0xc8, 0xb3, 0xe7, 0xff, 0xe5, 0x61, 0x65, 0xb0, 0xa1, 0xb4, 0xcd, 0x4c, + 0x59, 0x39, 0x3a, 0xf3, 0x13, 0xd8, 0x7c, 0xe4, 0x79, 0x59, 0x94, 0xd6, 0xfa, 0x2d, 0xa8, 0x05, + 0x19, 0x76, 0x99, 0x3b, 0x2b, 0x47, 0x9d, 0x12, 0x99, 0x3f, 0x81, 0xf5, 0x27, 0xc1, 0x04, 0x07, + 0x68, 0x77, 0x70, 0x72, 0x84, 0x92, 0x5c, 0x64, 0x40, 0x99, 0xd7, 0x6c, 0x82, 0x47, 0xd5, 0x12, + 0x63, 0x1e, 0x9c, 0xc1, 0xd0, 0x76, 0xc3, 0x38, 0x52, 0x8f, 0x3d, 0xab, 0xc1, 0x70, 0x37, 0x8c, + 0x23, 0x7e, 0xb9, 0xf0, 0xe2, 0x82, 0x04, 0x93, 0xa9, 0x88, 0xd0, 0xaa, 0x55, 0x71, 0xc3, 0xf8, + 0x49, 0x30, 0x99, 0x9a, 0xff, 0x2b, 0x3a, 0x70, 0x84, 0x3c, 0xcb, 0x09, 0x3c, 0xe2, 0x3f, 0x46, + 0xe7, 0x19, 0x09, 0x49, 0xb7, 0xa7, 0x33, 0xd1, 0xb7, 0x05, 0x68, 0x3c, 0x1a, 0xa1, 0x80, 0x3d, + 0x46, 0xcc, 0xc1, 0x13, 0xd1, 0xd1, 0x9d, 0x23, 0x1a, 0x61, 0x12, 0xa8, 0x70, 0xd3, 0x20, 0x6f, + 0xc8, 0x71, 0x80, 0x99, 0xed, 0x39, 0xc8, 0x27, 0x81, 0xe0, 0x52, 0xb5, 0x80, 0xa3, 0x1e, 0x0b, + 0x8c, 0xf1, 0x2a, 0xb4, 0xe5, 0x63, 0x9c, 0x3d, 0x76, 0x02, 0x6f, 0xc2, 0x03, 0xbd, 0x24, 0x42, + 0xb3, 0x25, 0xd1, 0x07, 0x0a, 0x6b, 0xbc, 0x06, 0x6b, 0x2a, 0x0c, 0x53, 0xca, 0xb2, 0xa0, 0x6c, + 0x2b, 0x7c, 0x8e, 0x34, 0x0e, 0x43, 0x42, 0x59, 0x64, 0x47, 0xc8, 0x75, 0x89, 0x1f, 0xaa, 0x76, + 0xa8, 0xad, 0xf1, 0xc7, 0x12, 0x6d, 0x8e, 0x60, 0x7d, 0x9f, 0xdb, 0xa9, 0x2c, 0x49, 0x8f, 0x55, + 0xcb, 0x47, 0xbe, 0x3d, 0x9c, 0x10, 0xf7, 0xcc, 0xe6, 0xc9, 0x51, 0x79, 0x98, 0x17, 0x5c, 0x3b, + 0x1c, 0x79, 0x8c, 0xbf, 0x11, 0x9d, 0x3f, 0xa7, 0x1a, 0x13, 0x16, 0x4e, 0xe2, 0x91, 0x1d, 0x52, + 0x32, 0x44, 0xca, 0xc4, 0xb6, 0x8f, 0xfc, 0x03, 0x89, 0x1f, 0x70, 0xb4, 0xf9, 0xa7, 0x02, 0x6c, + 0xe4, 0x25, 0xa9, 0x54, 0xbf, 0x0d, 0x1b, 0x79, 0x51, 0xea, 0xfa, 0x97, 0xe5, 0x65, 0x27, 0x2b, + 0x50, 0x16, 0x02, 0x0f, 0xa0, 0x29, 0xde, 0x6b, 0x6d, 0x4f, 0x72, 0xca, 0x17, 0x3d, 0xd9, 0x7d, + 0xb1, 0x1a, 0x4e, 0x76, 0x97, 0xde, 0x87, 0x5b, 0xca, 0x7c, 0x7b, 0x5e, 0x6d, 0x79, 0x20, 0x36, + 0x15, 0xc1, 0xd1, 0x8c, 0xf6, 0x9f, 0x41, 0x37, 0x45, 0xed, 0x4c, 0x05, 0x32, 0x3d, 0xcc, 0xeb, + 0x33, 0xc6, 0x3e, 0xf2, 0x3c, 0x2a, 0xa2, 0xa4, 0x6c, 0x2d, 0x9a, 0x32, 0x1f, 0xc2, 0xcd, 0x63, + 0xc4, 0xa4, 0x37, 0x1c, 0xa6, 0x3a, 0x11, 0xc9, 0x6c, 0x0d, 0x4a, 0xc7, 0xc8, 0x15, 0xc6, 0x97, + 0x2c, 0x3e, 0xe4, 0x07, 0xf0, 0x24, 0x42, 0xae, 0xb0, 0xb2, 0x64, 0x89, 0xb1, 0xf9, 0x87, 0x02, + 0x54, 0x54, 0x72, 0xe6, 0x17, 0x8c, 0x47, 0xf1, 0x39, 0xa2, 0xea, 0xe8, 0x29, 0xc8, 0x78, 0x05, + 0x5a, 0x72, 0x64, 0x93, 0x90, 0x61, 0x92, 0xa4, 0xfc, 0xa6, 0xc4, 0x3e, 0x91, 0x48, 0xf1, 0xf8, + 0x26, 0x9e, 0xbf, 0x54, 0xa7, 0xa9, 0x20, 0x8e, 0x3f, 0x8d, 0x78, 0x84, 0x8b, 0x14, 0x5f, 0xb3, + 0x14, 0xc4, 0x8f, 0xba, 0xe6, 0xb7, 0x22, 0xf8, 0x69, 0x90, 0x1f, 0x75, 0x9f, 0xc4, 0x01, 0xb3, + 0x43, 0x82, 0x03, 0xa6, 0x72, 0x3a, 0x08, 0xd4, 0x80, 0x63, 0xcc, 0x5f, 0x16, 0x60, 0x55, 0x3e, + 0x40, 0xf3, 0xde, 0x36, 0xb9, 0x59, 0x8b, 0x58, 0x54, 0x29, 0x42, 0x96, 0xbc, 0x4d, 0xc5, 0x98, + 0xc7, 0xf1, 0xb9, 0x2f, 0xef, 0x07, 0xa5, 0xda, 0xb9, 0x2f, 0x2e, 0x86, 0x57, 0xa0, 0x95, 0x5e, + 0xd0, 0x62, 0x5e, 0xaa, 0xd8, 0x4c, 0xb0, 0x82, 0x6c, 0xa9, 0xa6, 0xe6, 0x0f, 0x79, 0x4b, 0x9f, + 0x3c, 0xbe, 0xae, 0x41, 0x29, 0x4e, 0x94, 0xe1, 0x43, 0x8e, 0x19, 0x25, 0x57, 0x3b, 0x1f, 0x1a, + 0x77, 0xa1, 0xe5, 0x78, 0x1e, 0xe6, 0xcb, 0x9d, 0xc9, 0x3e, 0xf6, 0x92, 0x20, 0xcd, 0x63, 0xcd, + 0xbf, 0x14, 0xa0, 0xbd, 0x4b, 0xc2, 0xe9, 0xc7, 0x78, 0x82, 0x32, 0x19, 0x44, 0x28, 0xa9, 0x6e, + 0x76, 0x3e, 0xe6, 0xd5, 0xea, 0x29, 0x9e, 0x20, 0x19, 0x5a, 0x72, 0x67, 0xab, 0x1c, 0x21, 0xc2, + 0x4a, 0x4f, 0x26, 0xcf, 0x6e, 0x4d, 0x39, 0x79, 0x44, 0x3c, 0x51, 0x97, 0x7b, 0x98, 0xda, 0xc9, + 0x23, 0x5b, 0xd3, 0xaa, 0x78, 0x98, 0x8a, 0x29, 0x65, 0xc8, 0x8a, 0x78, 0x44, 0xcd, 0x1a, 0xb2, + 0x2a, 0x31, 0xdc, 0x90, 0x4d, 0x58, 0x25, 0xa7, 0xa7, 0x11, 0x62, 0xa2, 0x82, 0x2e, 0x59, 0x0a, + 0x4a, 0xd2, 0x5c, 0x35, 0x93, 0xe6, 0x36, 0xc0, 0xd8, 0x47, 0xec, 0xc9, 0x93, 0xa3, 0xbd, 0x73, + 0x14, 0x30, 0x7d, 0x3b, 0xbc, 0x09, 0x55, 0x8d, 0xfa, 0x77, 0x9e, 0x27, 0x5f, 0x87, 0xd6, 0x23, + 0xcf, 0x3b, 0x7e, 0xea, 0x84, 0xda, 0x1f, 0x5d, 0xa8, 0x0c, 0x76, 0x0f, 0x07, 0xd2, 0x25, 0x25, + 0x6e, 0x80, 0x02, 0xf9, 0x6d, 0xb4, 0x8f, 0xd8, 0x11, 0x62, 0x14, 0xbb, 0xc9, 0x6d, 0x74, 0x07, + 0x2a, 0x0a, 0xc3, 0x57, 0xfa, 0x72, 0xa8, 0xd3, 0xac, 0x02, 0xef, 0xff, 0x71, 0x4d, 0x65, 0x64, + 0xd5, 0xdc, 0x1b, 0xfb, 0xd0, 0x9e, 0xf9, 0x12, 0x63, 0xa8, 0xd7, 0x9e, 0xc5, 0x1f, 0x68, 0x7a, + 0x9b, 0x7d, 0xf9, 0x65, 0xa7, 0xaf, 0xbf, 0xec, 0xf4, 0xf7, 0xfc, 0x90, 0x4d, 0x8d, 0x3d, 0x68, + 0xe5, 0xbf, 0x59, 0x18, 0xcf, 0xeb, 0xe2, 0x68, 0xc1, 0x97, 0x8c, 0xa5, 0x6c, 0xf6, 0xa1, 0x3d, + 0xf3, 0xf9, 0x42, 0xeb, 0xb3, 0xf8, 0xab, 0xc6, 0x52, 0x46, 0x0f, 0xa1, 0x9e, 0xf9, 0x5e, 0x61, + 0x74, 0x25, 0x93, 0xf9, 0x4f, 0x18, 0x4b, 0x19, 0xec, 0x42, 0x33, 0xf7, 0x09, 0xc1, 0xe8, 0x29, + 0x7b, 0x16, 0x7c, 0x57, 0x58, 0xca, 0x64, 0x07, 0xea, 0x99, 0x97, 0x7c, 0xad, 0xc5, 0xfc, 0xe7, + 0x82, 0xde, 0xad, 0x05, 0x33, 0x2a, 0xf1, 0xef, 0x43, 0x7b, 0xe6, 0x79, 0x5f, 0xbb, 0x64, 0xf1, + 0xab, 0xff, 0x52, 0x65, 0x3e, 0x15, 0x5b, 0x94, 0xe9, 0xde, 0x32, 0x5b, 0x34, 0xff, 0x98, 0xdf, + 0x7b, 0x61, 0xf1, 0xa4, 0xd2, 0x6a, 0x0f, 0x5a, 0xf9, 0x77, 0x7c, 0xcd, 0x6c, 0xe1, 0xeb, 0xfe, + 0xe5, 0xfb, 0x9d, 0x7b, 0xd2, 0x4f, 0xf7, 0x7b, 0xd1, 0x4b, 0xff, 0x52, 0x46, 0x8f, 0x00, 0x54, + 0xaf, 0xe6, 0xe1, 0x20, 0x71, 0xf4, 0x5c, 0x8f, 0x98, 0x38, 0x7a, 0x41, 0x5f, 0xf7, 0x10, 0x40, + 0xb6, 0x58, 0x1e, 0x89, 0x99, 0x71, 0x53, 0xab, 0x31, 0xd3, 0xd7, 0xf5, 0xba, 0xf3, 0x13, 0x73, + 0x0c, 0x10, 0xa5, 0x57, 0x61, 0xf0, 0x11, 0x40, 0xda, 0xba, 0x69, 0x06, 0x73, 0xcd, 0xdc, 0x25, + 0x3e, 0x68, 0x64, 0x1b, 0x35, 0x43, 0xd9, 0xba, 0xa0, 0x79, 0xbb, 0x84, 0x45, 0x7b, 0xa6, 0x10, + 0xcf, 0x1f, 0xb6, 0xd9, 0xfa, 0xbc, 0x37, 0x57, 0x8c, 0x1b, 0x0f, 0xa0, 0x91, 0xad, 0xc0, 0xb5, + 0x16, 0x0b, 0xaa, 0xf2, 0x5e, 0xae, 0x0a, 0x37, 0x1e, 0x42, 0x2b, 0x5f, 0x7d, 0xeb, 0x23, 0xb5, + 0xb0, 0x26, 0xef, 0xa9, 0xb7, 0xa5, 0x0c, 0xf9, 0x3b, 0x00, 0x69, 0x95, 0xae, 0xdd, 0x37, 0x57, + 0xb7, 0xcf, 0x48, 0xdd, 0x87, 0xf6, 0x4c, 0xf5, 0xad, 0x2d, 0x5e, 0x5c, 0x94, 0x2f, 0x75, 0xdd, + 0xbb, 0x00, 0x69, 0x56, 0xd6, 0xd2, 0xe7, 0xf2, 0x74, 0xaf, 0xa9, 0xdf, 0xdd, 0x24, 0xdd, 0x2e, + 0x34, 0x73, 0xad, 0xa9, 0x4e, 0x33, 0x8b, 0xfa, 0xd5, 0xcb, 0x92, 0x6f, 0xbe, 0x8f, 0xd3, 0x9e, + 0x5b, 0xd8, 0xdd, 0x5d, 0x76, 0x7e, 0xb2, 0xcd, 0x83, 0xde, 0xb9, 0x05, 0x0d, 0xc5, 0xf7, 0xc4, + 0x73, 0xb6, 0x41, 0xc8, 0xc4, 0xf3, 0x82, 0xbe, 0x61, 0x29, 0xa3, 0x03, 0x68, 0xef, 0xeb, 0xda, + 0x4f, 0xd5, 0xa5, 0x4a, 0x9d, 0x05, 0x75, 0x78, 0xaf, 0xb7, 0x68, 0x4a, 0x05, 0xd5, 0xa7, 0xd0, + 0x99, 0xab, 0x49, 0x8d, 0xad, 0xe4, 0xf5, 0x73, 0x61, 0xb1, 0xba, 0x54, 0xad, 0x43, 0x58, 0x9b, + 0x2d, 0x49, 0x8d, 0x17, 0x55, 0xa2, 0x5c, 0x5c, 0xaa, 0x2e, 0x65, 0xf5, 0x3e, 0x54, 0x75, 0x09, + 0x64, 0xa8, 0x57, 0xe6, 0x99, 0x92, 0x68, 0xe9, 0xd2, 0x07, 0x50, 0xcf, 0x54, 0x1c, 0x3a, 0xdb, + 0xcd, 0x17, 0x21, 0x3d, 0xf5, 0x28, 0x9c, 0x50, 0x3e, 0x80, 0x8a, 0xaa, 0x32, 0x8c, 0x8d, 0xe4, + 0x90, 0x67, 0x8a, 0x8e, 0x65, 0x12, 0x77, 0x2e, 0xbe, 0xfd, 0x6e, 0xeb, 0xb9, 0xbf, 0x7d, 0xb7, + 0xf5, 0xdc, 0x2f, 0x9e, 0x6d, 0x15, 0xbe, 0x7d, 0xb6, 0x55, 0xf8, 0xeb, 0xb3, 0xad, 0xc2, 0x3f, + 0x9e, 0x6d, 0x15, 0x7e, 0xf4, 0xd3, 0xff, 0xf0, 0x9f, 0x25, 0x34, 0x0e, 0x18, 0xf6, 0xd1, 0xf6, + 0x39, 0xa6, 0x2c, 0x33, 0x15, 0x9e, 0x8d, 0xe4, 0xdf, 0x4b, 0x32, 0xff, 0x3a, 0xe1, 0x0a, 0x0e, + 0x57, 0x05, 0xfc, 0xce, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0x52, 0x45, 0x13, 0x9c, 0xc2, 0x22, + 0x00, 0x00, } func (m *CreateContainerRequest) Marshal() (dAtA []byte, err error) { diff --git a/src/runtime/virtcontainers/pkg/agent/protocols/grpc/health.pb.go b/src/runtime/virtcontainers/pkg/agent/protocols/grpc/health.pb.go index 7a46e51a5..127ac1993 100644 --- a/src/runtime/virtcontainers/pkg/agent/protocols/grpc/health.pb.go +++ b/src/runtime/virtcontainers/pkg/agent/protocols/grpc/health.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: github.com/kata-containers/kata-containers/src/agent/protocols/protos/health.proto +// source: github.com/kata-containers/kata-containers/src/libs/protocols/protos/health.proto package grpc @@ -53,7 +53,7 @@ func (x HealthCheckResponse_ServingStatus) String() string { } func (HealthCheckResponse_ServingStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_c2419073415b3fbc, []int{1, 0} + return fileDescriptor_6d1ebcee089b4b35, []int{1, 0} } type CheckRequest struct { @@ -66,7 +66,7 @@ type CheckRequest struct { func (m *CheckRequest) Reset() { *m = CheckRequest{} } func (*CheckRequest) ProtoMessage() {} func (*CheckRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c2419073415b3fbc, []int{0} + return fileDescriptor_6d1ebcee089b4b35, []int{0} } func (m *CheckRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -105,7 +105,7 @@ type HealthCheckResponse struct { func (m *HealthCheckResponse) Reset() { *m = HealthCheckResponse{} } func (*HealthCheckResponse) ProtoMessage() {} func (*HealthCheckResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c2419073415b3fbc, []int{1} + return fileDescriptor_6d1ebcee089b4b35, []int{1} } func (m *HealthCheckResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -145,7 +145,7 @@ type VersionCheckResponse struct { func (m *VersionCheckResponse) Reset() { *m = VersionCheckResponse{} } func (*VersionCheckResponse) ProtoMessage() {} func (*VersionCheckResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c2419073415b3fbc, []int{2} + return fileDescriptor_6d1ebcee089b4b35, []int{2} } func (m *VersionCheckResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -182,36 +182,36 @@ func init() { } func init() { - proto.RegisterFile("github.com/kata-containers/kata-containers/src/agent/protocols/protos/health.proto", fileDescriptor_c2419073415b3fbc) + proto.RegisterFile("github.com/kata-containers/kata-containers/src/libs/protocols/protos/health.proto", fileDescriptor_6d1ebcee089b4b35) } -var fileDescriptor_c2419073415b3fbc = []byte{ - // 390 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x52, 0x31, 0x4f, 0xc2, 0x40, - 0x18, 0xe5, 0x88, 0x42, 0x3c, 0x40, 0xc9, 0xe9, 0x80, 0x0c, 0x17, 0xad, 0x83, 0x2c, 0xb6, 0x09, - 0x26, 0x26, 0xba, 0x98, 0x68, 0x8c, 0x1a, 0x93, 0x92, 0x14, 0xc5, 0xc4, 0x01, 0x52, 0x9a, 0xb3, - 0x6d, 0x80, 0x5e, 0xbd, 0xbb, 0xb2, 0xb8, 0x38, 0x3a, 0xfb, 0x2b, 0xfc, 0x09, 0x8e, 0x8e, 0x8c, - 0x8e, 0x8e, 0xd2, 0x5f, 0xe1, 0x68, 0x7a, 0x57, 0x0c, 0x04, 0x1c, 0xdc, 0xee, 0x7d, 0xef, 0xbd, - 0x7b, 0xdf, 0xbb, 0x1c, 0xb4, 0x5c, 0x5f, 0x78, 0x51, 0x57, 0x77, 0xe8, 0xc0, 0xe8, 0xd9, 0xc2, - 0xde, 0x73, 0x68, 0x20, 0x6c, 0x3f, 0x20, 0x8c, 0xcf, 0x61, 0xce, 0x1c, 0xc3, 0x76, 0x49, 0x20, - 0x8c, 0x90, 0x51, 0x41, 0x1d, 0xda, 0xe7, 0xea, 0xc4, 0x0d, 0x8f, 0xd8, 0x7d, 0xe1, 0xe9, 0x12, - 0xa1, 0x25, 0x97, 0x85, 0x4e, 0x55, 0x73, 0xa9, 0x4b, 0x15, 0xdf, 0x8d, 0xee, 0x8d, 0x04, 0x49, - 0x20, 0x4f, 0x4a, 0xa9, 0xd5, 0x60, 0xf1, 0xd4, 0x23, 0x4e, 0xcf, 0x22, 0x0f, 0x11, 0xe1, 0x02, - 0x55, 0x60, 0x9e, 0x13, 0x36, 0xf4, 0x1d, 0x52, 0x01, 0x5b, 0xa0, 0xb6, 0x62, 0x4d, 0xa0, 0xf6, - 0x02, 0xe0, 0xfa, 0x85, 0x0c, 0x49, 0x0d, 0x3c, 0xa4, 0x01, 0x27, 0xe8, 0x18, 0xe6, 0xb8, 0xb0, - 0x45, 0xc4, 0xa5, 0x61, 0xb5, 0xbe, 0xab, 0x27, 0xe1, 0xfa, 0x02, 0xa9, 0xde, 0x4c, 0xae, 0x0a, - 0xdc, 0xa6, 0x94, 0x5b, 0xa9, 0x4d, 0x3b, 0x82, 0xa5, 0x19, 0x02, 0x15, 0x60, 0xfe, 0xc6, 0xbc, - 0x32, 0x1b, 0xb7, 0x66, 0x39, 0x93, 0x80, 0xe6, 0x99, 0xd5, 0xba, 0x34, 0xcf, 0xcb, 0x00, 0xad, - 0xc1, 0x82, 0xd9, 0xb8, 0xee, 0x4c, 0x06, 0x59, 0xad, 0x0d, 0x37, 0x5a, 0x84, 0x71, 0x9f, 0x06, - 0xb3, 0x4b, 0x6d, 0xc3, 0x62, 0xb2, 0x45, 0x67, 0xa8, 0xc8, 0xb4, 0x4b, 0x21, 0x99, 0xa5, 0x7a, - 0xb4, 0x03, 0x4b, 0xf2, 0x29, 0x7f, 0x35, 0x59, 0xa9, 0x29, 0xca, 0x61, 0x2a, 0xaa, 0x3f, 0xc2, - 0x9c, 0x2a, 0x82, 0x0e, 0xe0, 0xb2, 0x8c, 0x40, 0x48, 0xf5, 0x9b, 0x7e, 0xb5, 0xea, 0xe6, 0x9f, - 0x9d, 0xd1, 0x21, 0xcc, 0x4f, 0x12, 0x17, 0x39, 0xab, 0x6a, 0xb6, 0xa8, 0xc4, 0xc9, 0x33, 0x18, - 0x8d, 0x71, 0xe6, 0x73, 0x8c, 0x33, 0xdf, 0x63, 0x0c, 0x9e, 0x62, 0x0c, 0x5e, 0x63, 0x0c, 0xde, - 0x62, 0x0c, 0xde, 0x63, 0x0c, 0x46, 0x31, 0x06, 0x1f, 0x31, 0x06, 0x5f, 0x31, 0x06, 0x77, 0xed, - 0x7f, 0x7e, 0x22, 0x16, 0x05, 0xc2, 0x1f, 0x10, 0x63, 0xe8, 0x33, 0x31, 0x45, 0x85, 0x3d, 0x77, - 0xee, 0x7f, 0x25, 0xfb, 0x75, 0x73, 0x12, 0xef, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x19, 0x6c, - 0x8a, 0xb5, 0xad, 0x02, 0x00, 0x00, +var fileDescriptor_6d1ebcee089b4b35 = []byte{ + // 396 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x52, 0x31, 0x4f, 0xeb, 0x30, + 0x18, 0xac, 0xab, 0xf7, 0x5a, 0x3d, 0xb7, 0x7d, 0x54, 0x86, 0xa1, 0x74, 0xb0, 0x20, 0x0c, 0x74, + 0x21, 0x91, 0x8a, 0x84, 0x04, 0x0b, 0x12, 0x08, 0x01, 0x42, 0x4a, 0x45, 0x0a, 0x45, 0x62, 0x68, + 0x95, 0x44, 0x26, 0x89, 0xda, 0xc6, 0xc1, 0x76, 0xba, 0xb0, 0x30, 0x32, 0xf3, 0x2b, 0xf8, 0x09, + 0x8c, 0x8c, 0x1d, 0x19, 0x19, 0x69, 0x7e, 0x05, 0x23, 0xb2, 0x93, 0xa2, 0x56, 0x94, 0x81, 0xcd, + 0xf7, 0xdd, 0x5d, 0xee, 0xbb, 0xe8, 0x83, 0xe7, 0x5e, 0x20, 0xfc, 0xd8, 0xd1, 0x5d, 0x3a, 0x34, + 0xfa, 0xb6, 0xb0, 0xb7, 0x5c, 0x1a, 0x0a, 0x3b, 0x08, 0x09, 0xe3, 0xdf, 0x30, 0x67, 0xae, 0x31, + 0x08, 0x1c, 0x6e, 0x44, 0x8c, 0x0a, 0xea, 0xd2, 0x41, 0xf6, 0xe2, 0x86, 0x4f, 0xec, 0x81, 0xf0, + 0x75, 0x85, 0xd0, 0x1f, 0x8f, 0x45, 0x6e, 0x5d, 0xf3, 0xa8, 0x47, 0x53, 0xde, 0x89, 0x6f, 0x0c, + 0x89, 0x14, 0x50, 0xaf, 0x54, 0xa9, 0x35, 0x60, 0xf9, 0xd0, 0x27, 0x6e, 0xdf, 0x22, 0xb7, 0x31, + 0xe1, 0x02, 0xd5, 0x60, 0x91, 0x13, 0x36, 0x0a, 0x5c, 0x52, 0x03, 0x6b, 0xa0, 0xf1, 0xcf, 0x9a, + 0x42, 0xed, 0x11, 0xc0, 0xe5, 0x13, 0x15, 0x92, 0x19, 0x78, 0x44, 0x43, 0x4e, 0xd0, 0x3e, 0x2c, + 0x70, 0x61, 0x8b, 0x98, 0x2b, 0xc3, 0xff, 0xe6, 0xa6, 0x2e, 0xc3, 0xf5, 0x05, 0x52, 0xbd, 0x2d, + 0x3f, 0x15, 0x7a, 0x6d, 0x25, 0xb7, 0x32, 0x9b, 0xb6, 0x07, 0x2b, 0x73, 0x04, 0x2a, 0xc1, 0xe2, + 0xa5, 0x79, 0x66, 0xb6, 0xae, 0xcc, 0x6a, 0x4e, 0x82, 0xf6, 0x91, 0xd5, 0x39, 0x35, 0x8f, 0xab, + 0x00, 0x2d, 0xc1, 0x92, 0xd9, 0xba, 0xe8, 0x4d, 0x07, 0x79, 0xad, 0x0b, 0x57, 0x3a, 0x84, 0xf1, + 0x80, 0x86, 0xf3, 0x4b, 0xad, 0xc3, 0xb2, 0xdc, 0xa2, 0x37, 0x4a, 0xc9, 0xac, 0x4b, 0x49, 0xce, + 0x32, 0x3d, 0xda, 0x80, 0x15, 0xdb, 0x23, 0xa1, 0xf8, 0xd2, 0xe4, 0x95, 0xa6, 0xac, 0x86, 0x99, + 0xa8, 0x79, 0x07, 0x0b, 0x69, 0x11, 0xb4, 0x03, 0xff, 0xaa, 0x08, 0x84, 0xd2, 0x7e, 0xb3, 0x7f, + 0xad, 0xbe, 0xfa, 0x63, 0x67, 0xb4, 0x0b, 0x8b, 0xd3, 0xc4, 0x45, 0xce, 0x7a, 0x3a, 0x5b, 0x54, + 0xe2, 0xe0, 0x01, 0x8c, 0x27, 0x38, 0xf7, 0x36, 0xc1, 0xb9, 0x8f, 0x09, 0x06, 0xf7, 0x09, 0x06, + 0x4f, 0x09, 0x06, 0xcf, 0x09, 0x06, 0x2f, 0x09, 0x06, 0xe3, 0x04, 0x83, 0xd7, 0x04, 0x83, 0xf7, + 0x04, 0x83, 0xeb, 0xee, 0x2f, 0x6f, 0x88, 0xc5, 0xa1, 0x08, 0x86, 0xc4, 0x18, 0x05, 0x4c, 0xcc, + 0x50, 0x51, 0xdf, 0x33, 0x54, 0xff, 0x99, 0xfb, 0x92, 0xfb, 0x39, 0x05, 0x85, 0xb7, 0x3f, 0x03, + 0x00, 0x00, 0xff, 0xff, 0x79, 0xb1, 0x2c, 0xdf, 0xac, 0x02, 0x00, 0x00, } func (this *CheckRequest) Equal(that interface{}) bool { diff --git a/src/runtime/virtcontainers/pkg/agent/protocols/grpc/healthpb_test.go b/src/runtime/virtcontainers/pkg/agent/protocols/grpc/healthpb_test.go index b1693a8e0..172e11b91 100644 --- a/src/runtime/virtcontainers/pkg/agent/protocols/grpc/healthpb_test.go +++ b/src/runtime/virtcontainers/pkg/agent/protocols/grpc/healthpb_test.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: github.com/kata-containers/kata-containers/src/agent/protocols/protos/health.proto +// source: github.com/kata-containers/kata-containers/src/libs/protocols/protos/health.proto package grpc diff --git a/src/runtime/virtcontainers/pkg/agent/protocols/grpc/oci.pb.go b/src/runtime/virtcontainers/pkg/agent/protocols/grpc/oci.pb.go index 2dc8fd757..7e71aadea 100644 --- a/src/runtime/virtcontainers/pkg/agent/protocols/grpc/oci.pb.go +++ b/src/runtime/virtcontainers/pkg/agent/protocols/grpc/oci.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: github.com/kata-containers/kata-containers/src/agent/protocols/protos/oci.proto +// source: github.com/kata-containers/kata-containers/src/libs/protocols/protos/oci.proto package grpc @@ -56,7 +56,7 @@ type Spec struct { func (m *Spec) Reset() { *m = Spec{} } func (*Spec) ProtoMessage() {} func (*Spec) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{0} + return fileDescriptor_82a9ef0098ca0b24, []int{0} } func (m *Spec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -119,7 +119,7 @@ type Process struct { func (m *Process) Reset() { *m = Process{} } func (*Process) ProtoMessage() {} func (*Process) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{1} + return fileDescriptor_82a9ef0098ca0b24, []int{1} } func (m *Process) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -161,7 +161,7 @@ type Box struct { func (m *Box) Reset() { *m = Box{} } func (*Box) ProtoMessage() {} func (*Box) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{2} + return fileDescriptor_82a9ef0098ca0b24, []int{2} } func (m *Box) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -207,7 +207,7 @@ type User struct { func (m *User) Reset() { *m = User{} } func (*User) ProtoMessage() {} func (*User) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{3} + return fileDescriptor_82a9ef0098ca0b24, []int{3} } func (m *User) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -255,7 +255,7 @@ type LinuxCapabilities struct { func (m *LinuxCapabilities) Reset() { *m = LinuxCapabilities{} } func (*LinuxCapabilities) ProtoMessage() {} func (*LinuxCapabilities) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{4} + return fileDescriptor_82a9ef0098ca0b24, []int{4} } func (m *LinuxCapabilities) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -299,7 +299,7 @@ type POSIXRlimit struct { func (m *POSIXRlimit) Reset() { *m = POSIXRlimit{} } func (*POSIXRlimit) ProtoMessage() {} func (*POSIXRlimit) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{5} + return fileDescriptor_82a9ef0098ca0b24, []int{5} } func (m *POSIXRlimit) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -346,7 +346,7 @@ type Mount struct { func (m *Mount) Reset() { *m = Mount{} } func (*Mount) ProtoMessage() {} func (*Mount) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{6} + return fileDescriptor_82a9ef0098ca0b24, []int{6} } func (m *Mount) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -388,7 +388,7 @@ type Root struct { func (m *Root) Reset() { *m = Root{} } func (*Root) ProtoMessage() {} func (*Root) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{7} + return fileDescriptor_82a9ef0098ca0b24, []int{7} } func (m *Root) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -432,7 +432,7 @@ type Hooks struct { func (m *Hooks) Reset() { *m = Hooks{} } func (*Hooks) ProtoMessage() {} func (*Hooks) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{8} + return fileDescriptor_82a9ef0098ca0b24, []int{8} } func (m *Hooks) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -474,7 +474,7 @@ type Hook struct { func (m *Hook) Reset() { *m = Hook{} } func (*Hook) ProtoMessage() {} func (*Hook) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{9} + return fileDescriptor_82a9ef0098ca0b24, []int{9} } func (m *Hook) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -542,7 +542,7 @@ type Linux struct { func (m *Linux) Reset() { *m = Linux{} } func (*Linux) ProtoMessage() {} func (*Linux) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{10} + return fileDescriptor_82a9ef0098ca0b24, []int{10} } func (m *Linux) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -582,7 +582,7 @@ type Windows struct { func (m *Windows) Reset() { *m = Windows{} } func (*Windows) ProtoMessage() {} func (*Windows) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{11} + return fileDescriptor_82a9ef0098ca0b24, []int{11} } func (m *Windows) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -622,7 +622,7 @@ type Solaris struct { func (m *Solaris) Reset() { *m = Solaris{} } func (*Solaris) ProtoMessage() {} func (*Solaris) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{12} + return fileDescriptor_82a9ef0098ca0b24, []int{12} } func (m *Solaris) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -666,7 +666,7 @@ type LinuxIDMapping struct { func (m *LinuxIDMapping) Reset() { *m = LinuxIDMapping{} } func (*LinuxIDMapping) ProtoMessage() {} func (*LinuxIDMapping) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{13} + return fileDescriptor_82a9ef0098ca0b24, []int{13} } func (m *LinuxIDMapping) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -709,7 +709,7 @@ type LinuxNamespace struct { func (m *LinuxNamespace) Reset() { *m = LinuxNamespace{} } func (*LinuxNamespace) ProtoMessage() {} func (*LinuxNamespace) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{14} + return fileDescriptor_82a9ef0098ca0b24, []int{14} } func (m *LinuxNamespace) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -761,7 +761,7 @@ type LinuxDevice struct { func (m *LinuxDevice) Reset() { *m = LinuxDevice{} } func (*LinuxDevice) ProtoMessage() {} func (*LinuxDevice) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{15} + return fileDescriptor_82a9ef0098ca0b24, []int{15} } func (m *LinuxDevice) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -813,7 +813,7 @@ type LinuxResources struct { func (m *LinuxResources) Reset() { *m = LinuxResources{} } func (*LinuxResources) ProtoMessage() {} func (*LinuxResources) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{16} + return fileDescriptor_82a9ef0098ca0b24, []int{16} } func (m *LinuxResources) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -865,7 +865,7 @@ type LinuxMemory struct { func (m *LinuxMemory) Reset() { *m = LinuxMemory{} } func (*LinuxMemory) ProtoMessage() {} func (*LinuxMemory) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{17} + return fileDescriptor_82a9ef0098ca0b24, []int{17} } func (m *LinuxMemory) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -917,7 +917,7 @@ type LinuxCPU struct { func (m *LinuxCPU) Reset() { *m = LinuxCPU{} } func (*LinuxCPU) ProtoMessage() {} func (*LinuxCPU) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{18} + return fileDescriptor_82a9ef0098ca0b24, []int{18} } func (m *LinuxCPU) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -963,7 +963,7 @@ type LinuxWeightDevice struct { func (m *LinuxWeightDevice) Reset() { *m = LinuxWeightDevice{} } func (*LinuxWeightDevice) ProtoMessage() {} func (*LinuxWeightDevice) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{19} + return fileDescriptor_82a9ef0098ca0b24, []int{19} } func (m *LinuxWeightDevice) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1007,7 +1007,7 @@ type LinuxThrottleDevice struct { func (m *LinuxThrottleDevice) Reset() { *m = LinuxThrottleDevice{} } func (*LinuxThrottleDevice) ProtoMessage() {} func (*LinuxThrottleDevice) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{20} + return fileDescriptor_82a9ef0098ca0b24, []int{20} } func (m *LinuxThrottleDevice) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1059,7 +1059,7 @@ type LinuxBlockIO struct { func (m *LinuxBlockIO) Reset() { *m = LinuxBlockIO{} } func (*LinuxBlockIO) ProtoMessage() {} func (*LinuxBlockIO) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{21} + return fileDescriptor_82a9ef0098ca0b24, []int{21} } func (m *LinuxBlockIO) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1099,7 +1099,7 @@ type LinuxPids struct { func (m *LinuxPids) Reset() { *m = LinuxPids{} } func (*LinuxPids) ProtoMessage() {} func (*LinuxPids) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{22} + return fileDescriptor_82a9ef0098ca0b24, []int{22} } func (m *LinuxPids) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1147,7 +1147,7 @@ type LinuxDeviceCgroup struct { func (m *LinuxDeviceCgroup) Reset() { *m = LinuxDeviceCgroup{} } func (*LinuxDeviceCgroup) ProtoMessage() {} func (*LinuxDeviceCgroup) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{23} + return fileDescriptor_82a9ef0098ca0b24, []int{23} } func (m *LinuxDeviceCgroup) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1189,7 +1189,7 @@ type LinuxNetwork struct { func (m *LinuxNetwork) Reset() { *m = LinuxNetwork{} } func (*LinuxNetwork) ProtoMessage() {} func (*LinuxNetwork) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{24} + return fileDescriptor_82a9ef0098ca0b24, []int{24} } func (m *LinuxNetwork) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1231,7 +1231,7 @@ type LinuxHugepageLimit struct { func (m *LinuxHugepageLimit) Reset() { *m = LinuxHugepageLimit{} } func (*LinuxHugepageLimit) ProtoMessage() {} func (*LinuxHugepageLimit) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{25} + return fileDescriptor_82a9ef0098ca0b24, []int{25} } func (m *LinuxHugepageLimit) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1273,7 +1273,7 @@ type LinuxInterfacePriority struct { func (m *LinuxInterfacePriority) Reset() { *m = LinuxInterfacePriority{} } func (*LinuxInterfacePriority) ProtoMessage() {} func (*LinuxInterfacePriority) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{26} + return fileDescriptor_82a9ef0098ca0b24, []int{26} } func (m *LinuxInterfacePriority) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1315,7 +1315,7 @@ type LinuxSeccomp struct { func (m *LinuxSeccomp) Reset() { *m = LinuxSeccomp{} } func (*LinuxSeccomp) ProtoMessage() {} func (*LinuxSeccomp) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{27} + return fileDescriptor_82a9ef0098ca0b24, []int{27} } func (m *LinuxSeccomp) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1357,7 +1357,7 @@ type LinuxSeccompArg struct { func (m *LinuxSeccompArg) Reset() { *m = LinuxSeccompArg{} } func (*LinuxSeccompArg) ProtoMessage() {} func (*LinuxSeccompArg) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{28} + return fileDescriptor_82a9ef0098ca0b24, []int{28} } func (m *LinuxSeccompArg) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1401,7 +1401,7 @@ type LinuxSyscall struct { func (m *LinuxSyscall) Reset() { *m = LinuxSyscall{} } func (*LinuxSyscall) ProtoMessage() {} func (*LinuxSyscall) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{29} + return fileDescriptor_82a9ef0098ca0b24, []int{29} } func (m *LinuxSyscall) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1476,7 +1476,7 @@ type LinuxIntelRdt struct { func (m *LinuxIntelRdt) Reset() { *m = LinuxIntelRdt{} } func (*LinuxIntelRdt) ProtoMessage() {} func (*LinuxIntelRdt) Descriptor() ([]byte, []int) { - return fileDescriptor_e42fef2823778fc8, []int{30} + return fileDescriptor_82a9ef0098ca0b24, []int{30} } func (m *LinuxIntelRdt) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1542,144 +1542,144 @@ func init() { } func init() { - proto.RegisterFile("github.com/kata-containers/kata-containers/src/agent/protocols/protos/oci.proto", fileDescriptor_e42fef2823778fc8) + proto.RegisterFile("github.com/kata-containers/kata-containers/src/libs/protocols/protos/oci.proto", fileDescriptor_82a9ef0098ca0b24) } -var fileDescriptor_e42fef2823778fc8 = []byte{ - // 2118 bytes of a gzipped FileDescriptorProto +var fileDescriptor_82a9ef0098ca0b24 = []byte{ + // 2121 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xcb, 0x73, 0x5b, 0x49, 0xd5, 0xcf, 0x95, 0x64, 0x59, 0x6a, 0xc5, 0x79, 0xf4, 0x64, 0x32, 0xf7, 0xcb, 0x97, 0xd2, 0x78, - 0x2e, 0x29, 0x30, 0x10, 0xec, 0x22, 0xe1, 0x31, 0x0c, 0x8f, 0x2a, 0xd9, 0x4e, 0x62, 0xd5, 0xc4, - 0x91, 0x68, 0xd9, 0x13, 0x98, 0xc5, 0x54, 0xb5, 0xaf, 0xda, 0x52, 0x8f, 0xaf, 0x6e, 0xdf, 0xea, + 0x2e, 0x29, 0x30, 0x10, 0xac, 0x22, 0xe1, 0x31, 0x0c, 0x8f, 0x2a, 0xd9, 0x4e, 0x62, 0xd5, 0xc4, + 0xb1, 0x68, 0xd9, 0x13, 0x98, 0xc5, 0x54, 0xb5, 0xaf, 0xda, 0x52, 0x8f, 0xaf, 0x6e, 0xdf, 0xea, 0xdb, 0xb2, 0x63, 0x56, 0xb0, 0x63, 0xcf, 0x82, 0x35, 0x1b, 0x1e, 0xff, 0x01, 0xc5, 0x8a, 0x1d, 0x29, 0x56, 0x2c, 0xa9, 0xa2, 0x0a, 0x88, 0xf7, 0xec, 0x59, 0x52, 0xa7, 0xfb, 0xdc, 0xab, 0x96, - 0xe4, 0xc0, 0x04, 0x56, 0xea, 0xf3, 0x3b, 0x8f, 0x7e, 0x9c, 0xe7, 0x15, 0xe9, 0x8d, 0xa4, 0x19, - 0x4f, 0x8f, 0x36, 0x63, 0x35, 0xd9, 0x3a, 0xe1, 0x86, 0x7f, 0x25, 0x56, 0xa9, 0xe1, 0x32, 0x15, - 0x3a, 0x5f, 0xa2, 0x73, 0x1d, 0x6f, 0xf1, 0x91, 0x48, 0xcd, 0x56, 0xa6, 0x95, 0x51, 0xb1, 0x4a, - 0x72, 0xb7, 0xca, 0xb7, 0x54, 0x2c, 0x37, 0xed, 0x92, 0xd6, 0x46, 0x3a, 0x8b, 0xef, 0x44, 0x23, - 0x35, 0x52, 0x8e, 0x79, 0x34, 0x3d, 0xde, 0x02, 0xca, 0x12, 0x76, 0xe5, 0x24, 0xa3, 0x3f, 0x54, - 0x49, 0x6d, 0x90, 0x89, 0x98, 0x86, 0x64, 0xf5, 0x23, 0xa1, 0x73, 0xa9, 0xd2, 0x30, 0x58, 0x0f, - 0x36, 0x9a, 0xac, 0x20, 0xe9, 0x17, 0xc8, 0x6a, 0x5f, 0xab, 0x58, 0xe4, 0x79, 0x58, 0x59, 0x0f, - 0x36, 0x5a, 0x0f, 0xd6, 0x36, 0xc1, 0xfc, 0x26, 0x82, 0xac, 0xe0, 0xd2, 0x36, 0xa9, 0x31, 0xa5, - 0x4c, 0x58, 0xb5, 0x52, 0xc4, 0x49, 0x01, 0xc2, 0x2c, 0x4e, 0xef, 0x90, 0xc6, 0x9e, 0xca, 0x4d, - 0xca, 0x27, 0x22, 0xac, 0xd9, 0x3d, 0x4a, 0x9a, 0x7e, 0x91, 0xd4, 0xf7, 0xd5, 0x34, 0x35, 0x79, - 0xb8, 0xb2, 0x5e, 0xdd, 0x68, 0x3d, 0x68, 0x39, 0x6d, 0x8b, 0x6d, 0xd7, 0x5e, 0xfe, 0xf5, 0xdd, - 0x2b, 0x0c, 0x05, 0xe8, 0x7b, 0x64, 0x65, 0x4f, 0xa9, 0x93, 0x3c, 0xac, 0xdb, 0x7d, 0x50, 0xd2, - 0x42, 0xcc, 0x71, 0xe8, 0x77, 0x49, 0xab, 0x93, 0xa6, 0xca, 0x70, 0x23, 0x55, 0x9a, 0x87, 0xab, - 0xd6, 0xe4, 0xff, 0x3b, 0x41, 0xb8, 0xed, 0xa6, 0xc7, 0x7d, 0x94, 0x1a, 0x7d, 0xce, 0x7c, 0x79, - 0xd8, 0xe1, 0xa9, 0x4c, 0xa7, 0x2f, 0xc2, 0x86, 0xbf, 0x83, 0x85, 0x98, 0xe3, 0xc0, 0xa3, 0x0c, - 0x54, 0xc2, 0xb5, 0xcc, 0xc3, 0xa6, 0xff, 0x28, 0x08, 0xb2, 0x82, 0x0b, 0x82, 0xcf, 0x65, 0x3a, - 0x54, 0x67, 0x79, 0x48, 0x7c, 0x41, 0x04, 0x59, 0xc1, 0xbd, 0xf3, 0x3d, 0x72, 0x63, 0xf1, 0x54, - 0xf4, 0x06, 0xa9, 0x9e, 0x88, 0x73, 0x74, 0x08, 0x2c, 0xe9, 0x2d, 0xb2, 0x72, 0xca, 0x93, 0xa9, - 0xb0, 0xae, 0x68, 0x32, 0x47, 0x7c, 0x50, 0x79, 0x3f, 0x88, 0x7e, 0x57, 0x2d, 0xfd, 0x04, 0x2f, - 0x7d, 0x20, 0xf4, 0x44, 0xa6, 0x3c, 0xb1, 0xca, 0x0d, 0x56, 0xd2, 0xf4, 0xcb, 0xa4, 0xb5, 0xa3, - 0xd2, 0x5c, 0x25, 0x62, 0x20, 0x7f, 0x24, 0xd0, 0xa5, 0x4d, 0x77, 0xa8, 0x6d, 0xf5, 0x82, 0xf9, - 0x5c, 0x7a, 0x8f, 0xd4, 0x0e, 0x73, 0xa1, 0xe7, 0x5d, 0x0a, 0x08, 0xfa, 0xc4, 0x72, 0x29, 0x25, - 0xb5, 0x8e, 0x1e, 0xe5, 0x61, 0x6d, 0xbd, 0xba, 0xd1, 0x64, 0x76, 0x0d, 0x47, 0x7f, 0x94, 0x9e, - 0x5a, 0x6f, 0x36, 0x19, 0x2c, 0x01, 0xd9, 0x39, 0x1b, 0x5a, 0xaf, 0x35, 0x19, 0x2c, 0xe9, 0xb7, - 0xc9, 0xd5, 0x1d, 0x9e, 0xf1, 0x23, 0x99, 0x48, 0x23, 0x05, 0xf8, 0x09, 0x76, 0x79, 0xc7, 0x7b, - 0x6e, 0x9f, 0xcd, 0xe6, 0x84, 0xe9, 0x57, 0xc9, 0x2a, 0x4b, 0xe4, 0x44, 0x9a, 0x3c, 0x6c, 0x58, - 0xff, 0xde, 0xc4, 0xb0, 0xec, 0x0d, 0xba, 0x3f, 0x70, 0x1c, 0x3c, 0x64, 0x21, 0x47, 0x37, 0xc8, - 0xf5, 0x67, 0xea, 0x99, 0x38, 0xeb, 0x6b, 0x79, 0x2a, 0x13, 0x31, 0x12, 0xce, 0x79, 0x0d, 0xb6, - 0x08, 0x83, 0x64, 0x27, 0xcb, 0xb8, 0x9e, 0x28, 0xdd, 0xd7, 0xea, 0x58, 0x26, 0xc2, 0x7a, 0xaf, - 0xc9, 0x16, 0x61, 0xba, 0x4e, 0x5a, 0xbd, 0xde, 0xfe, 0x20, 0x56, 0x5a, 0x74, 0x86, 0x9f, 0x86, - 0xad, 0xf5, 0x60, 0xa3, 0xca, 0x7c, 0x88, 0x46, 0xe4, 0xea, 0x40, 0x24, 0x70, 0x9b, 0xa7, 0xfc, - 0x48, 0x24, 0xe1, 0x55, 0x6b, 0x68, 0x0e, 0x8b, 0x1e, 0x92, 0xea, 0xb6, 0x7a, 0x41, 0x6f, 0x93, - 0xfa, 0x9e, 0x90, 0xa3, 0xb1, 0xb1, 0x5e, 0x5b, 0x63, 0x48, 0x81, 0xd7, 0x9f, 0xcb, 0xa1, 0x19, - 0x5b, 0x6f, 0xad, 0x31, 0x47, 0x44, 0xa9, 0x73, 0x0e, 0x3c, 0xec, 0x61, 0x77, 0x17, 0x55, 0x60, - 0x09, 0xc8, 0x93, 0xee, 0x2e, 0x4a, 0xc3, 0x92, 0x7e, 0x9e, 0x5c, 0xeb, 0x0c, 0x87, 0x12, 0x62, - 0x8b, 0x27, 0x4f, 0xe4, 0x30, 0x0f, 0xab, 0xeb, 0xd5, 0x8d, 0x35, 0xb6, 0x80, 0x42, 0xe4, 0x80, - 0x4d, 0x3f, 0x47, 0x0b, 0x3a, 0xfa, 0x55, 0x40, 0x6e, 0x2e, 0x79, 0x05, 0x34, 0xb6, 0xd5, 0x34, - 0x1d, 0xca, 0x74, 0x14, 0x06, 0xd6, 0xdb, 0x25, 0x4d, 0xef, 0x92, 0xe6, 0xa3, 0xe3, 0x63, 0x11, - 0x1b, 0x79, 0x0a, 0x91, 0x06, 0xcc, 0x19, 0x00, 0x4f, 0xd7, 0x4d, 0xc7, 0x42, 0x4b, 0xc3, 0x8f, - 0x12, 0x61, 0x0f, 0xd4, 0x64, 0x3e, 0x04, 0xfa, 0x7d, 0x88, 0x5b, 0x63, 0xc4, 0x10, 0xa3, 0x6b, - 0x06, 0x40, 0xc9, 0xea, 0x4c, 0x8e, 0xa4, 0x48, 0x0d, 0x86, 0x59, 0x41, 0x46, 0x5d, 0xd2, 0xf2, - 0xc2, 0x00, 0xe2, 0xf3, 0xe0, 0x3c, 0x13, 0x98, 0x47, 0x76, 0x0d, 0xd8, 0x1e, 0xd7, 0x43, 0xfb, - 0x46, 0x35, 0x66, 0xd7, 0x80, 0x0d, 0xd4, 0xb1, 0x2b, 0x60, 0x35, 0x66, 0xd7, 0x91, 0x22, 0x2b, - 0xb6, 0xee, 0xc0, 0x69, 0x87, 0x22, 0x37, 0x32, 0xb5, 0x09, 0x8a, 0xb6, 0x7c, 0x08, 0xbc, 0x97, - 0xab, 0xa9, 0x8e, 0x8b, 0xe4, 0x44, 0x0a, 0xcc, 0x1a, 0xd8, 0xbe, 0xea, 0xb6, 0x87, 0x35, 0x9c, - 0x5d, 0x65, 0xae, 0x3a, 0xb9, 0x7b, 0x15, 0x64, 0xf4, 0x0d, 0x57, 0x45, 0x41, 0xab, 0xcf, 0xcd, - 0xb8, 0x38, 0x34, 0xac, 0xe1, 0xad, 0x99, 0xe0, 0x43, 0x95, 0x26, 0xe7, 0x76, 0x8f, 0x06, 0x2b, - 0xe9, 0xe8, 0x67, 0x01, 0xd6, 0x45, 0x7a, 0x9f, 0x34, 0xfa, 0x5a, 0xe4, 0x86, 0x6b, 0x63, 0x3d, - 0x52, 0x26, 0x2e, 0xb0, 0x31, 0x27, 0x4a, 0x09, 0xba, 0x49, 0x9a, 0x7d, 0x95, 0x1b, 0x27, 0x5e, - 0x79, 0x8d, 0xf8, 0x4c, 0xc4, 0x5a, 0xb7, 0x84, 0xca, 0xac, 0xcb, 0x2e, 0xb7, 0x8e, 0x12, 0xd1, - 0xc7, 0xa4, 0x06, 0xf8, 0xa5, 0xb7, 0x29, 0xca, 0x46, 0x65, 0xb9, 0x6c, 0x54, 0x67, 0x65, 0x23, - 0x24, 0xab, 0x07, 0x72, 0x22, 0xd4, 0xd4, 0xd8, 0x80, 0xac, 0xb2, 0x82, 0x8c, 0x7e, 0xb3, 0x82, - 0x75, 0x9a, 0x7e, 0x87, 0xb4, 0x0e, 0xbb, 0xbb, 0xfb, 0x3c, 0xcb, 0x64, 0x3a, 0xca, 0xf1, 0xd2, - 0xb7, 0xbc, 0x3a, 0x52, 0x32, 0xf1, 0x80, 0xbe, 0x38, 0x68, 0x3f, 0xf1, 0xb4, 0x2b, 0xff, 0x59, - 0xdb, 0x13, 0xa7, 0x5b, 0xa4, 0x3e, 0x38, 0xcf, 0x63, 0x93, 0xe0, 0x6b, 0xf8, 0xe5, 0x6b, 0xd3, - 0x71, 0x5c, 0x8b, 0x41, 0x31, 0xfa, 0x80, 0x34, 0x99, 0x70, 0xa1, 0x91, 0xdb, 0x2b, 0xcd, 0x6f, - 0x56, 0xf2, 0xd8, 0x4c, 0x0c, 0x82, 0x6f, 0x67, 0xa4, 0xd5, 0x34, 0xcb, 0xed, 0x2b, 0xae, 0xb8, - 0xe0, 0xf3, 0x20, 0xfa, 0x01, 0x21, 0xcf, 0xf8, 0x44, 0xe4, 0x19, 0x07, 0xb3, 0xf5, 0xa5, 0x3b, - 0x94, 0x4c, 0xbc, 0x83, 0x27, 0x0d, 0xa5, 0x74, 0x57, 0x9c, 0xca, 0x58, 0x14, 0xad, 0xf2, 0xa6, - 0xa7, 0xe8, 0x38, 0x45, 0x29, 0x45, 0x39, 0x7a, 0x9f, 0xac, 0x0e, 0x44, 0x1c, 0xab, 0x49, 0x86, - 0x4d, 0x92, 0x7a, 0x2a, 0xc8, 0x61, 0x85, 0x08, 0xbd, 0x4f, 0x6e, 0x42, 0x4c, 0x1f, 0xe7, 0x7d, - 0xad, 0x32, 0x3e, 0x72, 0x19, 0xd4, 0xb4, 0x97, 0x58, 0x66, 0xc0, 0x65, 0xf7, 0x79, 0x7e, 0x22, - 0x86, 0x70, 0x31, 0x68, 0x9b, 0xb6, 0x2e, 0x78, 0x10, 0xbd, 0x47, 0xd6, 0x8a, 0xb8, 0x77, 0x32, - 0x2d, 0x2b, 0x33, 0x0f, 0xd2, 0x36, 0x21, 0x36, 0x75, 0xfd, 0xb2, 0xeb, 0x21, 0x74, 0x8b, 0x34, - 0xba, 0xa9, 0x11, 0x09, 0x1b, 0x9a, 0x70, 0xcd, 0x5e, 0xe2, 0x2d, 0xdf, 0xe9, 0xc8, 0x62, 0xa5, - 0xd0, 0x9d, 0x6f, 0x91, 0x96, 0xe7, 0xd0, 0x37, 0xea, 0xce, 0xef, 0x96, 0x63, 0x00, 0x08, 0x0d, - 0xa7, 0x93, 0x49, 0xa1, 0xe8, 0x08, 0x10, 0x28, 0x46, 0x86, 0xcb, 0x05, 0x3e, 0x21, 0xd7, 0xe6, - 0x83, 0xd1, 0x76, 0x0b, 0x95, 0x9b, 0xb2, 0xf4, 0x23, 0x65, 0x83, 0xa5, 0x18, 0x18, 0xcb, 0x2e, - 0xe0, 0x43, 0xb6, 0xd0, 0x41, 0xf3, 0xaf, 0x5a, 0x96, 0x5d, 0x47, 0xef, 0xa3, 0xfd, 0x32, 0x2e, - 0x5e, 0x57, 0x36, 0x6d, 0x04, 0x56, 0x66, 0x79, 0x1c, 0xfd, 0x22, 0x20, 0x2d, 0x2f, 0x54, 0x5e, - 0x97, 0xeb, 0xd6, 0x56, 0xc5, 0xb3, 0x75, 0x8b, 0xac, 0xec, 0xf3, 0x4f, 0x95, 0x9b, 0x2e, 0xaa, - 0xcc, 0x11, 0x16, 0x95, 0xa9, 0xd2, 0x98, 0xed, 0x8e, 0x80, 0xca, 0xf7, 0x58, 0x26, 0x62, 0x5f, - 0x0d, 0x85, 0x8d, 0xfe, 0x35, 0x56, 0xd2, 0x45, 0xff, 0xab, 0x2f, 0xf5, 0xbf, 0xd5, 0xb2, 0xff, - 0x45, 0x7f, 0xab, 0xe0, 0xf5, 0x66, 0x39, 0xf5, 0xcd, 0x59, 0xd4, 0x07, 0x4b, 0x99, 0xeb, 0x38, - 0x2e, 0xc1, 0x16, 0x63, 0x1f, 0x66, 0x55, 0x31, 0x51, 0xfa, 0x1c, 0x87, 0x27, 0x3f, 0x5b, 0x1c, - 0x83, 0xa1, 0x00, 0x5d, 0x27, 0xd5, 0x9d, 0xfe, 0x21, 0x8e, 0x4f, 0xd7, 0xfc, 0xc1, 0xa6, 0x7f, - 0xc8, 0x80, 0x45, 0x3f, 0x47, 0x6a, 0x7d, 0x68, 0xc7, 0xae, 0x10, 0x5c, 0xf7, 0x44, 0x00, 0x66, - 0x96, 0x09, 0xd9, 0xb6, 0x9d, 0xa8, 0xf8, 0xa4, 0xdb, 0xb3, 0x97, 0x9f, 0xcf, 0x36, 0xe4, 0xb0, - 0x42, 0x84, 0x3e, 0x26, 0xd7, 0xf6, 0xa6, 0x23, 0x91, 0xf1, 0x91, 0x78, 0xea, 0x06, 0x24, 0x57, - 0x0e, 0x42, 0x4f, 0x69, 0x4e, 0x00, 0x2f, 0xb8, 0xa0, 0x05, 0xbb, 0x3e, 0x13, 0xe6, 0x4c, 0xe9, - 0x13, 0x9c, 0xcc, 0xfc, 0x5d, 0x91, 0xc3, 0x0a, 0x91, 0xe8, 0x2f, 0x45, 0x14, 0xe0, 0xd5, 0x6f, - 0x41, 0x71, 0x9e, 0x48, 0x37, 0xca, 0x54, 0x99, 0x23, 0x20, 0x36, 0x99, 0xc8, 0x85, 0x3e, 0x75, - 0x35, 0xa0, 0xe2, 0xc6, 0x25, 0x0f, 0xb2, 0xb1, 0x79, 0xc6, 0x33, 0x0c, 0x0a, 0xbb, 0x86, 0x48, - 0xff, 0x50, 0xe8, 0x54, 0x24, 0x18, 0x14, 0x48, 0xc1, 0x7c, 0xe0, 0x56, 0x07, 0x3b, 0x7d, 0xfb, - 0x32, 0x55, 0x36, 0x03, 0x20, 0xff, 0x41, 0x3b, 0x93, 0x29, 0x7c, 0xbb, 0xd4, 0x6d, 0x53, 0xf7, - 0x10, 0xfa, 0x25, 0x72, 0x63, 0x57, 0xe6, 0x30, 0x68, 0xf4, 0x7a, 0xfb, 0x1f, 0xca, 0x24, 0x11, - 0xda, 0x5e, 0xb4, 0xc1, 0x96, 0xf0, 0xe8, 0x8f, 0x01, 0x69, 0x14, 0x8e, 0x83, 0xe3, 0x0c, 0xc6, - 0x5c, 0xdb, 0xc0, 0x01, 0xa3, 0x48, 0xc1, 0x95, 0xbf, 0x3f, 0x55, 0x86, 0xe3, 0xb5, 0x1c, 0x01, - 0xd2, 0x7d, 0xa1, 0xa5, 0x1a, 0xe2, 0x5c, 0x81, 0x14, 0xcc, 0x98, 0x4c, 0xf0, 0xc4, 0xc8, 0x89, - 0x60, 0xd3, 0x14, 0x7e, 0xf0, 0x76, 0x8b, 0x30, 0x0c, 0x6f, 0x05, 0x84, 0x96, 0x56, 0xac, 0xa5, - 0x05, 0x14, 0x9e, 0x6e, 0x27, 0x9b, 0xe6, 0x38, 0x62, 0xdb, 0x35, 0x60, 0xfb, 0x62, 0xe2, 0x66, - 0xeb, 0x26, 0xb3, 0xeb, 0xe8, 0x0c, 0xe7, 0xb8, 0xe7, 0x76, 0xba, 0xc4, 0xac, 0x2d, 0xb3, 0x31, - 0xb8, 0x34, 0x1b, 0x2b, 0x7e, 0x36, 0xde, 0x26, 0x75, 0xa7, 0x8b, 0x15, 0x04, 0x29, 0x78, 0xf1, - 0xa7, 0x82, 0x1f, 0x23, 0xaf, 0x66, 0x79, 0x1e, 0x12, 0x1d, 0x92, 0xb7, 0xec, 0xc6, 0x07, 0x63, - 0xad, 0x8c, 0x49, 0xc4, 0x7f, 0xb1, 0x35, 0x25, 0x35, 0xc6, 0x8d, 0x28, 0x66, 0x34, 0x58, 0x47, - 0xff, 0xa8, 0x92, 0xab, 0x7e, 0x2a, 0x78, 0xe7, 0x0b, 0xfe, 0xcd, 0xf9, 0x2a, 0x8b, 0xe7, 0xa3, - 0x1d, 0x72, 0xd5, 0x7f, 0x93, 0x4b, 0x3a, 0xba, 0xcf, 0xc6, 0xb4, 0x99, 0x53, 0xa1, 0x87, 0xe4, - 0xed, 0xe2, 0x76, 0xd0, 0x8d, 0xb6, 0xb3, 0x1c, 0x6d, 0xd5, 0xac, 0xad, 0xff, 0xf3, 0x6c, 0xcd, - 0xbf, 0x02, 0x5a, 0xbb, 0x5c, 0x9b, 0x3e, 0x27, 0xb7, 0x0b, 0xc6, 0x73, 0x2d, 0x8d, 0x98, 0xd9, - 0x5d, 0xf9, 0x6c, 0x76, 0x5f, 0xa3, 0xee, 0x1b, 0x86, 0x1d, 0xbb, 0xbd, 0xfe, 0x00, 0x0d, 0xd7, - 0xdf, 0xd0, 0xf0, 0xbc, 0x3a, 0xfd, 0x21, 0x79, 0x67, 0x6e, 0x4b, 0xcf, 0xf2, 0xea, 0x67, 0xb3, - 0xfc, 0x3a, 0xfd, 0xe8, 0x3d, 0xd2, 0x2c, 0x2b, 0xe4, 0xe5, 0x75, 0x26, 0xfa, 0x49, 0xf1, 0xad, - 0xe2, 0x17, 0x72, 0x90, 0xed, 0x24, 0x89, 0x3a, 0xc3, 0x8f, 0x62, 0x47, 0xfc, 0xcf, 0xbd, 0xe9, - 0x36, 0xa9, 0x77, 0x62, 0xfb, 0xff, 0x88, 0x9b, 0xcb, 0x90, 0x8a, 0x12, 0x8c, 0x4a, 0xac, 0x90, - 0x30, 0xc9, 0xee, 0x24, 0x3c, 0xcf, 0xcb, 0x86, 0x5d, 0x90, 0x74, 0x9b, 0x90, 0xbe, 0x96, 0x4a, - 0xbb, 0xcf, 0x60, 0x37, 0x80, 0xde, 0x5d, 0x98, 0x45, 0xf4, 0x31, 0x8f, 0x05, 0x4a, 0x9d, 0x17, - 0x43, 0xdc, 0x4c, 0x2b, 0x7a, 0x4c, 0xe8, 0x72, 0x65, 0x87, 0xbe, 0xd9, 0xe7, 0x23, 0x91, 0x43, - 0xb7, 0x77, 0xfd, 0xb8, 0xa4, 0x67, 0x2f, 0xe7, 0xbe, 0x81, 0xf0, 0xe5, 0xf6, 0xc8, 0xed, 0xcb, - 0xf7, 0x84, 0x77, 0x82, 0xe1, 0xa0, 0xe8, 0xeb, 0xb0, 0xb6, 0xf6, 0x91, 0x8f, 0xf9, 0x54, 0xd2, - 0xd1, 0x2f, 0x03, 0x7c, 0x80, 0x62, 0x0c, 0xbc, 0x47, 0xd6, 0x76, 0xc5, 0x31, 0x9f, 0x26, 0xa6, - 0x13, 0x7b, 0x1f, 0x51, 0xf3, 0x20, 0x48, 0x75, 0x74, 0x3c, 0x96, 0x46, 0xc4, 0x66, 0xaa, 0x45, - 0xf1, 0x7d, 0x30, 0x0f, 0xc2, 0xe1, 0x1f, 0x27, 0x7c, 0x94, 0xe3, 0xa7, 0x82, 0x23, 0xe8, 0xd7, - 0x48, 0x03, 0x26, 0x34, 0x9e, 0x24, 0x39, 0x26, 0xdc, 0xdc, 0x5c, 0xea, 0x58, 0xc5, 0x47, 0x4a, - 0x21, 0x19, 0x49, 0x72, 0xdd, 0x3f, 0x67, 0x47, 0x8f, 0xc0, 0x7c, 0x37, 0x1d, 0x8a, 0x17, 0x58, - 0xe1, 0x1d, 0x01, 0xe8, 0x47, 0xe5, 0x7c, 0x57, 0x63, 0x8e, 0x80, 0x37, 0xb0, 0x8b, 0x83, 0x33, - 0x85, 0x65, 0xa9, 0xa4, 0xe9, 0x35, 0x52, 0xe9, 0x65, 0xf8, 0x25, 0x5d, 0xe9, 0x65, 0xd1, 0xcf, - 0xcb, 0x37, 0x71, 0x9b, 0x83, 0x49, 0x3b, 0x71, 0xe1, 0xb7, 0xb3, 0x23, 0x5c, 0x48, 0x95, 0x1d, - 0xd2, 0x86, 0x94, 0x7d, 0x9b, 0xbb, 0xa4, 0x21, 0xb4, 0x4e, 0x95, 0x16, 0x58, 0x7a, 0xf7, 0xae, - 0xb0, 0x12, 0xa1, 0x5b, 0xde, 0xff, 0x30, 0xad, 0x07, 0x6f, 0x2f, 0x4f, 0xe4, 0x1d, 0x5d, 0x7c, - 0xc2, 0x58, 0xc1, 0x6d, 0x42, 0x1a, 0x8f, 0x40, 0x99, 0x09, 0x13, 0x7d, 0x9d, 0xac, 0xcd, 0xcd, - 0xbd, 0xe0, 0x87, 0xa7, 0x0f, 0x77, 0x78, 0x3c, 0x16, 0x83, 0x78, 0x2c, 0x26, 0xbc, 0xf0, 0xd6, - 0x1c, 0xb8, 0xfd, 0xd3, 0xe0, 0xe5, 0xab, 0xf6, 0x95, 0x3f, 0xbf, 0x6a, 0x5f, 0xf9, 0xe7, 0xab, - 0x76, 0xf0, 0xe3, 0x8b, 0x76, 0xf0, 0xeb, 0x8b, 0x76, 0xf0, 0xdb, 0x8b, 0x76, 0xf0, 0xfb, 0x8b, - 0x76, 0xf0, 0xf2, 0xa2, 0x1d, 0xfc, 0xe9, 0xa2, 0x1d, 0xfc, 0xfd, 0xa2, 0x1d, 0x7c, 0xfc, 0xc9, - 0x1b, 0xfe, 0xcd, 0xa9, 0x5d, 0xfb, 0xdb, 0x3a, 0x95, 0xda, 0x78, 0xac, 0xec, 0x64, 0xb4, 0xf4, - 0x0f, 0x28, 0xdc, 0xf4, 0xa8, 0x6e, 0xe9, 0x87, 0xff, 0x0a, 0x00, 0x00, 0xff, 0xff, 0xfb, 0x3e, - 0xc9, 0x10, 0x4f, 0x15, 0x00, 0x00, + 0xe4, 0xc0, 0x04, 0x56, 0xea, 0xf3, 0x3b, 0x8f, 0x7e, 0x9c, 0xe7, 0x15, 0x79, 0x36, 0x92, 0x66, + 0x3c, 0x3d, 0xda, 0x8c, 0xd5, 0xa4, 0x73, 0xc2, 0x0d, 0xff, 0x4a, 0xac, 0x52, 0xc3, 0x65, 0x2a, + 0x74, 0xbe, 0x44, 0xe7, 0x3a, 0xee, 0x24, 0xf2, 0x28, 0xef, 0x64, 0x5a, 0x19, 0x15, 0xab, 0x04, + 0x57, 0x79, 0x47, 0xc5, 0x72, 0xd3, 0x2e, 0x69, 0x6d, 0xa4, 0xb3, 0xf8, 0x4e, 0x34, 0x52, 0x23, + 0xe5, 0x98, 0x47, 0xd3, 0xe3, 0x0e, 0x50, 0x96, 0xb0, 0x2b, 0x27, 0x19, 0xfd, 0xa1, 0x4a, 0x6a, + 0x83, 0x4c, 0xc4, 0x34, 0x24, 0xab, 0x1f, 0x09, 0x9d, 0x4b, 0x95, 0x86, 0xc1, 0x7a, 0xb0, 0xd1, + 0x64, 0x05, 0x49, 0xbf, 0x40, 0x56, 0xfb, 0x5a, 0xc5, 0x22, 0xcf, 0xc3, 0xca, 0x7a, 0xb0, 0xd1, + 0x7a, 0xb0, 0xb6, 0x09, 0xe6, 0x37, 0x11, 0x64, 0x05, 0x97, 0xb6, 0x49, 0x8d, 0x29, 0x65, 0xc2, + 0xaa, 0x95, 0x22, 0x4e, 0x0a, 0x10, 0x66, 0x71, 0x7a, 0x87, 0x34, 0x76, 0x55, 0x6e, 0x52, 0x3e, + 0x11, 0x61, 0xcd, 0xee, 0x51, 0xd2, 0xf4, 0x8b, 0xa4, 0xbe, 0xa7, 0xa6, 0xa9, 0xc9, 0xc3, 0x95, + 0xf5, 0xea, 0x46, 0xeb, 0x41, 0xcb, 0x69, 0x5b, 0x6c, 0xab, 0xf6, 0xf2, 0xaf, 0xef, 0x5e, 0x61, + 0x28, 0x40, 0xdf, 0x23, 0x2b, 0xbb, 0x4a, 0x9d, 0xe4, 0x61, 0xdd, 0xee, 0x83, 0x92, 0x16, 0x62, + 0x8e, 0x43, 0xbf, 0x4b, 0x5a, 0xdd, 0x34, 0x55, 0x86, 0x1b, 0xa9, 0xd2, 0x3c, 0x5c, 0xb5, 0x26, + 0xff, 0xdf, 0x09, 0xc2, 0x6d, 0x37, 0x3d, 0xee, 0xa3, 0xd4, 0xe8, 0x73, 0xe6, 0xcb, 0xc3, 0x0e, + 0x4f, 0x65, 0x3a, 0x7d, 0x11, 0x36, 0xfc, 0x1d, 0x2c, 0xc4, 0x1c, 0x07, 0x1e, 0x65, 0xa0, 0x12, + 0xae, 0x65, 0x1e, 0x36, 0xfd, 0x47, 0x41, 0x90, 0x15, 0x5c, 0x10, 0x7c, 0x2e, 0xd3, 0xa1, 0x3a, + 0xcb, 0x43, 0xe2, 0x0b, 0x22, 0xc8, 0x0a, 0xee, 0x9d, 0xef, 0x91, 0x1b, 0x8b, 0xa7, 0xa2, 0x37, + 0x48, 0xf5, 0x44, 0x9c, 0xa3, 0x43, 0x60, 0x49, 0x6f, 0x91, 0x95, 0x53, 0x9e, 0x4c, 0x85, 0x75, + 0x45, 0x93, 0x39, 0xe2, 0x83, 0xca, 0xfb, 0x41, 0xf4, 0xbb, 0x6a, 0xe9, 0x27, 0x78, 0xe9, 0x03, + 0xa1, 0x27, 0x32, 0xe5, 0x89, 0x55, 0x6e, 0xb0, 0x92, 0xa6, 0x5f, 0x26, 0xad, 0x6d, 0x95, 0xe6, + 0x2a, 0x11, 0x03, 0xf9, 0x23, 0x81, 0x2e, 0x6d, 0xba, 0x43, 0x6d, 0xa9, 0x17, 0xcc, 0xe7, 0xd2, + 0x7b, 0xa4, 0x76, 0x98, 0x0b, 0x3d, 0xef, 0x52, 0x40, 0xd0, 0x27, 0x96, 0x4b, 0x29, 0xa9, 0x75, + 0xf5, 0x28, 0x0f, 0x6b, 0xeb, 0xd5, 0x8d, 0x26, 0xb3, 0x6b, 0x38, 0xfa, 0xa3, 0xf4, 0xd4, 0x7a, + 0xb3, 0xc9, 0x60, 0x09, 0xc8, 0xf6, 0xd9, 0xd0, 0x7a, 0xad, 0xc9, 0x60, 0x49, 0xbf, 0x4d, 0xae, + 0x6e, 0xf3, 0x8c, 0x1f, 0xc9, 0x44, 0x1a, 0x29, 0xc0, 0x4f, 0xb0, 0xcb, 0x3b, 0xde, 0x73, 0xfb, + 0x6c, 0x36, 0x27, 0x4c, 0xbf, 0x4a, 0x56, 0x59, 0x22, 0x27, 0xd2, 0xe4, 0x61, 0xc3, 0xfa, 0xf7, + 0x26, 0x86, 0xe5, 0xfe, 0xa0, 0xf7, 0x03, 0xc7, 0xc1, 0x43, 0x16, 0x72, 0x74, 0x83, 0x5c, 0x7f, + 0xa6, 0x9e, 0x89, 0xb3, 0xbe, 0x96, 0xa7, 0x32, 0x11, 0x23, 0xe1, 0x9c, 0xd7, 0x60, 0x8b, 0x30, + 0x48, 0x76, 0xb3, 0x8c, 0xeb, 0x89, 0xd2, 0x7d, 0xad, 0x8e, 0x65, 0x22, 0xac, 0xf7, 0x9a, 0x6c, + 0x11, 0xa6, 0xeb, 0xa4, 0xb5, 0xbf, 0xbf, 0x37, 0x88, 0x95, 0x16, 0xdd, 0xe1, 0xa7, 0x61, 0x6b, + 0x3d, 0xd8, 0xa8, 0x32, 0x1f, 0xa2, 0x11, 0xb9, 0x3a, 0x10, 0x09, 0xdc, 0xe6, 0x29, 0x3f, 0x12, + 0x49, 0x78, 0xd5, 0x1a, 0x9a, 0xc3, 0xa2, 0x87, 0xa4, 0xba, 0xa5, 0x5e, 0xd0, 0xdb, 0xa4, 0xbe, + 0x2b, 0xe4, 0x68, 0x6c, 0xac, 0xd7, 0xd6, 0x18, 0x52, 0xe0, 0xf5, 0xe7, 0x72, 0x68, 0xc6, 0xd6, + 0x5b, 0x6b, 0xcc, 0x11, 0x51, 0xea, 0x9c, 0x03, 0x0f, 0x7b, 0xd8, 0xdb, 0x41, 0x15, 0x58, 0x02, + 0xf2, 0xa4, 0xb7, 0x83, 0xd2, 0xb0, 0xa4, 0x9f, 0x27, 0xd7, 0xba, 0xc3, 0xa1, 0x84, 0xd8, 0xe2, + 0xc9, 0x13, 0x39, 0xcc, 0xc3, 0xea, 0x7a, 0x75, 0x63, 0x8d, 0x2d, 0xa0, 0x10, 0x39, 0x60, 0xd3, + 0xcf, 0xd1, 0x82, 0x8e, 0x7e, 0x15, 0x90, 0x9b, 0x4b, 0x5e, 0x01, 0x8d, 0x2d, 0x35, 0x4d, 0x87, + 0x32, 0x1d, 0x85, 0x81, 0xf5, 0x76, 0x49, 0xd3, 0xbb, 0xa4, 0xf9, 0xe8, 0xf8, 0x58, 0xc4, 0x46, + 0x9e, 0x42, 0xa4, 0x01, 0x73, 0x06, 0xc0, 0xd3, 0xf5, 0xd2, 0xb1, 0xd0, 0xd2, 0xf0, 0xa3, 0x44, + 0xd8, 0x03, 0x35, 0x99, 0x0f, 0x81, 0x7e, 0x1f, 0xe2, 0xd6, 0x18, 0x31, 0xc4, 0xe8, 0x9a, 0x01, + 0x50, 0xb2, 0xba, 0x93, 0x23, 0x29, 0x52, 0x83, 0x61, 0x56, 0x90, 0x51, 0x8f, 0xb4, 0xbc, 0x30, + 0x80, 0xf8, 0x3c, 0x38, 0xcf, 0x04, 0xe6, 0x91, 0x5d, 0x03, 0xb6, 0xcb, 0xf5, 0xd0, 0xbe, 0x51, + 0x8d, 0xd9, 0x35, 0x60, 0x03, 0x75, 0xec, 0x0a, 0x58, 0x8d, 0xd9, 0x75, 0xa4, 0xc8, 0x8a, 0xad, + 0x3b, 0x70, 0xda, 0xa1, 0xc8, 0x8d, 0x4c, 0x6d, 0x82, 0xa2, 0x2d, 0x1f, 0x02, 0xef, 0xe5, 0x6a, + 0xaa, 0xe3, 0x22, 0x39, 0x91, 0x02, 0xb3, 0x06, 0xb6, 0xaf, 0xba, 0xed, 0x61, 0x0d, 0x67, 0x57, + 0x99, 0xab, 0x4e, 0xee, 0x5e, 0x05, 0x19, 0x7d, 0xc3, 0x55, 0x51, 0xd0, 0xea, 0x73, 0x33, 0x2e, + 0x0e, 0x0d, 0x6b, 0x78, 0x6b, 0x26, 0xf8, 0x50, 0xa5, 0xc9, 0xb9, 0xdd, 0xa3, 0xc1, 0x4a, 0x3a, + 0xfa, 0x59, 0x80, 0x75, 0x91, 0xde, 0x27, 0x8d, 0xbe, 0x16, 0xb9, 0xe1, 0xda, 0x58, 0x8f, 0x94, + 0x89, 0x0b, 0x6c, 0xcc, 0x89, 0x52, 0x82, 0x6e, 0x92, 0x66, 0x5f, 0xe5, 0xc6, 0x89, 0x57, 0x5e, + 0x23, 0x3e, 0x13, 0xb1, 0xd6, 0x2d, 0xa1, 0x32, 0xeb, 0xb2, 0xcb, 0xad, 0xa3, 0x44, 0xf4, 0x31, + 0xa9, 0x01, 0x7e, 0xe9, 0x6d, 0x8a, 0xb2, 0x51, 0x59, 0x2e, 0x1b, 0xd5, 0x59, 0xd9, 0x08, 0xc9, + 0xea, 0x81, 0x9c, 0x08, 0x35, 0x35, 0x36, 0x20, 0xab, 0xac, 0x20, 0xa3, 0xdf, 0xac, 0x60, 0x9d, + 0xa6, 0xdf, 0x21, 0xad, 0xc3, 0xde, 0xce, 0x1e, 0xcf, 0x32, 0x99, 0x8e, 0x72, 0xbc, 0xf4, 0x2d, + 0xaf, 0x8e, 0x94, 0x4c, 0x3c, 0xa0, 0x2f, 0x0e, 0xda, 0x4f, 0x3c, 0xed, 0xca, 0x7f, 0xd6, 0xf6, + 0xc4, 0x69, 0x87, 0xd4, 0x07, 0xe7, 0x79, 0x6c, 0x12, 0x7c, 0x0d, 0xbf, 0x7c, 0x6d, 0x3a, 0x8e, + 0x6b, 0x31, 0x28, 0x46, 0x1f, 0x90, 0x26, 0x13, 0x2e, 0x34, 0x72, 0x7b, 0xa5, 0xf9, 0xcd, 0x4a, + 0x1e, 0x9b, 0x89, 0x41, 0xf0, 0x6d, 0x8f, 0xb4, 0x9a, 0x66, 0xb9, 0x7d, 0xc5, 0x15, 0x17, 0x7c, + 0x1e, 0x44, 0x3f, 0x20, 0xe4, 0x19, 0x9f, 0x88, 0x3c, 0xe3, 0x60, 0xb6, 0xbe, 0x74, 0x87, 0x92, + 0x89, 0x77, 0xf0, 0xa4, 0xa1, 0x94, 0xee, 0x88, 0x53, 0x19, 0x8b, 0xa2, 0x55, 0xde, 0xf4, 0x14, + 0x1d, 0xa7, 0x28, 0xa5, 0x28, 0x47, 0xef, 0x93, 0xd5, 0x81, 0x88, 0x63, 0x35, 0xc9, 0xb0, 0x49, + 0x52, 0x4f, 0x05, 0x39, 0xac, 0x10, 0xa1, 0xf7, 0xc9, 0x4d, 0x88, 0xe9, 0xe3, 0xbc, 0xaf, 0x55, + 0xc6, 0x47, 0x2e, 0x83, 0x9a, 0xf6, 0x12, 0xcb, 0x0c, 0xb8, 0xec, 0x1e, 0xcf, 0x4f, 0xc4, 0x10, + 0x2e, 0x06, 0x6d, 0xd3, 0xd6, 0x05, 0x0f, 0xa2, 0xf7, 0xc8, 0x5a, 0x11, 0xf7, 0x4e, 0xa6, 0x65, + 0x65, 0xe6, 0x41, 0xda, 0x26, 0xc4, 0xa6, 0xae, 0x5f, 0x76, 0x3d, 0x84, 0x76, 0x48, 0xa3, 0x97, + 0x1a, 0x91, 0xb0, 0xa1, 0x09, 0xd7, 0xec, 0x25, 0xde, 0xf2, 0x9d, 0x8e, 0x2c, 0x56, 0x0a, 0xdd, + 0xf9, 0x16, 0x69, 0x79, 0x0e, 0x7d, 0xa3, 0xee, 0xfc, 0x6e, 0x39, 0x06, 0x80, 0xd0, 0x70, 0x3a, + 0x99, 0x14, 0x8a, 0x8e, 0x00, 0x81, 0x62, 0x64, 0xb8, 0x5c, 0xe0, 0x13, 0x72, 0x6d, 0x3e, 0x18, + 0x6d, 0xb7, 0x50, 0xb9, 0x29, 0x4b, 0x3f, 0x52, 0x36, 0x58, 0x8a, 0x79, 0xb1, 0xec, 0x02, 0x3e, + 0x64, 0x0b, 0x1d, 0x34, 0xff, 0xaa, 0x65, 0xd9, 0x75, 0xf4, 0x3e, 0xda, 0x2f, 0xe3, 0xe2, 0x75, + 0x65, 0xd3, 0x46, 0x60, 0x65, 0x96, 0xc7, 0xd1, 0x2f, 0x02, 0xd2, 0xf2, 0x42, 0xe5, 0x75, 0xb9, + 0x6e, 0x6d, 0x55, 0x3c, 0x5b, 0xb7, 0xc8, 0xca, 0x1e, 0xff, 0x54, 0xb9, 0xe9, 0xa2, 0xca, 0x1c, + 0x61, 0x51, 0x99, 0x2a, 0x8d, 0xd9, 0xee, 0x08, 0xa8, 0x7c, 0x8f, 0x65, 0x22, 0xf6, 0xd4, 0x50, + 0xd8, 0xe8, 0x5f, 0x63, 0x25, 0x5d, 0xf4, 0xbf, 0xfa, 0x52, 0xff, 0x5b, 0x2d, 0xfb, 0x5f, 0xf4, + 0xb7, 0x0a, 0x5e, 0x6f, 0x96, 0x53, 0xdf, 0x9c, 0x45, 0x7d, 0xb0, 0x94, 0xb9, 0x8e, 0xe3, 0x12, + 0x6c, 0x31, 0xf6, 0x61, 0x56, 0x15, 0x13, 0xa5, 0xcf, 0x71, 0x78, 0xf2, 0xb3, 0xc5, 0x31, 0x18, + 0x0a, 0xd0, 0x75, 0x52, 0xdd, 0xee, 0x1f, 0xe2, 0xf8, 0x74, 0xcd, 0x1f, 0x6c, 0xfa, 0x87, 0x0c, + 0x58, 0xf4, 0x73, 0xa4, 0xd6, 0x87, 0x76, 0xec, 0x0a, 0xc1, 0x75, 0x4f, 0x04, 0x60, 0x66, 0x99, + 0x90, 0x6d, 0x5b, 0x89, 0x8a, 0x4f, 0x7a, 0xfb, 0xf6, 0xf2, 0xf3, 0xd9, 0x86, 0x1c, 0x56, 0x88, + 0xd0, 0xc7, 0xe4, 0xda, 0xee, 0x74, 0x24, 0x32, 0x3e, 0x12, 0x4f, 0xdd, 0x80, 0xe4, 0xca, 0x41, + 0xe8, 0x29, 0xcd, 0x09, 0xe0, 0x05, 0x17, 0xb4, 0x60, 0xd7, 0x67, 0xc2, 0x9c, 0x29, 0x7d, 0x82, + 0x93, 0x99, 0xbf, 0x2b, 0x72, 0x58, 0x21, 0x12, 0xfd, 0xa5, 0x88, 0x02, 0xbc, 0xfa, 0x2d, 0x28, + 0xce, 0x13, 0xe9, 0x46, 0x99, 0x2a, 0x73, 0x04, 0xc4, 0x26, 0x13, 0xb9, 0xd0, 0xa7, 0xae, 0x06, + 0x54, 0xdc, 0xb8, 0xe4, 0x41, 0x36, 0x36, 0xcf, 0x78, 0x86, 0x41, 0x61, 0xd7, 0x10, 0xe9, 0x1f, + 0x0a, 0x9d, 0x8a, 0x04, 0x83, 0x02, 0x29, 0x98, 0x0f, 0xdc, 0xea, 0x60, 0xbb, 0x6f, 0x5f, 0xa6, + 0xca, 0x66, 0x00, 0xe4, 0x3f, 0x68, 0x67, 0x32, 0x85, 0x6f, 0x97, 0xba, 0x6d, 0xea, 0x1e, 0x42, + 0xbf, 0x44, 0x6e, 0xec, 0xc8, 0x1c, 0x06, 0x8d, 0xfd, 0xfd, 0xbd, 0x0f, 0x65, 0x92, 0x08, 0x6d, + 0x2f, 0xda, 0x60, 0x4b, 0x78, 0xf4, 0xc7, 0x80, 0x34, 0x0a, 0xc7, 0xc1, 0x71, 0x06, 0x63, 0xae, + 0x6d, 0xe0, 0x80, 0x51, 0xa4, 0xe0, 0xca, 0xdf, 0x9f, 0x2a, 0xc3, 0xf1, 0x5a, 0x8e, 0x00, 0xe9, + 0xbe, 0xd0, 0x52, 0x0d, 0x71, 0xae, 0x40, 0x0a, 0x66, 0x4c, 0x26, 0x78, 0x62, 0xe4, 0x44, 0xb0, + 0x69, 0x0a, 0x3f, 0x78, 0xbb, 0x45, 0x18, 0x86, 0xb7, 0x02, 0x42, 0x4b, 0x2b, 0xd6, 0xd2, 0x02, + 0x0a, 0x4f, 0xb7, 0x9d, 0x4d, 0x73, 0x1c, 0xb1, 0xed, 0x1a, 0xb0, 0x3d, 0x31, 0x71, 0xb3, 0x75, + 0x93, 0xd9, 0x75, 0x74, 0x86, 0x73, 0xdc, 0x73, 0x3b, 0x5d, 0x62, 0xd6, 0x96, 0xd9, 0x18, 0x5c, + 0x9a, 0x8d, 0x15, 0x3f, 0x1b, 0x6f, 0x93, 0xba, 0xd3, 0xc5, 0x0a, 0x82, 0x14, 0xbc, 0xf8, 0x53, + 0xc1, 0x8f, 0x91, 0x57, 0xb3, 0x3c, 0x0f, 0x89, 0x0e, 0xc9, 0x5b, 0x76, 0xe3, 0x83, 0xb1, 0x56, + 0xc6, 0x24, 0xe2, 0xbf, 0xd8, 0x9a, 0x92, 0x1a, 0xe3, 0x46, 0x14, 0x33, 0x1a, 0xac, 0xa3, 0x7f, + 0x54, 0xc9, 0x55, 0x3f, 0x15, 0xbc, 0xf3, 0x05, 0xff, 0xe6, 0x7c, 0x95, 0xc5, 0xf3, 0xd1, 0x2e, + 0xb9, 0xea, 0xbf, 0xc9, 0x25, 0x1d, 0xdd, 0x67, 0x63, 0xda, 0xcc, 0xa9, 0xd0, 0x43, 0xf2, 0x76, + 0x71, 0x3b, 0xe8, 0x46, 0x5b, 0x59, 0x8e, 0xb6, 0x6a, 0xd6, 0xd6, 0xff, 0x79, 0xb6, 0xe6, 0x5f, + 0x01, 0xad, 0x5d, 0xae, 0x4d, 0x9f, 0x93, 0xdb, 0x05, 0xe3, 0xb9, 0x96, 0x46, 0xcc, 0xec, 0xae, + 0x7c, 0x36, 0xbb, 0xaf, 0x51, 0xf7, 0x0d, 0xc3, 0x8e, 0xbd, 0xfd, 0xfe, 0x00, 0x0d, 0xd7, 0xdf, + 0xd0, 0xf0, 0xbc, 0x3a, 0xfd, 0x21, 0x79, 0x67, 0x6e, 0x4b, 0xcf, 0xf2, 0xea, 0x67, 0xb3, 0xfc, + 0x3a, 0xfd, 0xe8, 0x3d, 0xd2, 0x2c, 0x2b, 0xe4, 0xe5, 0x75, 0x26, 0xfa, 0x49, 0xf1, 0xad, 0xe2, + 0x17, 0x72, 0x90, 0xed, 0x26, 0x89, 0x3a, 0xc3, 0x8f, 0x62, 0x47, 0xfc, 0xcf, 0xbd, 0xe9, 0x36, + 0xa9, 0x77, 0x63, 0xfb, 0xff, 0x88, 0x9b, 0xcb, 0x90, 0x8a, 0x12, 0x8c, 0x4a, 0xac, 0x90, 0x30, + 0xc9, 0x6e, 0x27, 0x3c, 0xcf, 0xcb, 0x86, 0x5d, 0x90, 0x74, 0x8b, 0x90, 0xbe, 0x96, 0x4a, 0xbb, + 0xcf, 0x60, 0x37, 0x80, 0xde, 0x5d, 0x98, 0x45, 0xf4, 0x31, 0x8f, 0x05, 0x4a, 0x9d, 0x17, 0x43, + 0xdc, 0x4c, 0x2b, 0x7a, 0x4c, 0xe8, 0x72, 0x65, 0x87, 0xbe, 0xd9, 0xe7, 0x23, 0x91, 0x43, 0xb7, + 0x77, 0xfd, 0xb8, 0xa4, 0x67, 0x2f, 0xe7, 0xbe, 0x81, 0xf0, 0xe5, 0x76, 0xc9, 0xed, 0xcb, 0xf7, + 0x84, 0x77, 0x82, 0xe1, 0xa0, 0xe8, 0xeb, 0xb0, 0xb6, 0xf6, 0x91, 0x8f, 0xf9, 0x54, 0xd2, 0xd1, + 0x2f, 0x03, 0x7c, 0x80, 0x62, 0x0c, 0xbc, 0x47, 0xd6, 0x76, 0xc4, 0x31, 0x9f, 0x26, 0xa6, 0x1b, + 0x7b, 0x1f, 0x51, 0xf3, 0x20, 0x48, 0x75, 0x75, 0x3c, 0x96, 0x46, 0xc4, 0x66, 0xaa, 0x45, 0xf1, + 0x7d, 0x30, 0x0f, 0xc2, 0xe1, 0x1f, 0x27, 0x7c, 0x94, 0xe3, 0xa7, 0x82, 0x23, 0xe8, 0xd7, 0x48, + 0x03, 0x26, 0x34, 0x9e, 0x24, 0x39, 0x26, 0xdc, 0xdc, 0x5c, 0xea, 0x58, 0xc5, 0x47, 0x4a, 0x21, + 0x19, 0x49, 0x72, 0xdd, 0x3f, 0x67, 0x57, 0x8f, 0xc0, 0x7c, 0x2f, 0x1d, 0x8a, 0x17, 0x58, 0xe1, + 0x1d, 0x01, 0xe8, 0x47, 0xe5, 0x7c, 0x57, 0x63, 0x8e, 0x80, 0x37, 0xb0, 0x8b, 0x83, 0x33, 0x85, + 0x65, 0xa9, 0xa4, 0xe9, 0x35, 0x52, 0xd9, 0xcf, 0xf0, 0x4b, 0xba, 0xb2, 0x9f, 0x45, 0x3f, 0x2f, + 0xdf, 0xc4, 0x6d, 0x0e, 0x26, 0xed, 0xc4, 0x85, 0xdf, 0xce, 0x8e, 0x70, 0x21, 0x55, 0x76, 0x48, + 0x1b, 0x52, 0xf6, 0x6d, 0xee, 0x92, 0x86, 0xd0, 0x3a, 0x55, 0x5a, 0x60, 0xe9, 0xdd, 0xbd, 0xc2, + 0x4a, 0x84, 0x76, 0xbc, 0xff, 0x61, 0x5a, 0x0f, 0xde, 0x5e, 0x9e, 0xc8, 0xbb, 0xba, 0xf8, 0x84, + 0xb1, 0x82, 0x5b, 0x84, 0x34, 0x1e, 0x81, 0x32, 0x13, 0x26, 0xfa, 0x3a, 0x59, 0x9b, 0x9b, 0x7b, + 0xc1, 0x0f, 0x4f, 0x1f, 0x6e, 0xf3, 0x78, 0x2c, 0x06, 0xf1, 0x58, 0x4c, 0x78, 0xe1, 0xad, 0x39, + 0x70, 0xeb, 0xa7, 0xc1, 0xcb, 0x57, 0xed, 0x2b, 0x7f, 0x7e, 0xd5, 0xbe, 0xf2, 0xcf, 0x57, 0xed, + 0xe0, 0xc7, 0x17, 0xed, 0xe0, 0xd7, 0x17, 0xed, 0xe0, 0xb7, 0x17, 0xed, 0xe0, 0xf7, 0x17, 0xed, + 0xe0, 0xe5, 0x45, 0x3b, 0xf8, 0xd3, 0x45, 0x3b, 0xf8, 0xfb, 0x45, 0x3b, 0xf8, 0xf8, 0x93, 0x37, + 0xfc, 0x97, 0x53, 0xbb, 0xf6, 0xd7, 0x39, 0x95, 0xda, 0x78, 0xac, 0xec, 0x64, 0xd4, 0xe1, 0x23, + 0x91, 0x1a, 0xef, 0x1f, 0x50, 0xb8, 0xe9, 0x51, 0xdd, 0xd2, 0x0f, 0xff, 0x15, 0x00, 0x00, 0xff, + 0xff, 0x10, 0x2c, 0x26, 0x0c, 0x4e, 0x15, 0x00, 0x00, } func (this *Spec) Equal(that interface{}) bool { diff --git a/src/runtime/virtcontainers/pkg/agent/protocols/grpc/ocipb_test.go b/src/runtime/virtcontainers/pkg/agent/protocols/grpc/ocipb_test.go index cc77e847a..1b3aea9f2 100644 --- a/src/runtime/virtcontainers/pkg/agent/protocols/grpc/ocipb_test.go +++ b/src/runtime/virtcontainers/pkg/agent/protocols/grpc/ocipb_test.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: github.com/kata-containers/kata-containers/src/agent/protocols/protos/oci.proto +// source: github.com/kata-containers/kata-containers/src/libs/protocols/protos/oci.proto package grpc diff --git a/src/runtime/virtcontainers/pkg/agent/protocols/types.pb.go b/src/runtime/virtcontainers/pkg/agent/protocols/types.pb.go index 326f21be2..f4dd26cfb 100644 --- a/src/runtime/virtcontainers/pkg/agent/protocols/types.pb.go +++ b/src/runtime/virtcontainers/pkg/agent/protocols/types.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: github.com/kata-containers/kata-containers/src/agent/protocols/protos/types.proto +// source: github.com/kata-containers/kata-containers/src/libs/protocols/protos/types.proto package protocols @@ -46,7 +46,7 @@ func (x IPFamily) String() string { } func (IPFamily) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_b0c68e5b9fabcd81, []int{0} + return fileDescriptor_f715d0876e8f65d3, []int{0} } type IPAddress struct { @@ -61,7 +61,7 @@ type IPAddress struct { func (m *IPAddress) Reset() { *m = IPAddress{} } func (*IPAddress) ProtoMessage() {} func (*IPAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_b0c68e5b9fabcd81, []int{0} + return fileDescriptor_f715d0876e8f65d3, []int{0} } func (m *IPAddress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -112,7 +112,7 @@ type Interface struct { func (m *Interface) Reset() { *m = Interface{} } func (*Interface) ProtoMessage() {} func (*Interface) Descriptor() ([]byte, []int) { - return fileDescriptor_b0c68e5b9fabcd81, []int{1} + return fileDescriptor_f715d0876e8f65d3, []int{1} } func (m *Interface) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -156,7 +156,7 @@ type Route struct { func (m *Route) Reset() { *m = Route{} } func (*Route) ProtoMessage() {} func (*Route) Descriptor() ([]byte, []int) { - return fileDescriptor_b0c68e5b9fabcd81, []int{2} + return fileDescriptor_f715d0876e8f65d3, []int{2} } func (m *Route) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -199,7 +199,7 @@ type ARPNeighbor struct { func (m *ARPNeighbor) Reset() { *m = ARPNeighbor{} } func (*ARPNeighbor) ProtoMessage() {} func (*ARPNeighbor) Descriptor() ([]byte, []int) { - return fileDescriptor_b0c68e5b9fabcd81, []int{3} + return fileDescriptor_f715d0876e8f65d3, []int{3} } func (m *ARPNeighbor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -237,41 +237,42 @@ func init() { } func init() { - proto.RegisterFile("github.com/kata-containers/kata-containers/src/agent/protocols/protos/types.proto", fileDescriptor_b0c68e5b9fabcd81) + proto.RegisterFile("github.com/kata-containers/kata-containers/src/libs/protocols/protos/types.proto", fileDescriptor_f715d0876e8f65d3) } -var fileDescriptor_b0c68e5b9fabcd81 = []byte{ - // 479 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0x31, 0x8f, 0xd3, 0x30, - 0x18, 0x86, 0xeb, 0xa6, 0xc9, 0x35, 0xae, 0x0e, 0x2a, 0x0b, 0x9d, 0x2c, 0x90, 0xa2, 0xa8, 0x0b, - 0x11, 0x12, 0x8d, 0x54, 0x10, 0xfb, 0x31, 0x9c, 0xd4, 0x05, 0x15, 0x6f, 0xb0, 0x20, 0xd7, 0x75, - 0xd3, 0xa8, 0x49, 0x1c, 0xd9, 0x4e, 0xab, 0x6e, 0xfc, 0x11, 0x36, 0x7e, 0xcc, 0x8d, 0x8c, 0x8c, - 0x77, 0xfd, 0x25, 0xc8, 0x76, 0x5a, 0x85, 0x82, 0x90, 0x98, 0xfa, 0x3d, 0x9f, 0xed, 0x7e, 0xef, - 0xfb, 0x3a, 0x86, 0x1f, 0xb3, 0x5c, 0x6f, 0x9a, 0xe5, 0x94, 0x89, 0x32, 0xdd, 0x52, 0x4d, 0x5f, - 0x33, 0x51, 0x69, 0x9a, 0x57, 0x5c, 0xaa, 0x3f, 0x58, 0x49, 0x96, 0xd2, 0x8c, 0x57, 0x3a, 0xad, - 0xa5, 0xd0, 0x82, 0x89, 0x42, 0xb9, 0x4a, 0xa5, 0xfa, 0x50, 0x73, 0x35, 0xb5, 0x80, 0x7c, 0x0b, - 0x93, 0x25, 0x0c, 0xe7, 0x8b, 0xdb, 0xd5, 0x4a, 0x72, 0xa5, 0xd0, 0x4b, 0x18, 0xac, 0x69, 0x99, - 0x17, 0x07, 0x0c, 0x62, 0x90, 0x3c, 0x99, 0x3d, 0x9d, 0xba, 0x13, 0xf3, 0xc5, 0x9d, 0x6d, 0x93, - 0x76, 0x19, 0x61, 0x78, 0x45, 0xdd, 0x19, 0xdc, 0x8f, 0x41, 0x12, 0x92, 0x13, 0x22, 0x04, 0x07, - 0x25, 0x55, 0x5b, 0xec, 0xd9, 0xb6, 0xad, 0x27, 0x0f, 0x00, 0x86, 0xf3, 0x4a, 0x73, 0xb9, 0xa6, - 0x8c, 0xa3, 0x1b, 0x18, 0xac, 0xf8, 0x2e, 0x67, 0xdc, 0x0e, 0x09, 0x49, 0x4b, 0xe6, 0x64, 0x45, - 0x4b, 0xde, 0xfe, 0xa1, 0xad, 0xd1, 0x0c, 0x8e, 0xce, 0xea, 0xb8, 0xc2, 0x5e, 0xec, 0x25, 0xa3, - 0xd9, 0xf8, 0xac, 0xaa, 0x5d, 0x21, 0xdd, 0x4d, 0x68, 0x0c, 0xbd, 0x52, 0x37, 0x78, 0x10, 0x83, - 0x64, 0x40, 0x4c, 0x69, 0x26, 0x6e, 0xf6, 0x66, 0x03, 0xf6, 0xdd, 0x44, 0x47, 0xc6, 0x45, 0xcd, - 0xf2, 0x05, 0xd5, 0x1b, 0x1c, 0x38, 0x17, 0x2d, 0x1a, 0x2d, 0x66, 0x06, 0xbe, 0x72, 0x5a, 0x4c, - 0x8d, 0x5e, 0xc0, 0x50, 0xd2, 0xfd, 0x97, 0x75, 0x41, 0x33, 0x85, 0x87, 0x31, 0x48, 0xae, 0xc9, - 0x50, 0xd2, 0xfd, 0x9d, 0xe1, 0xc9, 0x77, 0x00, 0x7d, 0x22, 0x1a, 0x6d, 0x6d, 0xac, 0xb8, 0xd2, - 0xad, 0x39, 0x5b, 0x9b, 0x41, 0x19, 0xd5, 0x7c, 0x4f, 0x0f, 0xa7, 0xb8, 0x5a, 0xec, 0x84, 0xe1, - 0xfd, 0x16, 0xc6, 0x0d, 0x0c, 0x94, 0x68, 0x24, 0xe3, 0xd6, 0x47, 0x48, 0x5a, 0x42, 0xcf, 0xa0, - 0xaf, 0x98, 0xa8, 0xb9, 0x75, 0x72, 0x4d, 0x1c, 0x74, 0xee, 0x2d, 0xf8, 0xe7, 0xbd, 0x4d, 0xbe, - 0x01, 0x38, 0xba, 0x25, 0x8b, 0x0f, 0x3c, 0xcf, 0x36, 0x4b, 0x21, 0x4d, 0xbe, 0x5a, 0x9c, 0xc3, - 0xb3, 0x9a, 0xff, 0x9a, 0x6f, 0x67, 0x53, 0x47, 0x72, 0xff, 0x52, 0x72, 0x51, 0x98, 0xcf, 0xe0, - 0x64, 0xc5, 0x91, 0x95, 0xac, 0xa9, 0x76, 0x4e, 0x7c, 0xe2, 0xc0, 0x74, 0x5d, 0x92, 0xbe, 0xeb, - 0x5a, 0x78, 0xf5, 0x1c, 0x0e, 0x4f, 0x9a, 0x51, 0x00, 0xfb, 0xbb, 0xb7, 0xe3, 0x9e, 0xfd, 0x7d, - 0x37, 0x06, 0xef, 0xd5, 0xfd, 0x63, 0xd4, 0xfb, 0xf9, 0x18, 0xf5, 0xbe, 0x1e, 0x23, 0x70, 0x7f, - 0x8c, 0xc0, 0x8f, 0x63, 0x04, 0x1e, 0x8e, 0x11, 0xf8, 0xfc, 0xe9, 0x3f, 0x5f, 0x87, 0x6c, 0x2a, - 0x9d, 0x97, 0x3c, 0xdd, 0xe5, 0x52, 0x77, 0x96, 0xea, 0x6d, 0x76, 0xf9, 0x70, 0x96, 0x81, 0x2d, - 0xdf, 0xfc, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x21, 0x00, 0xa1, 0xc2, 0x81, 0x03, 0x00, 0x00, +var fileDescriptor_f715d0876e8f65d3 = []byte{ + // 482 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0x3f, 0x8b, 0xdb, 0x30, + 0x18, 0xc6, 0xa3, 0x38, 0xf6, 0xc5, 0x0a, 0xd7, 0x06, 0x51, 0x0e, 0xd1, 0x82, 0x31, 0x59, 0x6a, + 0x0a, 0x8d, 0x21, 0x2d, 0xdd, 0xaf, 0xc3, 0x41, 0x96, 0x62, 0xb4, 0xb5, 0x4b, 0x91, 0x1d, 0xc5, + 0x31, 0xb1, 0x2d, 0x23, 0xc9, 0x09, 0xd9, 0xfa, 0x45, 0xba, 0xf5, 0xc3, 0xdc, 0xd8, 0xb1, 0xe3, + 0x25, 0x9f, 0xa4, 0x48, 0x72, 0x52, 0xf7, 0x0f, 0x85, 0x9b, 0xf2, 0xfe, 0x5e, 0x49, 0x79, 0x9f, + 0xe7, 0x91, 0x05, 0x93, 0xbc, 0x50, 0x9b, 0x36, 0x9d, 0x67, 0xbc, 0x8a, 0xb7, 0x54, 0xd1, 0xd7, + 0x19, 0xaf, 0x15, 0x2d, 0x6a, 0x26, 0xe4, 0x5f, 0x2c, 0x45, 0x16, 0x97, 0x45, 0x2a, 0xe3, 0x46, + 0x70, 0xc5, 0x33, 0x5e, 0x76, 0x95, 0x8c, 0xd5, 0xa1, 0x61, 0x72, 0x6e, 0x00, 0xb9, 0x06, 0x66, + 0x29, 0xf4, 0x97, 0xc9, 0xed, 0x6a, 0x25, 0x98, 0x94, 0xe8, 0x25, 0xf4, 0xd6, 0xb4, 0x2a, 0xca, + 0x03, 0x06, 0x21, 0x88, 0x9e, 0x2c, 0x9e, 0xce, 0xed, 0x89, 0x65, 0x72, 0x67, 0xda, 0xa4, 0x5b, + 0x46, 0x18, 0x5e, 0x51, 0x7b, 0x06, 0x0f, 0x43, 0x10, 0xf9, 0xe4, 0x8c, 0x08, 0xc1, 0x51, 0x45, + 0xe5, 0x16, 0x3b, 0xa6, 0x6d, 0xea, 0xd9, 0x03, 0x80, 0xfe, 0xb2, 0x56, 0x4c, 0xac, 0x69, 0xc6, + 0xd0, 0x0d, 0xf4, 0x56, 0x6c, 0x57, 0x64, 0xcc, 0x0c, 0xf1, 0x49, 0x47, 0xfa, 0x64, 0x4d, 0x2b, + 0xd6, 0xfd, 0xa1, 0xa9, 0xd1, 0x02, 0x4e, 0x2e, 0xea, 0x98, 0xc4, 0x4e, 0xe8, 0x44, 0x93, 0xc5, + 0xf4, 0xa2, 0xaa, 0x5b, 0x21, 0xfd, 0x4d, 0x68, 0x0a, 0x9d, 0x4a, 0xb5, 0x78, 0x14, 0x82, 0x68, + 0x44, 0x74, 0xa9, 0x27, 0x6e, 0xf6, 0x7a, 0x03, 0x76, 0xed, 0x44, 0x4b, 0xda, 0x45, 0x93, 0x15, + 0x09, 0x55, 0x1b, 0xec, 0x59, 0x17, 0x1d, 0x6a, 0x2d, 0x7a, 0x06, 0xbe, 0xb2, 0x5a, 0x74, 0x8d, + 0x5e, 0x40, 0x5f, 0xd0, 0xfd, 0xe7, 0x75, 0x49, 0x73, 0x89, 0xc7, 0x21, 0x88, 0xae, 0xc9, 0x58, + 0xd0, 0xfd, 0x9d, 0xe6, 0xd9, 0x37, 0x00, 0x5d, 0xc2, 0x5b, 0x65, 0x6c, 0xac, 0x98, 0x54, 0x9d, + 0x39, 0x53, 0xeb, 0x41, 0x39, 0x55, 0x6c, 0x4f, 0x0f, 0xe7, 0xb8, 0x3a, 0xec, 0x85, 0xe1, 0xfc, + 0x16, 0xc6, 0x0d, 0xf4, 0x24, 0x6f, 0x45, 0xc6, 0x8c, 0x0f, 0x9f, 0x74, 0x84, 0x9e, 0x41, 0x57, + 0x66, 0xbc, 0x61, 0xc6, 0xc9, 0x35, 0xb1, 0xd0, 0xbb, 0x37, 0xef, 0xbf, 0xf7, 0x36, 0xfb, 0x0a, + 0xe0, 0xe4, 0x96, 0x24, 0x1f, 0x58, 0x91, 0x6f, 0x52, 0x2e, 0x74, 0xbe, 0x8a, 0x5f, 0xc2, 0x33, + 0x9a, 0xff, 0x99, 0x6f, 0x6f, 0x53, 0x4f, 0xf2, 0xf0, 0x4f, 0xc9, 0x65, 0xa9, 0x3f, 0x83, 0xb3, + 0x15, 0x4b, 0x46, 0xb2, 0xa2, 0xca, 0x3a, 0x71, 0x89, 0x05, 0xdd, 0xb5, 0x49, 0xba, 0xb6, 0x6b, + 0xe0, 0xd5, 0x73, 0x38, 0x3e, 0x6b, 0x46, 0x1e, 0x1c, 0xee, 0xde, 0x4e, 0x07, 0xe6, 0xf7, 0xdd, + 0x14, 0xbc, 0x97, 0xf7, 0xc7, 0x60, 0xf0, 0xe3, 0x18, 0x0c, 0xbe, 0x9c, 0x02, 0x70, 0x7f, 0x0a, + 0xc0, 0xf7, 0x53, 0x00, 0x1e, 0x4e, 0x01, 0xf8, 0xf4, 0xf1, 0x91, 0x8f, 0x43, 0xb4, 0xb5, 0x2a, + 0x2a, 0x16, 0xef, 0x0a, 0xa1, 0x7a, 0x4b, 0xcd, 0x36, 0x8f, 0x69, 0xce, 0x6a, 0xf5, 0xeb, 0xe1, + 0xa4, 0x9e, 0x29, 0xdf, 0xfc, 0x0c, 0x00, 0x00, 0xff, 0xff, 0xae, 0x92, 0x74, 0xed, 0x80, 0x03, + 0x00, 0x00, } func (m *IPAddress) Marshal() (dAtA []byte, err error) { From 7f546748345391646e30c7e0dc3fda9eb72db55b Mon Sep 17 00:00:00 2001 From: "James O. D. Hunt" Date: Tue, 11 Jan 2022 09:22:58 +0000 Subject: [PATCH 283/385] CI: Revert "CI: Switch to a mirror as gnu.org is down" This reverts commit 321995b7df787ee18e46d660ccf0d3862831d439. Now that gnu.org is back online, we don't need to use a mirror. Fixes: #3313. Signed-off-by: James O. D. Hunt --- ci/install_libseccomp.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ci/install_libseccomp.sh b/ci/install_libseccomp.sh index a88561f2a..c8f802ebd 100755 --- a/ci/install_libseccomp.sh +++ b/ci/install_libseccomp.sh @@ -41,8 +41,7 @@ cflags="-O2" # gperf_version=$(get_version "externals.gperf.version") # gperf_url=$(get_version "externals.gperf.url") gperf_version="3.1" -# XXX: gnu.org currently unavailable - see https://github.com/kata-containers/kata-containers/issues/3314 -gperf_url="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/gperf" +gperf_url="https://ftp.gnu.org/gnu/gperf" gperf_tarball="gperf-${gperf_version}.tar.gz" gperf_tarball_url="${gperf_url}/${gperf_tarball}" From b133a2368a3b7f5b63dae351da439860f7d4aac8 Mon Sep 17 00:00:00 2001 From: yangfeiyu Date: Tue, 11 Jan 2022 15:49:31 +0800 Subject: [PATCH 284/385] runtime: it should rollback when failed in Sandbox AddInterface When Sandbox AddInterface() is called, it may fail after endpoint.HotAttach, we'd better rollback and call save() in the end. Fixes: #3419 Signed-off-by: yangfeiyu --- src/runtime/virtcontainers/sandbox.go | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/runtime/virtcontainers/sandbox.go b/src/runtime/virtcontainers/sandbox.go index cbf1d7b47..3574d28ea 100644 --- a/src/runtime/virtcontainers/sandbox.go +++ b/src/runtime/virtcontainers/sandbox.go @@ -869,15 +869,28 @@ func (s *Sandbox) AddInterface(ctx context.Context, inf *pbTypes.Interface) (*pb return nil, err } - // Update the sandbox storage - s.networkNS.Endpoints = append(s.networkNS.Endpoints, endpoint) - if err := s.Save(); err != nil { - return nil, err - } + defer func() { + if err != nil { + if errDetach := endpoint.HotDetach(ctx, s.hypervisor, s.networkNS.NetNsCreated, s.networkNS.NetNsPath); errDetach != nil { + s.Logger().WithField("endpoint-type", endpoint.Type()).WithError(errDetach).Error("rollback hot attaching endpoint failed") + } + } + }() // Add network for vm inf.PciPath = endpoint.PciPath().String() - return s.agent.updateInterface(ctx, inf) + result, err := s.agent.updateInterface(ctx, inf) + if err != nil { + return nil, err + } + + // Update the sandbox storage + s.networkNS.Endpoints = append(s.networkNS.Endpoints, endpoint) + if err = s.Save(); err != nil { + return nil, err + } + + return result, nil } // RemoveInterface removes a nic of the sandbox. From 106df33ff86efa8204ee621dafa498efa467f2de Mon Sep 17 00:00:00 2001 From: bin Date: Tue, 11 Jan 2022 19:29:27 +0800 Subject: [PATCH 285/385] libs: add some generated files to .gitignore Generated protocols files should not be inclued in Git repo. And also add Cargo.lock in oci/protocols directory to .gitignore. Fixes: #3422 Signed-off-by: bin --- src/libs/oci/.gitignore | 1 + src/libs/protocols/.gitignore | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 src/libs/oci/.gitignore create mode 100644 src/libs/protocols/.gitignore diff --git a/src/libs/oci/.gitignore b/src/libs/oci/.gitignore new file mode 100644 index 000000000..03314f77b --- /dev/null +++ b/src/libs/oci/.gitignore @@ -0,0 +1 @@ +Cargo.lock diff --git a/src/libs/protocols/.gitignore b/src/libs/protocols/.gitignore new file mode 100644 index 000000000..fe772076e --- /dev/null +++ b/src/libs/protocols/.gitignore @@ -0,0 +1,8 @@ +Cargo.lock +src/agent.rs +src/agent_ttrpc.rs +src/empty.rs +src/health.rs +src/health_ttrpc.rs +src/oci.rs +src/types.rs From 85f5ae190ec02bfda852d6e1fc9c05af84d421f1 Mon Sep 17 00:00:00 2001 From: bin Date: Tue, 11 Jan 2022 19:45:41 +0800 Subject: [PATCH 286/385] runtime: close span before return from function in case of error Return before closing span will cause invalid spans, so span should be closed before function return. Fixes: #3424 Signed-off-by: bin --- src/runtime/virtcontainers/container.go | 57 +++++++++++++++---------- 1 file changed, 34 insertions(+), 23 deletions(-) diff --git a/src/runtime/virtcontainers/container.go b/src/runtime/virtcontainers/container.go index 5c855b042..41954d67c 100644 --- a/src/runtime/virtcontainers/container.go +++ b/src/runtime/virtcontainers/container.go @@ -606,33 +606,44 @@ func (c *Container) unmountHostMounts(ctx context.Context) error { span, ctx := katatrace.Trace(ctx, c.Logger(), "unmountHostMounts", containerTracingTags, map[string]string{"container_id": c.id}) defer span.End() + unmountFunc := func(m Mount) (err error) { + span, _ := katatrace.Trace(ctx, c.Logger(), "unmount", containerTracingTags, map[string]string{"container_id": c.id, "host-path": m.HostPath}) + defer func() { + if err != nil { + katatrace.AddTags(span, "error", err) + } + span.End() + }() + + if err = syscall.Unmount(m.HostPath, syscall.MNT_DETACH|UmountNoFollow); err != nil { + c.Logger().WithFields(logrus.Fields{ + "host-path": m.HostPath, + "error": err, + }).Warn("Could not umount") + return err + } + + if m.Type == "bind" { + s, err := os.Stat(m.HostPath) + if err != nil { + return errors.Wrapf(err, "Could not stat host-path %v", m.HostPath) + } + // Remove the empty file or directory + if s.Mode().IsRegular() && s.Size() == 0 { + os.Remove(m.HostPath) + } + if s.Mode().IsDir() { + syscall.Rmdir(m.HostPath) + } + } + return nil + } + for _, m := range c.mounts { if m.HostPath != "" { - span, _ := katatrace.Trace(ctx, c.Logger(), "unmount", containerTracingTags, map[string]string{"container_id": c.id, "host-path": m.HostPath}) - - if err := syscall.Unmount(m.HostPath, syscall.MNT_DETACH|UmountNoFollow); err != nil { - c.Logger().WithFields(logrus.Fields{ - "host-path": m.HostPath, - "error": err, - }).Warn("Could not umount") + if err := unmountFunc(m); err != nil { return err } - - if m.Type == "bind" { - s, err := os.Stat(m.HostPath) - if err != nil { - return errors.Wrapf(err, "Could not stat host-path %v", m.HostPath) - } - // Remove the empty file or directory - if s.Mode().IsRegular() && s.Size() == 0 { - os.Remove(m.HostPath) - } - if s.Mode().IsDir() { - syscall.Rmdir(m.HostPath) - } - } - - span.End() } } From 7e2bc4d764cdf7955c582a03fb672e9ef48ac325 Mon Sep 17 00:00:00 2001 From: Gabriela Cervantes Date: Tue, 11 Jan 2022 15:35:07 +0000 Subject: [PATCH 287/385] packaging: Remove ccloudvm instructions and script This PR removes ccloudvm for kata 2.0, ccloudvm was used in kata 1.x and we are not longer using it for kata 2.0. Fixes #3427 Signed-off-by: Gabriela Cervantes --- tools/packaging/ccloudvm/README.md | 22 ---------- .../ccloudvm/kata-docker-xenial.yaml | 40 ------------------- 2 files changed, 62 deletions(-) delete mode 100644 tools/packaging/ccloudvm/README.md delete mode 100644 tools/packaging/ccloudvm/kata-docker-xenial.yaml diff --git a/tools/packaging/ccloudvm/README.md b/tools/packaging/ccloudvm/README.md deleted file mode 100644 index e438eea9a..000000000 --- a/tools/packaging/ccloudvm/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# Test Kata using ccloudvm - -The [ccloudvm](https://github.com/intel/ccloudvm/) tool is a command -to create development and demo environments. The tool sets up these development -environments inside a virtual machine. - -## How to use Kata workloads for `ccloudvm` - -- Follow the `ccloudvm` [install instructions](https://github.com/intel/ccloudvm/#introduction) - -### Create Docker\* and Kata Containers virtualized environment - -Create a virtual machine with Docker and Kata containers. - -```bash -$ ccloudvm create --name YOUR_VM_NAME $PWD/kata-docker-xenial.yaml -$ ccloudvm connect YOUR_VM_NAME -``` - -You are ready to use Kata with docker in a virtualized environment. - -See `ccloudvm` [documentation](https://github.com/intel/ccloudvm/#configurable-cloud-vm-ccloudvm) for advanced usage. diff --git a/tools/packaging/ccloudvm/kata-docker-xenial.yaml b/tools/packaging/ccloudvm/kata-docker-xenial.yaml deleted file mode 100644 index 5df84e1ff..000000000 --- a/tools/packaging/ccloudvm/kata-docker-xenial.yaml +++ /dev/null @@ -1,40 +0,0 @@ ---- -inherits: docker-xenial -vm: - mem_mib: 8000 - cpus: 8 -# Share GOPATH with VM -{{with .GoPath}} - mounts: - - tag: hostgo - security_model: passthrough - path: {{.}} -{{end}} -... ---- -#Export GOPATH -{{ define "GOPATH" }}{{with .GoPath}}{{$.MountPath "hostgo"}}{{else}}/home/{{.User}}/go{{end}}{{end}} -{{- define "ENV" -}} -{{proxyVars .}} -{{- print " DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true " -}} -{{end}} -#cloud-config -write_files: -# Add kata as default runtime - - content: | - [Service] - ExecStart= - ExecStart=/usr/bin/dockerd -D --add-runtime kata-runtime=/usr/bin/kata-runtime - path: /etc/systemd/system/docker.service.d/kata-containers.conf - -runcmd: - - - {{beginTask . "Install kata"}} - - ARCH=$(uname -m) - - sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/katacontainers:/releases:/${ARCH}:/master/xUbuntu_$(lsb_release -rs)/ /' > /etc/apt/sources.list.d/kata-containers.list" - - {{proxyVars .}} curl -sL http://download.opensuse.org/repositories/home:/katacontainers:/releases:/${ARCH}:/master/xUbuntu_$(lsb_release -rs)/Release.key | sudo apt-key add - - - sudo -E apt-get update - - sudo -E apt-get --no-install-recommends install -y apt-utils ca-certificates kata-runtime - - {{endTaskCheck .}} - -... From ac7acbf87bd91cfb100a13b0f1688aa485f47b2e Mon Sep 17 00:00:00 2001 From: Snir Sheriber Date: Wed, 12 Jan 2022 10:12:41 +0200 Subject: [PATCH 288/385] kata-deploy: validate conf file can be created As containerd doesn't exist at cleanup Fixes: #3429 Signed-off-by: Snir Sheriber --- tools/packaging/kata-deploy/scripts/kata-deploy.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/packaging/kata-deploy/scripts/kata-deploy.sh b/tools/packaging/kata-deploy/scripts/kata-deploy.sh index 0d0afcece..30e607a10 100755 --- a/tools/packaging/kata-deploy/scripts/kata-deploy.sh +++ b/tools/packaging/kata-deploy/scripts/kata-deploy.sh @@ -268,7 +268,8 @@ function main() { containerd_conf_file_backup="${containerd_conf_file}.bak" else # runtime == containerd - if [ ! -f "$containerd_conf_file" ]; then + if [ ! -f "$containerd_conf_file" ] && [ -d $(dirname "$containerd_conf_file") ] && \ + [ -x $(command -v containerd) ]; then containerd config default > "$containerd_conf_file" fi fi From 878ab93c15c48847b12eb9c0f13ad25644fc7e67 Mon Sep 17 00:00:00 2001 From: liangxianlong Date: Thu, 13 Jan 2022 14:48:10 +0800 Subject: [PATCH 289/385] runtime: Provide protection for shared data The k.reqHandlers should be protected by locks when used Fixes #3440 Signed-off-by: liangxianlong --- src/runtime/virtcontainers/kata_agent.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/runtime/virtcontainers/kata_agent.go b/src/runtime/virtcontainers/kata_agent.go index 0c3135028..aa1d4968f 100644 --- a/src/runtime/virtcontainers/kata_agent.go +++ b/src/runtime/virtcontainers/kata_agent.go @@ -2044,10 +2044,20 @@ func (k *kataAgent) sendReq(spanCtx context.Context, request interface{}) (inter } msgName := proto.MessageName(request.(proto.Message)) + + k.Lock() + + if k.reqHandlers == nil { + return nil, errors.New("Client has already disconnected") + } + handler := k.reqHandlers[msgName] if msgName == "" || handler == nil { return nil, errors.New("Invalid request type") } + + k.Unlock() + message := request.(proto.Message) ctx, cancel := k.getReqContext(spanCtx, msgName) if cancel != nil { From 01005c5a9caa28f77641f81c2f80bdc72c8c5cf9 Mon Sep 17 00:00:00 2001 From: Gabriela Cervantes Date: Thu, 13 Jan 2022 18:22:26 +0000 Subject: [PATCH 290/385] docs: Remove ccloudvm reference This PR removes the ccloudvm reference at the README document as the setup of scripts of ccloudvm were removed. Fixes #3448 Signed-off-by: Gabriela Cervantes --- tools/packaging/README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tools/packaging/README.md b/tools/packaging/README.md index 049c6db6c..66cf59d75 100644 --- a/tools/packaging/README.md +++ b/tools/packaging/README.md @@ -28,10 +28,6 @@ See [the kernel documentation](kernel). See [the QEMU documentation](qemu). -## Test Kata using ccloudvm - -See [the ccloudvm documentation](ccloudvm). - ## Create a Kata Containers release See [the release documentation](release). From 06fae29f498e98547220907a9f58cf1c5be147a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Tue, 21 Dec 2021 15:48:36 +0100 Subject: [PATCH 291/385] osbuilder: Remove centos rootfs-builder MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As the centos rootfs is not tested in our CI, we can't guarantee it actually works as expected. Whenever we have someone willing to maintain the rootfs we can have it added back, and also add a CI job to test it altogether, avoiding then any possible regression. Fixes: #2140 Signed-off-by: Fabiano Fidêncio --- tools/osbuilder/Makefile | 2 +- tools/osbuilder/README.md | 16 ++++---- tools/osbuilder/dockerfiles/QAT/README.md | 1 - .../rootfs-builder/centos/Dockerfile.in | 40 ------------------- .../osbuilder/rootfs-builder/centos/config.sh | 38 ------------------ .../rootfs-builder/centos/config_aarch64.sh | 18 --------- .../rootfs-builder/centos/config_ppc64le.sh | 18 --------- versions.yaml | 2 +- 8 files changed, 10 insertions(+), 125 deletions(-) delete mode 100644 tools/osbuilder/rootfs-builder/centos/Dockerfile.in delete mode 100644 tools/osbuilder/rootfs-builder/centos/config.sh delete mode 100644 tools/osbuilder/rootfs-builder/centos/config_aarch64.sh delete mode 100644 tools/osbuilder/rootfs-builder/centos/config_ppc64le.sh diff --git a/tools/osbuilder/Makefile b/tools/osbuilder/Makefile index 7f0addf8f..25effc967 100644 --- a/tools/osbuilder/Makefile +++ b/tools/osbuilder/Makefile @@ -9,7 +9,7 @@ ROOTFS_BUILDER := $(MK_DIR)/rootfs-builder/rootfs.sh INITRD_BUILDER := $(MK_DIR)/initrd-builder/initrd_builder.sh IMAGE_BUILDER := $(MK_DIR)/image-builder/image_builder.sh -DISTRO ?= centos +DISTRO ?= ubuntu BUILD_METHOD := distro BUILD_METHOD_LIST := distro dracut AGENT_INIT ?= no diff --git a/tools/osbuilder/README.md b/tools/osbuilder/README.md index 7890b72e4..cf8c02cef 100644 --- a/tools/osbuilder/README.md +++ b/tools/osbuilder/README.md @@ -80,8 +80,8 @@ filesystem components to generate an initrd. 3. When generating an image, the initrd is extracted to obtain the base rootfs for the image. -CentOS is the default distro for building the rootfs, to use a different one, you can set `DISTRO=`. -For example `make USE_DOCKER=true DISTRO=ubuntu rootfs` will make Ubuntu rootfs using Docker. +Ubuntu is the default distro for building the rootfs, to use a different one, you can set `DISTRO=alpine|clearlinux|debian|ubuntu`. +For example `make USE_DOCKER=true DISTRO=alpine rootfs` will make an Alpine rootfs using Docker. ### Rootfs creation @@ -209,9 +209,9 @@ of the the osbuilder distributions. > Note: this table is not relevant for the dracut build method, since it supports any Linux distribution and architecture where dracut is available. -| |Alpine |CentOS |Clear Linux |Debian/Ubuntu |Fedora |openSUSE | -|-- |-- |-- |-- |-- |-- |-- | -|**ARM64** |:heavy_check_mark:|:heavy_check_mark:| | |:heavy_check_mark:|:heavy_check_mark:| -|**PPC64le**|:heavy_check_mark:|:heavy_check_mark:| |:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:| -|**s390x** | | | |:heavy_check_mark:|:heavy_check_mark:| | -|**x86_64** |:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:| +| |Alpine |Clear Linux |Debian/Ubuntu |Fedora |openSUSE | +|-- |-- |-- |-- |-- |-- | +|**ARM64** |:heavy_check_mark:| | |:heavy_check_mark:|:heavy_check_mark:| +|**PPC64le**|:heavy_check_mark:| |:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:| +|**s390x** | | |:heavy_check_mark:|:heavy_check_mark:| | +|**x86_64** |:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:| diff --git a/tools/osbuilder/dockerfiles/QAT/README.md b/tools/osbuilder/dockerfiles/QAT/README.md index 370eceb5e..ccc96a5e4 100644 --- a/tools/osbuilder/dockerfiles/QAT/README.md +++ b/tools/osbuilder/dockerfiles/QAT/README.md @@ -8,7 +8,6 @@ To properly load the driver modules, systemd init must be used. It is not adequa to use the agent as the init. Because of this, alpine is not a valid base OS image to use. The following rootfs OS's have been tested with this Dockerfile. -* CentOS * Clear Linux * Fedora * SUSE diff --git a/tools/osbuilder/rootfs-builder/centos/Dockerfile.in b/tools/osbuilder/rootfs-builder/centos/Dockerfile.in deleted file mode 100644 index d05436e2a..000000000 --- a/tools/osbuilder/rootfs-builder/centos/Dockerfile.in +++ /dev/null @@ -1,40 +0,0 @@ -# -# Copyright (c) 2018 Intel Corporation -# -# SPDX-License-Identifier: Apache-2.0 - -ARG IMAGE_REGISTRY=registry.centos.org -FROM ${IMAGE_REGISTRY}/centos:@OS_VERSION@ - -@SET_PROXY@ - -RUN yum -y update && yum install -y \ - autoconf \ - automake \ - binutils \ - chrony \ - coreutils \ - curl \ - gcc \ - gcc-c++ \ - git \ - glibc-common \ - glibc-devel \ - glibc-headers \ - glibc-static \ - glibc-utils \ - libseccomp \ - libseccomp-devel \ - libstdc++-devel \ - libstdc++-static \ - m4 \ - make \ - sed \ - tar \ - vim \ - which && \ - yum clean all - -# This will install the proper packages to build Kata components -@INSTALL_MUSL@ -@INSTALL_RUST@ diff --git a/tools/osbuilder/rootfs-builder/centos/config.sh b/tools/osbuilder/rootfs-builder/centos/config.sh deleted file mode 100644 index b0918614a..000000000 --- a/tools/osbuilder/rootfs-builder/centos/config.sh +++ /dev/null @@ -1,38 +0,0 @@ -# -# Copyright (c) 2018 Intel Corporation -# -# SPDX-License-Identifier: Apache-2.0 - -OS_NAME="Centos" - -OS_VERSION=${OS_VERSION:-7} - -LOG_FILE="/var/log/yum-centos.log" - -MIRROR_LIST="http://mirrorlist.centos.org/?release=${OS_VERSION}&arch=${ARCH}&repo=os&container=container" - -# Aditional Repos -CENTOS_UPDATES_MIRROR_LIST="http://mirrorlist.centos.org/?release=${OS_VERSION}&arch=${ARCH}&repo=updates&container=container" - -CENTOS_EXTRAS_MIRROR_LIST="http://mirrorlist.centos.org/?release=${OS_VERSION}&arch=${ARCH}&repo=extras&container=container" - -CENTOS_PLUS_MIRROR_LIST="http://mirrorlist.centos.org/?release=${OS_VERSION}&arch=${ARCH}&repo=centosplus&container=container" - -GPG_KEY_URL="https://www.centos.org/keys/RPM-GPG-KEY-CentOS-7" - -GPG_KEY_FILE="RPM-GPG-KEY-CentOS-7" - -PACKAGES="coreutils chrony" - -#Optional packages: -# systemd: An init system that will start kata-agent if kata-agent -# itself is not configured as init process. -[ "$AGENT_INIT" = "no" ] && PACKAGES+=" systemd" || true - -# Init process must be one of {systemd,kata-agent} -INIT_PROCESS=systemd -# List of zero or more architectures to exclude from build, -# as reported by `uname -m` -ARCH_EXCLUDE_LIST=() - -[ "$SECCOMP" = "yes" ] && PACKAGES+=" libseccomp" || true diff --git a/tools/osbuilder/rootfs-builder/centos/config_aarch64.sh b/tools/osbuilder/rootfs-builder/centos/config_aarch64.sh deleted file mode 100644 index b4f8ccf8d..000000000 --- a/tools/osbuilder/rootfs-builder/centos/config_aarch64.sh +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (c) 2018 ARM Limited -# -# SPDX-License-Identifier: Apache-2.0 - -# Base Repos -BASE_URL="http://mirror.centos.org/altarch/${OS_VERSION}/os/${ARCH}/" - -# Additional Repos -CENTOS_UPDATES_URL="http://mirror.centos.org/altarch/${OS_VERSION}/updates/${ARCH}/" - -CENTOS_EXTRAS_URL="http://mirror.centos.org/altarch/${OS_VERSION}/extras/${ARCH}/" - -CENTOS_PLUS_URL="http://mirror.centos.org/altarch/${OS_VERSION}/centosplus/${ARCH}/" - -GPG_KEY_ARCH_URL="http://mirror.centos.org/altarch/7/os/aarch64/RPM-GPG-KEY-CentOS-7" - -GPG_KEY_ARCH_FILE="RPM-GPG-KEY-CentOS-7-aarch64" diff --git a/tools/osbuilder/rootfs-builder/centos/config_ppc64le.sh b/tools/osbuilder/rootfs-builder/centos/config_ppc64le.sh deleted file mode 100644 index 035cfa8b5..000000000 --- a/tools/osbuilder/rootfs-builder/centos/config_ppc64le.sh +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (c) 2018 IBM -# -# SPDX-License-Identifier: Apache-2.0 - -# Base Repos -BASE_URL="http://mirror.centos.org/altarch/${OS_VERSION}/os/${ARCH}/" - -# Additional Repos -CENTOS_UPDATES_URL="http://mirror.centos.org/altarch/${OS_VERSION}/updates/${ARCH}/" - -CENTOS_EXTRAS_URL="http://mirror.centos.org/altarch/${OS_VERSION}/extras/${ARCH}/" - -CENTOS_PLUS_URL="http://mirror.centos.org/altarch/${OS_VERSION}/centosplus/${ARCH}/" - -GPG_KEY_ARCH_URL="https://raw.githubusercontent.com/CentOS/sig-core-AltArch/master/centos-release-repo/centos-release-7/ppc/RPM-GPG-KEY-CentOS-SIG-AltArch-7-ppc64le" - -GPG_KEY_ARCH_FILE="RPM-GPG-KEY-CentOS-SIG-AltArch-7-ppc64le" diff --git a/versions.yaml b/versions.yaml index c60f334ae..aed5dc1a9 100644 --- a/versions.yaml +++ b/versions.yaml @@ -120,7 +120,7 @@ assets: name: "ubuntu" version: "latest" ppc64le: - name: "centos" + name: "ubuntu" version: "latest" s390x: name: "ubuntu" From 85dd5873825fee9d7d1465564e2c2842673e75c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Tue, 11 Jan 2022 09:49:39 +0100 Subject: [PATCH 292/385] osbuilder: Remove fedora rootfs-builder MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As the fedora rootfs is not tested in our CI, we can't guarantee it actually works as expected. Whenever we have someone willing to maintain the rootfs we can have it added back, and also add a CI job to test it altogether, avoiding then any possible regression. Fixes: #2143 Signed-off-by: Fabiano Fidêncio --- tools/osbuilder/README.md | 12 +++--- tools/osbuilder/dockerfiles/QAT/README.md | 1 - tools/osbuilder/rootfs-builder/README.md | 8 ++-- .../rootfs-builder/fedora/Dockerfile.in | 43 ------------------- .../osbuilder/rootfs-builder/fedora/config.sh | 23 ---------- .../rootfs-builder/fedora/config_aarch64.sh | 10 ----- 6 files changed, 10 insertions(+), 87 deletions(-) delete mode 100644 tools/osbuilder/rootfs-builder/fedora/Dockerfile.in delete mode 100644 tools/osbuilder/rootfs-builder/fedora/config.sh delete mode 100644 tools/osbuilder/rootfs-builder/fedora/config_aarch64.sh diff --git a/tools/osbuilder/README.md b/tools/osbuilder/README.md index cf8c02cef..6bdfa28f8 100644 --- a/tools/osbuilder/README.md +++ b/tools/osbuilder/README.md @@ -209,9 +209,9 @@ of the the osbuilder distributions. > Note: this table is not relevant for the dracut build method, since it supports any Linux distribution and architecture where dracut is available. -| |Alpine |Clear Linux |Debian/Ubuntu |Fedora |openSUSE | -|-- |-- |-- |-- |-- |-- | -|**ARM64** |:heavy_check_mark:| | |:heavy_check_mark:|:heavy_check_mark:| -|**PPC64le**|:heavy_check_mark:| |:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:| -|**s390x** | | |:heavy_check_mark:|:heavy_check_mark:| | -|**x86_64** |:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:| +| |Alpine |Clear Linux |Debian/Ubuntu |openSUSE | +|-- |-- |-- |-- |-- | +|**ARM64** |:heavy_check_mark:| | |:heavy_check_mark:| +|**PPC64le**|:heavy_check_mark:| |:heavy_check_mark:|:heavy_check_mark:| +|**s390x** | | |:heavy_check_mark:| | +|**x86_64** |:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:| diff --git a/tools/osbuilder/dockerfiles/QAT/README.md b/tools/osbuilder/dockerfiles/QAT/README.md index ccc96a5e4..0507f019f 100644 --- a/tools/osbuilder/dockerfiles/QAT/README.md +++ b/tools/osbuilder/dockerfiles/QAT/README.md @@ -9,7 +9,6 @@ to use the agent as the init. Because of this, alpine is not a valid base OS ima to use. The following rootfs OS's have been tested with this Dockerfile. * Clear Linux -* Fedora * SUSE * Ubuntu diff --git a/tools/osbuilder/rootfs-builder/README.md b/tools/osbuilder/rootfs-builder/README.md index fe3d1a8a2..71c92792c 100644 --- a/tools/osbuilder/rootfs-builder/README.md +++ b/tools/osbuilder/rootfs-builder/README.md @@ -99,10 +99,10 @@ must be met: Example: ``` $ export USE_DOCKER=true - $ # build guest O/S rootfs based on fedora - $ ./rootfs-builder/rootfs.sh -r "${PWD}/fedora_rootfs" fedora + $ # build guest O/S rootfs based on debian + $ ./rootfs-builder/rootfs.sh -r "${PWD}/debian_rootfs" debian $ # build image based rootfs created above - $ ./image-builder/image_builder.sh "${PWD}/fedora_rootfs" + $ ./image-builder/image_builder.sh "${PWD}/debian_rootfs" ``` ## Adding support for a new guest OS @@ -180,7 +180,7 @@ To add additional packages, use one of the following methods: Example: ``` - $ EXTRA_PKGS="vim emacs" ./rootfs-builder/rootfs.sh -r ${PWD}/myrootfs fedora + $ EXTRA_PKGS="vim emacs" ./rootfs-builder/rootfs.sh -r ${PWD}/myrootfs debian ``` - Modify the variable `PACKAGES` in `rootfs-builder//config.sh`. diff --git a/tools/osbuilder/rootfs-builder/fedora/Dockerfile.in b/tools/osbuilder/rootfs-builder/fedora/Dockerfile.in deleted file mode 100644 index e566823ea..000000000 --- a/tools/osbuilder/rootfs-builder/fedora/Dockerfile.in +++ /dev/null @@ -1,43 +0,0 @@ -# -# Copyright (c) 2018 Intel Corporation -# -# SPDX-License-Identifier: Apache-2.0 -ARG IMAGE_REGISTRY=registry.fedoraproject.org -FROM ${IMAGE_REGISTRY}/fedora:@OS_VERSION@ - -@SET_PROXY@ - -RUN dnf -y update && dnf install -y \ - autoconf \ - automake \ - binutils \ - chrony \ - coreutils \ - curl \ - gcc \ - gcc-c++ \ - git \ - glibc-common \ - glibc-devel \ - glibc-headers \ - glibc-static \ - glibc-utils \ - libseccomp \ - libseccomp-devel \ - libstdc++-devel \ - libstdc++-static \ - protobuf-compiler \ - m4 \ - make \ - pkgconfig \ - redhat-release \ - sed \ - systemd \ - tar \ - vim \ - which && \ - dnf clean all - -# This will install the proper packages to build Kata components -@INSTALL_MUSL@ -@INSTALL_RUST@ diff --git a/tools/osbuilder/rootfs-builder/fedora/config.sh b/tools/osbuilder/rootfs-builder/fedora/config.sh deleted file mode 100644 index 76cae407b..000000000 --- a/tools/osbuilder/rootfs-builder/fedora/config.sh +++ /dev/null @@ -1,23 +0,0 @@ -# -# Copyright (c) 2018 Intel Corporation -# -# SPDX-License-Identifier: Apache-2.0 - -OS_NAME="Fedora" - -OS_VERSION=${OS_VERSION:-30} - -MIRROR_LIST="https://mirrors.fedoraproject.org/metalink?repo=fedora-${OS_VERSION}&arch=\$basearch" - -PACKAGES="coreutils chrony" - -#Optional packages: -# systemd: An init system that will start kata-agent if kata-agent -# itself is not configured as init process. -[ "$AGENT_INIT" = "no" ] && PACKAGES+=" systemd" || true - -# Init process must be one of {systemd,kata-agent} -INIT_PROCESS=systemd -ARCH_EXCLUDE_LIST=() - -[ "$SECCOMP" = "yes" ] && PACKAGES+=" libseccomp" || true diff --git a/tools/osbuilder/rootfs-builder/fedora/config_aarch64.sh b/tools/osbuilder/rootfs-builder/fedora/config_aarch64.sh deleted file mode 100644 index 42126f34c..000000000 --- a/tools/osbuilder/rootfs-builder/fedora/config_aarch64.sh +++ /dev/null @@ -1,10 +0,0 @@ -# -# Copyright (c) 2019 ARM Limited -# -# SPDX-License-Identifier: Apache-2.0 - -# image busybox will fail on fedora 30 rootfs image -# see https://github.com/kata-containers/osbuilder/issues/334 for detailed info -OS_VERSION="29" - -MIRROR_LIST="https://mirrors.fedoraproject.org/metalink?repo=fedora-${OS_VERSION}&arch=\$basearch" From 22c1a093d7a2d173e4f920ec79bedddcbc870dfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Tue, 11 Jan 2022 09:51:30 +0100 Subject: [PATCH 293/385] osbuilder: Remove suse rootfs-builder MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As the suse rootfs is not tested in our CI, we can't guarantee it actually works as expected. Whenver we have someone willing to maintain this rootfs we can have it added back, and also add a CI job to test it altogether, avoiding then any possible regression. Fixes: #2145 Signed-off-by: Fabiano Fidêncio --- tools/osbuilder/README.md | 12 +-- tools/osbuilder/dockerfiles/QAT/README.md | 1 - .../rootfs-builder/suse/Dockerfile.in | 20 ----- tools/osbuilder/rootfs-builder/suse/config.sh | 58 -------------- .../osbuilder/rootfs-builder/suse/config.xml | 40 ---------- .../rootfs-builder/suse/install-packages.sh | 49 ------------ .../rootfs-builder/suse/rootfs_lib.sh | 76 ------------------- 7 files changed, 6 insertions(+), 250 deletions(-) delete mode 100644 tools/osbuilder/rootfs-builder/suse/Dockerfile.in delete mode 100644 tools/osbuilder/rootfs-builder/suse/config.sh delete mode 100644 tools/osbuilder/rootfs-builder/suse/config.xml delete mode 100644 tools/osbuilder/rootfs-builder/suse/install-packages.sh delete mode 100644 tools/osbuilder/rootfs-builder/suse/rootfs_lib.sh diff --git a/tools/osbuilder/README.md b/tools/osbuilder/README.md index 6bdfa28f8..b97839361 100644 --- a/tools/osbuilder/README.md +++ b/tools/osbuilder/README.md @@ -209,9 +209,9 @@ of the the osbuilder distributions. > Note: this table is not relevant for the dracut build method, since it supports any Linux distribution and architecture where dracut is available. -| |Alpine |Clear Linux |Debian/Ubuntu |openSUSE | -|-- |-- |-- |-- |-- | -|**ARM64** |:heavy_check_mark:| | |:heavy_check_mark:| -|**PPC64le**|:heavy_check_mark:| |:heavy_check_mark:|:heavy_check_mark:| -|**s390x** | | |:heavy_check_mark:| | -|**x86_64** |:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:| +| |Alpine |Clear Linux |Debian/Ubuntu | +|-- |-- |-- |-- | +|**ARM64** |:heavy_check_mark:| | | +|**PPC64le**|:heavy_check_mark:| |:heavy_check_mark:| +|**s390x** | | |:heavy_check_mark:| +|**x86_64** |:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:| diff --git a/tools/osbuilder/dockerfiles/QAT/README.md b/tools/osbuilder/dockerfiles/QAT/README.md index 0507f019f..e4b902314 100644 --- a/tools/osbuilder/dockerfiles/QAT/README.md +++ b/tools/osbuilder/dockerfiles/QAT/README.md @@ -9,7 +9,6 @@ to use the agent as the init. Because of this, alpine is not a valid base OS ima to use. The following rootfs OS's have been tested with this Dockerfile. * Clear Linux -* SUSE * Ubuntu The generated files will need to be copied and configured into your Kata Containers diff --git a/tools/osbuilder/rootfs-builder/suse/Dockerfile.in b/tools/osbuilder/rootfs-builder/suse/Dockerfile.in deleted file mode 100644 index b86086a7d..000000000 --- a/tools/osbuilder/rootfs-builder/suse/Dockerfile.in +++ /dev/null @@ -1,20 +0,0 @@ -# -# Copyright (c) 2018 SUSE LLC -# -# SPDX-License-Identifier: Apache-2.0 - -ARG IMAGE_REGISTRY=docker.io -#suse: docker image to be used to create a rootfs -#@OS_VERSION@: Docker image version to build this dockerfile -FROM ${IMAGE_REGISTRY}/opensuse/leap:15.0 - -# This dockerfile needs to provide all the componets need to build a rootfs -# Install any package need to create a rootfs (package manager, extra tools) - -COPY install-packages.sh config.sh / -# RUN commands -RUN chmod +x /install-packages.sh; /install-packages.sh - -# This will install the proper packages to build Kata components -@INSTALL_MUSL@ -@INSTALL_RUST@ diff --git a/tools/osbuilder/rootfs-builder/suse/config.sh b/tools/osbuilder/rootfs-builder/suse/config.sh deleted file mode 100644 index 1ab7402bf..000000000 --- a/tools/osbuilder/rootfs-builder/suse/config.sh +++ /dev/null @@ -1,58 +0,0 @@ -# -# Copyright (c) 2018 SUSE LLC -# -# SPDX-License-Identifier: Apache-2.0 - -# May also be "Tumbleweed" -OS_DISTRO="Leap" - -# Leave this empty for distro "Tumbleweed" -OS_VERSION=${OS_VERSION:-15.0} - -OS_IDENTIFIER="$OS_DISTRO${OS_VERSION:+:$OS_VERSION}" - -# Extra packages to install in the rootfs -PACKAGES="systemd coreutils libudev1" - -# http or https -REPO_TRANSPORT="https" - -# Can specify an alternative domain -REPO_DOMAIN="download.opensuse.org" - -# Init process must be one of {systemd,kata-agent} -INIT_PROCESS=systemd -# List of zero or more architectures to exclude from build, -# as reported by `uname -m` -ARCH_EXCLUDE_LIST=() - -############################################################################### -# -# NOTE: you probably dont need to edit things below this -# - -SUSE_URL_BASE="${REPO_TRANSPORT}://${REPO_DOMAIN}" -SUSE_PATH_OSS="/distribution/${OS_DISTRO,,}/$OS_VERSION/repo/oss" -SUSE_PATH_UPDATE="/update/${OS_DISTRO,,}/$OS_VERSION/oss" - -arch="$(uname -m)" -case "$arch" in - x86_64) - REPO_URL_PORT="" - ;; - ppc|ppc64le) - REPO_URL_PORT="/ports/ppc" - ;; - aarch64) - REPO_URL_PORT="/ports/aarch64" - ;; - *) - die "Unsupported architecture: $arch" - ;; -esac -SUSE_FULLURL_OSS="${SUSE_URL_BASE}${REPO_URL_PORT}${SUSE_PATH_OSS}" -SUSE_FULLURL_UPDATE="${SUSE_URL_BASE}${SUSE_PATH_UPDATE}" - -if [ -z "${REPO_URL:-}" ]; then - REPO_URL="$SUSE_FULLURL_OSS" -fi diff --git a/tools/osbuilder/rootfs-builder/suse/config.xml b/tools/osbuilder/rootfs-builder/suse/config.xml deleted file mode 100644 index a92147529..000000000 --- a/tools/osbuilder/rootfs-builder/suse/config.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - SUSE - mvedovati@suse.com - openSUSE rootfs for Kata Containers guest vm - - - 1.0.0 - zypper - en_US - us - true - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/osbuilder/rootfs-builder/suse/install-packages.sh b/tools/osbuilder/rootfs-builder/suse/install-packages.sh deleted file mode 100644 index 2652df1c9..000000000 --- a/tools/osbuilder/rootfs-builder/suse/install-packages.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env bash -# -# Copyright (c) 2018 SUSE LLC -# -# SPDX-License-Identifier: Apache-2.0 - -set -euo pipefail - -source config.sh - -removeRepos=(repo-non-oss repo-update-non-oss repo-oss repo-update) - -for r in ${removeRepos[@]}; do - zypper --non-interactive removerepo $r -done - -zypper --non-interactive addrepo ${SUSE_FULLURL_OSS} osbuilder-oss -zypper --non-interactive addrepo ${SUSE_FULLURL_UPDATE} osbuilder-update - - -# Workaround for zypper slowdowns observed when running inside -# a container: see https://github.com/openSUSE/zypper/pull/209 -# The fix is upstream but it will take a while before landing -# in Leap -ulimit -n 1024 -zypper --non-interactive refresh -zypper --non-interactive install --no-recommends --force-resolution \ - autoconf \ - automake \ - binutils \ - coreutils \ - curl \ - gcc \ - gcc-c++ \ - git \ - glibc-devel \ - glibc-devel-static \ - glibc-utils \ - libstdc++-devel \ - linux-glibc-devel \ - m4 \ - make \ - python3-kiwi \ - sed \ - tar \ - vim \ - which -zypper --non-interactive clean --all - diff --git a/tools/osbuilder/rootfs-builder/suse/rootfs_lib.sh b/tools/osbuilder/rootfs-builder/suse/rootfs_lib.sh deleted file mode 100644 index 216f90a2f..000000000 --- a/tools/osbuilder/rootfs-builder/suse/rootfs_lib.sh +++ /dev/null @@ -1,76 +0,0 @@ -# -# Copyright (c) 2018 SUSE LLC -# -# SPDX-License-Identifier: Apache-2.0 - -# - Arguments -# rootfs_dir=$1 -# -# - Optional environment variables -# -# EXTRA_PKGS: Variable to add extra PKGS provided by the user -# -# BIN_AGENT: Name of the Kata-Agent binary -# -# REPO_URL: URL to distribution repository ( should be configured in -# config.sh file) -# -# Any other configuration variable for a specific distro must be added -# and documented on its own config.sh -# -# - Expected result -# -# rootfs_dir populated with rootfs pkgs -# It must provide a binary in /sbin/init -# -# Note: For some distros, the build_rootfs() function provided in scripts/lib.sh -# will suffice. If a new distro is introduced with a special requirement, -# then, a rootfs_builder//rootfs_lib.sh file should be created -# using this template. - -build_rootfs() { - # Mandatory - local ROOTFS_DIR=$1 - - #Name of the Kata-Agent binary - local BIN_AGENT=${BIN_AGENT} - - # In case of support EXTRA packages, use it to allow - # users add more packages to the base rootfs - local EXTRA_PKGS=${EXTRA_PKGS:-} - - #PATH where files this script is placed - #Use it to refer to files in the same directory - #Exmaple: ${CONFIG_DIR}/foo - local CONFIG_DIR=${CONFIG_DIR} - - # Populate ROOTFS_DIR - # Must provide /sbin/init and /bin/${BIN_AGENT} - if [ -e "$ROOTFS_DIR" ] && ! [ -z "$(ls -A $ROOTFS_DIR)" ]; then - echo "ERROR: $ROOTFS_DIR is not empty" - exit 1 - fi - - local addPackages="" - for p in $PACKAGES $EXTRA_PKGS; do - addPackages+=" --add-package=$p" - done - - # set-repo format: - # man kiwi::system::build for details - local setRepo=" --set-repo $REPO_URL,rpm-md,$OS_IDENTIFIER,99,false,false" - - # Workaround for zypper slowdowns observed when running inside - # a container: see https://github.com/openSUSE/zypper/pull/209 - # The fix is upstream but it will take a while before landing - # in Leap - ulimit -n 1024 - kiwi system prepare \ - --description $CONFIG_DIR \ - --allow-existing-root \ - --root $ROOTFS_DIR \ - $addPackages \ - $setRepo - install -d $ROOTFS_DIR/lib/systemd - ln -s /usr/lib/systemd/systemd $ROOTFS_DIR/lib/systemd/systemd -} From 6979d5be6996cb93478fa228b88557dbc4b8daab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Tue, 11 Jan 2022 09:52:06 +0100 Subject: [PATCH 294/385] osbuilder: Remove gentoo rootfs-builder MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As the gentoo rootfs is not tested in our CI, we can't guarantee it actually works as expected. Whenever we have someone willing to maintain this rootfs we can have it added back, and also add a CI job to test it altogether, avoiding then any possible regression. Fixes: #2144 Signed-off-by: Fabiano Fidêncio --- .../rootfs-builder/gentoo/Dockerfile.in | 15 -- .../osbuilder/rootfs-builder/gentoo/config.sh | 22 -- .../rootfs-builder/gentoo/rootfs_lib.sh | 210 ------------------ tools/osbuilder/rootfs-builder/rootfs.sh | 4 - 4 files changed, 251 deletions(-) delete mode 100644 tools/osbuilder/rootfs-builder/gentoo/Dockerfile.in delete mode 100644 tools/osbuilder/rootfs-builder/gentoo/config.sh delete mode 100644 tools/osbuilder/rootfs-builder/gentoo/rootfs_lib.sh diff --git a/tools/osbuilder/rootfs-builder/gentoo/Dockerfile.in b/tools/osbuilder/rootfs-builder/gentoo/Dockerfile.in deleted file mode 100644 index e817d2ac8..000000000 --- a/tools/osbuilder/rootfs-builder/gentoo/Dockerfile.in +++ /dev/null @@ -1,15 +0,0 @@ -# -# Copyright (c) 2020 Intel Corporation -# -# SPDX-License-Identifier: Apache-2.0 - -ARG IMAGE_REGISTRY=docker.io -# stage3-amd64 image has only 'latest' tag so ignore DL3006 rule. -# hadolint ignore=DL3007 -FROM ${IMAGE_REGISTRY}/gentoo/stage3-amd64:latest - -# This dockerfile needs to provide all the componets need to build a rootfs -# Install any package need to create a rootfs (package manager, extra tools) - -# This will install the proper rust to build Kata components -@INSTALL_RUST@ diff --git a/tools/osbuilder/rootfs-builder/gentoo/config.sh b/tools/osbuilder/rootfs-builder/gentoo/config.sh deleted file mode 100644 index a3e0c53bb..000000000 --- a/tools/osbuilder/rootfs-builder/gentoo/config.sh +++ /dev/null @@ -1,22 +0,0 @@ -# This is a configuration file add extra variables to -# -# Copyright (c) 2020 Intel Corporation -# -# SPDX-License-Identifier: Apache-2.0 -# be used by build_rootfs() from rootfs_lib.sh the variables will be -# loaded just before call the function. For more information see the -# rootfs-builder/README.md file. - -OS_VERSION=${OS_VERSION:-latest} -OS_NAME=${OS_NAME:-"gentoo"} - -# packages to be installed by default -PACKAGES="sys-apps/systemd sys-apps/coreutils net-misc/chrony" - -# Init process must be one of {systemd,kata-agent} -INIT_PROCESS=systemd -# List of zero or more architectures to exclude from build, -# as reported by `uname -m` -ARCH_EXCLUDE_LIST=( aarch64 ppc64le s390x ) - -[ "$SECCOMP" = "yes" ] && PACKAGES+=" sys-libs/libseccomp" || true diff --git a/tools/osbuilder/rootfs-builder/gentoo/rootfs_lib.sh b/tools/osbuilder/rootfs-builder/gentoo/rootfs_lib.sh deleted file mode 100644 index 0226bb250..000000000 --- a/tools/osbuilder/rootfs-builder/gentoo/rootfs_lib.sh +++ /dev/null @@ -1,210 +0,0 @@ -# Copyright (c) 2020 Intel Corporation -# -# SPDX-License-Identifier: Apache-2.0 -# -# - Arguments -# rootfs_dir=$1 -# -# - Optional environment variables -# -# EXTRA_PKGS: Variable to add extra PKGS provided by the user -# -# BIN_AGENT: Name of the Kata-Agent binary -# -# REPO_URL: URL to distribution repository ( should be configured in -# config.sh file) -# -# Any other configuration variable for a specific distro must be added -# and documented on its own config.sh -# -# - Expected result -# -# rootfs_dir populated with rootfs pkgs -# It must provide a binary in /sbin/init -# -gentoo_portage_container=gentoo_portage -gentoo_local_portage_dir="${HOME}/gentoo-$(date +%s)" - -build_rootfs() { - # Mandatory - local ROOTFS_DIR=$1 - - # In case of support EXTRA packages, use it to allow - # users to add more packages to the base rootfs - local EXTRA_PKGS=${EXTRA_PKGS:-} - - # Populate ROOTFS_DIR - # Must provide /sbin/init and /bin/${BIN_AGENT} - check_root - mkdir -p "${ROOTFS_DIR}" - - # trim whitespace - PACKAGES=$(echo $PACKAGES |xargs ) - EXTRA_PKGS=$(echo $EXTRA_PKGS |xargs) - - # extra packages are added to packages and finally passed to debootstrap - if [ "${EXTRA_PKGS}" = "" ]; then - echo "no extra packages" - else - PACKAGES="${PACKAGES} ${EXTRA_PKGS}" - fi - - local packageuseconf="/etc/portage/package.use/user" - local makeconf="/etc/portage/make.conf" - local systemd_optimizations=( - acl - -apparmor - -audit - cgroup-hybrid - -cryptsetup - -curl - -dns-over-tls - -gcrypt - -gnuefi - -homed - -http - -hwdb - -idn - -importd - kmod - -lz4 - -lzma - -nat - -pkcs11 - -policykit - -pwquality - -qrcode - -repart - -resolvconf - sysv-utils - -test - -xkb - -zstd - ) - - local packages_optimizations=( - -abi_x86_32 - -abi_x86_x32 - -debug - -doc - -examples - multicall - -ncurses - -nls - -selinux - systemd - -udev - -unicode - -X - ) - - local compiler_optimizations=( - -O3 - -fassociative-math - -fasynchronous-unwind-tables - -feliminate-unused-debug-types - -fexceptions - -ffat-lto-objects - -fno-semantic-interposition - -fno-signed-zeros - -fno-trapping-math - -fstack-protector - -ftree-loop-distribute-patterns - -m64 - -mtune=skylake - --param=ssp-buffer-size=32 - -pipe - -Wl,--copy-dt-needed-entries - -Wp,-D_REENTRANT - -Wl,--enable-new-dtags - -Wl,-sort-common - -Wl,-z -Wl,now - -Wl,-z -Wl,relro - ) - - local build_dependencies=( - dev-vcs/git - ) - - local conflicting_packages=( - net-misc/netifrc sys-apps/sysvinit - sys-fs/eudev sys-apps/openrc - virtual/service-manager - ) - - # systemd optimizations - echo "sys-apps/systemd ${systemd_optimizations[*]}" >> ${packageuseconf} - echo "MAKEOPTS=\"-j$(nproc)\"" >> ${makeconf} - - # Packages optimizations - echo "USE=\"${packages_optimizations[*]}\"" >> ${makeconf} - - # compiler optimizations - echo "CFLAGS=\"${compiler_optimizations[*]}\"" >> ${makeconf} - echo 'CXXFLAGS="${CFLAGS}"' >> ${makeconf} - - # remove conflicting packages - emerge -Cv $(echo "${conflicting_packages[*]}") - - # Get the latest systemd portage profile and set it - systemd_profile=$(profile-config list | grep stable | grep -E "[[:digit:]]/systemd" | xargs | cut -d' ' -f2) - profile-config set "${systemd_profile}" - - # Install build dependencies - emerge --newuse $(echo "${build_dependencies[*]}") - - quickpkg --include-unmodified-config=y "*/*" - - # Install needed packages excluding conflicting packages - ROOT=${ROOTFS_DIR} emerge --exclude "$(echo "${conflicting_packages[*]}")" --newuse -k ${PACKAGES} - - pushd ${ROOTFS_DIR} - - # systemd will need this library - cp /usr/lib/gcc/x86_64-pc-linux-gnu/*/libgcc_s.so* lib64/ - - # Clean up the rootfs. there are things that we don't need - rm -rf etc/{udev,X11,kernel,runlevels,terminfo,init.d} - rm -rf var/lib/{gentoo,portage} - rm -rf var/{db,cache} - rm -rf usr/share/* - rm -rf usr/lib/{udev,gconv,kernel} - rm -rf usr/{include,local} - rm -rf usr/lib64/gconv - rm -rf lib/{udev,gentoo} - - # Make sure important directories exist in the rootfs - ln -s ../run var/run - mkdir -p proc opt sys dev home root - - popd -} - -before_starting_container() { - gentoo_portage_image="gentoo/portage" - - if [ "${OS_VERSION}" = "latest" ];then - ${container_engine} pull "${gentoo_portage_image}:latest" - OS_VERSION=$(docker image inspect -f {{.Created}} ${gentoo_portage_image} | cut -dT -f1 | sed 's|-||g') - else - ${container_engine} pull "${gentoo_portage_image}:${OS_VERSION}" - fi - - # create portage volume and container - ${container_engine} create -v /usr/portage --name "${gentoo_portage_container}" "${gentoo_portage_image}" /bin/true -} - -after_stopping_container() { - # Get the list of volumes - volumes="" - for i in $(seq $(${container_engine} inspect -f "{{len .Mounts}}" "${gentoo_portage_container}")); do - volumes+="$(${container_engine} inspect -f "{{(index .Mounts $((i-1))).Name}}" "${gentoo_portage_container}") " - done - - # remove portage container - ${container_engine} rm -f "${gentoo_portage_container}" - sudo rm -rf "${gentoo_local_portage_dir}" - - # remove portage volumes - ${container_engine} volume rm -f ${volumes} -} diff --git a/tools/osbuilder/rootfs-builder/rootfs.sh b/tools/osbuilder/rootfs-builder/rootfs.sh index ce17ba6cf..ca804b91d 100755 --- a/tools/osbuilder/rootfs-builder/rootfs.sh +++ b/tools/osbuilder/rootfs-builder/rootfs.sh @@ -516,10 +516,6 @@ EOT mkdir -p "${ROOTFS_DIR}/etc" case "${distro}" in - "gentoo") - chrony_conf_file="${ROOTFS_DIR}/etc/chrony/chrony.conf" - chrony_systemd_service="${ROOTFS_DIR}/lib/systemd/system/chronyd.service" - ;; "ubuntu" | "debian") echo "I am ubuntu or debian" chrony_conf_file="${ROOTFS_DIR}/etc/chrony/chrony.conf" From e4b7a12bf3d38751f69409bae844cfbb9c102da2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Tue, 11 Jan 2022 10:06:09 +0100 Subject: [PATCH 295/385] qat: Add Debian to the distro examples MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Debian is a supported rootfs that uses systemd as init, thus, it should be mentioned in the QAT README document. Signed-off-by: Fabiano Fidêncio --- tools/osbuilder/dockerfiles/QAT/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/osbuilder/dockerfiles/QAT/README.md b/tools/osbuilder/dockerfiles/QAT/README.md index e4b902314..87730ebd7 100644 --- a/tools/osbuilder/dockerfiles/QAT/README.md +++ b/tools/osbuilder/dockerfiles/QAT/README.md @@ -9,6 +9,7 @@ to use the agent as the init. Because of this, alpine is not a valid base OS ima to use. The following rootfs OS's have been tested with this Dockerfile. * Clear Linux +* Debian * Ubuntu The generated files will need to be copied and configured into your Kata Containers From adffd3f8b65f2a874b04cb1a09296e8ed8617dad Mon Sep 17 00:00:00 2001 From: Sebastian Hasler Date: Wed, 12 Jan 2022 23:43:54 +0100 Subject: [PATCH 296/385] scripts: Use shebang /usr/bin/env bash Not all distros have `/bin/bash`, e.g. NixOS. Fixes: #3450 Signed-off-by: Sebastian Hasler --- ci/go-test.sh | 2 +- ci/install_go.sh | 2 +- ci/install_libseccomp.sh | 2 +- ci/install_musl.sh | 2 +- ci/install_rust.sh | 2 +- ci/install_vc.sh | 2 +- ci/run.sh | 2 +- ci/setup.sh | 2 +- ci/static-checks.sh | 2 +- docs/how-to/containerd-kata.md | 2 +- docs/how-to/how-to-import-kata-logs-with-fluentd.md | 2 +- docs/how-to/offline_cpu.sh | 2 +- docs/use-cases/using-Intel-QAT-and-kata.md | 4 ++-- src/libs/protocols/hack/update-generated-proto.sh | 2 +- src/runtime/data/kata-collect-data.sh.in | 2 +- tools/osbuilder/dockerfiles/QAT/run.sh | 2 +- tools/osbuilder/dracut/add_libs.sh | 2 +- tools/osbuilder/initrd-builder/initrd_builder.sh | 2 +- tools/osbuilder/rootfs-builder/alpine/rootfs_lib.sh | 2 +- tools/osbuilder/rootfs-builder/rootfs.sh | 2 +- tools/osbuilder/scripts/lib.sh | 2 +- tools/packaging/artifact-list.sh | 2 +- tools/packaging/guest-image/build_image.sh | 2 +- tools/packaging/kata-deploy/action/entrypoint.sh | 2 +- tools/packaging/kata-deploy/action/setup-aks.sh | 2 +- tools/packaging/kata-deploy/action/test-kata.sh | 2 +- .../kata-deploy/local-build/kata-deploy-binaries-in-docker.sh | 2 +- .../packaging/kata-deploy/local-build/kata-deploy-binaries.sh | 2 +- .../kata-deploy/local-build/kata-deploy-merge-builds.sh | 2 +- tools/packaging/kata-deploy/scripts/kata-deploy.sh | 2 +- tools/packaging/kernel/build-kernel.sh | 2 +- tools/packaging/release/publish-kata-image.sh | 2 +- tools/packaging/release/release-notes.sh | 2 +- tools/packaging/release/tag_repos.sh | 2 +- tools/packaging/release/tag_repos_test.sh | 2 +- tools/packaging/release/update-repository-version.sh | 2 +- tools/packaging/release/update-repository-version_test.sh | 2 +- tools/packaging/scripts/apply_patches.sh | 2 +- tools/packaging/scripts/configure-hypervisor.sh | 2 +- tools/packaging/scripts/gen_versions_txt.sh | 2 +- tools/packaging/scripts/patch_qemu.sh | 2 +- .../static-build/cloud-hypervisor/build-static-clh.sh | 2 +- .../static-build/firecracker/build-static-firecracker.sh | 2 +- tools/packaging/static-build/kernel/build.sh | 2 +- tools/packaging/static-build/qemu/build-base-qemu.sh | 2 +- .../static-build/qemu/build-static-qemu-experimental.sh | 2 +- tools/packaging/static-build/qemu/build-static-qemu.sh | 2 +- tools/packaging/static-build/scripts/kata-configure-docker.sh | 2 +- tools/packaging/static-build/scripts/qemu-build-post.sh | 2 +- tools/packaging/static-build/shim-v2/build.sh | 2 +- tools/packaging/static-build/shim-v2/install_go.sh | 2 +- utils/kata-manager.sh | 2 +- 52 files changed, 53 insertions(+), 53 deletions(-) diff --git a/ci/go-test.sh b/ci/go-test.sh index 3ead6f7fa..ca1ad0dfd 100755 --- a/ci/go-test.sh +++ b/ci/go-test.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2020 Intel Corporation # diff --git a/ci/install_go.sh b/ci/install_go.sh index d8ec8cf67..f612f3562 100755 --- a/ci/install_go.sh +++ b/ci/install_go.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2019 Intel Corporation # diff --git a/ci/install_libseccomp.sh b/ci/install_libseccomp.sh index c8f802ebd..893343886 100755 --- a/ci/install_libseccomp.sh +++ b/ci/install_libseccomp.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright 2021 Sony Group Corporation # diff --git a/ci/install_musl.sh b/ci/install_musl.sh index 15f476949..4beec2911 100755 --- a/ci/install_musl.sh +++ b/ci/install_musl.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Copyright (c) 2020 Ant Group # # SPDX-License-Identifier: Apache-2.0 diff --git a/ci/install_rust.sh b/ci/install_rust.sh index d220ad573..6e4627491 100755 --- a/ci/install_rust.sh +++ b/ci/install_rust.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Copyright (c) 2019 Ant Financial # # SPDX-License-Identifier: Apache-2.0 diff --git a/ci/install_vc.sh b/ci/install_vc.sh index 67968699b..d50fe634e 100755 --- a/ci/install_vc.sh +++ b/ci/install_vc.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2018 Intel Corporation # diff --git a/ci/run.sh b/ci/run.sh index 9c508556d..fb3947253 100755 --- a/ci/run.sh +++ b/ci/run.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2019 Ant Financial # diff --git a/ci/setup.sh b/ci/setup.sh index 8580fb735..a5f3fb7fd 100755 --- a/ci/setup.sh +++ b/ci/setup.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2018 Intel Corporation # diff --git a/ci/static-checks.sh b/ci/static-checks.sh index dce456a1b..df4b6df31 100755 --- a/ci/static-checks.sh +++ b/ci/static-checks.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2017-2018 Intel Corporation # diff --git a/docs/how-to/containerd-kata.md b/docs/how-to/containerd-kata.md index b03f87950..9cd82128d 100644 --- a/docs/how-to/containerd-kata.md +++ b/docs/how-to/containerd-kata.md @@ -188,7 +188,7 @@ If you use Containerd older than v1.2.4 or a version of Kata older than v1.6.0 shell script with the following: ```bash -#!/bin/bash +#!/usr/bin/env bash KATA_CONF_FILE=/etc/kata-containers/firecracker.toml containerd-shim-kata-v2 $@ ``` diff --git a/docs/how-to/how-to-import-kata-logs-with-fluentd.md b/docs/how-to/how-to-import-kata-logs-with-fluentd.md index 13b62e797..419253022 100644 --- a/docs/how-to/how-to-import-kata-logs-with-fluentd.md +++ b/docs/how-to/how-to-import-kata-logs-with-fluentd.md @@ -264,7 +264,7 @@ At the same time, we will add the `--log=/var/log/kata-runtime.log` argument to own file (rather than into the system journal). ```bash -#!/bin/bash +#!/usr/bin/env bash /opt/kata/bin/kata-runtime --config "/opt/kata/share/defaults/kata-containers/configuration-qemu.toml" --log-format=json --log=/var/log/kata-runtime.log $@ ``` diff --git a/docs/how-to/offline_cpu.sh b/docs/how-to/offline_cpu.sh index 8ac2da31f..f6f6b6e17 100644 --- a/docs/how-to/offline_cpu.sh +++ b/docs/how-to/offline_cpu.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Copyright (c) 2019 Intel Corporation # # SPDX-License-Identifier: Apache-2.0 diff --git a/docs/use-cases/using-Intel-QAT-and-kata.md b/docs/use-cases/using-Intel-QAT-and-kata.md index d4150a3ad..528e9ea7f 100644 --- a/docs/use-cases/using-Intel-QAT-and-kata.md +++ b/docs/use-cases/using-Intel-QAT-and-kata.md @@ -355,10 +355,10 @@ this small script so that it redirects to be able to use either QEMU or Cloud Hypervisor with Kata. ```bash -$ echo '#!/bin/bash' | sudo tee /usr/local/bin/containerd-shim-kata-qemu-v2 +$ echo '#!/usr/bin/env bash' | sudo tee /usr/local/bin/containerd-shim-kata-qemu-v2 $ echo 'KATA_CONF_FILE=/opt/kata/share/defaults/kata-containers/configuration-qemu.toml /opt/kata/bin/containerd-shim-kata-v2 $@' | sudo tee -a /usr/local/bin/containerd-shim-kata-qemu-v2 $ sudo chmod +x /usr/local/bin/containerd-shim-kata-qemu-v2 -$ echo '#!/bin/bash' | sudo tee /usr/local/bin/containerd-shim-kata-clh-v2 +$ echo '#!/usr/bin/env bash' | sudo tee /usr/local/bin/containerd-shim-kata-clh-v2 $ echo 'KATA_CONF_FILE=/opt/kata/share/defaults/kata-containers/configuration-clh.toml /opt/kata/bin/containerd-shim-kata-v2 $@' | sudo tee -a /usr/local/bin/containerd-shim-kata-clh-v2 $ sudo chmod +x /usr/local/bin/containerd-shim-kata-clh-v2 ``` diff --git a/src/libs/protocols/hack/update-generated-proto.sh b/src/libs/protocols/hack/update-generated-proto.sh index 63e6ef557..4befd0f09 100755 --- a/src/libs/protocols/hack/update-generated-proto.sh +++ b/src/libs/protocols/hack/update-generated-proto.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # // # // Copyright (c) 2020 Ant Group diff --git a/src/runtime/data/kata-collect-data.sh.in b/src/runtime/data/kata-collect-data.sh.in index adc33564e..8fbe678f5 100644 --- a/src/runtime/data/kata-collect-data.sh.in +++ b/src/runtime/data/kata-collect-data.sh.in @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2017-2020 Intel Corporation # diff --git a/tools/osbuilder/dockerfiles/QAT/run.sh b/tools/osbuilder/dockerfiles/QAT/run.sh index c5db4f362..bf333d1a5 100755 --- a/tools/osbuilder/dockerfiles/QAT/run.sh +++ b/tools/osbuilder/dockerfiles/QAT/run.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2021 Intel Corporation # diff --git a/tools/osbuilder/dracut/add_libs.sh b/tools/osbuilder/dracut/add_libs.sh index 0ddd501ad..23cb5e2ec 100755 --- a/tools/osbuilder/dracut/add_libs.sh +++ b/tools/osbuilder/dracut/add_libs.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2021 IBM Corp. # diff --git a/tools/osbuilder/initrd-builder/initrd_builder.sh b/tools/osbuilder/initrd-builder/initrd_builder.sh index b556d4f4a..1d4a60d52 100755 --- a/tools/osbuilder/initrd-builder/initrd_builder.sh +++ b/tools/osbuilder/initrd-builder/initrd_builder.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2018 HyperHQ Inc. # diff --git a/tools/osbuilder/rootfs-builder/alpine/rootfs_lib.sh b/tools/osbuilder/rootfs-builder/alpine/rootfs_lib.sh index f2456e7c9..a17ef8659 100644 --- a/tools/osbuilder/rootfs-builder/alpine/rootfs_lib.sh +++ b/tools/osbuilder/rootfs-builder/alpine/rootfs_lib.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2018 HyperHQ Inc. # diff --git a/tools/osbuilder/rootfs-builder/rootfs.sh b/tools/osbuilder/rootfs-builder/rootfs.sh index ce17ba6cf..13396283f 100755 --- a/tools/osbuilder/rootfs-builder/rootfs.sh +++ b/tools/osbuilder/rootfs-builder/rootfs.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2018 Intel Corporation # diff --git a/tools/osbuilder/scripts/lib.sh b/tools/osbuilder/scripts/lib.sh index e393cd704..ebbd96a72 100644 --- a/tools/osbuilder/scripts/lib.sh +++ b/tools/osbuilder/scripts/lib.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2018-2020 Intel Corporation # diff --git a/tools/packaging/artifact-list.sh b/tools/packaging/artifact-list.sh index 4366b6727..798407fe0 100755 --- a/tools/packaging/artifact-list.sh +++ b/tools/packaging/artifact-list.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2019 Intel Corporation # diff --git a/tools/packaging/guest-image/build_image.sh b/tools/packaging/guest-image/build_image.sh index 78e8a44de..d3dc0c54d 100755 --- a/tools/packaging/guest-image/build_image.sh +++ b/tools/packaging/guest-image/build_image.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2018 Intel Corporation # diff --git a/tools/packaging/kata-deploy/action/entrypoint.sh b/tools/packaging/kata-deploy/action/entrypoint.sh index 899bada6f..b459e2057 100755 --- a/tools/packaging/kata-deploy/action/entrypoint.sh +++ b/tools/packaging/kata-deploy/action/entrypoint.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2018 Intel Corporation # diff --git a/tools/packaging/kata-deploy/action/setup-aks.sh b/tools/packaging/kata-deploy/action/setup-aks.sh index 39ce02416..23c2be048 100755 --- a/tools/packaging/kata-deploy/action/setup-aks.sh +++ b/tools/packaging/kata-deploy/action/setup-aks.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2019 Intel Corporation # diff --git a/tools/packaging/kata-deploy/action/test-kata.sh b/tools/packaging/kata-deploy/action/test-kata.sh index a1d708159..defc67268 100755 --- a/tools/packaging/kata-deploy/action/test-kata.sh +++ b/tools/packaging/kata-deploy/action/test-kata.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2019 Intel Corporation # diff --git a/tools/packaging/kata-deploy/local-build/kata-deploy-binaries-in-docker.sh b/tools/packaging/kata-deploy/local-build/kata-deploy-binaries-in-docker.sh index 589760615..68fba1b5f 100755 --- a/tools/packaging/kata-deploy/local-build/kata-deploy-binaries-in-docker.sh +++ b/tools/packaging/kata-deploy/local-build/kata-deploy-binaries-in-docker.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2018-2021 Intel Corporation # diff --git a/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh b/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh index 0d1f532c4..b5b1717a9 100755 --- a/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh +++ b/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Copyright (c) 2018-2021 Intel Corporation # # SPDX-License-Identifier: Apache-2.0 diff --git a/tools/packaging/kata-deploy/local-build/kata-deploy-merge-builds.sh b/tools/packaging/kata-deploy/local-build/kata-deploy-merge-builds.sh index bdbec15ab..d99c49b4e 100755 --- a/tools/packaging/kata-deploy/local-build/kata-deploy-merge-builds.sh +++ b/tools/packaging/kata-deploy/local-build/kata-deploy-merge-builds.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Copyright (c) 2021 Intel Corporation # # SPDX-License-Identifier: Apache-2.0 diff --git a/tools/packaging/kata-deploy/scripts/kata-deploy.sh b/tools/packaging/kata-deploy/scripts/kata-deploy.sh index 30e607a10..957feebec 100755 --- a/tools/packaging/kata-deploy/scripts/kata-deploy.sh +++ b/tools/packaging/kata-deploy/scripts/kata-deploy.sh @@ -93,7 +93,7 @@ function configure_different_shims_base() { fi cat << EOT | tee "$shim_file" -#!/bin/bash +#!/usr/bin/env bash KATA_CONF_FILE=/opt/kata/share/defaults/kata-containers/configuration-${shim}.toml /opt/kata/bin/containerd-shim-kata-v2 "\$@" EOT chmod +x "$shim_file" diff --git a/tools/packaging/kernel/build-kernel.sh b/tools/packaging/kernel/build-kernel.sh index 3f1d52ed7..0aa831f65 100755 --- a/tools/packaging/kernel/build-kernel.sh +++ b/tools/packaging/kernel/build-kernel.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2018 Intel Corporation # diff --git a/tools/packaging/release/publish-kata-image.sh b/tools/packaging/release/publish-kata-image.sh index d37273061..49613ac82 100755 --- a/tools/packaging/release/publish-kata-image.sh +++ b/tools/packaging/release/publish-kata-image.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash #Copyright (c) 2018 Intel Corporation # #SPDX-License-Identifier: Apache-2.0 diff --git a/tools/packaging/release/release-notes.sh b/tools/packaging/release/release-notes.sh index b80c899eb..3babc75fe 100755 --- a/tools/packaging/release/release-notes.sh +++ b/tools/packaging/release/release-notes.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Copyright (c) 2018 Intel Corporation # # SPDX-License-Identifier: Apache-2.0 diff --git a/tools/packaging/release/tag_repos.sh b/tools/packaging/release/tag_repos.sh index 4d6f3f5c4..691d1c504 100755 --- a/tools/packaging/release/tag_repos.sh +++ b/tools/packaging/release/tag_repos.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2018 Intel Corporation # diff --git a/tools/packaging/release/tag_repos_test.sh b/tools/packaging/release/tag_repos_test.sh index 2a519dc43..b88161e9a 100755 --- a/tools/packaging/release/tag_repos_test.sh +++ b/tools/packaging/release/tag_repos_test.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2018 Intel Corporation # diff --git a/tools/packaging/release/update-repository-version.sh b/tools/packaging/release/update-repository-version.sh index 4703032cb..088792de0 100755 --- a/tools/packaging/release/update-repository-version.sh +++ b/tools/packaging/release/update-repository-version.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2018 Intel Corporation # diff --git a/tools/packaging/release/update-repository-version_test.sh b/tools/packaging/release/update-repository-version_test.sh index 9242fd122..2274541bb 100755 --- a/tools/packaging/release/update-repository-version_test.sh +++ b/tools/packaging/release/update-repository-version_test.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # #Copyright (c) 2018 Intel Corporation # diff --git a/tools/packaging/scripts/apply_patches.sh b/tools/packaging/scripts/apply_patches.sh index 28bf2f8fe..68d3d4260 100755 --- a/tools/packaging/scripts/apply_patches.sh +++ b/tools/packaging/scripts/apply_patches.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2020 Red Hat, Inc. # diff --git a/tools/packaging/scripts/configure-hypervisor.sh b/tools/packaging/scripts/configure-hypervisor.sh index 27d22c53f..bfcc8ca44 100755 --- a/tools/packaging/scripts/configure-hypervisor.sh +++ b/tools/packaging/scripts/configure-hypervisor.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2018 Intel Corporation # diff --git a/tools/packaging/scripts/gen_versions_txt.sh b/tools/packaging/scripts/gen_versions_txt.sh index f29744713..46701dca0 100755 --- a/tools/packaging/scripts/gen_versions_txt.sh +++ b/tools/packaging/scripts/gen_versions_txt.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Copyright (c) 2018 Intel Corporation # # SPDX-License-Identifier: Apache-2.0 diff --git a/tools/packaging/scripts/patch_qemu.sh b/tools/packaging/scripts/patch_qemu.sh index 91fa5d76a..745922e79 100755 --- a/tools/packaging/scripts/patch_qemu.sh +++ b/tools/packaging/scripts/patch_qemu.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2021 Intel Corporation # diff --git a/tools/packaging/static-build/cloud-hypervisor/build-static-clh.sh b/tools/packaging/static-build/cloud-hypervisor/build-static-clh.sh index 50e528f9d..f174daac0 100755 --- a/tools/packaging/static-build/cloud-hypervisor/build-static-clh.sh +++ b/tools/packaging/static-build/cloud-hypervisor/build-static-clh.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2019 Intel Corporation # diff --git a/tools/packaging/static-build/firecracker/build-static-firecracker.sh b/tools/packaging/static-build/firecracker/build-static-firecracker.sh index deac78773..8f1218798 100755 --- a/tools/packaging/static-build/firecracker/build-static-firecracker.sh +++ b/tools/packaging/static-build/firecracker/build-static-firecracker.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2018 Intel Corporation # diff --git a/tools/packaging/static-build/kernel/build.sh b/tools/packaging/static-build/kernel/build.sh index 1a177ea03..1aa6c1cd4 100755 --- a/tools/packaging/static-build/kernel/build.sh +++ b/tools/packaging/static-build/kernel/build.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2021 Intel Corporation # diff --git a/tools/packaging/static-build/qemu/build-base-qemu.sh b/tools/packaging/static-build/qemu/build-base-qemu.sh index a45651f15..6a5e3ab75 100755 --- a/tools/packaging/static-build/qemu/build-base-qemu.sh +++ b/tools/packaging/static-build/qemu/build-base-qemu.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2018 Intel Corporation # diff --git a/tools/packaging/static-build/qemu/build-static-qemu-experimental.sh b/tools/packaging/static-build/qemu/build-static-qemu-experimental.sh index 2b5329388..12cc57f5a 100755 --- a/tools/packaging/static-build/qemu/build-static-qemu-experimental.sh +++ b/tools/packaging/static-build/qemu/build-static-qemu-experimental.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2018 Intel Corporation # diff --git a/tools/packaging/static-build/qemu/build-static-qemu.sh b/tools/packaging/static-build/qemu/build-static-qemu.sh index b0cfaed91..e5cca7426 100755 --- a/tools/packaging/static-build/qemu/build-static-qemu.sh +++ b/tools/packaging/static-build/qemu/build-static-qemu.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2018 Intel Corporation # diff --git a/tools/packaging/static-build/scripts/kata-configure-docker.sh b/tools/packaging/static-build/scripts/kata-configure-docker.sh index 7c5309021..72fbc28e0 100644 --- a/tools/packaging/static-build/scripts/kata-configure-docker.sh +++ b/tools/packaging/static-build/scripts/kata-configure-docker.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Copyright (c) 2019 Intel Corporation # # SPDX-License-Identifier: Apache-2.0 diff --git a/tools/packaging/static-build/scripts/qemu-build-post.sh b/tools/packaging/static-build/scripts/qemu-build-post.sh index 54e4f8d76..da4c5d6d2 100755 --- a/tools/packaging/static-build/scripts/qemu-build-post.sh +++ b/tools/packaging/static-build/scripts/qemu-build-post.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2020 Red Hat, Inc. # diff --git a/tools/packaging/static-build/shim-v2/build.sh b/tools/packaging/static-build/shim-v2/build.sh index 4d63f7f4c..8cc34dba0 100755 --- a/tools/packaging/static-build/shim-v2/build.sh +++ b/tools/packaging/static-build/shim-v2/build.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2021 Intel Corporation # diff --git a/tools/packaging/static-build/shim-v2/install_go.sh b/tools/packaging/static-build/shim-v2/install_go.sh index b70fa2eeb..cf4b311c4 100755 --- a/tools/packaging/static-build/shim-v2/install_go.sh +++ b/tools/packaging/static-build/shim-v2/install_go.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2018 Intel Corporation # diff --git a/utils/kata-manager.sh b/utils/kata-manager.sh index 7ed3b7fec..52416b920 100755 --- a/utils/kata-manager.sh +++ b/utils/kata-manager.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2020 Intel Corporation # From e22a4e2a0aa87f2bc2f35a79424660655689a97a Mon Sep 17 00:00:00 2001 From: "James O. D. Hunt" Date: Thu, 13 Jan 2022 11:15:39 +0000 Subject: [PATCH 297/385] packaging: Make kernel config accessible to guest Provide the `/proc/config.gz` file in guest kernels that allow the guest to determine the kernel configuration used to build the running kernel. Note that since `gunzip` expects to rename the gzip'ed file it operates on, to use this feature you need to run something like the following in the container environment: ```bash # cat /proc/config.gz|gunzip -c ``` Fixes: #3445. Signed-off-by: James O. D. Hunt --- tools/packaging/kernel/configs/fragments/common/debug.conf | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 tools/packaging/kernel/configs/fragments/common/debug.conf diff --git a/tools/packaging/kernel/configs/fragments/common/debug.conf b/tools/packaging/kernel/configs/fragments/common/debug.conf new file mode 100644 index 000000000..c8c5e5b12 --- /dev/null +++ b/tools/packaging/kernel/configs/fragments/common/debug.conf @@ -0,0 +1,6 @@ +# Debug related settings + +# Enable /proc/config.gz to allow the guest to query the kernel +# configuration used for the running kernel. +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y From 2d0ec00aff7b6357e00cf5c5dafd6bd9c1c7d440 Mon Sep 17 00:00:00 2001 From: Huang Shijie Date: Fri, 14 Jan 2022 13:26:32 +0000 Subject: [PATCH 298/385] Qemu: Enable the vcpu-hotplug for arm Initially enable vcpu hotplug in qemu for arm base on Salli's work[1]. Fixes:#3280 Signed-off-by: Huang Shijie [1] https://github.com/salil-mehta/qemu/tree/virt-cpuhp-armv8/rfc-v1 --- ...d-QMP-vcpu-params-validation-support.patch | 79 ++++ ...puhp-Add-new-ARMCPU-core-id-property.patch | 101 ++++ ...ommon-cpu-utility-for-possible-vcpus.patch | 97 ++++ ...e-init-time-change-common-to-vcpu-co.patch | 447 ++++++++++++++++++ ...eate-disabled-possible-vcpus-machine.patch | 243 ++++++++++ ...s-to-pre-size-GIC-with-possible-vcpu.patch | 220 +++++++++ ...t-PMU-at-host-for-all-possible-vcpus.patch | 95 ++++ ...Enable-ACPI-support-for-vcpu-hotplug.patch | 115 +++++ ...ED-framework-with-cpu-hotplug-events.patch | 101 ++++ ...te-CPUs-AML-with-cpu-ctrl-dev-change.patch | 139 ++++++ ...te-GED-_EVT-method-AML-with-cpu-scan.patch | 51 ++ ...bl-change-to-size-the-guest-with-pos.patch | 67 +++ ...ACPI-_MAT-entry-for-Processor-object.patch | 95 ++++ ...e-objects-for-disabled-possible-vcpu.patch | 86 ++++ ...-ACPI-GED-framework-to-support-vcpu-.patch | 97 ++++ ...d-update-basic-hot-un-plug-framework.patch | 171 +++++++ ...s-to-un-wire-GICC-VCPU-IRQs-during-h.patch | 232 +++++++++ ...s-to-update-GIC-with-vcpu-hot-plug-n.patch | 211 +++++++++ ...s-required-to-re-init-the-vcpu-regis.patch | 268 +++++++++++ ...-the-guest-via-GED-about-cpu-hot-un-.patch | 115 +++++ ...s-required-for-reset-and-to-support-.patch | 109 +++++ ...pport-of-unrealize-ARMCPU-during-vcp.patch | 415 ++++++++++++++++ ...-pvtime-and-pmu-for-all-possible-cpu.patch | 38 ++ ...-hotunplug-frame-work-in-acpi-device.patch | 47 ++ ...anup-code-of-arm-cpu-hotplug-support.patch | 180 +++++++ ...-disabled-to-true-when-initialize-cp.patch | 65 +++ ...27-armcpuhp-clean-acpi-ged-call-back.patch | 63 +++ ...ug-when-maxvcpu-number-larger-than-8.patch | 230 +++++++++ .../qemu/patches/6.1.x/no_patches.txt | 0 29 files changed, 4177 insertions(+) create mode 100644 tools/packaging/qemu/patches/6.1.x/0001-arm-cpuhp-Add-QMP-vcpu-params-validation-support.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0002-arm-cpuhp-Add-new-ARMCPU-core-id-property.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0003-arm-cpuhp-Add-common-cpu-utility-for-possible-vcpus.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0004-arm-cpuhp-Machine-init-time-change-common-to-vcpu-co.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0005-arm-cpuhp-Pre-create-disabled-possible-vcpus-machine.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0006-arm-cpuhp-Changes-to-pre-size-GIC-with-possible-vcpu.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0007-arm-cpuhp-Init-PMU-at-host-for-all-possible-vcpus.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0008-arm-cpuhp-Enable-ACPI-support-for-vcpu-hotplug.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0009-arm-cpuhp-Init-GED-framework-with-cpu-hotplug-events.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0010-arm-cpuhp-Update-CPUs-AML-with-cpu-ctrl-dev-change.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0011-arm-cpuhp-Update-GED-_EVT-method-AML-with-cpu-scan.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0012-arm-cpuhp-MADT-Tbl-change-to-size-the-guest-with-pos.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0013-arm-cpuhp-Add-ACPI-_MAT-entry-for-Processor-object.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0014-arm-cpuhp-Release-objects-for-disabled-possible-vcpu.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0015-arm-cpuhp-Update-ACPI-GED-framework-to-support-vcpu-.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0016-arm-cpuhp-Add-update-basic-hot-un-plug-framework.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0017-arm-cpuhp-Changes-to-un-wire-GICC-VCPU-IRQs-during-h.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0018-arm-cpuhp-Changes-to-update-GIC-with-vcpu-hot-plug-n.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0019-arm-cpuhp-Changes-required-to-re-init-the-vcpu-regis.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0020-arm-cpuhp-Update-the-guest-via-GED-about-cpu-hot-un-.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0021-arm-cpuhp-Changes-required-for-reset-and-to-support-.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0022-arm-cpuhp-Add-support-of-unrealize-ARMCPU-during-vcp.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0023-armcpuhp-initial-pvtime-and-pmu-for-all-possible-cpu.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0024-armcpuhp-add-cpu-hotunplug-frame-work-in-acpi-device.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0025-cleanup-code-of-arm-cpu-hotplug-support.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0026-armcpuhp-set-cpu-disabled-to-true-when-initialize-cp.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0027-armcpuhp-clean-acpi-ged-call-back.patch create mode 100644 tools/packaging/qemu/patches/6.1.x/0028-armcpuhp-fix-bug-when-maxvcpu-number-larger-than-8.patch delete mode 100644 tools/packaging/qemu/patches/6.1.x/no_patches.txt diff --git a/tools/packaging/qemu/patches/6.1.x/0001-arm-cpuhp-Add-QMP-vcpu-params-validation-support.patch b/tools/packaging/qemu/patches/6.1.x/0001-arm-cpuhp-Add-QMP-vcpu-params-validation-support.patch new file mode 100644 index 000000000..3625d7bb2 --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0001-arm-cpuhp-Add-QMP-vcpu-params-validation-support.patch @@ -0,0 +1,79 @@ +From cbc35b3747ff8c50e64e3b8aeecf1b782ee27cad Mon Sep 17 00:00:00 2001 +From: Huang Shijie +Date: Mon, 22 Nov 2021 17:51:11 +0800 +Subject: [PATCH 01/28] arm/cpuhp: Add QMP vcpu params validation support + +From Salil Mehta +For now, vcpu hotplug is only supported with single socket single thread, +single die. NUMA is not supported either and everthing falls into single +node. Work to properly support these could be taken later once community +agrees with the base framework changes being presented to support ARM vcpu +hotplug in QEMU. Hence, these checks. + +Co-developed-by: Keqian Zhu +Signed-off-by: Salil Mehta +Signed-off-by: Huang Shijie +--- + hw/arm/virt.c | 39 +++++++++++++++++++++++++++++++++++++++ + 1 file changed, 39 insertions(+) + +diff --git a/hw/arm/virt.c b/hw/arm/virt.c +index 81eda46b0b..99d59fada2 100644 +--- a/hw/arm/virt.c ++++ b/hw/arm/virt.c +@@ -2564,6 +2564,44 @@ static HotplugHandler *virt_machine_get_hotplug_handler(MachineState *machine, + return NULL; + } + ++static void virt_smp_parse(MachineState *ms, SMPConfiguration *config, Error **errp) ++{ ++ unsigned cpus = config->has_cpus ? config->cpus : 1; ++ unsigned sockets = config->has_sockets ? config->sockets: 1; ++ unsigned cores = config->has_cores ? config->cores : cpus; ++ unsigned threads = config->has_threads ? config->threads: 1; ++ unsigned int max_cpus; ++ ++ if (sockets > 1 || threads > 1) { ++ error_report("does not support more than one socket or thread"); ++ exit(1); ++ } ++ ++ if (cores != cpus) { ++ error_report("cpu topology: " ++ "sockets (%u) * cores (%u) * threads (%u) < " ++ "smp_cpus (%u)", ++ sockets, cores, threads, cpus); ++ exit(1); ++ } ++ ++ max_cpus = config->has_maxcpus ? config->maxcpus : cpus; ++ if (sockets * cores * threads > max_cpus) { ++ error_report("cpu topology: " ++ "sockets (%u) * cores (%u) * threads (%u) > " ++ "maxcpus (%u)", ++ sockets, cores, threads, ++ max_cpus); ++ exit(1); ++ } ++ ++ ms->smp.max_cpus = max_cpus; ++ ms->smp.sockets = sockets; ++ ms->smp.cpus = cpus; ++ ms->smp.cores = cores; ++ ms->smp.threads = threads; ++} ++ + /* + * for arm64 kvm_type [7-0] encodes the requested number of bits + * in the IPA address space +@@ -2641,6 +2679,7 @@ static void virt_machine_class_init(ObjectClass *oc, void *data) + mc->auto_enable_numa_with_memhp = true; + mc->auto_enable_numa_with_memdev = true; + mc->default_ram_id = "mach-virt.ram"; ++ mc->smp_parse = virt_smp_parse; + + object_class_property_add(oc, "acpi", "OnOffAuto", + virt_get_acpi, virt_set_acpi, +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0002-arm-cpuhp-Add-new-ARMCPU-core-id-property.patch b/tools/packaging/qemu/patches/6.1.x/0002-arm-cpuhp-Add-new-ARMCPU-core-id-property.patch new file mode 100644 index 000000000..48e62b993 --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0002-arm-cpuhp-Add-new-ARMCPU-core-id-property.patch @@ -0,0 +1,101 @@ +From a24ce04b7c2e958a0730f19e6f54e6570a075b20 Mon Sep 17 00:00:00 2001 +From: Salil Mehta +Date: Tue, 23 Nov 2021 15:08:45 +0800 +Subject: [PATCH 02/28] arm/cpuhp: Add new ARMCPU core-id property + +This shall be used to store user specified core index and shall be directly +used as slot-index during hot{plug|unplug} of vcpu. + +For now, we are not taking into account of other topology info like thread-id, +socket-id to derive mp-affinity. Host KVM uses vcpu-id to derive the mpidr for +the vcpu of the guest. This is not in exact corroboration with the ARM spec +view of the MPIDR. Hence, the concept of threads or SMT bit present as part of +the MPIDR_EL1 also gets lost. + +Also, we need ACPI PPTT Table support in QEMU to be able to export this +topology info to the guest VM and the info should be consistent with what host +cpu supports if accel=kvm is being used. + +Perhaps some comments on this will help? @Andrew/drjones@redhat.com + +Co-developed-by: Keqian Zhu +Signed-off-by: Salil Mehta +Signed-off-by: Huang Shijie +--- + hw/arm/virt.c | 5 +++++ + target/arm/cpu.c | 5 +++++ + target/arm/cpu.h | 1 + + 3 files changed, 11 insertions(+) + +diff --git a/hw/arm/virt.c b/hw/arm/virt.c +index 99d59fada2..86e1470925 100644 +--- a/hw/arm/virt.c ++++ b/hw/arm/virt.c +@@ -1944,6 +1944,7 @@ static void machvirt_init(MachineState *machine) + &error_fatal); + + aarch64 &= object_property_get_bool(cpuobj, "aarch64", NULL); ++ object_property_set_int(cpuobj, "core-id", n, NULL); + + if (!vms->secure) { + object_property_set_bool(cpuobj, "has_el3", false, NULL); +@@ -2357,6 +2358,7 @@ static const CPUArchIdList *virt_possible_cpu_arch_ids(MachineState *ms) + { + int n; + unsigned int max_cpus = ms->smp.max_cpus; ++ unsigned int smp_threads = ms->smp.threads; + VirtMachineState *vms = VIRT_MACHINE(ms); + + if (ms->possible_cpus) { +@@ -2369,10 +2371,13 @@ static const CPUArchIdList *virt_possible_cpu_arch_ids(MachineState *ms) + ms->possible_cpus->len = max_cpus; + for (n = 0; n < ms->possible_cpus->len; n++) { + ms->possible_cpus->cpus[n].type = ms->cpu_type; ++ ms->possible_cpus->cpus[n].vcpus_count = smp_threads; + ms->possible_cpus->cpus[n].arch_id = + virt_cpu_mp_affinity(vms, n); + ms->possible_cpus->cpus[n].props.has_thread_id = true; + ms->possible_cpus->cpus[n].props.thread_id = n; ++ ms->possible_cpus->cpus[n].props.has_core_id = true; ++ ms->possible_cpus->cpus[n].props.core_id = n; + } + return ms->possible_cpus; + } +diff --git a/target/arm/cpu.c b/target/arm/cpu.c +index 2866dd7658..5dc3fa6c3a 100644 +--- a/target/arm/cpu.c ++++ b/target/arm/cpu.c +@@ -1130,6 +1130,9 @@ static Property arm_cpu_has_dsp_property = + static Property arm_cpu_has_mpu_property = + DEFINE_PROP_BOOL("has-mpu", ARMCPU, has_mpu, true); + ++static Property arm_cpu_coreid_property = ++ DEFINE_PROP_INT32("core-id", ARMCPU, core_id, -1); ++ + /* This is like DEFINE_PROP_UINT32 but it doesn't set the default value, + * because the CPU initfn will have already set cpu->pmsav7_dregion to + * the right value for that particular CPU type, and we don't want +@@ -1303,6 +1306,8 @@ void arm_cpu_post_init(Object *obj) + kvm_arm_add_vcpu_properties(obj); + } + ++ qdev_property_add_static(DEVICE(obj), &arm_cpu_coreid_property); ++ + #ifndef CONFIG_USER_ONLY + if (arm_feature(&cpu->env, ARM_FEATURE_AARCH64) && + cpu_isar_feature(aa64_mte, cpu)) { +diff --git a/target/arm/cpu.h b/target/arm/cpu.h +index 9f0a5f84d5..ba11468ab5 100644 +--- a/target/arm/cpu.h ++++ b/target/arm/cpu.h +@@ -999,6 +999,7 @@ struct ARMCPU { + QLIST_HEAD(, ARMELChangeHook) el_change_hooks; + + int32_t node_id; /* NUMA node this CPU belongs to */ ++ int32_t core_id; /* core-id of this ARM VCPU */ + + /* Used to synchronize KVM and QEMU in-kernel device levels */ + uint8_t device_irq_level; +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0003-arm-cpuhp-Add-common-cpu-utility-for-possible-vcpus.patch b/tools/packaging/qemu/patches/6.1.x/0003-arm-cpuhp-Add-common-cpu-utility-for-possible-vcpus.patch new file mode 100644 index 000000000..c01c4454d --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0003-arm-cpuhp-Add-common-cpu-utility-for-possible-vcpus.patch @@ -0,0 +1,97 @@ +From cf832166791bddea562ba9372795db04ea41a581 Mon Sep 17 00:00:00 2001 +From: Salil Mehta +Date: Tue, 23 Nov 2021 15:22:27 +0800 +Subject: [PATCH 03/28] arm/cpuhp: Add common cpu utility for possible vcpus + +Adds various utility functions which might be required to fetch or check the +state of the possible vcpus. This also introduces concept of *disabled* vcpus, +which are part of the *possible* vcpus but are not part of the *present* vcpu. +This state shall be used during machine init time to check the presence of +vcpus. + +Co-developed-by: Keqian Zhu +Signed-off-by: Salil Mehta +--- + cpus-common.c | 19 +++++++++++++++++++ + include/hw/core/cpu.h | 21 +++++++++++++++++++++ + 2 files changed, 40 insertions(+) + +diff --git a/cpus-common.c b/cpus-common.c +index 6e73d3e58d..4f0fa42a2e 100644 +--- a/cpus-common.c ++++ b/cpus-common.c +@@ -23,6 +23,7 @@ + #include "hw/core/cpu.h" + #include "sysemu/cpus.h" + #include "qemu/lockable.h" ++#include "hw/boards.h" + + static QemuMutex qemu_cpu_list_lock; + static QemuCond exclusive_cond; +@@ -86,6 +87,24 @@ void cpu_list_add(CPUState *cpu) + QTAILQ_INSERT_TAIL_RCU(&cpus, cpu, node); + } + ++CPUState *qemu_get_possible_cpu(int index) ++{ ++ MachineState *ms = MACHINE(qdev_get_machine()); ++ const CPUArchIdList *possible_cpus = ms->possible_cpus; ++ CPUState *cpu; ++ ++ assert((index >= 0) && (index < possible_cpus->len)); ++ ++ cpu = CPU(possible_cpus->cpus[index].cpu); ++ ++ return cpu; ++} ++ ++bool qemu_present_cpu(CPUState *cpu) ++{ ++ return (cpu && !cpu->disabled); ++} ++ + void cpu_list_remove(CPUState *cpu) + { + QEMU_LOCK_GUARD(&qemu_cpu_list_lock); +diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h +index bc864564ce..5a2571af3e 100644 +--- a/include/hw/core/cpu.h ++++ b/include/hw/core/cpu.h +@@ -391,6 +391,7 @@ struct CPUState { + SavedIOTLB saved_iotlb; + #endif + ++ bool disabled; + /* TODO Move common fields from CPUArchState here. */ + int cpu_index; + int cluster_index; +@@ -749,6 +750,26 @@ static inline bool cpu_in_exclusive_context(const CPUState *cpu) + */ + CPUState *qemu_get_cpu(int index); + ++/** ++ * qemu_get_possible_cpu: ++ * @index: The CPUState@cpu_index value of the CPU to obtain. ++ * ++ * Gets a CPU matching @index. ++ * ++ * Returns: The possible CPU or %NULL if there is no matching CPU. ++ */ ++CPUState *qemu_get_possible_cpu(int index); ++ ++/** ++ * qemu_present_cpu: ++ * @cpu: The vCPU to check ++ * ++ * Checks if the vcpu is amongst the present possible vcpus. ++ * ++ * Returns: True if it is present possible vcpu else false ++ */ ++bool qemu_present_cpu(CPUState *cpu); ++ + /** + * cpu_exists: + * @id: Guest-exposed CPU ID to lookup. +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0004-arm-cpuhp-Machine-init-time-change-common-to-vcpu-co.patch b/tools/packaging/qemu/patches/6.1.x/0004-arm-cpuhp-Machine-init-time-change-common-to-vcpu-co.patch new file mode 100644 index 000000000..8350ea7b9 --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0004-arm-cpuhp-Machine-init-time-change-common-to-vcpu-co.patch @@ -0,0 +1,447 @@ +From 0de9776b56a8848f28bdd21332dff50fac12bca4 Mon Sep 17 00:00:00 2001 +From: Salil Mehta +Date: Tue, 23 Nov 2021 16:30:39 +0800 +Subject: [PATCH 04/28] arm/cpuhp: Machine init time change common to vcpu + {cold|hot}-plug + +This refactors (+) introduces the common logic required during the +initialization of both cold and hot plugged vcpus. This also initializes the +*disabled* state of the vcpus which shall be used further during init phases +of various other components like GIC, PMU, ACPI etc as part of the virt machine +initialization. + +Co-developed-by: Keqian Zhu +Signed-off-by: Salil Mehta +Signed-off-by: Huang Shijie +--- + hw/arm/virt.c | 226 +++++++++++++++++++++++++++++++++++++++--- + include/hw/arm/virt.h | 2 + + target/arm/cpu.c | 7 ++ + target/arm/cpu64.c | 8 ++ + 4 files changed, 228 insertions(+), 15 deletions(-) + +diff --git a/hw/arm/virt.c b/hw/arm/virt.c +index 86e1470925..81219d1d5a 100644 +--- a/hw/arm/virt.c ++++ b/hw/arm/virt.c +@@ -204,6 +204,8 @@ static const char *valid_cpus[] = { + ARM_CPU_TYPE_NAME("max"), + }; + ++static CPUArchId *virt_find_cpu_slot(MachineState *ms, int vcpuid); ++ + static bool cpu_type_valid(const char *cpu) + { + int i; +@@ -1750,6 +1752,62 @@ static void finalize_gic_version(VirtMachineState *vms) + } + } + ++static void virt_cpu_set_properties(Object *cpuobj, const CPUArchId *cpu_slot) ++{ ++ MachineState *ms = MACHINE(qdev_get_machine()); ++ MemoryRegion *sysmem = get_system_memory(); ++ VirtMachineState *vms = VIRT_MACHINE(ms); ++ uint64_t mp_affinity = cpu_slot->arch_id; ++ CPUState *cs = CPU(cpuobj); ++ VirtMachineClass *vmc; ++ ++ vmc = VIRT_MACHINE_GET_CLASS(ms); ++ ++ /* now, set the cpu object property values */ ++ object_property_set_int(cpuobj, "mp-affinity", mp_affinity, NULL); ++ ++ numa_cpu_pre_plug(cpu_slot, DEVICE(cpuobj), &error_fatal); ++ ++ if (!vms->secure) { ++ object_property_set_bool(cpuobj, "has_el3", false, NULL); ++ } ++ ++ if (!vms->virt && object_property_find(cpuobj, "has_el2")) { ++ object_property_set_bool(cpuobj, "has_el2", false, NULL); ++ } ++ ++ if (vms->psci_conduit != QEMU_PSCI_CONDUIT_DISABLED) { ++ object_property_set_int(cpuobj, "psci-conduit", vms->psci_conduit, ++ NULL); ++ /* Secondary CPUs start in PSCI powered-down state */ ++ if (cs->cpu_index > 0) ++ object_property_set_bool(cpuobj, "start-powered-off", true, ++ NULL); ++ } ++ ++ if (vmc->kvm_no_adjvtime && ++ object_property_find(cpuobj, "kvm-no-adjvtime")) { ++ object_property_set_bool(cpuobj, "kvm-no-adjvtime", true, NULL); ++ } ++ ++ if (vmc->no_pmu && object_property_find(cpuobj, "pmu")) { ++ object_property_set_bool(cpuobj, "pmu", false, NULL); ++ } ++ ++ if (object_property_find(cpuobj, "reset-cbar")) { ++ object_property_set_int(cpuobj, "reset-cbar", vms->memmap[VIRT_CPUPERIPHS].base, ++ &error_abort); ++ } ++ ++ object_property_set_link(cpuobj, "memory", OBJECT(sysmem), ++ &error_abort); ++ ++ if (vms->secure) { ++ object_property_set_link(cpuobj, "secure-memory", OBJECT(vms->secure_sysmem), ++ &error_abort); ++ } ++} ++ + /* + * virt_cpu_post_init() must be called after the CPUs have + * been realized and the GIC has been created. +@@ -1867,6 +1925,7 @@ static void machvirt_init(MachineState *machine) + memory_region_init(secure_sysmem, OBJECT(machine), "secure-memory", + UINT64_MAX); + memory_region_add_subregion_overlap(secure_sysmem, 0, sysmem, -1); ++ vms->secure_sysmem = secure_sysmem; + } + + firmware_loaded = virt_firmware_init(vms, sysmem, +@@ -1909,6 +1968,15 @@ static void machvirt_init(MachineState *machine) + exit(1); + } + ++ vms->max_cpus = max_cpus; ++ if (vms->gic_version < VIRT_GIC_VERSION_3) { ++ warn_report("For GICv%d max-cpus must be equal to smp-cpus", ++ vms->gic_version); ++ warn_report("Overriding specified max-cpus(%d) with smp-cpus(%d)", ++ max_cpus, smp_cpus); ++ vms->max_cpus = smp_cpus; ++ } ++ + if (vms->virt && kvm_enabled()) { + error_report("mach-virt: KVM does not support providing " + "Virtualization extensions to the guest CPU"); +@@ -1927,14 +1995,14 @@ static void machvirt_init(MachineState *machine) + assert(possible_cpus->len == max_cpus); + for (n = 0; n < possible_cpus->len; n++) { + Object *cpuobj; +- CPUState *cs; ++/* CPUState *cs; + + if (n >= smp_cpus) { + break; + } +- ++*/ + cpuobj = object_new(possible_cpus->cpus[n].type); +- object_property_set_int(cpuobj, "mp-affinity", ++/* object_property_set_int(cpuobj, "mp-affinity", + possible_cpus->cpus[n].arch_id, NULL); + + cs = CPU(cpuobj); +@@ -1942,11 +2010,11 @@ static void machvirt_init(MachineState *machine) + + numa_cpu_pre_plug(&possible_cpus->cpus[cs->cpu_index], DEVICE(cpuobj), + &error_fatal); +- ++*/ + aarch64 &= object_property_get_bool(cpuobj, "aarch64", NULL); + object_property_set_int(cpuobj, "core-id", n, NULL); + +- if (!vms->secure) { ++/* if (!vms->secure) { + object_property_set_bool(cpuobj, "has_el3", false, NULL); + } + +@@ -1957,9 +2025,9 @@ static void machvirt_init(MachineState *machine) + if (vms->psci_conduit != QEMU_PSCI_CONDUIT_DISABLED) { + object_property_set_int(cpuobj, "psci-conduit", vms->psci_conduit, + NULL); +- ++*/ + /* Secondary CPUs start in PSCI powered-down state */ +- if (n > 0) { ++/* if (n > 0) { + object_property_set_bool(cpuobj, "start-powered-off", true, + NULL); + } +@@ -1991,15 +2059,15 @@ static void machvirt_init(MachineState *machine) + object_property_set_link(cpuobj, "secure-memory", + OBJECT(secure_sysmem), &error_abort); + } +- +- if (vms->mte) { ++*/ ++// if (vms->mte) { + /* Create the memory region only once, but link to all cpus. */ +- if (!tag_sysmem) { ++// if (!tag_sysmem) { + /* + * The property exists only if MemTag is supported. + * If it is, we must allocate the ram to back that up. + */ +- if (!object_property_find(cpuobj, "tag-memory")) { ++/* if (!object_property_find(cpuobj, "tag-memory")) { + error_report("MTE requested, but not supported " + "by the guest CPU"); + exit(1); +@@ -2013,9 +2081,9 @@ static void machvirt_init(MachineState *machine) + secure_tag_sysmem = g_new(MemoryRegion, 1); + memory_region_init(secure_tag_sysmem, OBJECT(machine), + "secure-tag-memory", UINT64_MAX / 32); +- ++*/ + /* As with ram, secure-tag takes precedence over tag. */ +- memory_region_add_subregion_overlap(secure_tag_sysmem, 0, ++/* memory_region_add_subregion_overlap(secure_tag_sysmem, 0, + tag_sysmem, -1); + } + } +@@ -2028,7 +2096,7 @@ static void machvirt_init(MachineState *machine) + &error_abort); + } + } +- ++*/ + qdev_realize(DEVICE(cpuobj), NULL, &error_fatal); + object_unref(cpuobj); + } +@@ -2382,6 +2450,71 @@ static const CPUArchIdList *virt_possible_cpu_arch_ids(MachineState *ms) + return ms->possible_cpus; + } + ++static int virt_archid_cmp(const void *a, const void *b) ++{ ++ CPUArchId *archid_a = (CPUArchId *)a; ++ CPUArchId *archid_b = (CPUArchId *)b; ++ ++ return archid_a->arch_id - archid_b->arch_id; ++} ++ ++static CPUArchId *virt_find_cpu_slot(MachineState *ms, int vcpuid) ++{ ++ VirtMachineState *vms = VIRT_MACHINE(ms); ++ CPUArchId arch_id, *found_cpu; ++ uint64_t mp_affinity; ++ ++ mp_affinity = virt_cpu_mp_affinity(vms, vcpuid); ++ arch_id.arch_id = mp_affinity; ++ found_cpu = bsearch(&arch_id, ms->possible_cpus->cpus, ++ ms->possible_cpus->len, ++ sizeof(*ms->possible_cpus->cpus), virt_archid_cmp); ++ ++ assert (found_cpu); ++ ++ /* ++ * RFC: Question: ++ * For KVM/TCG, MPIDR for vcpu is derived using vcpu-id. ++ * In fact, as of now there is a linear relation between ++ * vcpu-id and mpidr(see below fig.) as derived in host ++ * kvm. Slot-id is the index where vcpu with certain ++ * arch-id(=mpidr/ap-affinity) is plugged. ++ * ++ * Therefore, for now we could use the vcpu-id as slot ++ * index for getting CPUArchId of the vcpu coresponding ++ * to this slot(this view is not perfectly consistent ++ * with the ARM specification view of MPIDR_EL1). ++ * QEMU/KVM view of cpu topology makes it bit difficult ++ * to use topo-info(pkg-id, core-id, thread-id) with ++ * device_add/-device interface which might not match ++ * with what actual underlying host cpu supports. ++ * therefore question is do we care about this? and ++ * is it okay to have view of thread-id inconsistent ++ * with the host cpu? How should QEMU create PPTT ++ * for the Guest? ++ * ++ * +----+----+----+----+----+----+----+----+ ++ * MASK | F F | F F | F F | 0 F | ++ * +----+----+----+----+----+----+----+----+ ++ * ++ * | | cluster | cluster | |core| ++ * |<---------Package-id-------->| |core| ++ * ++ * +----+----+----+----+----+----+----+----+ ++ * MPIDR ||| Res | Aff2 | Aff1 | Aff0 | ++ * +----+----+----+----+----+----+----+----+ ++ * \ \ \ | | ++ * \ 8bit \ 8bit \ |4bit| ++ * \<------->\<------->\ |<-->| ++ * \ \ \| | ++ * +----+----+----+----+----+----+----+----+ ++ * VCPU-ID | Byte4 | Byte2 | Byte1 | Byte0 | ++ * +----+----+----+----+----+----+----+----+ ++ */ ++ ++ return found_cpu; ++} ++ + static void virt_memory_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev, + Error **errp) + { +@@ -2425,6 +2558,64 @@ static void virt_memory_plug(HotplugHandler *hotplug_dev, + dev, &error_abort); + } + ++static void virt_cpu_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev, ++ Error **errp) ++{ ++ MachineState *ms = MACHINE(hotplug_dev); ++ ARMCPU *cpu = ARM_CPU(dev); ++ CPUState *cs = CPU(dev); ++ CPUArchId *cpu_slot; ++ ++ /* sanity check the cpu */ ++ if (!object_dynamic_cast(OBJECT(cpu), ms->cpu_type)) { ++ error_setg(errp, "Invalid CPU type, expected cpu type: '%s'", ++ ms->cpu_type); ++ return; ++ } ++ ++ if ((cpu->core_id < 0) || (cpu->core_id >= ms->possible_cpus->len)) { ++ error_setg(errp, "Invalid core-id %u specified, must be in range 1:%u", ++ cpu->core_id, ms->possible_cpus->len - 1); ++ return; ++ } ++ ++ /* ++ * RFC: Question: ++ * For now we are not taking into account of other topo info like ++ * thread-id, socket-id to generate arch-id/mp-affinity. ++ * The way KVM/Host generates mpidr value and the way ARM spec ++ * identifies uniquely cpu within the heirarchy is bit inconsistent. ++ * Perhaps needs more discussion on this? Hence, directly using ++ * core_id as cpu_index for now. Ideally, slot-index found out using ++ * the topo info should have been the cpu-index. ++ */ ++ cs->cpu_index = cpu->core_id; ++ ++ cpu_slot = virt_find_cpu_slot(ms, cpu->core_id); ++ if (qemu_present_cpu(CPU(cpu_slot->cpu))) { ++ error_setg(errp, "cpu %d with arch-id %" PRIu64 " exists", ++ cpu->core_id, cpu_slot->arch_id); ++ return; ++ } ++ virt_cpu_set_properties(OBJECT(cs), cpu_slot); ++} ++ ++static void virt_cpu_plug(HotplugHandler *hotplug_dev, DeviceState *dev, ++ Error **errp) ++{ ++ MachineState *ms = MACHINE(hotplug_dev); ++ ARMCPU *cpu = ARM_CPU(dev); ++ CPUState *cs = CPU(dev); ++ CPUArchId *cpu_slot; ++ ++ /* insert the cold/hot-plugged vcpu in the slot */ ++ cpu_slot = virt_find_cpu_slot(ms, cpu->core_id); ++ cpu_slot->cpu = OBJECT(dev); ++ ++ cs->disabled = false; ++ return; ++} ++ + static void virt_machine_device_pre_plug_cb(HotplugHandler *hotplug_dev, + DeviceState *dev, Error **errp) + { +@@ -2432,6 +2623,8 @@ static void virt_machine_device_pre_plug_cb(HotplugHandler *hotplug_dev, + + if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { + virt_memory_pre_plug(hotplug_dev, dev, errp); ++ } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { ++ virt_cpu_pre_plug(hotplug_dev, dev, errp); + } else if (object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_IOMMU_PCI)) { + hwaddr db_start = 0, db_end = 0; + char *resv_prop_str; +@@ -2476,6 +2669,8 @@ static void virt_machine_device_plug_cb(HotplugHandler *hotplug_dev, + } + if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { + virt_memory_plug(hotplug_dev, dev, errp); ++ } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { ++ virt_cpu_plug(hotplug_dev, dev, errp); + } + if (object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_IOMMU_PCI)) { + PCIDevice *pdev = PCI_DEVICE(dev); +@@ -2556,7 +2751,8 @@ static HotplugHandler *virt_machine_get_hotplug_handler(MachineState *machine, + MachineClass *mc = MACHINE_GET_CLASS(machine); + + if (device_is_dynamic_sysbus(mc, dev) || +- (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM))) { ++ (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) || ++ (object_dynamic_cast(OBJECT(dev), TYPE_CPU))) { + return HOTPLUG_HANDLER(machine); + } + if (object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_IOMMU_PCI)) { +diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h +index 9661c46699..960812c66e 100644 +--- a/include/hw/arm/virt.h ++++ b/include/hw/arm/virt.h +@@ -137,6 +137,7 @@ struct VirtMachineState { + DeviceState *platform_bus_dev; + FWCfgState *fw_cfg; + PFlashCFI01 *flash[2]; ++ MemoryRegion *secure_sysmem; + bool secure; + bool highmem; + bool highmem_ecam; +@@ -155,6 +156,7 @@ struct VirtMachineState { + char *pciehb_nodename; + const int *irqmap; + int fdt_size; ++ int max_cpus; + uint32_t clock_phandle; + uint32_t gic_phandle; + uint32_t msi_phandle; +diff --git a/target/arm/cpu.c b/target/arm/cpu.c +index 5dc3fa6c3a..ff827d56b7 100644 +--- a/target/arm/cpu.c ++++ b/target/arm/cpu.c +@@ -2004,6 +2004,12 @@ static const struct TCGCPUOps arm_tcg_ops = { + }; + #endif /* CONFIG_TCG */ + ++static int64_t arm_cpu_get_arch_id(CPUState *cs) ++{ ++ ARMCPU *cpu = ARM_CPU(cs); ++ return cpu->mp_affinity; ++} ++ + static void arm_cpu_class_init(ObjectClass *oc, void *data) + { + ARMCPUClass *acc = ARM_CPU_CLASS(oc); +@@ -2019,6 +2025,7 @@ static void arm_cpu_class_init(ObjectClass *oc, void *data) + cc->class_by_name = arm_cpu_class_by_name; + cc->has_work = arm_cpu_has_work; + cc->dump_state = arm_cpu_dump_state; ++ cc->get_arch_id = arm_cpu_get_arch_id; + cc->set_pc = arm_cpu_set_pc; + cc->gdb_read_register = arm_cpu_gdb_read_register; + cc->gdb_write_register = arm_cpu_gdb_write_register; +diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c +index c690318a9b..2134be0b67 100644 +--- a/target/arm/cpu64.c ++++ b/target/arm/cpu64.c +@@ -894,7 +894,10 @@ static gchar *aarch64_gdb_arch_name(CPUState *cs) + static void aarch64_cpu_class_init(ObjectClass *oc, void *data) + { + CPUClass *cc = CPU_CLASS(oc); ++ DeviceClass *dc = DEVICE_CLASS(oc); ++ CPUState *cs = CPU(oc); + ++ dc->user_creatable = true; + cc->gdb_read_register = aarch64_cpu_gdb_read_register; + cc->gdb_write_register = aarch64_cpu_gdb_write_register; + cc->gdb_num_core_regs = 34; +@@ -906,6 +909,11 @@ static void aarch64_cpu_class_init(ObjectClass *oc, void *data) + object_class_property_set_description(oc, "aarch64", + "Set on/off to enable/disable aarch64 " + "execution state "); ++ /* ++ * we start every ARM64 vcpu as disabled possible vcpu. It needs to be ++ * enabled explicitly ++ */ ++ cs->disabled = true; + } + + static void aarch64_cpu_instance_init(Object *obj) +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0005-arm-cpuhp-Pre-create-disabled-possible-vcpus-machine.patch b/tools/packaging/qemu/patches/6.1.x/0005-arm-cpuhp-Pre-create-disabled-possible-vcpus-machine.patch new file mode 100644 index 000000000..408bde0f2 --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0005-arm-cpuhp-Pre-create-disabled-possible-vcpus-machine.patch @@ -0,0 +1,243 @@ +From 1d9605a449833e464bd0388bb658d31a84ad4c7d Mon Sep 17 00:00:00 2001 +From: Salil Mehta +Date: Wed, 24 Nov 2021 15:30:20 +0800 +Subject: [PATCH 05/28] arm/cpuhp: Pre-create disabled possible vcpus @machine + init + +In ARMv8 architecture, GIC needs all the vcpus to be created and present when +it is initialized. This is because: +1. GICC and MPIDR association must be fixed at the VM initialization time. + This is represented by register GIC_TYPER(mp_afffinity, proc_num) +2. GICC(cpu interfaces), GICR(redistributors) etc all must be initialized + at the boot time as well. +3. Memory regions associated with GICR etc. cannot be changed(add/del/mod) + after VM has inited. + +This patch adds the support to pre-create all such possible vcpus within the +host using the KVM interface as part of the virt machine initialization. These +vcpus could later be attached to QOM/ACPI while they are actually hot plugged +and made present. + +NOTE: There is some refactoring related to the kvm_destroy_vcpu/kvm_get_vcpu + (to make use of the common code) has been intentionaly left out in RFC + version to avoid obscuring the framework change of the cpu hotplug. The + existing code being presented in this patch could further be optimized + later. + +Co-developed-by: Keqian Zhu +Signed-off-by: Salil Mehta +Signed-off-by: Huang Shijie +--- + accel/kvm/kvm-all.c | 31 +++++++++++++++++++++++++++ + accel/kvm/kvm-cpus.h | 2 ++ + hw/arm/virt.c | 50 +++++++++++++++++++++++++++++++++++++++++--- + target/arm/kvm.c | 33 +++++++++++++++++++++++++++++ + target/arm/kvm_arm.h | 11 ++++++++++ + 5 files changed, 124 insertions(+), 3 deletions(-) + +diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c +index 0125c17edb..46717dad14 100644 +--- a/accel/kvm/kvm-all.c ++++ b/accel/kvm/kvm-all.c +@@ -425,6 +425,37 @@ err: + return ret; + } + ++void kvm_park_vcpu(CPUState *cs) ++{ ++ unsigned long vcpu_id = cs->cpu_index; ++ struct KVMParkedVcpu *vcpu; ++ ++ vcpu = g_malloc0(sizeof(*vcpu)); ++ vcpu->vcpu_id = vcpu_id; ++ vcpu->kvm_fd = cs->kvm_fd; ++ QLIST_INSERT_HEAD(&kvm_state->kvm_parked_vcpus, vcpu, node); ++} ++ ++int kvm_create_vcpu(CPUState *cpu) ++{ ++ unsigned long vcpu_id = cpu->cpu_index; ++ KVMState *s = kvm_state; ++ int ret = 0; ++ ++ DPRINTF("kvm_create_vcpu\n"); ++ ++ ret = kvm_vm_ioctl(s, KVM_CREATE_VCPU, (void *)vcpu_id); ++ if (ret < 0) { ++ goto err; ++ } ++ cpu->kvm_fd = ret; ++ cpu->kvm_state = s; ++ cpu->vcpu_dirty = true; ++ ++err: ++ return ret; ++} ++ + void kvm_destroy_vcpu(CPUState *cpu) + { + if (do_kvm_destroy_vcpu(cpu) < 0) { +diff --git a/accel/kvm/kvm-cpus.h b/accel/kvm/kvm-cpus.h +index bf0bd1bee4..54a4fd19cf 100644 +--- a/accel/kvm/kvm-cpus.h ++++ b/accel/kvm/kvm-cpus.h +@@ -14,6 +14,8 @@ + + int kvm_init_vcpu(CPUState *cpu, Error **errp); + int kvm_cpu_exec(CPUState *cpu); ++int kvm_create_vcpu(CPUState *cpu); ++void kvm_park_vcpu(CPUState *cs); + void kvm_destroy_vcpu(CPUState *cpu); + void kvm_cpu_synchronize_post_reset(CPUState *cpu); + void kvm_cpu_synchronize_post_init(CPUState *cpu); +diff --git a/hw/arm/virt.c b/hw/arm/virt.c +index 81219d1d5a..853288b34a 100644 +--- a/hw/arm/virt.c ++++ b/hw/arm/virt.c +@@ -1995,13 +1995,14 @@ static void machvirt_init(MachineState *machine) + assert(possible_cpus->len == max_cpus); + for (n = 0; n < possible_cpus->len; n++) { + Object *cpuobj; +-/* CPUState *cs; ++ CPUState *cs; + +- if (n >= smp_cpus) { ++/* if (n >= smp_cpus) { + break; + } + */ + cpuobj = object_new(possible_cpus->cpus[n].type); ++ cs = CPU(cpuobj); + /* object_property_set_int(cpuobj, "mp-affinity", + possible_cpus->cpus[n].arch_id, NULL); + +@@ -2096,9 +2097,52 @@ static void machvirt_init(MachineState *machine) + &error_abort); + } + } +-*/ ++ + qdev_realize(DEVICE(cpuobj), NULL, &error_fatal); + object_unref(cpuobj); ++*/ ++ if (n < smp_cpus) { ++ char *core_id = g_strdup_printf("core%d", n); ++ qdev_set_id(DEVICE(cpuobj),core_id); ++ object_property_set_bool(cpuobj, "realized", true, &error_fatal); ++ g_free(core_id); ++ object_unref(OBJECT(cs)); ++ } else { ++ CPUArchId *cpu_slot; ++ /* handling for vcpus which are yet to be hot-plugged */ ++ cs->cpu_index = n; cs->disabled=true; ++ /* ARM host vcpu features need to be fixed at the boot time */ ++ virt_cpu_set_properties(cpuobj, &possible_cpus->cpus[n]); ++ /* ++ * For KVM, we shall be pre-creating the now disabled/un-plugged ++ * possbile host vcpus and park them till the time they are ++ * actually hot plugged. This is required to pre-size the host ++ * GICC and GICR with the all possible vcpus for this VM. ++ */ ++ if (kvm_enabled()) { ++ kvm_arm_create_host_vcpu(ARM_CPU(cs)); ++ } ++ /* ++ * Add disabled vcpu to cpu slot during the init phase of the virt machine. ++ * 1. We need this ARMCPU object during the GIC init. This object ++ * will facilitate in pre-realizing the gic. Any info like ++ * mp-affinity(required to derive gicr_type) etc could still be ++ * fetched while preserving QOM abstraction akin to realized ++ * vcpus. ++ * 2. Now, after initialization of the virt machine is complete we could use ++ * two approaches to deal with this ARMCPU object: ++ * (i) re-use this ARMCPU object during hotplug of this vcpu. ++ * OR ++ * (ii) defer release this ARMCPU object after gic has been ++ * initialized or during pre-plug phase when a vcpu is ++ * hotplugged. ++ * ++ * We will use the (ii) approach and release the ARMCPU objects after GIC ++ * and machine has been initialized in machine_init_done() phase ++ */ ++ cpu_slot = virt_find_cpu_slot(machine, cs->cpu_index); ++ cpu_slot->cpu = OBJECT(cs); ++ } + } + fdt_add_timer_nodes(vms); + fdt_add_cpu_nodes(vms); +diff --git a/target/arm/kvm.c b/target/arm/kvm.c +index d8381ba224..bb75beec9d 100644 +--- a/target/arm/kvm.c ++++ b/target/arm/kvm.c +@@ -32,6 +32,7 @@ + #include "hw/boards.h" + #include "hw/irq.h" + #include "qemu/log.h" ++#include "accel/kvm/kvm-cpus.h" + + const KVMCapabilityInfo kvm_arch_required_capabilities[] = { + KVM_CAP_LAST_INFO +@@ -627,6 +628,38 @@ void kvm_arm_reset_vcpu(ARMCPU *cpu) + write_list_to_cpustate(cpu); + } + ++void kvm_arm_create_host_vcpu(ARMCPU *cpu) ++{ ++ CPUState *cs = CPU(cpu); ++ unsigned long vcpu_id = cs->cpu_index; ++ int ret; ++ ++ ret = kvm_create_vcpu(cs); ++ if (ret < 0) { ++ error_report("Failed to create host vcpu %ld", vcpu_id); ++ abort(); ++ } ++ ++ /* ++ * Initialize the vcpu in the host. This will reset the sys regs ++ * for this vcpu and related registers like MPIDR_EL1 etc. also ++ * gets programmed during this call to host. These are referred ++ * later while setting device attributes of the GICR during GICv3 ++ * reset ++ */ ++ ret = kvm_arch_init_vcpu(cs); ++ if (ret < 0) { ++ error_report("Failed to initialize host vcpu %ld", vcpu_id); ++ abort(); ++ } ++ ++ /* ++ * park the created vcpu. shall be used during kvm_get_vcpu() when ++ * threads are created during realization of ARM vcpus ++ */ ++ kvm_park_vcpu(cs); ++} ++ + /* + * Update KVM's MP_STATE based on what QEMU thinks it is + */ +diff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h +index 34f8daa377..e0490c97b5 100644 +--- a/target/arm/kvm_arm.h ++++ b/target/arm/kvm_arm.h +@@ -155,6 +155,17 @@ void kvm_arm_cpu_post_load(ARMCPU *cpu); + */ + void kvm_arm_reset_vcpu(ARMCPU *cpu); + ++/** ++ * kvm_arm_create_host_vcpu: ++ * @cpu: ARMCPU ++ * ++ * Called at to pre create all possible kvm vcpus within the the host at the ++ * virt machine init time. This will also init this pre-created vcpu and ++ * hence result in vcpu reset at host. These pre created and inited vcpus ++ * shall be parked for use when ARM vcpus are actually realized. ++ */ ++void kvm_arm_create_host_vcpu(ARMCPU *cpu); ++ + /** + * kvm_arm_init_serror_injection: + * @cs: CPUState +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0006-arm-cpuhp-Changes-to-pre-size-GIC-with-possible-vcpu.patch b/tools/packaging/qemu/patches/6.1.x/0006-arm-cpuhp-Changes-to-pre-size-GIC-with-possible-vcpu.patch new file mode 100644 index 000000000..2cf86805f --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0006-arm-cpuhp-Changes-to-pre-size-GIC-with-possible-vcpu.patch @@ -0,0 +1,220 @@ +From b588545bf1bb168eb0853ae36525d5407657eb7b Mon Sep 17 00:00:00 2001 +From: Salil Mehta +Date: Wed, 24 Nov 2021 16:09:08 +0800 +Subject: [PATCH 06/28] arm/cpuhp: Changes to pre-size GIC with possible vcpus + @machine init + +GIC needs to be pre-sized with possible vcpus at the initialization time. This +is necessary because Memory regions and resources associated with GICC/GICR +etc cannot be changed (add/del/modified) after VM has inited. Also, GIC_TYPER +needs to be initialized with mp_affinity and cpu interface number association. +This cannot be changed after GIC has initialized. + +Once all the cpu interfaces of the GIC has been inited it needs to be ensured +that any updations to the GICC during reset only takes place for the present +vcpus and not the disabled ones. Therefore, proper checks are required at +various places. + +Co-developed-by: Keqian Zhu +Signed-off-by: Salil Mehta +Signed-off-by: Huang Shijie +--- + hw/arm/virt.c | 15 ++++++++------- + hw/intc/arm_gicv3_common.c | 8 ++++++-- + hw/intc/arm_gicv3_cpuif.c | 6 ++++++ + hw/intc/arm_gicv3_kvm.c | 31 ++++++++++++++++++++++++++++--- + include/hw/arm/virt.h | 2 +- + 5 files changed, 49 insertions(+), 13 deletions(-) + +diff --git a/hw/arm/virt.c b/hw/arm/virt.c +index 853288b34a..1b28687883 100644 +--- a/hw/arm/virt.c ++++ b/hw/arm/virt.c +@@ -630,13 +630,14 @@ static void create_gic(VirtMachineState *vms) + const char *gictype; + int type = vms->gic_version, i; + unsigned int smp_cpus = ms->smp.cpus; ++ unsigned int max_cpus = vms->max_cpus; + uint32_t nb_redist_regions = 0; + + gictype = (type == 3) ? gicv3_class_name() : gic_class_name(); + + vms->gic = qdev_new(gictype); + qdev_prop_set_uint32(vms->gic, "revision", type); +- qdev_prop_set_uint32(vms->gic, "num-cpu", smp_cpus); ++ qdev_prop_set_uint32(vms->gic, "num-cpu", max_cpus); + /* Note that the num-irq property counts both internal and external + * interrupts; there are always 32 of the former (mandated by GIC spec). + */ +@@ -648,7 +649,7 @@ static void create_gic(VirtMachineState *vms) + if (type == 3) { + uint32_t redist0_capacity = + vms->memmap[VIRT_GIC_REDIST].size / GICV3_REDIST_SIZE; +- uint32_t redist0_count = MIN(smp_cpus, redist0_capacity); ++ uint32_t redist0_count = MIN(max_cpus, redist0_capacity); + + nb_redist_regions = virt_gicv3_redist_region_count(vms); + +@@ -661,7 +662,7 @@ static void create_gic(VirtMachineState *vms) + vms->memmap[VIRT_HIGH_GIC_REDIST2].size / GICV3_REDIST_SIZE; + + qdev_prop_set_uint32(vms->gic, "redist-region-count[1]", +- MIN(smp_cpus - redist0_count, redist1_capacity)); ++ MIN(max_cpus - redist0_count, redist1_capacity)); + } + } else { + if (!kvm_irqchip_in_kernel()) { +@@ -718,7 +719,7 @@ static void create_gic(VirtMachineState *vms) + } else if (vms->virt) { + qemu_irq irq = qdev_get_gpio_in(vms->gic, + ppibase + ARCH_GIC_MAINT_IRQ); +- sysbus_connect_irq(gicbusdev, i + 4 * smp_cpus, irq); ++ sysbus_connect_irq(gicbusdev, i + 4 * max_cpus, irq); + } + + qdev_connect_gpio_out_named(cpudev, "pmu-interrupt", 0, +@@ -726,11 +727,11 @@ static void create_gic(VirtMachineState *vms) + + VIRTUAL_PMU_IRQ)); + + sysbus_connect_irq(gicbusdev, i, qdev_get_gpio_in(cpudev, ARM_CPU_IRQ)); +- sysbus_connect_irq(gicbusdev, i + smp_cpus, ++ sysbus_connect_irq(gicbusdev, i + max_cpus, + qdev_get_gpio_in(cpudev, ARM_CPU_FIQ)); +- sysbus_connect_irq(gicbusdev, i + 2 * smp_cpus, ++ sysbus_connect_irq(gicbusdev, i + 2 * max_cpus, + qdev_get_gpio_in(cpudev, ARM_CPU_VIRQ)); +- sysbus_connect_irq(gicbusdev, i + 3 * smp_cpus, ++ sysbus_connect_irq(gicbusdev, i + 3 * max_cpus, + qdev_get_gpio_in(cpudev, ARM_CPU_VFIQ)); + } + +diff --git a/hw/intc/arm_gicv3_common.c b/hw/intc/arm_gicv3_common.c +index 58ef65f589..cfc112e43e 100644 +--- a/hw/intc/arm_gicv3_common.c ++++ b/hw/intc/arm_gicv3_common.c +@@ -348,11 +348,15 @@ static void arm_gicv3_common_realize(DeviceState *dev, Error **errp) + s->cpu = g_new0(GICv3CPUState, s->num_cpu); + + for (i = 0; i < s->num_cpu; i++) { +- CPUState *cpu = qemu_get_cpu(i); ++ CPUState *cpu = qemu_get_possible_cpu(i); + uint64_t cpu_affid; + int last; + +- s->cpu[i].cpu = cpu; ++ if (qemu_present_cpu(cpu)) ++ s->cpu[i].cpu = cpu; ++ else ++ s->cpu[i].cpu = NULL; ++ + s->cpu[i].gic = s; + /* Store GICv3CPUState in CPUARMState gicv3state pointer */ + gicv3_set_gicv3state(cpu, &s->cpu[i]); +diff --git a/hw/intc/arm_gicv3_cpuif.c b/hw/intc/arm_gicv3_cpuif.c +index a032d505f5..819c032ec5 100644 +--- a/hw/intc/arm_gicv3_cpuif.c ++++ b/hw/intc/arm_gicv3_cpuif.c +@@ -781,6 +781,9 @@ void gicv3_cpuif_update(GICv3CPUState *cs) + ARMCPU *cpu = ARM_CPU(cs->cpu); + CPUARMState *env = &cpu->env; + ++ if (!qemu_present_cpu(cs->cpu)) ++ return; ++ + g_assert(qemu_mutex_iothread_locked()); + + trace_gicv3_cpuif_update(gicv3_redist_affid(cs), cs->hppi.irq, +@@ -1674,6 +1677,9 @@ static void icc_generate_sgi(CPUARMState *env, GICv3CPUState *cs, + for (i = 0; i < s->num_cpu; i++) { + GICv3CPUState *ocs = &s->cpu[i]; + ++ if (!qemu_present_cpu(ocs->cpu)) ++ continue; ++ + if (irm) { + /* IRM == 1 : route to all CPUs except self */ + if (cs == ocs) { +diff --git a/hw/intc/arm_gicv3_kvm.c b/hw/intc/arm_gicv3_kvm.c +index 5c09f00dec..4e7bb4ac1f 100644 +--- a/hw/intc/arm_gicv3_kvm.c ++++ b/hw/intc/arm_gicv3_kvm.c +@@ -24,6 +24,7 @@ + #include "hw/intc/arm_gicv3_common.h" + #include "qemu/error-report.h" + #include "qemu/module.h" ++#include "sysemu/cpus.h" + #include "sysemu/kvm.h" + #include "sysemu/runstate.h" + #include "kvm_arm.h" +@@ -456,6 +457,17 @@ static void kvm_arm_gicv3_put(GICv3State *s) + GICv3CPUState *c = &s->cpu[ncpu]; + int num_pri_bits; + ++ /* ++ * To support hotplug of vcpus we need to make sure all gic cpuif/GICC ++ * are initialized at machvirt init time. Once the init is done we ++ * release the ARMCPU object for disabled vcpus but this leg could hit ++ * during reset of GICC later as well i.e. after init has happened and ++ * all of the cases we want to make sure we dont acess the GICC for ++ * the disabled VCPUs. ++ */ ++ if (!qemu_present_cpu(c->cpu)) ++ continue; ++ + kvm_gicc_access(s, ICC_SRE_EL1, ncpu, &c->icc_sre_el1, true); + kvm_gicc_access(s, ICC_CTLR_EL1, ncpu, + &c->icc_ctlr_el1[GICV3_NS], true); +@@ -683,11 +695,24 @@ static void arm_gicv3_icc_reset(CPUARMState *env, const ARMCPRegInfo *ri) + return; + } + ++ /* ++ * This shall be called even when vcpu is being hotplugged and other vcpus ++ * might be running. Host kernel KVM code to handle device access of IOCTLs ++ * KVM_{GET|SET}_DEVICE_ATTR might fail due to inability to grab vcpu locks ++ * for all the vcpus. Hence, we need to pause all vcpus to facilitate ++ * locking within host. ++ */ ++ if (!qemu_present_cpu(c->cpu)) ++ pause_all_vcpus(); ++ + /* Initialize to actual HW supported configuration */ + kvm_device_access(s->dev_fd, KVM_DEV_ARM_VGIC_GRP_CPU_SYSREGS, + KVM_VGIC_ATTR(ICC_CTLR_EL1, c->gicr_typer), + &c->icc_ctlr_el1[GICV3_NS], false, &error_abort); + ++ if (!qemu_present_cpu(c->cpu)) ++ resume_all_vcpus(); ++ + c->icc_ctlr_el1[GICV3_S] = c->icc_ctlr_el1[GICV3_NS]; + } + +@@ -794,9 +819,9 @@ static void kvm_arm_gicv3_realize(DeviceState *dev, Error **errp) + } + + for (i = 0; i < s->num_cpu; i++) { +- ARMCPU *cpu = ARM_CPU(qemu_get_cpu(i)); +- +- define_arm_cp_regs(cpu, gicv3_cpuif_reginfo); ++ CPUState *cs = qemu_get_cpu(i); ++ if (qemu_present_cpu(cs)) ++ define_arm_cp_regs(ARM_CPU(cs), gicv3_cpuif_reginfo); + } + + /* Try to create the device via the device control API */ +diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h +index 960812c66e..6233be9590 100644 +--- a/include/hw/arm/virt.h ++++ b/include/hw/arm/virt.h +@@ -187,7 +187,7 @@ static inline int virt_gicv3_redist_region_count(VirtMachineState *vms) + + assert(vms->gic_version == VIRT_GIC_VERSION_3); + +- return MACHINE(vms)->smp.cpus > redist0_capacity ? 2 : 1; ++ return vms->max_cpus > redist0_capacity ? 2 : 1; + } + + #endif /* QEMU_ARM_VIRT_H */ +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0007-arm-cpuhp-Init-PMU-at-host-for-all-possible-vcpus.patch b/tools/packaging/qemu/patches/6.1.x/0007-arm-cpuhp-Init-PMU-at-host-for-all-possible-vcpus.patch new file mode 100644 index 000000000..dac93f3a8 --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0007-arm-cpuhp-Init-PMU-at-host-for-all-possible-vcpus.patch @@ -0,0 +1,95 @@ +From b885e6d6e6a1199a6db17fb5753df2ca63c611b5 Mon Sep 17 00:00:00 2001 +From: Salil Mehta +Date: Wed, 24 Nov 2021 16:21:39 +0800 +Subject: [PATCH 07/28] arm/cpuhp: Init PMU at host for all possible vcpus + +PMU for all possible vcpus must be initialized at the virt machine +initialization time. This patch refactors existing code to accomodate possible +vcpus. This also assumes that all processor being used are identical at least +for now but does not affect the normal scanarios where they might not be in +future. This assumption only affects the future hotplug scenarios if ever there +exists any hetergenous processors. In such a case PMU might not be enabled on +some vcpus. Is it acceptable and doable tradeoff for now? + +This perhaps needs more discussion. please check below link, +Link: https://lists.gnu.org/archive/html/qemu-devel/2020-06/msg00131.html + +Co-developed-by: Keqian Zhu +Signed-off-by: Salil Mehta +Signed-off-by: Huang Shijie +--- + hw/arm/virt.c | 38 ++++++++++++++++++++++++++++++++++++-- + include/hw/arm/virt.h | 1 + + 2 files changed, 37 insertions(+), 2 deletions(-) + +diff --git a/hw/arm/virt.c b/hw/arm/virt.c +index 1b28687883..61fc431d20 100644 +--- a/hw/arm/virt.c ++++ b/hw/arm/virt.c +@@ -1502,6 +1502,38 @@ static void create_secure_ram(VirtMachineState *vms, + g_free(nodename); + } + ++/*static bool virt_pmu_init(VirtMachineState *vms) ++{ ++ CPUArchIdList *possible_cpus = vms->parent.possible_cpus; ++ ARMCPU *armcpu; ++ int n; */ ++ ++ /* ++ * As of now KVM ensures that within the host all the vcpus have same ++ * features configured. This cannot be changed later and cannot be diferent ++ * for new vcpus being plugged in. Also, -cpu option/virt machine cpu-type ++ * ensures all the vcpus are identical. ++ */ ++/* for (n = 0; n < possible_cpus->len; n++) { ++ CPUState *cpu = qemu_get_possible_cpu(n); ++ armcpu = ARM_CPU(cpu); ++ ++ if (!arm_feature(&armcpu->env, ARM_FEATURE_PMU)) { ++ warn_report("Not all vcpus might have PMU initialized"); ++ return false; ++ } ++ ++ if (kvm_enabled()) { ++ if (kvm_irqchip_in_kernel()) { ++ kvm_arm_pmu_set_irq(cpu, PPI(VIRTUAL_PMU_IRQ)); ++ } ++ kvm_arm_pmu_init(cpu); ++ } ++ } ++ ++ return true; ++}*/ ++ + static void *machvirt_dtb(const struct arm_boot_info *binfo, int *fdt_size) + { + const VirtMachineState *board = container_of(binfo, VirtMachineState, +@@ -2161,8 +2193,10 @@ static void machvirt_init(MachineState *machine) + + virt_cpu_post_init(vms, sysmem); + +- fdt_add_pmu_nodes(vms); +- ++// if (!vmc->no_pmu && virt_pmu_init(vms)) { ++// vms->pmu = true; ++ fdt_add_pmu_nodes(vms); ++// } + create_uart(vms, VIRT_UART, sysmem, serial_hd(0)); + + if (vms->secure) { +diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h +index 6233be9590..a568420303 100644 +--- a/include/hw/arm/virt.h ++++ b/include/hw/arm/virt.h +@@ -144,6 +144,7 @@ struct VirtMachineState { + bool its; + bool virt; + bool ras; ++ bool pmu; + bool mte; + OnOffAuto acpi; + VirtGICType gic_version; +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0008-arm-cpuhp-Enable-ACPI-support-for-vcpu-hotplug.patch b/tools/packaging/qemu/patches/6.1.x/0008-arm-cpuhp-Enable-ACPI-support-for-vcpu-hotplug.patch new file mode 100644 index 000000000..366914870 --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0008-arm-cpuhp-Enable-ACPI-support-for-vcpu-hotplug.patch @@ -0,0 +1,115 @@ +From 8cdfd18d515aa5be1c54061e42f1c8a69997667b Mon Sep 17 00:00:00 2001 +From: Salil Mehta +Date: Thu, 25 Nov 2021 13:58:25 +0800 +Subject: [PATCH 08/28] arm/cpuhp: Enable ACPI support for vcpu hotplug + +ACPI is required to interface QEMU with the guest. Roughly falls into below +cases, + +1. Convey the possible vcpus config at the machine init time to the guest + using various DSDT tables like MADT etc. +2. Convey vcpu hotplug events to guest(using GED) +3. Assist in evaluation of various ACPI methods(like _EVT, _STA, _OST, _EJ0, + _MAT etc.) +4. Provides ACPI cpu hotplug state and 12 Byte memory mapped cpu hotplug + control register interface to the OSPM/guest corresponding to each possible + vcpu. The register interface consists of various R/W fields and their + handling operations. These are called when ever register fields or memory + regions are accessed(i.e. read or written) by OSPM when ever it evaluates + various ACPI methods. + +Note: lot of this framework code is inherited from the changes already done for + x86 but still some minor changes are required to make it compatible with + ARM64.) + +This patch enables the ACPI support for virtual cpu hotplug in kconfig and +during initialization. + +Co-developed-by: Keqian Zhu +Signed-off-by: Salil Mehta +Signed-off-by: Huang Shijie +--- + hw/acpi/cpu.c | 6 +++++- + hw/arm/Kconfig | 1 + + hw/arm/virt.c | 2 ++ + include/hw/acpi/cpu_hotplug.h | 2 ++ + include/hw/arm/virt.h | 1 + + 5 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/hw/acpi/cpu.c b/hw/acpi/cpu.c +index f82e9512fd..cf07a6c30c 100644 +--- a/hw/acpi/cpu.c ++++ b/hw/acpi/cpu.c +@@ -226,7 +226,11 @@ void cpu_hotplug_hw_init(MemoryRegion *as, Object *owner, + state->dev_count = id_list->len; + state->devs = g_new0(typeof(*state->devs), state->dev_count); + for (i = 0; i < id_list->len; i++) { +- state->devs[i].cpu = CPU(id_list->cpus[i].cpu); ++ struct CPUState *cpu = CPU(id_list->cpus[i].cpu); ++ if (qemu_present_cpu(cpu)) ++ state->devs[i].cpu = cpu; ++ else ++ state->devs[i].cpu = NULL; + state->devs[i].arch_id = id_list->cpus[i].arch_id; + } + memory_region_init_io(&state->ctrl_reg, owner, &cpu_hotplug_ops, state, +diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig +index 4ba0aca067..32b150676a 100644 +--- a/hw/arm/Kconfig ++++ b/hw/arm/Kconfig +@@ -29,6 +29,7 @@ config ARM_VIRT + select ACPI_HW_REDUCED + select ACPI_NVDIMM + select ACPI_APEI ++ select ACPI_CPU_HOTPLUG + + config CHEETAH + bool +diff --git a/hw/arm/virt.c b/hw/arm/virt.c +index 61fc431d20..4265c0e2e8 100644 +--- a/hw/arm/virt.c ++++ b/hw/arm/virt.c +@@ -77,6 +77,7 @@ + #include "hw/virtio/virtio-iommu.h" + #include "hw/char/pl011.h" + #include "qemu/guest-random.h" ++#include "hw/acpi/cpu_hotplug.h" + + #define DEFINE_VIRT_MACHINE_LATEST(major, minor, latest) \ + static void virt_##major##_##minor##_class_init(ObjectClass *oc, \ +@@ -152,6 +153,7 @@ static const MemMapEntry base_memmap[] = { + [VIRT_NVDIMM_ACPI] = { 0x09090000, NVDIMM_ACPI_IO_LEN}, + [VIRT_PVTIME] = { 0x090a0000, 0x00010000 }, + [VIRT_SECURE_GPIO] = { 0x090b0000, 0x00001000 }, ++ [VIRT_CPUHP_ACPI] = { 0x090c0000, ACPI_CPU_HOTPLUG_REG_LEN}, + [VIRT_MMIO] = { 0x0a000000, 0x00000200 }, + /* ...repeating for a total of NUM_VIRTIO_TRANSPORTS, each of that size */ + [VIRT_PLATFORM_BUS] = { 0x0c000000, 0x02000000 }, +diff --git a/include/hw/acpi/cpu_hotplug.h b/include/hw/acpi/cpu_hotplug.h +index 3b932abbbb..48b291e45e 100644 +--- a/include/hw/acpi/cpu_hotplug.h ++++ b/include/hw/acpi/cpu_hotplug.h +@@ -19,6 +19,8 @@ + #include "hw/hotplug.h" + #include "hw/acpi/cpu.h" + ++#define ACPI_CPU_HOTPLUG_REG_LEN 12 ++ + typedef struct AcpiCpuHotplug { + Object *device; + MemoryRegion io; +diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h +index a568420303..8954b78c27 100644 +--- a/include/hw/arm/virt.h ++++ b/include/hw/arm/virt.h +@@ -85,6 +85,7 @@ enum { + VIRT_PCDIMM_ACPI, + VIRT_ACPI_GED, + VIRT_NVDIMM_ACPI, ++ VIRT_CPUHP_ACPI, + VIRT_PVTIME, + VIRT_LOWMEMMAP_LAST, + }; +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0009-arm-cpuhp-Init-GED-framework-with-cpu-hotplug-events.patch b/tools/packaging/qemu/patches/6.1.x/0009-arm-cpuhp-Init-GED-framework-with-cpu-hotplug-events.patch new file mode 100644 index 000000000..e06b29bcc --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0009-arm-cpuhp-Init-GED-framework-with-cpu-hotplug-events.patch @@ -0,0 +1,101 @@ +From d184f34dbfc972b0a27be189ce8c1a75e400c920 Mon Sep 17 00:00:00 2001 +From: Salil Mehta +Date: Thu, 25 Nov 2021 16:31:07 +0800 +Subject: [PATCH 09/28] arm/cpuhp: Init GED framework with cpu hotplug events + +ACPI GED(as described in the ACPI 6.2 spec) can be used to generate ACPI events +when OSPM/guest receives an interrupt listed in the _CRS object of GED. OSPM +then maps or demultiplexes the event by evaluating _EVT method. + +This change adds the support of cpu hotplug event initialization in the +existing GED framework. + +Co-developed-by: Keqian Zhu +Signed-off-by: Salil Mehta +Signed-off-by: Huang Shijie +--- + hw/acpi/generic_event_device.c | 8 ++++++++ + hw/arm/virt.c | 3 ++- + include/hw/acpi/generic_event_device.h | 5 +++++ + 3 files changed, 15 insertions(+), 1 deletion(-) + +diff --git a/hw/acpi/generic_event_device.c b/hw/acpi/generic_event_device.c +index e28457a7d1..1ed7623907 100644 +--- a/hw/acpi/generic_event_device.c ++++ b/hw/acpi/generic_event_device.c +@@ -25,6 +25,7 @@ static const uint32_t ged_supported_events[] = { + ACPI_GED_MEM_HOTPLUG_EVT, + ACPI_GED_PWR_DOWN_EVT, + ACPI_GED_NVDIMM_HOTPLUG_EVT, ++ ACPI_GED_CPU_HOTPLUG_EVT, + }; + + /* +@@ -390,6 +391,13 @@ static void acpi_ged_initfn(Object *obj) + acpi_memory_hotplug_init(&s->container_memhp, OBJECT(dev), + &s->memhp_state, 0); + ++ s->cpuhp.device = OBJECT(s); ++ memory_region_init(&s->container_cpuhp, OBJECT(dev), "cpuhp container", ++ ACPI_CPU_HOTPLUG_REG_LEN); ++ sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->container_cpuhp); ++ cpu_hotplug_hw_init(&s->container_cpuhp, OBJECT(dev), ++ &s->cpuhp_state, 0); ++ + memory_region_init_io(&ged_st->regs, obj, &ged_regs_ops, ged_st, + TYPE_ACPI_GED "-regs", ACPI_GED_REG_COUNT); + sysbus_init_mmio(sbd, &ged_st->regs); +diff --git a/hw/arm/virt.c b/hw/arm/virt.c +index 4265c0e2e8..47db084183 100644 +--- a/hw/arm/virt.c ++++ b/hw/arm/virt.c +@@ -560,7 +560,7 @@ static inline DeviceState *create_acpi_ged(VirtMachineState *vms) + DeviceState *dev; + MachineState *ms = MACHINE(vms); + int irq = vms->irqmap[VIRT_ACPI_GED]; +- uint32_t event = ACPI_GED_PWR_DOWN_EVT; ++ uint32_t event = ACPI_GED_PWR_DOWN_EVT | ACPI_GED_CPU_HOTPLUG_EVT; + + if (ms->ram_slots) { + event |= ACPI_GED_MEM_HOTPLUG_EVT; +@@ -575,6 +575,7 @@ static inline DeviceState *create_acpi_ged(VirtMachineState *vms) + + sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, vms->memmap[VIRT_ACPI_GED].base); + sysbus_mmio_map(SYS_BUS_DEVICE(dev), 1, vms->memmap[VIRT_PCDIMM_ACPI].base); ++ sysbus_mmio_map(SYS_BUS_DEVICE(dev), 2, vms->memmap[VIRT_CPUHP_ACPI].base); + sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(vms->gic, irq)); + + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); +diff --git a/include/hw/acpi/generic_event_device.h b/include/hw/acpi/generic_event_device.h +index 6bed92e8fc..454bf08da2 100644 +--- a/include/hw/acpi/generic_event_device.h ++++ b/include/hw/acpi/generic_event_device.h +@@ -63,6 +63,7 @@ + #include "hw/acpi/memory_hotplug.h" + #include "hw/acpi/ghes.h" + #include "qom/object.h" ++#include "hw/acpi/cpu_hotplug.h" + + #define ACPI_POWER_BUTTON_DEVICE "PWRB" + +@@ -75,6 +76,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(AcpiGedState, ACPI_GED) + + #define ACPI_GED_EVT_SEL_OFFSET 0x0 + #define ACPI_GED_EVT_SEL_LEN 0x4 ++#define ACPI_GED_CPU_HOTPLUG_EVT 0x8 + + #define ACPI_GED_REG_SLEEP_CTL 0x00 + #define ACPI_GED_REG_SLEEP_STS 0x01 +@@ -110,6 +112,9 @@ struct AcpiGedState { + SysBusDevice parent_obj; + MemHotplugState memhp_state; + MemoryRegion container_memhp; ++ CPUHotplugState cpuhp_state; ++ MemoryRegion container_cpuhp; ++ AcpiCpuHotplug cpuhp; + GEDState ged_state; + uint32_t ged_event_bitmap; + qemu_irq irq; +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0010-arm-cpuhp-Update-CPUs-AML-with-cpu-ctrl-dev-change.patch b/tools/packaging/qemu/patches/6.1.x/0010-arm-cpuhp-Update-CPUs-AML-with-cpu-ctrl-dev-change.patch new file mode 100644 index 000000000..3b9413b54 --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0010-arm-cpuhp-Update-CPUs-AML-with-cpu-ctrl-dev-change.patch @@ -0,0 +1,139 @@ +From f7b9c727b0da0bec444d85bd1bf7bd5bfb9d3e4f Mon Sep 17 00:00:00 2001 +From: Salil Mehta +Date: Thu, 25 Nov 2021 16:54:49 +0800 +Subject: [PATCH 10/28] arm/cpuhp: Update CPUs AML with cpu-(ctrl)dev change + +CPUs Control device(\\_SB.PCI0) register interface for the x86 arch is based on +PCI and is IO port based and hence existing cpus AML code assumes _CRS objects +would evaluate to a system resource which describes IO Port address. But on ARM +arch CPUs control device(\\_SB.PRES) register interface is memory-mapped hence +_CRS object should evaluate to system resource which describes memory-mapped +base address. + +This cpus AML code change updates the existing inerface of the build cpus AML +function to accept both IO/MEMORY type regions and update the _CRS object +correspondingly. + +NOTE: Beside above CPU scan shall be triggered when OSPM evaluates _EVT method + part of the GED framework which is covered in subsequent patch. + +Co-developed-by: Keqian Zhu +Signed-off-by: Salil Mehta +Signed-off-by: Huang Shijie +--- + hw/acpi/cpu.c | 23 +++++++++++++++-------- + hw/arm/virt-acpi-build.c | 13 ++++++++++++- + hw/i386/acpi-build.c | 2 +- + include/hw/acpi/cpu.h | 5 +++-- + 4 files changed, 31 insertions(+), 12 deletions(-) + +diff --git a/hw/acpi/cpu.c b/hw/acpi/cpu.c +index cf07a6c30c..98657ad28b 100644 +--- a/hw/acpi/cpu.c ++++ b/hw/acpi/cpu.c +@@ -345,9 +345,10 @@ const VMStateDescription vmstate_cpu_hotplug = { + #define CPU_FW_EJECT_EVENT "CEJF" + + void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts, +- hwaddr io_base, ++ hwaddr mmap_io_base, + const char *res_root, +- const char *event_handler_method) ++ const char *event_handler_method, ++ AmlRegionSpace rs) + { + Aml *ifctx; + Aml *field; +@@ -375,13 +376,18 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts, + aml_append(cpu_ctrl_dev, aml_mutex(CPU_LOCK, 0)); + + crs = aml_resource_template(); +- aml_append(crs, aml_io(AML_DECODE16, io_base, io_base, 1, ++ if (rs == AML_SYSTEM_IO) { ++ aml_append(crs, aml_io(AML_DECODE16, mmap_io_base, mmap_io_base, 1, + ACPI_CPU_HOTPLUG_REG_LEN)); ++ } else { ++ aml_append(crs, aml_memory32_fixed(mmap_io_base, ++ ACPI_CPU_HOTPLUG_REG_LEN, AML_READ_WRITE)); ++ } + aml_append(cpu_ctrl_dev, aml_name_decl("_CRS", crs)); + + /* declare CPU hotplug MMIO region with related access fields */ + aml_append(cpu_ctrl_dev, +- aml_operation_region("PRST", AML_SYSTEM_IO, aml_int(io_base), ++ aml_operation_region("PRST", rs, aml_int(mmap_io_base), + ACPI_CPU_HOTPLUG_REG_LEN)); + + field = aml_field("PRST", AML_BYTE_ACC, AML_NOLOCK, +@@ -720,9 +726,10 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts, + aml_append(sb_scope, cpus_dev); + aml_append(table, sb_scope); + +- method = aml_method(event_handler_method, 0, AML_NOTSERIALIZED); +- aml_append(method, aml_call0("\\_SB.CPUS." CPU_SCAN_METHOD)); +- aml_append(table, method); +- ++ if (event_handler_method) { ++ method = aml_method(event_handler_method, 0, AML_NOTSERIALIZED); ++ aml_append(method, aml_call0("\\_SB.CPUS." CPU_SCAN_METHOD)); ++ aml_append(table, method); ++ } + g_free(cphp_res_path); + } +diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c +index 037cc1fd82..95a3c3b31b 100644 +--- a/hw/arm/virt-acpi-build.c ++++ b/hw/arm/virt-acpi-build.c +@@ -703,7 +703,18 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) + * the RTC ACPI device at all when using UEFI. + */ + scope = aml_scope("\\_SB"); +- acpi_dsdt_add_cpus(scope, vms); ++ /* if GED is enabled then cpus AML shall be added as part build_cpus_aml */ ++ if (vms->acpi_dev) { ++ CPUHotplugFeatures opts = { ++ .acpi_1_compatible = false, ++ .has_legacy_cphp = false ++ }; ++ ++ build_cpus_aml(scope, ms, opts, memmap[VIRT_CPUHP_ACPI].base, ++ "\\_SB", NULL, AML_SYSTEM_MEMORY); ++ } else { ++ acpi_dsdt_add_cpus(scope, vms); ++ } + acpi_dsdt_add_uart(scope, &memmap[VIRT_UART], + (irqmap[VIRT_UART] + ARM_SPI_BASE)); + if (vmc->acpi_expose_flash) { +diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c +index a33ac8b91e..fa7a5ed79d 100644 +--- a/hw/i386/acpi-build.c ++++ b/hw/i386/acpi-build.c +@@ -1503,7 +1503,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, + .fw_unplugs_cpu = pm->smi_on_cpu_unplug, + }; + build_cpus_aml(dsdt, machine, opts, pm->cpu_hp_io_base, +- "\\_SB.PCI0", "\\_GPE._E02"); ++ "\\_SB.PCI0", "\\_GPE._E02", AML_SYSTEM_IO); + } + + if (pcms->memhp_io_base && nr_mem) { +diff --git a/include/hw/acpi/cpu.h b/include/hw/acpi/cpu.h +index 999caaf510..ead8f1d1cc 100644 +--- a/include/hw/acpi/cpu.h ++++ b/include/hw/acpi/cpu.h +@@ -56,9 +56,10 @@ typedef struct CPUHotplugFeatures { + } CPUHotplugFeatures; + + void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts, +- hwaddr io_base, ++ hwaddr mmap_io_base, + const char *res_root, +- const char *event_handler_method); ++ const char *event_handler_method, ++ AmlRegionSpace rs); + + void acpi_cpu_ospm_status(CPUHotplugState *cpu_st, ACPIOSTInfoList ***list); + +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0011-arm-cpuhp-Update-GED-_EVT-method-AML-with-cpu-scan.patch b/tools/packaging/qemu/patches/6.1.x/0011-arm-cpuhp-Update-GED-_EVT-method-AML-with-cpu-scan.patch new file mode 100644 index 000000000..050a26809 --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0011-arm-cpuhp-Update-GED-_EVT-method-AML-with-cpu-scan.patch @@ -0,0 +1,51 @@ +From e9a06ca70bbb956ec96f69e2e7bebc2a7b9044a8 Mon Sep 17 00:00:00 2001 +From: Salil Mehta +Date: Thu, 25 Nov 2021 17:38:19 +0800 +Subject: [PATCH 11/28] arm/cpuhp: Update GED _EVT method AML with cpu scan + +OSPM evaluates _EVT method to map the event. The cpu hotplug event eventually +results in start of the cpu scan. Scan figures out the cpu and the kind of +event(plug/unplug) and notifies it back to the guest. + +The change in this patch updates the GED AML _EVT method with the call to +\\_SB.CPUS.CSCN which will do above. + +Co-developed-by: Keqian Zhu +Signed-off-by: Salil Mehta +Signed-off-by: Huang Shijie +--- + hw/acpi/generic_event_device.c | 4 ++++ + include/hw/acpi/cpu_hotplug.h | 2 ++ + 2 files changed, 6 insertions(+) + +diff --git a/hw/acpi/generic_event_device.c b/hw/acpi/generic_event_device.c +index 1ed7623907..7278b89c6a 100644 +--- a/hw/acpi/generic_event_device.c ++++ b/hw/acpi/generic_event_device.c +@@ -108,6 +108,10 @@ void build_ged_aml(Aml *table, const char *name, HotplugHandler *hotplug_dev, + aml_append(if_ctx, aml_call0(MEMORY_DEVICES_CONTAINER "." + MEMORY_SLOT_SCAN_METHOD)); + break; ++ case ACPI_GED_CPU_HOTPLUG_EVT: ++ aml_append(if_ctx, aml_call0(ACPI_CPU_CONTAINER "." ++ ACPI_CPU_SCAN_METHOD)); ++ break; + case ACPI_GED_PWR_DOWN_EVT: + aml_append(if_ctx, + aml_notify(aml_name(ACPI_POWER_BUTTON_DEVICE), +diff --git a/include/hw/acpi/cpu_hotplug.h b/include/hw/acpi/cpu_hotplug.h +index 48b291e45e..ef631750b4 100644 +--- a/include/hw/acpi/cpu_hotplug.h ++++ b/include/hw/acpi/cpu_hotplug.h +@@ -20,6 +20,8 @@ + #include "hw/acpi/cpu.h" + + #define ACPI_CPU_HOTPLUG_REG_LEN 12 ++#define ACPI_CPU_SCAN_METHOD "CSCN" ++#define ACPI_CPU_CONTAINER "\\_SB.CPUS" + + typedef struct AcpiCpuHotplug { + Object *device; +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0012-arm-cpuhp-MADT-Tbl-change-to-size-the-guest-with-pos.patch b/tools/packaging/qemu/patches/6.1.x/0012-arm-cpuhp-MADT-Tbl-change-to-size-the-guest-with-pos.patch new file mode 100644 index 000000000..03cbf720f --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0012-arm-cpuhp-MADT-Tbl-change-to-size-the-guest-with-pos.patch @@ -0,0 +1,67 @@ +From 323ce9267470a6e0bf22c9b19399f12804524d78 Mon Sep 17 00:00:00 2001 +From: Salil Mehta +Date: Thu, 25 Nov 2021 17:52:12 +0800 +Subject: [PATCH 12/28] arm/cpuhp: MADT Tbl change to size the guest with + possible vcpus + +Changes required during building of MADT Table by QEMU to accomodate disabled +possible vcpus. This info shall be used by the guest kernel to size up its +resources during boot time. This pre-sizing of the guest kernel done on +possible vcpus will facilitate hotplug of the disabled vcpus. + +Co-developed-by: Keqian Zhu +Signed-off-by: Salil Mehta +Signed-off-by: Huang Shijie +--- + hw/arm/virt-acpi-build.c | 18 +++++++++++------- + 1 file changed, 11 insertions(+), 7 deletions(-) + +diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c +index 95a3c3b31b..416b43c9f8 100644 +--- a/hw/arm/virt-acpi-build.c ++++ b/hw/arm/virt-acpi-build.c +@@ -573,6 +573,8 @@ build_madt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) + const int *irqmap = vms->irqmap; + AcpiMadtGenericDistributor *gicd; + AcpiMadtGenericMsiFrame *gic_msi; ++ MachineState *ms = &vms->parent; ++ CPUArchIdList *possible_cpus = ms->possible_cpus; + int i; + + acpi_data_push(table_data, sizeof(AcpiMultipleApicTable)); +@@ -583,11 +585,10 @@ build_madt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) + gicd->base_address = cpu_to_le64(memmap[VIRT_GIC_DIST].base); + gicd->version = vms->gic_version; + +- for (i = 0; i < MACHINE(vms)->smp.cpus; i++) { ++ for (i = 0; i < MACHINE(vms)->smp.max_cpus; i++) { + AcpiMadtGenericCpuInterface *gicc = acpi_data_push(table_data, + sizeof(*gicc)); +- ARMCPU *armcpu = ARM_CPU(qemu_get_cpu(i)); +- ++ ARMCPU *cpu = ARM_CPU(qemu_get_possible_cpu(i)); + gicc->type = ACPI_APIC_GENERIC_CPU_INTERFACE; + gicc->length = sizeof(*gicc); + if (vms->gic_version == 2) { +@@ -596,11 +597,14 @@ build_madt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) + gicc->gicv_base_address = cpu_to_le64(memmap[VIRT_GIC_VCPU].base); + } + gicc->cpu_interface_number = cpu_to_le32(i); +- gicc->arm_mpidr = cpu_to_le64(armcpu->mp_affinity); ++ gicc->arm_mpidr = possible_cpus->cpus[i].arch_id; + gicc->uid = cpu_to_le32(i); +- gicc->flags = cpu_to_le32(ACPI_MADT_GICC_ENABLED); +- +- if (arm_feature(&armcpu->env, ARM_FEATURE_PMU)) { ++ if ( i < MACHINE(vms)->smp.cpus ) { ++ gicc->flags = cpu_to_le32(ACPI_MADT_GICC_ENABLED); ++ } else { ++ gicc->flags = cpu_to_le32(0); ++ } ++ if ((cpu && arm_feature(&cpu->env, ARM_FEATURE_PMU)) || vms->pmu) { + gicc->performance_interrupt = cpu_to_le32(PPI(VIRTUAL_PMU_IRQ)); + } + if (vms->virt) { +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0013-arm-cpuhp-Add-ACPI-_MAT-entry-for-Processor-object.patch b/tools/packaging/qemu/patches/6.1.x/0013-arm-cpuhp-Add-ACPI-_MAT-entry-for-Processor-object.patch new file mode 100644 index 000000000..d8eeac609 --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0013-arm-cpuhp-Add-ACPI-_MAT-entry-for-Processor-object.patch @@ -0,0 +1,95 @@ +From 22e597ca7364c7787bd9abd3da27b7aaa92f3337 Mon Sep 17 00:00:00 2001 +From: Salil Mehta +Date: Thu, 25 Nov 2021 17:59:22 +0800 +Subject: [PATCH 13/28] arm/cpuhp: Add ACPI _MAT entry for Processor object + +Adds a function which builds the ACPI _MAT entry for processor objects. This +shall be called from the cpus AML for all possible vcpus. + +The entry is passed to the guest kernel with ACPI_MADT_GICC_ENABLED flag when +it evaluates _MAT object. OSPM evaluates _MAT object in context to the cpu +hotplug event. + +Co-developed-by: Keqian Zhu +Signed-off-by: Salil Mehta +Signed-off-by: Huang Shijie +--- + hw/acpi/cpu.c | 5 +++++ + hw/arm/virt-acpi-build.c | 25 +++++++++++++++++++++++-- + include/hw/arm/virt.h | 1 + + 3 files changed, 29 insertions(+), 2 deletions(-) + +diff --git a/hw/acpi/cpu.c b/hw/acpi/cpu.c +index 98657ad28b..7b6765d5dd 100644 +--- a/hw/acpi/cpu.c ++++ b/hw/acpi/cpu.c +@@ -691,6 +691,11 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts, + apic->flags = cpu_to_le32(1); + break; + } ++ case ACPI_APIC_GENERIC_CPU_INTERFACE: { ++ AcpiMadtGenericCpuInterface *gicc = (void *)madt_buf->data; ++ gicc->flags = cpu_to_le32(1); ++ break; ++ } + default: + assert(0); + } +diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c +index 416b43c9f8..48b34d50a2 100644 +--- a/hw/arm/virt-acpi-build.c ++++ b/hw/arm/virt-acpi-build.c +@@ -563,6 +563,22 @@ build_gtdt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) + vms->oem_table_id); + } + ++static void ++build_mat_entry(AcpiDeviceIf *adev, int uid, const CPUArchIdList *arch_ids, ++ GArray *entry) ++{ ++ AcpiMadtGenericCpuInterface *gicc = acpi_data_push(entry,sizeof(*gicc)); ++ MachineState *ms = MACHINE(qdev_get_machine()); ++ CPUArchIdList *possible_cpus = ms->possible_cpus; ++ ++ /* fill the relevant fields of _MAT entry for GICC */ ++ gicc->type = ACPI_APIC_GENERIC_CPU_INTERFACE; ++ gicc->length = sizeof(*gicc); ++ gicc->cpu_interface_number = cpu_to_le32(uid); ++ gicc->arm_mpidr = possible_cpus->cpus[uid].arch_id; ++ gicc->uid = cpu_to_le32(uid); ++} ++ + /* MADT */ + static void + build_madt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) +@@ -713,8 +729,13 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) + .acpi_1_compatible = false, + .has_legacy_cphp = false + }; +- +- build_cpus_aml(scope, ms, opts, memmap[VIRT_CPUHP_ACPI].base, ++ ++ AcpiDeviceIfClass *adevc; ++ /* _MAT entry shall be used within cpus aml */ ++ adevc = ACPI_DEVICE_IF_CLASS(DEVICE_GET_CLASS(vms->acpi_dev)); ++ adevc->madt_cpu = build_mat_entry; ++ ++ build_cpus_aml(scope, ms, opts, memmap[VIRT_CPUHP_ACPI].base, + "\\_SB", NULL, AML_SYSTEM_MEMORY); + } else { + acpi_dsdt_add_cpus(scope, vms); +diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h +index 8954b78c27..491eeddca4 100644 +--- a/include/hw/arm/virt.h ++++ b/include/hw/arm/virt.h +@@ -37,6 +37,7 @@ + #include "hw/block/flash.h" + #include "sysemu/kvm.h" + #include "hw/intc/arm_gicv3_common.h" ++#include "hw/acpi/acpi_dev_interface.h" + #include "qom/object.h" + + #define NUM_GICV2M_SPIS 64 +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0014-arm-cpuhp-Release-objects-for-disabled-possible-vcpu.patch b/tools/packaging/qemu/patches/6.1.x/0014-arm-cpuhp-Release-objects-for-disabled-possible-vcpu.patch new file mode 100644 index 000000000..a5df954ba --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0014-arm-cpuhp-Release-objects-for-disabled-possible-vcpu.patch @@ -0,0 +1,86 @@ +From 435c926d8739b1ad4ffbfeabe83aabbda2d3ec22 Mon Sep 17 00:00:00 2001 +From: Salil Mehta +Date: Wed, 1 Dec 2021 12:38:03 +0800 +Subject: [PATCH 14/28] arm/cpuhp: Release objects for *disabled* possible + vcpus after init + +During machvirt_init(), ARMCPU objects are pre-created along with the +corresponding KVM vcpus in the host. Disabled possible KVM vcpus are then +parked at the per-virt-machine list "kvm_parked_vcpus". + +Prime purpose to pre-create ARMCPU objects for the disabled vcpus is to +facilitate the GIC initialization (pre-sized with possible vcpus). GIC +requires all vcpus corresponding to its GICC(GIC CPU Interface) to be +initialized and present during its own initialization. + +After initialization of the machine is complete we release the ARMCPU objects +for the disabled vcpus(which shall be re-created at the time when vcpu is hot +plugged again. This newly created ARMCPU object is then attached with +corresponding parked KVM VCPU). + +We have few options after the machine init where the disabled ARMCPU object +could be released: +1. Release in context to the virt_machine_done() notifier.(This is also our + current approach) +2. Defer the release till a new vcpu object is hot plugged. Then release the + object in context to the pre_plug() phase. +3. Never release and keep on reusing them and release once at VM exit. This + will require some modifications within the interface of qdevice_add() to + get old ARMCPU object instead of creating a new one for the hotplug request. + +Each of the above approaches come with their own pros and cons. This prototype +uses the 1st approach.(suggestions are welcome!) + +Co-developed-by: Keqian Zhu +Signed-off-by: Salil Mehta +Signed-off-by: Huang Shijie +--- + hw/arm/virt.c | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +diff --git a/hw/arm/virt.c b/hw/arm/virt.c +index 47db084183..a0b6393f76 100644 +--- a/hw/arm/virt.c ++++ b/hw/arm/virt.c +@@ -1505,6 +1505,28 @@ static void create_secure_ram(VirtMachineState *vms, + g_free(nodename); + } + ++static void virt_remove_disabled_cpus(VirtMachineState *vms) ++{ ++ MachineState *ms = MACHINE(vms); ++ int n; ++ ++ /* ++ * RFC: Question: Other approach could have been to keep them forever ++ * and release it only once when qemu exits as part o finalize or when ++ * new vcpu is hotplugged. In the later old could be released for the ++ * newly created object for the same vcpu? ++ */ ++ for (n = MACHINE(vms)->smp.cpus; n < MACHINE(vms)->smp.max_cpus; n++) { ++ CPUState *cs = qemu_get_possible_cpu(n); ++ if (!qemu_present_cpu(cs)) { ++ CPUArchId *cpu_slot; ++ cpu_slot = virt_find_cpu_slot(ms, cs->cpu_index); ++ cpu_slot->cpu = NULL; ++ object_unref(OBJECT(cs)); ++ } ++ } ++} ++ + /*static bool virt_pmu_init(VirtMachineState *vms) + { + CPUArchIdList *possible_cpus = vms->parent.possible_cpus; +@@ -1608,6 +1630,9 @@ void virt_machine_done(Notifier *notifier, void *data) + + virt_acpi_setup(vms); + virt_build_smbios(vms); ++ ++ /* release the disabled ARMCPU objects used during init for pre-sizing */ ++ virt_remove_disabled_cpus(vms); + } + + static uint64_t virt_cpu_mp_affinity(VirtMachineState *vms, int idx) +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0015-arm-cpuhp-Update-ACPI-GED-framework-to-support-vcpu-.patch b/tools/packaging/qemu/patches/6.1.x/0015-arm-cpuhp-Update-ACPI-GED-framework-to-support-vcpu-.patch new file mode 100644 index 000000000..a6be7f41a --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0015-arm-cpuhp-Update-ACPI-GED-framework-to-support-vcpu-.patch @@ -0,0 +1,97 @@ +From 6a8a86ca3b4b66ab3489911bd0ad4da594531882 Mon Sep 17 00:00:00 2001 +From: Salil Mehta +Date: Thu, 25 Nov 2021 18:15:46 +0800 +Subject: [PATCH 15/28] arm/cpuhp: Update ACPI GED framework to support vcpu + hotplug + +ACPI GED shall be used to convey to the guest kernel about any cpu hot-(un)plug +events. Therefore, existing ACPI GED framework inside QEMU needs to be enhanced +to support CPU hotplug state and events. + +Co-developed-by: Keqian Zhu +Signed-off-by: Salil Mehta +Signed-off-by: Huang Shijie +--- + hw/acpi/generic_event_device.c | 42 +++++++++++++++++++++++++++++++++- + 1 file changed, 41 insertions(+), 1 deletion(-) + +diff --git a/hw/acpi/generic_event_device.c b/hw/acpi/generic_event_device.c +index 7278b89c6a..815f4a91ce 100644 +--- a/hw/acpi/generic_event_device.c ++++ b/hw/acpi/generic_event_device.c +@@ -238,13 +238,48 @@ static void acpi_ged_device_plug_cb(HotplugHandler *hotplug_dev, + nvdimm_acpi_plug_cb(hotplug_dev, dev); + } else { + acpi_memory_plug_cb(hotplug_dev, &s->memhp_state, dev, errp); +- } ++ } ++ } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { ++ acpi_cpu_plug_cb(hotplug_dev, &s->cpuhp_state, dev, errp); + } else { + error_setg(errp, "virt: device plug request for unsupported device" + " type: %s", object_get_typename(OBJECT(dev))); + } + } + ++static void acpi_ged_device_unplug_request_cb(HotplugHandler *hotplug_dev, ++ DeviceState *dev, Error **errp) ++{ ++ AcpiGedState *s = ACPI_GED(hotplug_dev); ++ ++ if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { ++ acpi_cpu_unplug_request_cb(hotplug_dev, &s->cpuhp_state, dev, errp); ++ } else { ++ error_setg(errp, "virt: device unplug request for the unsupported device" ++ " type: %s", object_get_typename(OBJECT(dev))); ++ } ++} ++ ++static void acpi_ged_device_unplug_cb(HotplugHandler *hotplug_dev, ++ DeviceState *dev, Error **errp) ++{ ++ AcpiGedState *s = ACPI_GED(hotplug_dev); ++ ++ if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { ++ acpi_cpu_unplug_cb(&s->cpuhp_state, dev, errp); ++ } else { ++ error_setg(errp, "virt: device plug request for unsupported device" ++ " type: %s", object_get_typename(OBJECT(dev))); ++ } ++} ++ ++static void acpi_ged_ospm_status(AcpiDeviceIf *adev, ACPIOSTInfoList ***list) ++{ ++ AcpiGedState *s = ACPI_GED(adev); ++ ++ acpi_cpu_ospm_status(&s->cpuhp_state, list); ++} ++ + static void acpi_ged_unplug_request_cb(HotplugHandler *hotplug_dev, + DeviceState *dev, Error **errp) + { +@@ -284,6 +319,8 @@ static void acpi_ged_send_event(AcpiDeviceIf *adev, AcpiEventStatusBits ev) + sel = ACPI_GED_PWR_DOWN_EVT; + } else if (ev & ACPI_NVDIMM_HOTPLUG_STATUS) { + sel = ACPI_GED_NVDIMM_HOTPLUG_EVT; ++ } else if (ev & ACPI_CPU_HOTPLUG_STATUS) { ++ sel = ACPI_GED_CPU_HOTPLUG_EVT; + } else { + /* Unknown event. Return without generating interrupt. */ + warn_report("GED: Unsupported event %d. No irq injected", ev); +@@ -418,10 +455,13 @@ static void acpi_ged_class_init(ObjectClass *class, void *data) + dc->vmsd = &vmstate_acpi_ged; + + hc->plug = acpi_ged_device_plug_cb; ++ hc->unplug_request = acpi_ged_device_unplug_request_cb; ++ hc->unplug = acpi_ged_device_unplug_cb; + hc->unplug_request = acpi_ged_unplug_request_cb; + hc->unplug = acpi_ged_unplug_cb; + + adevc->send_event = acpi_ged_send_event; ++ adevc->ospm_status = acpi_ged_ospm_status; + } + + static const TypeInfo acpi_ged_info = { +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0016-arm-cpuhp-Add-update-basic-hot-un-plug-framework.patch b/tools/packaging/qemu/patches/6.1.x/0016-arm-cpuhp-Add-update-basic-hot-un-plug-framework.patch new file mode 100644 index 000000000..18bf4cf4e --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0016-arm-cpuhp-Add-update-basic-hot-un-plug-framework.patch @@ -0,0 +1,171 @@ +From 2010227bc3f326b0755ec3878476c2f0616ea407 Mon Sep 17 00:00:00 2001 +From: Salil Mehta +Date: Sat, 27 Nov 2021 15:03:17 +0800 +Subject: [PATCH 16/28] arm/cpuhp: Add/update basic hot-(un)plug framework + +Adds the new cpu hot-unplug hooks and updates the existing hotplug hooks with +sanity checks. + +Note, Functional contents of the hooks(now left with TODO comment) shall be +gradually filled in the subsequent patches in an incremental approach to patch +and logic building which would be roughly as follows: +1. (Un-)wiring of interrupts between vcpu<->gic +2. Sending events to Guest for hot-(un)plug so that guest can take appropriate + actions. +3. Notifying GIC about hot-(un)plug action so that vcpu could be (un-)stitched + to the GIC CPU interface. +4. Updating the Guest with Next boot info for this vcpu in the firmware. + +Co-developed-by: Keqian Zhu +Signed-off-by: Salil Mehta +Signed-off-by: Huang Shijie +--- + hw/arm/virt.c | 87 +++++++++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 85 insertions(+), 2 deletions(-) + +diff --git a/hw/arm/virt.c b/hw/arm/virt.c +index a0b6393f76..ce34fb019a 100644 +--- a/hw/arm/virt.c ++++ b/hw/arm/virt.c +@@ -2668,11 +2668,22 @@ static void virt_memory_plug(HotplugHandler *hotplug_dev, + static void virt_cpu_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev, + Error **errp) + { ++ VirtMachineState *vms = VIRT_MACHINE(hotplug_dev); + MachineState *ms = MACHINE(hotplug_dev); + ARMCPU *cpu = ARM_CPU(dev); + CPUState *cs = CPU(dev); + CPUArchId *cpu_slot; + ++ if (dev->hotplugged && !vms->acpi_dev) { ++ error_setg(errp, "GED acpi device does not exists"); ++ return; ++ } ++ ++ if (dev->hotplugged && (vms->gic_version < VIRT_GIC_VERSION_3)) { ++ error_setg(errp, "CPU hotplug not supported with GICv%d, use GICv3 or " ++ "later", vms->gic_version); ++ return; ++ } + /* sanity check the cpu */ + if (!object_dynamic_cast(OBJECT(cpu), ms->cpu_type)) { + error_setg(errp, "Invalid CPU type, expected cpu type: '%s'", +@@ -2705,6 +2716,9 @@ static void virt_cpu_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev, + return; + } + virt_cpu_set_properties(OBJECT(cs), cpu_slot); ++ if (dev->hotplugged) { ++ /* TODO: update GIC about this hotplug change here */ ++ } + } + + static void virt_cpu_plug(HotplugHandler *hotplug_dev, DeviceState *dev, +@@ -2719,10 +2733,74 @@ static void virt_cpu_plug(HotplugHandler *hotplug_dev, DeviceState *dev, + cpu_slot = virt_find_cpu_slot(ms, cpu->core_id); + cpu_slot->cpu = OBJECT(dev); + ++ if (dev->hotplugged) { ++ /* TODO: wire the gic-cpu irqs */ ++ /* TODO: update acpi hotplug state and send cpu hotplug event to guest */ ++ /* TODO: register this cpu for reset & update F/W info for the next boot */ ++ } + cs->disabled = false; + return; + } + ++static void virt_cpu_unplug_request(HotplugHandler *hotplug_dev, ++ DeviceState *dev, Error **errp) ++{ ++ VirtMachineState *vms = VIRT_MACHINE(hotplug_dev); ++ CPUState *cs = CPU(dev); ++ ++ if (!vms->acpi_dev || !dev->realized) { ++ error_setg(errp, "GED does not exists or device is not realized!"); ++ return; ++ } ++ ++ if (vms->gic_version < VIRT_GIC_VERSION_3) { ++ error_setg(errp, "CPU hot-unplug not supported with GICv%d", ++ vms->gic_version); ++ return; ++ } ++ ++ if (cs->cpu_index == first_cpu->cpu_index) ++ { ++ error_setg(errp, "hot-unplug of ARM boot vcpu %d not supported", ++ first_cpu->cpu_index); ++ return; ++ } ++ ++ /* TODO: request cpu hotplug from guest */ ++ ++ return; ++} ++ ++static void virt_cpu_unplug(HotplugHandler *hotplug_dev, DeviceState *dev, ++ Error **errp) ++{ ++ VirtMachineState *vms = VIRT_MACHINE(hotplug_dev); ++ MachineState *ms = MACHINE(hotplug_dev); ++ CPUState *cs = CPU(dev); ++ CPUArchId *cpu_slot; ++ ++ if (!vms->acpi_dev || !dev->realized) { ++ error_setg(errp, "GED does not exists or device is not realized!"); ++ return; ++ } ++ ++ cpu_slot = virt_find_cpu_slot(ms, ARM_CPU(cs)->core_id); ++ ++ /* TODO: update the acpi cpu hotplug state for cpu hot-unplug */ ++ ++ /* TODO: unwire the gic-cpu irqs here */ ++ /* TODO: update the GIC about this hot unplug change */ ++ ++ /* TODO: unregister this cpu for reset & update F/W info for the next boot */ ++ ++ qemu_opts_del(dev->opts); ++ dev->opts = NULL; ++ ++ cpu_slot->cpu = NULL; ++ cs->disabled = true; ++ return; ++} ++ + static void virt_machine_device_pre_plug_cb(HotplugHandler *hotplug_dev, + DeviceState *dev, Error **errp) + { +@@ -2835,9 +2913,11 @@ static void virt_machine_device_unplug_request_cb(HotplugHandler *hotplug_dev, + { + if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { + virt_dimm_unplug_request(hotplug_dev, dev, errp); ++ } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { ++ virt_cpu_unplug_request(hotplug_dev, dev, errp); + } else { +- error_setg(errp, "device unplug request for unsupported device" +- " type: %s", object_get_typename(OBJECT(dev))); ++ error_setg(errp, "device unplug request for unsupported type: %s", ++ object_get_typename(OBJECT(dev))); + } + } + +@@ -2846,6 +2926,8 @@ static void virt_machine_device_unplug_cb(HotplugHandler *hotplug_dev, + { + if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { + virt_dimm_unplug(hotplug_dev, dev, errp); ++ } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { ++ virt_cpu_unplug(hotplug_dev, dev, errp); + } else { + error_setg(errp, "virt: device unplug for unsupported device" + " type: %s", object_get_typename(OBJECT(dev))); +@@ -2977,6 +3059,7 @@ static void virt_machine_class_init(ObjectClass *oc, void *data) + mc->default_cpu_type = ARM_CPU_TYPE_NAME("cortex-a15"); + mc->get_default_cpu_node_id = virt_get_default_cpu_node_id; + mc->kvm_type = virt_kvm_type; ++ mc->has_hotpluggable_cpus = true; + assert(!mc->get_hotplug_handler); + mc->get_hotplug_handler = virt_machine_get_hotplug_handler; + hc->pre_plug = virt_machine_device_pre_plug_cb; +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0017-arm-cpuhp-Changes-to-un-wire-GICC-VCPU-IRQs-during-h.patch b/tools/packaging/qemu/patches/6.1.x/0017-arm-cpuhp-Changes-to-un-wire-GICC-VCPU-IRQs-during-h.patch new file mode 100644 index 000000000..c48da0b40 --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0017-arm-cpuhp-Changes-to-un-wire-GICC-VCPU-IRQs-during-h.patch @@ -0,0 +1,232 @@ +From 8ee7755e469b3e8d1a4edb0fd703d33a163092f5 Mon Sep 17 00:00:00 2001 +From: Salil Mehta +Date: Sat, 27 Nov 2021 15:19:39 +0800 +Subject: [PATCH 17/28] arm/cpuhp: Changes to (un)wire GICC<->VCPU IRQs during + hot-(un)plug + +Refactors the existing gic create code to extract common code to wire the +vcpu<->gic interrupts. This function could be used with cold-plug case and also +used when vcpu is hot-plugged. It also introduces a new function to unwire the +vcpu>->gic interrupts for the vcpu hot-unplug cases. + +Co-developed-by: Keqian Zhu +Signed-off-by: Salil Mehta +Signed-off-by: Huang Shijie +--- + hw/arm/virt.c | 144 +++++++++++++++++++++++++++++------------ + hw/core/qdev.c | 2 +- + include/hw/qdev-core.h | 2 + + 3 files changed, 104 insertions(+), 44 deletions(-) + +diff --git a/hw/arm/virt.c b/hw/arm/virt.c +index ce34fb019a..b0429cdf8c 100644 +--- a/hw/arm/virt.c ++++ b/hw/arm/virt.c +@@ -625,6 +625,103 @@ static void create_v2m(VirtMachineState *vms) + vms->msi_controller = VIRT_MSI_CTRL_GICV2M; + } + ++static void unwire_gic_cpu_irqs(VirtMachineState *vms, CPUState *cs) ++{ ++ unsigned int max_cpus = vms->max_cpus; ++ DeviceState *cpudev = DEVICE(cs); ++ DeviceState *gicdev = vms->gic; ++ int cpu = CPU(cs)->cpu_index; ++ int type = vms->gic_version; ++ int irq; ++ ++ /* Mapping from the output timer irq lines from the CPU to the ++ * GIC PPI inputs we use for the virt board. ++ */ ++ const int timer_irq[] = { ++ [GTIMER_PHYS] = ARCH_TIMER_NS_EL1_IRQ, ++ [GTIMER_VIRT] = ARCH_TIMER_VIRT_IRQ, ++ [GTIMER_HYP] = ARCH_TIMER_NS_EL2_IRQ, ++ [GTIMER_SEC] = ARCH_TIMER_S_EL1_IRQ, ++ }; ++ ++ for (irq = 0; irq < ARRAY_SIZE(timer_irq); irq++) { ++ qdev_disconnect_gpio_out_named(cpudev, NULL, irq); ++ } ++ ++ if (type == 3) { ++ qdev_disconnect_gpio_out_named(cpudev, "gicv3-maintenance-interrupt", 0); ++ } else if (vms->virt) { ++ qdev_disconnect_gpio_out_named(gicdev, SYSBUS_DEVICE_GPIO_IRQ, cpu + 4 * max_cpus); ++ } ++ ++ /* ++ * RFC: Question: This currently does not takes care of intimating the devices ++ * which might be sitting on system bus. Do we need a sysbus_disconnect_irq() ++ * which also does the job of notification beside disconnection? ++ */ ++ qdev_disconnect_gpio_out_named(cpudev, "pmu-interrupt", 0); ++ qdev_disconnect_gpio_out_named(gicdev, SYSBUS_DEVICE_GPIO_IRQ, cpu); ++ qdev_disconnect_gpio_out_named(gicdev, ++ SYSBUS_DEVICE_GPIO_IRQ, cpu + max_cpus); ++ qdev_disconnect_gpio_out_named(gicdev, SYSBUS_DEVICE_GPIO_IRQ, ++ cpu + 2 * max_cpus); ++ qdev_disconnect_gpio_out_named(gicdev, SYSBUS_DEVICE_GPIO_IRQ, ++ cpu + 3 * max_cpus); ++} ++ ++static void wire_gic_cpu_irqs(VirtMachineState *vms, CPUState *cs) ++{ ++ unsigned int max_cpus = vms->max_cpus; ++ DeviceState *cpudev = DEVICE(cs); ++ DeviceState *gicdev = vms->gic; ++ int cpu = CPU(cs)->cpu_index; ++ int type = vms->gic_version; ++ SysBusDevice *gicbusdev; ++ int ppibase; ++ int irq; ++ ++ ppibase = NUM_IRQS + cpu * GIC_INTERNAL + GIC_NR_SGIS; ++ ++ /* Mapping from the output timer irq lines from the CPU to the ++ * GIC PPI inputs we use for the virt board. ++ */ ++ const int timer_irq[] = { ++ [GTIMER_PHYS] = ARCH_TIMER_NS_EL1_IRQ, ++ [GTIMER_VIRT] = ARCH_TIMER_VIRT_IRQ, ++ [GTIMER_HYP] = ARCH_TIMER_NS_EL2_IRQ, ++ [GTIMER_SEC] = ARCH_TIMER_S_EL1_IRQ, ++ }; ++ ++ for (irq = 0; irq < ARRAY_SIZE(timer_irq); irq++) { ++ qdev_connect_gpio_out(cpudev, irq, ++ qdev_get_gpio_in(gicdev, ++ ppibase + timer_irq[irq])); ++ } ++ ++ gicbusdev = SYS_BUS_DEVICE(gicdev); ++ if (type == 3) { ++ qemu_irq irq = qdev_get_gpio_in(gicdev, ++ ppibase + ARCH_GIC_MAINT_IRQ); ++ qdev_connect_gpio_out_named(cpudev, "gicv3-maintenance-interrupt", ++ 0, irq); ++ } else if (vms->virt) { ++ qemu_irq irq = qdev_get_gpio_in(gicdev, ++ ppibase + ARCH_GIC_MAINT_IRQ); ++ sysbus_connect_irq(gicbusdev, cpu + 4 * max_cpus, irq); ++ } ++ ++ qdev_connect_gpio_out_named(cpudev, "pmu-interrupt", 0, ++ qdev_get_gpio_in(gicdev, ++ ppibase + VIRTUAL_PMU_IRQ)); ++ sysbus_connect_irq(gicbusdev, cpu, qdev_get_gpio_in(cpudev, ARM_CPU_IRQ)); ++ sysbus_connect_irq(gicbusdev, cpu + max_cpus, ++ qdev_get_gpio_in(cpudev, ARM_CPU_FIQ)); ++ sysbus_connect_irq(gicbusdev, cpu + 2 * max_cpus, ++ qdev_get_gpio_in(cpudev, ARM_CPU_VIRQ)); ++ sysbus_connect_irq(gicbusdev, cpu + 3 * max_cpus, ++ qdev_get_gpio_in(cpudev, ARM_CPU_VFIQ)); ++} ++ + static void create_gic(VirtMachineState *vms) + { + MachineState *ms = MACHINE(vms); +@@ -695,47 +792,7 @@ static void create_gic(VirtMachineState *vms) + * and the GIC's IRQ/FIQ/VIRQ/VFIQ interrupt outputs to the CPU's inputs. + */ + for (i = 0; i < smp_cpus; i++) { +- DeviceState *cpudev = DEVICE(qemu_get_cpu(i)); +- int ppibase = NUM_IRQS + i * GIC_INTERNAL + GIC_NR_SGIS; +- int irq; +- /* Mapping from the output timer irq lines from the CPU to the +- * GIC PPI inputs we use for the virt board. +- */ +- const int timer_irq[] = { +- [GTIMER_PHYS] = ARCH_TIMER_NS_EL1_IRQ, +- [GTIMER_VIRT] = ARCH_TIMER_VIRT_IRQ, +- [GTIMER_HYP] = ARCH_TIMER_NS_EL2_IRQ, +- [GTIMER_SEC] = ARCH_TIMER_S_EL1_IRQ, +- }; +- +- for (irq = 0; irq < ARRAY_SIZE(timer_irq); irq++) { +- qdev_connect_gpio_out(cpudev, irq, +- qdev_get_gpio_in(vms->gic, +- ppibase + timer_irq[irq])); +- } +- +- if (type == 3) { +- qemu_irq irq = qdev_get_gpio_in(vms->gic, +- ppibase + ARCH_GIC_MAINT_IRQ); +- qdev_connect_gpio_out_named(cpudev, "gicv3-maintenance-interrupt", +- 0, irq); +- } else if (vms->virt) { +- qemu_irq irq = qdev_get_gpio_in(vms->gic, +- ppibase + ARCH_GIC_MAINT_IRQ); +- sysbus_connect_irq(gicbusdev, i + 4 * max_cpus, irq); +- } +- +- qdev_connect_gpio_out_named(cpudev, "pmu-interrupt", 0, +- qdev_get_gpio_in(vms->gic, ppibase +- + VIRTUAL_PMU_IRQ)); +- +- sysbus_connect_irq(gicbusdev, i, qdev_get_gpio_in(cpudev, ARM_CPU_IRQ)); +- sysbus_connect_irq(gicbusdev, i + max_cpus, +- qdev_get_gpio_in(cpudev, ARM_CPU_FIQ)); +- sysbus_connect_irq(gicbusdev, i + 2 * max_cpus, +- qdev_get_gpio_in(cpudev, ARM_CPU_VIRQ)); +- sysbus_connect_irq(gicbusdev, i + 3 * max_cpus, +- qdev_get_gpio_in(cpudev, ARM_CPU_VFIQ)); ++ wire_gic_cpu_irqs(vms, qemu_get_cpu(i)); + } + + fdt_add_gic_node(vms); +@@ -2724,6 +2781,7 @@ static void virt_cpu_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev, + static void virt_cpu_plug(HotplugHandler *hotplug_dev, DeviceState *dev, + Error **errp) + { ++ VirtMachineState *vms = VIRT_MACHINE(hotplug_dev); + MachineState *ms = MACHINE(hotplug_dev); + ARMCPU *cpu = ARM_CPU(dev); + CPUState *cs = CPU(dev); +@@ -2734,7 +2792,7 @@ static void virt_cpu_plug(HotplugHandler *hotplug_dev, DeviceState *dev, + cpu_slot->cpu = OBJECT(dev); + + if (dev->hotplugged) { +- /* TODO: wire the gic-cpu irqs */ ++ wire_gic_cpu_irqs(vms, cs); + /* TODO: update acpi hotplug state and send cpu hotplug event to guest */ + /* TODO: register this cpu for reset & update F/W info for the next boot */ + } +@@ -2788,7 +2846,7 @@ static void virt_cpu_unplug(HotplugHandler *hotplug_dev, DeviceState *dev, + + /* TODO: update the acpi cpu hotplug state for cpu hot-unplug */ + +- /* TODO: unwire the gic-cpu irqs here */ ++ unwire_gic_cpu_irqs(vms, cs); + /* TODO: update the GIC about this hot unplug change */ + + /* TODO: unregister this cpu for reset & update F/W info for the next boot */ +diff --git a/hw/core/qdev.c b/hw/core/qdev.c +index cefc5eaa0a..bb3dfc06da 100644 +--- a/hw/core/qdev.c ++++ b/hw/core/qdev.c +@@ -552,7 +552,7 @@ qemu_irq qdev_get_gpio_out_connector(DeviceState *dev, const char *name, int n) + + /* disconnect a GPIO output, returning the disconnected input (if any) */ + +-static qemu_irq qdev_disconnect_gpio_out_named(DeviceState *dev, ++qemu_irq qdev_disconnect_gpio_out_named(DeviceState *dev, + const char *name, int n) + { + char *propname = g_strdup_printf("%s[%d]", +diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h +index bafc311bfa..ea29e7a7af 100644 +--- a/include/hw/qdev-core.h ++++ b/include/hw/qdev-core.h +@@ -553,6 +553,8 @@ qemu_irq qdev_get_gpio_out_connector(DeviceState *dev, const char *name, int n); + qemu_irq qdev_intercept_gpio_out(DeviceState *dev, qemu_irq icpt, + const char *name, int n); + ++qemu_irq qdev_disconnect_gpio_out_named(DeviceState *dev, ++ const char *name, int n); + BusState *qdev_get_child_bus(DeviceState *dev, const char *name); + + /*** Device API. ***/ +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0018-arm-cpuhp-Changes-to-update-GIC-with-vcpu-hot-plug-n.patch b/tools/packaging/qemu/patches/6.1.x/0018-arm-cpuhp-Changes-to-update-GIC-with-vcpu-hot-plug-n.patch new file mode 100644 index 000000000..0233907c2 --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0018-arm-cpuhp-Changes-to-update-GIC-with-vcpu-hot-plug-n.patch @@ -0,0 +1,211 @@ +From f2ce0fea29008de9c95800044e0e508ba682554d Mon Sep 17 00:00:00 2001 +From: Salil Mehta +Date: Sat, 27 Nov 2021 16:06:48 +0800 +Subject: [PATCH 18/28] arm/cpuhp: Changes to update GIC with vcpu hot-plug + notification + +Adds the notification support about vcpu hot-(un)plug required to update the +GIC so that it can update its vcpu to GIC cpu interface association. + +NOTE: This is using 'struct VirtMachineState' inside the notifier function. + Question: Not sure if it is right to use machine related data structure + inside GIC related files? Its design looks to be pretty much abstracted + from any machine related stuff. @Peter Maydell + +Co-developed-by: Keqian Zhu +Signed-off-by: Salil Mehta +Signed-off-by: Huang Shijie +--- + hw/arm/virt.c | 12 +++++-- + hw/intc/arm_gicv3_common.c | 54 +++++++++++++++++++++++++++++- + hw/intc/arm_gicv3_cpuif.c | 5 +++ + hw/intc/gicv3_internal.h | 1 + + include/hw/arm/virt.h | 1 + + include/hw/intc/arm_gicv3_common.h | 1 + + 6 files changed, 71 insertions(+), 3 deletions(-) + +diff --git a/hw/arm/virt.c b/hw/arm/virt.c +index b0429cdf8c..15595611a3 100644 +--- a/hw/arm/virt.c ++++ b/hw/arm/virt.c +@@ -2109,6 +2109,8 @@ static void machvirt_init(MachineState *machine) + + create_fdt(vms); + ++ notifier_list_init(&vms->cpuhp_notifiers); ++ + possible_cpus = mc->possible_cpu_arch_ids(machine); + assert(possible_cpus->len == max_cpus); + for (n = 0; n < possible_cpus->len; n++) { +@@ -2722,6 +2724,12 @@ static void virt_memory_plug(HotplugHandler *hotplug_dev, + dev, &error_abort); + } + ++static void virt_update_gic(VirtMachineState *vms, CPUState *cs) ++{ ++ /* notify gic to stitch GICC to this new cpu */ ++ notifier_list_notify(&vms->cpuhp_notifiers, cs); ++} ++ + static void virt_cpu_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev, + Error **errp) + { +@@ -2774,7 +2782,7 @@ static void virt_cpu_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev, + } + virt_cpu_set_properties(OBJECT(cs), cpu_slot); + if (dev->hotplugged) { +- /* TODO: update GIC about this hotplug change here */ ++ virt_update_gic(vms, cs); + } + } + +@@ -2847,7 +2855,7 @@ static void virt_cpu_unplug(HotplugHandler *hotplug_dev, DeviceState *dev, + /* TODO: update the acpi cpu hotplug state for cpu hot-unplug */ + + unwire_gic_cpu_irqs(vms, cs); +- /* TODO: update the GIC about this hot unplug change */ ++ virt_update_gic(vms, cs); + + /* TODO: unregister this cpu for reset & update F/W info for the next boot */ + +diff --git a/hw/intc/arm_gicv3_common.c b/hw/intc/arm_gicv3_common.c +index cfc112e43e..aed9906ace 100644 +--- a/hw/intc/arm_gicv3_common.c ++++ b/hw/intc/arm_gicv3_common.c +@@ -31,7 +31,7 @@ + #include "gicv3_internal.h" + #include "hw/arm/linux-boot-if.h" + #include "sysemu/kvm.h" +- ++#include "hw/arm/virt.h" + + static void gicv3_gicd_no_migration_shift_bug_post_load(GICv3State *cs) + { +@@ -305,8 +305,57 @@ void gicv3_init_irqs_and_mmio(GICv3State *s, qemu_irq_handler handler, + } + } + ++static int arm_gicv3_get_proc_num(GICv3State *s, CPUState *cpu) ++{ ++ uint64_t mp_affinity; ++ uint64_t gicr_typer; ++ uint64_t cpu_affid; ++ int i; ++ ++ mp_affinity = object_property_get_uint(OBJECT(cpu), "mp-affinity", NULL); ++ /* match the cpu mp-affinity to get the gic cpuif number */ ++ for (i = 0; i < s->num_cpu; i++) { ++ gicr_typer = s->cpu[i].gicr_typer; ++ cpu_affid = (gicr_typer >> 32) & 0xFFFFFF; ++ if (cpu_affid == mp_affinity) { ++ return i; ++ } ++ } ++ ++ return -1; ++} ++ ++static void arm_gicv3_cpu_update_notifier(Notifier * notifier, void * data) ++{ ++ VirtMachineState *vms = VIRT_MACHINE(qdev_get_machine()); ++ GICv3State *s = ARM_GICV3_COMMON(vms->gic); ++ CPUState *cpu = (CPUState *)data; ++ int gic_cpuif_num; ++ ++ /* this shall get us mapped gicv3 cpuif corresponding to mpidr */ ++ gic_cpuif_num = arm_gicv3_get_proc_num(s, cpu); ++ if (gic_cpuif_num < 0) { ++ error_report("Failed to associate cpu %d with any GIC cpuif", ++ cpu->cpu_index); ++ abort(); ++ } ++ ++ /* check if update is for vcpu hot-unplug */ ++ if (qemu_present_cpu(cpu)) { ++ s->cpu[gic_cpuif_num].cpu = NULL; ++ return; ++ } ++ ++ /* re-stitch the gic cpuif to this new cpu */ ++ gicv3_set_gicv3state(cpu, &s->cpu[gic_cpuif_num]); ++ gicv3_set_cpustate(&s->cpu[gic_cpuif_num], cpu); ++ ++ /* TODO: initialize the registers info for this newly added cpu */ ++} ++ + static void arm_gicv3_common_realize(DeviceState *dev, Error **errp) + { ++ VirtMachineState *vms = VIRT_MACHINE(qdev_get_machine()); + GICv3State *s = ARM_GICV3_COMMON(dev); + int i; + +@@ -386,12 +435,15 @@ static void arm_gicv3_common_realize(DeviceState *dev, Error **errp) + (i << 8) | + (last << 4); + } ++ s->cpu_update_notifier.notify = arm_gicv3_cpu_update_notifier; ++ notifier_list_add(&vms->cpuhp_notifiers, &s->cpu_update_notifier); + } + + static void arm_gicv3_finalize(Object *obj) + { + GICv3State *s = ARM_GICV3_COMMON(obj); + ++ notifier_remove(&s->cpu_update_notifier); + g_free(s->redist_region_count); + } + +diff --git a/hw/intc/arm_gicv3_cpuif.c b/hw/intc/arm_gicv3_cpuif.c +index 819c032ec5..f4a0a1c2ab 100644 +--- a/hw/intc/arm_gicv3_cpuif.c ++++ b/hw/intc/arm_gicv3_cpuif.c +@@ -21,6 +21,11 @@ + #include "hw/irq.h" + #include "cpu.h" + ++void gicv3_set_cpustate(GICv3CPUState *s, CPUState *cpu) ++{ ++ s->cpu = cpu; ++} ++ + void gicv3_set_gicv3state(CPUState *cpu, GICv3CPUState *s) + { + ARMCPU *arm_cpu = ARM_CPU(cpu); +diff --git a/hw/intc/gicv3_internal.h b/hw/intc/gicv3_internal.h +index 05303a55c8..6e14a7a6cd 100644 +--- a/hw/intc/gicv3_internal.h ++++ b/hw/intc/gicv3_internal.h +@@ -409,5 +409,6 @@ static inline void gicv3_cache_all_target_cpustates(GICv3State *s) + } + + void gicv3_set_gicv3state(CPUState *cpu, GICv3CPUState *s); ++void gicv3_set_cpustate(GICv3CPUState *s, CPUState *cpu); + + #endif /* QEMU_ARM_GICV3_INTERNAL_H */ +diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h +index 491eeddca4..b91249201a 100644 +--- a/include/hw/arm/virt.h ++++ b/include/hw/arm/virt.h +@@ -169,6 +169,7 @@ struct VirtMachineState { + DeviceState *gic; + DeviceState *acpi_dev; + Notifier powerdown_notifier; ++ NotifierList cpuhp_notifiers; + PCIBus *bus; + char *oem_id; + char *oem_table_id; +diff --git a/include/hw/intc/arm_gicv3_common.h b/include/hw/intc/arm_gicv3_common.h +index 91491a2f66..b36f98a413 100644 +--- a/include/hw/intc/arm_gicv3_common.h ++++ b/include/hw/intc/arm_gicv3_common.h +@@ -248,6 +248,7 @@ struct GICv3State { + GICv3CPUState *gicd_irouter_target[GICV3_MAXIRQ]; + uint32_t gicd_nsacr[DIV_ROUND_UP(GICV3_MAXIRQ, 16)]; + ++ Notifier cpu_update_notifier; + GICv3CPUState *cpu; + }; + +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0019-arm-cpuhp-Changes-required-to-re-init-the-vcpu-regis.patch b/tools/packaging/qemu/patches/6.1.x/0019-arm-cpuhp-Changes-required-to-re-init-the-vcpu-regis.patch new file mode 100644 index 000000000..0c23c4465 --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0019-arm-cpuhp-Changes-required-to-re-init-the-vcpu-regis.patch @@ -0,0 +1,268 @@ +From 44cdfa821bf310d3adab8885127ff30a2c23157f Mon Sep 17 00:00:00 2001 +From: Salil Mehta +Date: Sat, 27 Nov 2021 17:00:11 +0800 +Subject: [PATCH 19/28] arm/cpuhp: Changes required to (re)init the vcpu + register info + +VCPU register info needs to be re-initialized each time vcpu is hot-plugged. +This has to be done both for emulation/TCG and KVM case. This is done in +context to the GIC update notification for any vcpu hot-(un)plug events. This +change adds that support and re-factors existing to maximize the code re-use. + +Co-developed-by: Keqian Zhu +Signed-off-by: Salil Mehta +Signed-off-by: Huang Shijie +--- + hw/intc/arm_gicv3.c | 1 + + hw/intc/arm_gicv3_common.c | 7 +- + hw/intc/arm_gicv3_cpuif.c | 131 +++++++++++++++-------------- + hw/intc/arm_gicv3_kvm.c | 7 +- + hw/intc/gicv3_internal.h | 1 + + include/hw/intc/arm_gicv3_common.h | 1 + + 6 files changed, 84 insertions(+), 64 deletions(-) + +diff --git a/hw/intc/arm_gicv3.c b/hw/intc/arm_gicv3.c +index d63f8af604..21a50161df 100644 +--- a/hw/intc/arm_gicv3.c ++++ b/hw/intc/arm_gicv3.c +@@ -395,6 +395,7 @@ static void arm_gicv3_class_init(ObjectClass *klass, void *data) + ARMGICv3Class *agc = ARM_GICV3_CLASS(klass); + + agcc->post_load = arm_gicv3_post_load; ++ agcc->init_cpu_reginfo = gicv3_init_cpu_reginfo; + device_class_set_parent_realize(dc, arm_gic_realize, &agc->parent_realize); + } + +diff --git a/hw/intc/arm_gicv3_common.c b/hw/intc/arm_gicv3_common.c +index aed9906ace..c1307895c8 100644 +--- a/hw/intc/arm_gicv3_common.c ++++ b/hw/intc/arm_gicv3_common.c +@@ -330,6 +330,7 @@ static void arm_gicv3_cpu_update_notifier(Notifier * notifier, void * data) + VirtMachineState *vms = VIRT_MACHINE(qdev_get_machine()); + GICv3State *s = ARM_GICV3_COMMON(vms->gic); + CPUState *cpu = (CPUState *)data; ++ ARMGICv3CommonClass *c = ARM_GICV3_COMMON_GET_CLASS(s); + int gic_cpuif_num; + + /* this shall get us mapped gicv3 cpuif corresponding to mpidr */ +@@ -349,8 +350,10 @@ static void arm_gicv3_cpu_update_notifier(Notifier * notifier, void * data) + /* re-stitch the gic cpuif to this new cpu */ + gicv3_set_gicv3state(cpu, &s->cpu[gic_cpuif_num]); + gicv3_set_cpustate(&s->cpu[gic_cpuif_num], cpu); +- +- /* TODO: initialize the registers info for this newly added cpu */ ++ /* initialize the registers info for this newly added cpu */ ++ if (c->init_cpu_reginfo) { ++ c->init_cpu_reginfo(cpu); ++ } + } + + static void arm_gicv3_common_realize(DeviceState *dev, Error **errp) +diff --git a/hw/intc/arm_gicv3_cpuif.c b/hw/intc/arm_gicv3_cpuif.c +index f4a0a1c2ab..96f1637f83 100644 +--- a/hw/intc/arm_gicv3_cpuif.c ++++ b/hw/intc/arm_gicv3_cpuif.c +@@ -2625,6 +2625,72 @@ static const ARMCPRegInfo gicv3_cpuif_ich_apxr23_reginfo[] = { + REGINFO_SENTINEL + }; + ++void gicv3_init_cpu_reginfo(CPUState *cs) ++{ ++ ARMCPU *cpu = ARM_CPU(cs); ++ GICv3CPUState *gcs = icc_cs_from_env(&cpu->env); ++ ++ /* Note that we can't just use the GICv3CPUState as an opaque pointer ++ * in define_arm_cp_regs_with_opaque(), because when we're called back ++ * it might be with code translated by CPU 0 but run by CPU 1, in ++ * which case we'd get the wrong value. ++ * So instead we define the regs with no ri->opaque info, and ++ * get back to the GICv3CPUState from the CPUARMState. ++ */ ++ define_arm_cp_regs(cpu, gicv3_cpuif_reginfo); ++ if (arm_feature(&cpu->env, ARM_FEATURE_EL2) ++ && cpu->gic_num_lrs) { ++ int j; ++ ++ gcs->num_list_regs = cpu->gic_num_lrs; ++ gcs->vpribits = cpu->gic_vpribits; ++ gcs->vprebits = cpu->gic_vprebits; ++ ++ /* Check against architectural constraints: getting these ++ * wrong would be a bug in the CPU code defining these, ++ * and the implementation relies on them holding. ++ */ ++ g_assert(gcs->vprebits <= gcs->vpribits); ++ g_assert(gcs->vprebits >= 5 && gcs->vprebits <= 7); ++ g_assert(gcs->vpribits >= 5 && gcs->vpribits <= 8); ++ ++ define_arm_cp_regs(cpu, gicv3_cpuif_hcr_reginfo); ++ ++ for (j = 0; j < gcs->num_list_regs; j++) { ++ /* Note that the AArch64 LRs are 64-bit; the AArch32 LRs ++ * are split into two cp15 regs, LR (the low part, with the ++ * same encoding as the AArch64 LR) and LRC (the high part). ++ */ ++ ARMCPRegInfo lr_regset[] = { ++ { .name = "ICH_LRn_EL2", .state = ARM_CP_STATE_BOTH, ++ .opc0 = 3, .opc1 = 4, .crn = 12, ++ .crm = 12 + (j >> 3), .opc2 = j & 7, ++ .type = ARM_CP_IO | ARM_CP_NO_RAW, ++ .access = PL2_RW, ++ .readfn = ich_lr_read, ++ .writefn = ich_lr_write, ++ }, ++ { .name = "ICH_LRCn_EL2", .state = ARM_CP_STATE_AA32, ++ .cp = 15, .opc1 = 4, .crn = 12, ++ .crm = 14 + (j >> 3), .opc2 = j & 7, ++ .type = ARM_CP_IO | ARM_CP_NO_RAW, ++ .access = PL2_RW, ++ .readfn = ich_lr_read, ++ .writefn = ich_lr_write, ++ }, ++ REGINFO_SENTINEL ++ }; ++ define_arm_cp_regs(cpu, lr_regset); ++ } ++ if (gcs->vprebits >= 6) { ++ define_arm_cp_regs(cpu, gicv3_cpuif_ich_apxr1_reginfo); ++ } ++ if (gcs->vprebits == 7) { ++ define_arm_cp_regs(cpu, gicv3_cpuif_ich_apxr23_reginfo); ++ } ++ } ++} ++ + static void gicv3_cpuif_el_change_hook(ARMCPU *cpu, void *opaque) + { + GICv3CPUState *cs = opaque; +@@ -2641,67 +2707,10 @@ void gicv3_init_cpuif(GICv3State *s) + + for (i = 0; i < s->num_cpu; i++) { + ARMCPU *cpu = ARM_CPU(qemu_get_cpu(i)); +- GICv3CPUState *cs = &s->cpu[i]; +- +- /* Note that we can't just use the GICv3CPUState as an opaque pointer +- * in define_arm_cp_regs_with_opaque(), because when we're called back +- * it might be with code translated by CPU 0 but run by CPU 1, in +- * which case we'd get the wrong value. +- * So instead we define the regs with no ri->opaque info, and +- * get back to the GICv3CPUState from the CPUARMState. +- */ +- define_arm_cp_regs(cpu, gicv3_cpuif_reginfo); +- if (arm_feature(&cpu->env, ARM_FEATURE_EL2) +- && cpu->gic_num_lrs) { +- int j; +- +- cs->num_list_regs = cpu->gic_num_lrs; +- cs->vpribits = cpu->gic_vpribits; +- cs->vprebits = cpu->gic_vprebits; +- +- /* Check against architectural constraints: getting these +- * wrong would be a bug in the CPU code defining these, +- * and the implementation relies on them holding. +- */ +- g_assert(cs->vprebits <= cs->vpribits); +- g_assert(cs->vprebits >= 5 && cs->vprebits <= 7); +- g_assert(cs->vpribits >= 5 && cs->vpribits <= 8); +- +- define_arm_cp_regs(cpu, gicv3_cpuif_hcr_reginfo); +- +- for (j = 0; j < cs->num_list_regs; j++) { +- /* Note that the AArch64 LRs are 64-bit; the AArch32 LRs +- * are split into two cp15 regs, LR (the low part, with the +- * same encoding as the AArch64 LR) and LRC (the high part). +- */ +- ARMCPRegInfo lr_regset[] = { +- { .name = "ICH_LRn_EL2", .state = ARM_CP_STATE_BOTH, +- .opc0 = 3, .opc1 = 4, .crn = 12, +- .crm = 12 + (j >> 3), .opc2 = j & 7, +- .type = ARM_CP_IO | ARM_CP_NO_RAW, +- .access = PL2_RW, +- .readfn = ich_lr_read, +- .writefn = ich_lr_write, +- }, +- { .name = "ICH_LRCn_EL2", .state = ARM_CP_STATE_AA32, +- .cp = 15, .opc1 = 4, .crn = 12, +- .crm = 14 + (j >> 3), .opc2 = j & 7, +- .type = ARM_CP_IO | ARM_CP_NO_RAW, +- .access = PL2_RW, +- .readfn = ich_lr_read, +- .writefn = ich_lr_write, +- }, +- REGINFO_SENTINEL +- }; +- define_arm_cp_regs(cpu, lr_regset); +- } +- if (cs->vprebits >= 6) { +- define_arm_cp_regs(cpu, gicv3_cpuif_ich_apxr1_reginfo); +- } +- if (cs->vprebits == 7) { +- define_arm_cp_regs(cpu, gicv3_cpuif_ich_apxr23_reginfo); +- } ++ if (qemu_present_cpu(CPU(cpu))) { ++ GICv3CPUState *cs = icc_cs_from_env(&cpu->env); ++ gicv3_init_cpu_reginfo(CPU(cpu)); ++ arm_register_el_change_hook(cpu, gicv3_cpuif_el_change_hook, cs); + } +- arm_register_el_change_hook(cpu, gicv3_cpuif_el_change_hook, cs); + } + } +diff --git a/hw/intc/arm_gicv3_kvm.c b/hw/intc/arm_gicv3_kvm.c +index 4e7bb4ac1f..65ac3d5a88 100644 +--- a/hw/intc/arm_gicv3_kvm.c ++++ b/hw/intc/arm_gicv3_kvm.c +@@ -789,6 +789,10 @@ static void vm_change_state_handler(void *opaque, bool running, + } + } + ++static void kvm_gicv3_init_cpu_reginfo(CPUState *cs) ++{ ++ define_arm_cp_regs(ARM_CPU(cs), gicv3_cpuif_reginfo); ++} + + static void kvm_arm_gicv3_realize(DeviceState *dev, Error **errp) + { +@@ -821,7 +825,7 @@ static void kvm_arm_gicv3_realize(DeviceState *dev, Error **errp) + for (i = 0; i < s->num_cpu; i++) { + CPUState *cs = qemu_get_cpu(i); + if (qemu_present_cpu(cs)) +- define_arm_cp_regs(ARM_CPU(cs), gicv3_cpuif_reginfo); ++ kvm_gicv3_init_cpu_reginfo(cs); + } + + /* Try to create the device via the device control API */ +@@ -908,6 +912,7 @@ static void kvm_arm_gicv3_class_init(ObjectClass *klass, void *data) + + agcc->pre_save = kvm_arm_gicv3_get; + agcc->post_load = kvm_arm_gicv3_put; ++ agcc->init_cpu_reginfo = kvm_gicv3_init_cpu_reginfo; + device_class_set_parent_realize(dc, kvm_arm_gicv3_realize, + &kgc->parent_realize); + device_class_set_parent_reset(dc, kvm_arm_gicv3_reset, &kgc->parent_reset); +diff --git a/hw/intc/gicv3_internal.h b/hw/intc/gicv3_internal.h +index 6e14a7a6cd..66eec3c3fc 100644 +--- a/hw/intc/gicv3_internal.h ++++ b/hw/intc/gicv3_internal.h +@@ -298,6 +298,7 @@ void gicv3_dist_set_irq(GICv3State *s, int irq, int level); + void gicv3_redist_set_irq(GICv3CPUState *cs, int irq, int level); + void gicv3_redist_send_sgi(GICv3CPUState *cs, int grp, int irq, bool ns); + void gicv3_init_cpuif(GICv3State *s); ++void gicv3_init_cpu_reginfo(CPUState *cs); + + /** + * gicv3_cpuif_update: +diff --git a/include/hw/intc/arm_gicv3_common.h b/include/hw/intc/arm_gicv3_common.h +index b36f98a413..b2457cbcb8 100644 +--- a/include/hw/intc/arm_gicv3_common.h ++++ b/include/hw/intc/arm_gicv3_common.h +@@ -291,6 +291,7 @@ struct ARMGICv3CommonClass { + + void (*pre_save)(GICv3State *s); + void (*post_load)(GICv3State *s); ++ void (*init_cpu_reginfo)(CPUState *cs); + }; + + void gicv3_init_irqs_and_mmio(GICv3State *s, qemu_irq_handler handler, +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0020-arm-cpuhp-Update-the-guest-via-GED-about-cpu-hot-un-.patch b/tools/packaging/qemu/patches/6.1.x/0020-arm-cpuhp-Update-the-guest-via-GED-about-cpu-hot-un-.patch new file mode 100644 index 000000000..ab368a439 --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0020-arm-cpuhp-Update-the-guest-via-GED-about-cpu-hot-un-.patch @@ -0,0 +1,115 @@ +From 740d5e7968376d6007fcc71008f277b8ea94a2fb Mon Sep 17 00:00:00 2001 +From: Salil Mehta +Date: Sat, 27 Nov 2021 17:07:55 +0800 +Subject: [PATCH 20/28] arm/cpuhp: Update the guest(via GED) about cpu + hot-(un)plug events + +During any vcpu hot-(un)plug, running guest VM needs to be intimated about the +new vcpu being added or request the deletion of the vcpu which is already part +of the guest VM. This is done using the ACPI GED event which eventually gets +demultiplexed to a CPU hotplug event and further to specific hot-(un)plug event +of a particular vcpu. + +This change adds the ACPI calls to the existing hot-(un)plug hooks to trigger +ACPI GED events from QEMU to guest VM. + +Co-developed-by: Keqian Zhu +Signed-off-by: Salil Mehta +Signed-off-by: Huang Shijie +--- + hw/arm/virt.c | 31 +++++++++++++++++++++++++++---- + 1 file changed, 27 insertions(+), 4 deletions(-) + +diff --git a/hw/arm/virt.c b/hw/arm/virt.c +index 15595611a3..c3073d6755 100644 +--- a/hw/arm/virt.c ++++ b/hw/arm/virt.c +@@ -2794,17 +2794,25 @@ static void virt_cpu_plug(HotplugHandler *hotplug_dev, DeviceState *dev, + ARMCPU *cpu = ARM_CPU(dev); + CPUState *cs = CPU(dev); + CPUArchId *cpu_slot; ++ Error *local_err = NULL; + + /* insert the cold/hot-plugged vcpu in the slot */ + cpu_slot = virt_find_cpu_slot(ms, cpu->core_id); + cpu_slot->cpu = OBJECT(dev); + + if (dev->hotplugged) { ++ HotplugHandlerClass *hhc; + wire_gic_cpu_irqs(vms, cs); +- /* TODO: update acpi hotplug state and send cpu hotplug event to guest */ ++ /* update acpi hotplug state and send cpu hotplug event to guest */ ++ hhc = HOTPLUG_HANDLER_GET_CLASS(vms->acpi_dev); ++ hhc->plug(HOTPLUG_HANDLER(vms->acpi_dev), dev, &local_err); ++ if (local_err) ++ goto fail; + /* TODO: register this cpu for reset & update F/W info for the next boot */ + } + cs->disabled = false; ++fail: ++ error_propagate(errp, local_err); + return; + } + +@@ -2812,7 +2820,9 @@ static void virt_cpu_unplug_request(HotplugHandler *hotplug_dev, + DeviceState *dev, Error **errp) + { + VirtMachineState *vms = VIRT_MACHINE(hotplug_dev); ++ HotplugHandlerClass *hhc; + CPUState *cs = CPU(dev); ++ Error *local_err = NULL; + + if (!vms->acpi_dev || !dev->realized) { + error_setg(errp, "GED does not exists or device is not realized!"); +@@ -2832,8 +2842,13 @@ static void virt_cpu_unplug_request(HotplugHandler *hotplug_dev, + return; + } + +- /* TODO: request cpu hotplug from guest */ +- ++ /* request cpu hotplug from guest */ ++ hhc = HOTPLUG_HANDLER_GET_CLASS(vms->acpi_dev); ++ hhc->unplug_request(HOTPLUG_HANDLER(vms->acpi_dev), dev, &local_err); ++ if (local_err) ++ goto fail; ++fail: ++ error_propagate(errp, local_err); + return; + } + +@@ -2842,8 +2857,10 @@ static void virt_cpu_unplug(HotplugHandler *hotplug_dev, DeviceState *dev, + { + VirtMachineState *vms = VIRT_MACHINE(hotplug_dev); + MachineState *ms = MACHINE(hotplug_dev); ++ HotplugHandlerClass *hhc; + CPUState *cs = CPU(dev); + CPUArchId *cpu_slot; ++ Error *local_err = NULL; + + if (!vms->acpi_dev || !dev->realized) { + error_setg(errp, "GED does not exists or device is not realized!"); +@@ -2852,7 +2869,11 @@ static void virt_cpu_unplug(HotplugHandler *hotplug_dev, DeviceState *dev, + + cpu_slot = virt_find_cpu_slot(ms, ARM_CPU(cs)->core_id); + +- /* TODO: update the acpi cpu hotplug state for cpu hot-unplug */ ++ /* update the acpi cpu hotplug state for cpu hot-unplug */ ++ hhc = HOTPLUG_HANDLER_GET_CLASS(vms->acpi_dev); ++ hhc->unplug(HOTPLUG_HANDLER(vms->acpi_dev), dev, &local_err); ++ if (local_err) ++ goto fail; + + unwire_gic_cpu_irqs(vms, cs); + virt_update_gic(vms, cs); +@@ -2865,6 +2886,8 @@ static void virt_cpu_unplug(HotplugHandler *hotplug_dev, DeviceState *dev, + cpu_slot->cpu = NULL; + cs->disabled = true; + return; ++fail: ++ error_propagate(errp, local_err); + } + + static void virt_machine_device_pre_plug_cb(HotplugHandler *hotplug_dev, +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0021-arm-cpuhp-Changes-required-for-reset-and-to-support-.patch b/tools/packaging/qemu/patches/6.1.x/0021-arm-cpuhp-Changes-required-for-reset-and-to-support-.patch new file mode 100644 index 000000000..9a7264f1d --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0021-arm-cpuhp-Changes-required-for-reset-and-to-support-.patch @@ -0,0 +1,109 @@ +From e9301ff546d27cf5f6acc677d19e7c89c693d6ea Mon Sep 17 00:00:00 2001 +From: Salil Mehta +Date: Sat, 27 Nov 2021 17:14:45 +0800 +Subject: [PATCH 21/28] arm/cpuhp: Changes required for reset and to support + next boot + +Updates the firmware config with the next boot cpus information and also +registers the reset callback to be called when guest reboots to reset the cpu. + +Co-developed-by: Keqian Zhu +Signed-off-by: Salil Mehta +Signed-off-by: Huang Shijie +--- + hw/arm/boot.c | 2 +- + hw/arm/virt.c | 17 +++++++++++++---- + include/hw/arm/boot.h | 2 ++ + include/hw/arm/virt.h | 1 + + 4 files changed, 17 insertions(+), 5 deletions(-) + +diff --git a/hw/arm/boot.c b/hw/arm/boot.c +index 57efb61ee4..e966d8e032 100644 +--- a/hw/arm/boot.c ++++ b/hw/arm/boot.c +@@ -675,7 +675,7 @@ fail: + return -1; + } + +-static void do_cpu_reset(void *opaque) ++void do_cpu_reset(void *opaque) + { + ARMCPU *cpu = opaque; + CPUState *cs = CPU(cpu); +diff --git a/hw/arm/virt.c b/hw/arm/virt.c +index c3073d6755..ab35bd51af 100644 +--- a/hw/arm/virt.c ++++ b/hw/arm/virt.c +@@ -48,6 +48,7 @@ + #include "sysemu/numa.h" + #include "sysemu/runstate.h" + #include "sysemu/tpm.h" ++#include "sysemu/reset.h" + #include "sysemu/kvm.h" + #include "hw/loader.h" + #include "qapi/error.h" +@@ -1236,7 +1237,7 @@ static FWCfgState *create_fw_cfg(const VirtMachineState *vms, AddressSpace *as) + char *nodename; + + fw_cfg = fw_cfg_init_mem_wide(base + 8, base, 8, base + 16, as); +- fw_cfg_add_i16(fw_cfg, FW_CFG_NB_CPUS, (uint16_t)ms->smp.cpus); ++ fw_cfg_add_i16(fw_cfg, FW_CFG_NB_CPUS, vms->boot_cpus); + + nodename = g_strdup_printf("/fw-cfg@%" PRIx64, base); + qemu_fdt_add_subnode(ms->fdt, nodename); +@@ -2808,7 +2809,12 @@ static void virt_cpu_plug(HotplugHandler *hotplug_dev, DeviceState *dev, + hhc->plug(HOTPLUG_HANDLER(vms->acpi_dev), dev, &local_err); + if (local_err) + goto fail; +- /* TODO: register this cpu for reset & update F/W info for the next boot */ ++ /* register this cpu for reset & update F/W info for the next boot */ ++ qemu_register_reset(do_cpu_reset, ARM_CPU(cs)); ++ vms->boot_cpus++; ++ if (vms->fw_cfg) { ++ fw_cfg_modify_i16(vms->fw_cfg, FW_CFG_NB_CPUS, vms->boot_cpus); ++ } + } + cs->disabled = false; + fail: +@@ -2878,8 +2884,11 @@ static void virt_cpu_unplug(HotplugHandler *hotplug_dev, DeviceState *dev, + unwire_gic_cpu_irqs(vms, cs); + virt_update_gic(vms, cs); + +- /* TODO: unregister this cpu for reset & update F/W info for the next boot */ +- ++ qemu_unregister_reset(do_cpu_reset, ARM_CPU(cs)); ++ vms->boot_cpus--; ++ if (vms->fw_cfg) { ++ fw_cfg_modify_i16(vms->fw_cfg, FW_CFG_NB_CPUS, vms->boot_cpus); ++ } + qemu_opts_del(dev->opts); + dev->opts = NULL; + +diff --git a/include/hw/arm/boot.h b/include/hw/arm/boot.h +index ce2b48b88b..aa156967af 100644 +--- a/include/hw/arm/boot.h ++++ b/include/hw/arm/boot.h +@@ -163,6 +163,8 @@ AddressSpace *arm_boot_address_space(ARMCPU *cpu, + int arm_load_dtb(hwaddr addr, const struct arm_boot_info *binfo, + hwaddr addr_limit, AddressSpace *as, MachineState *ms); + ++void do_cpu_reset(void *opaque); ++ + /* Write a secure board setup routine with a dummy handler for SMCs */ + void arm_write_secure_board_setup_dummy_smc(ARMCPU *cpu, + const struct arm_boot_info *info, +diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h +index b91249201a..f18d797245 100644 +--- a/include/hw/arm/virt.h ++++ b/include/hw/arm/virt.h +@@ -160,6 +160,7 @@ struct VirtMachineState { + const int *irqmap; + int fdt_size; + int max_cpus; ++ uint16_t boot_cpus; + uint32_t clock_phandle; + uint32_t gic_phandle; + uint32_t msi_phandle; +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0022-arm-cpuhp-Add-support-of-unrealize-ARMCPU-during-vcp.patch b/tools/packaging/qemu/patches/6.1.x/0022-arm-cpuhp-Add-support-of-unrealize-ARMCPU-during-vcp.patch new file mode 100644 index 000000000..f8f287af3 --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0022-arm-cpuhp-Add-support-of-unrealize-ARMCPU-during-vcp.patch @@ -0,0 +1,415 @@ +From 71102726bd7434d8fd635be0f1c067fdb795efe3 Mon Sep 17 00:00:00 2001 +From: Salil Mehta +Date: Sat, 27 Nov 2021 17:37:22 +0800 +Subject: [PATCH 22/28] arm/cpuhp: Add support of *unrealize* ARMCPU during + vcpu hot-unplug + +During vcpu hot-unplug ARM cpu unrealization shall happen which should do away +with all the vcpu thread creations, allocations, registrations which happened +as part of the realization process of the ARM cpu. This change introduces the +ARM cpu unrealize function taking care of exactly that. + +Note, initialized vcpus are not destroyed at host KVM but are rather parked in +the QEMU/KVM layer. These are later reused once vcpu is hotplugged again. + +Co-developed-by: Keqian Zhu +Signed-off-by: Salil Mehta +Signed-off-by: Huang Shijie +--- + gdbstub.c | 13 +++++++ + include/exec/exec-all.h | 8 ++++ + include/exec/gdbstub.h | 1 + + include/hw/core/cpu.h | 2 + + softmmu/physmem.c | 24 ++++++++++++ + target/arm/cpu-qom.h | 3 ++ + target/arm/cpu.c | 86 +++++++++++++++++++++++++++++++++++++++++ + target/arm/cpu.h | 14 +++++++ + target/arm/helper.c | 31 +++++++++++++++ + target/arm/internals.h | 1 + + target/arm/kvm64.c | 6 ++- + 11 files changed, 188 insertions(+), 1 deletion(-) + +diff --git a/gdbstub.c b/gdbstub.c +index 52bde5bdc9..d5fb3cb9ae 100644 +--- a/gdbstub.c ++++ b/gdbstub.c +@@ -1005,6 +1005,19 @@ void gdb_register_coprocessor(CPUState *cpu, + } + } + ++void gdb_unregister_coprocessor_all(CPUState *cpu) ++{ ++ GDBRegisterState *s, *p; ++ ++ p = cpu->gdb_regs; ++ while (p) { ++ s = p; ++ p = p->next; ++ g_free(s); ++ } ++ cpu->gdb_regs = NULL; ++} ++ + #ifndef CONFIG_USER_ONLY + /* Translate GDB watchpoint type to a flags value for cpu_watchpoint_* */ + static inline int xlat_gdb_type(CPUState *cpu, int gdbtype) +diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h +index 5d1b6d80fb..1fbe9aee0c 100644 +--- a/include/exec/exec-all.h ++++ b/include/exec/exec-all.h +@@ -106,6 +106,14 @@ void cpu_reloading_memory_map(void); + */ + void cpu_address_space_init(CPUState *cpu, int asidx, + const char *prefix, MemoryRegion *mr); ++/** ++ * cpu_address_space_destroy: ++ * @cpu: CPU for which address space needs to be destroyed ++ * @asidx: integer index of this address space ++ * ++ * Note that with KVM only one address space is supported. ++ */ ++void cpu_address_space_destroy(CPUState *cpu, int asidx); + #endif + + #if !defined(CONFIG_USER_ONLY) && defined(CONFIG_TCG) +diff --git a/include/exec/gdbstub.h b/include/exec/gdbstub.h +index a024a0350d..1a2100d014 100644 +--- a/include/exec/gdbstub.h ++++ b/include/exec/gdbstub.h +@@ -84,6 +84,7 @@ void gdb_register_coprocessor(CPUState *cpu, + gdb_get_reg_cb get_reg, gdb_set_reg_cb set_reg, + int num_regs, const char *xml, int g_pos); + ++void gdb_unregister_coprocessor_all(CPUState *cpu); + /* + * The GDB remote protocol transfers values in target byte order. As + * the gdbstub may be batching up several register values we always +diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h +index 5a2571af3e..e50c13f889 100644 +--- a/include/hw/core/cpu.h ++++ b/include/hw/core/cpu.h +@@ -344,6 +344,7 @@ struct CPUState { + QSIMPLEQ_HEAD(, qemu_work_item) work_list; + + CPUAddressSpace *cpu_ases; ++ int cpu_ases_ref_count; + int num_ases; + AddressSpace *as; + MemoryRegion *memory; +@@ -376,6 +377,7 @@ struct CPUState { + int kvm_fd; + struct KVMState *kvm_state; + struct kvm_run *kvm_run; ++ VMChangeStateEntry *vmcse; + struct kvm_dirty_gfn *kvm_dirty_gfns; + uint32_t kvm_fetch_index; + +diff --git a/softmmu/physmem.c b/softmmu/physmem.c +index 2e18947598..75a50fa1b7 100644 +--- a/softmmu/physmem.c ++++ b/softmmu/physmem.c +@@ -748,6 +748,7 @@ void cpu_address_space_init(CPUState *cpu, int asidx, + + if (!cpu->cpu_ases) { + cpu->cpu_ases = g_new0(CPUAddressSpace, cpu->num_ases); ++ cpu->cpu_ases_ref_count = cpu->num_ases; + } + + newas = &cpu->cpu_ases[asidx]; +@@ -760,6 +761,29 @@ void cpu_address_space_init(CPUState *cpu, int asidx, + } + } + ++void cpu_address_space_destroy(CPUState *cpu, int asidx) ++{ ++ CPUAddressSpace *cpuas; ++ ++ assert(asidx < cpu->num_ases); ++ assert(asidx == 0 || !kvm_enabled()); ++ assert(cpu->cpu_ases); ++ ++ cpuas = &cpu->cpu_ases[asidx]; ++ if (tcg_enabled()) { ++ memory_listener_unregister(&cpuas->tcg_as_listener); ++ } ++ ++ address_space_destroy(cpuas->as); ++ ++ if(cpu->cpu_ases_ref_count == 1) { ++ g_free(cpu->cpu_ases); ++ cpu->cpu_ases = NULL; ++ } ++ ++ cpu->cpu_ases_ref_count--; ++} ++ + AddressSpace *cpu_get_address_space(CPUState *cpu, int asidx) + { + /* Return the AddressSpace corresponding to the specified index */ +diff --git a/target/arm/cpu-qom.h b/target/arm/cpu-qom.h +index a22bd506d0..ef83507121 100644 +--- a/target/arm/cpu-qom.h ++++ b/target/arm/cpu-qom.h +@@ -55,6 +55,7 @@ struct ARMCPUClass { + + const ARMCPUInfo *info; + DeviceRealize parent_realize; ++ DeviceUnrealize parent_unrealize; + DeviceReset parent_reset; + }; + +@@ -71,7 +72,9 @@ struct AArch64CPUClass { + }; + + void register_cp_regs_for_features(ARMCPU *cpu); ++void unregister_cp_regs_for_features(ARMCPU *cpu); + void init_cpreg_list(ARMCPU *cpu); ++void destroy_cpreg_list(ARMCPU *cpu); + + /* Callback functions for the generic timer's timers. */ + void arm_gt_ptimer_cb(void *opaque); +diff --git a/target/arm/cpu.c b/target/arm/cpu.c +index ff827d56b7..455ad5aa9e 100644 +--- a/target/arm/cpu.c ++++ b/target/arm/cpu.c +@@ -97,6 +97,16 @@ void arm_register_pre_el_change_hook(ARMCPU *cpu, ARMELChangeHookFn *hook, + QLIST_INSERT_HEAD(&cpu->pre_el_change_hooks, entry, node); + } + ++void arm_unregister_pre_el_change_hooks(ARMCPU *cpu) ++{ ++ ARMELChangeHook *entry, *next; ++ ++ QLIST_FOREACH_SAFE(entry, &cpu->pre_el_change_hooks, node, next) { ++ QLIST_REMOVE(entry, node); ++ g_free(entry); ++ } ++} ++ + void arm_register_el_change_hook(ARMCPU *cpu, ARMELChangeHookFn *hook, + void *opaque) + { +@@ -108,6 +118,16 @@ void arm_register_el_change_hook(ARMCPU *cpu, ARMELChangeHookFn *hook, + QLIST_INSERT_HEAD(&cpu->el_change_hooks, entry, node); + } + ++void arm_unregister_el_change_hooks(ARMCPU *cpu) ++{ ++ ARMELChangeHook *entry, *next; ++ ++ QLIST_FOREACH_SAFE(entry, &cpu->el_change_hooks, node, next) { ++ QLIST_REMOVE(entry, node); ++ g_free(entry); ++ } ++} ++ + static void cp_reg_reset(gpointer key, gpointer value, gpointer opaque) + { + /* Reset a single ARMCPRegInfo register */ +@@ -139,6 +159,70 @@ static void cp_reg_reset(gpointer key, gpointer value, gpointer opaque) + } + } + ++static void arm_cpu_unrealizefn(DeviceState *dev) ++{ ++ ARMCPUClass *acc = ARM_CPU_GET_CLASS(dev); ++ ARMCPU *cpu = ARM_CPU(dev); ++ CPUARMState *env = &cpu->env; ++ CPUState *cs = CPU(dev); ++ ++ /* rock 'n' un-roll, whatever happened in the arm_cpu_realizefn cleanly */ ++ if (cpu->has_el3 || arm_feature(env, ARM_FEATURE_M_SECURITY)) { ++ cpu_address_space_destroy(cs, ARMASIdx_S); ++ } ++ cpu_address_space_destroy(cs, ARMASIdx_NS); ++ ++ destroy_cpreg_list(cpu); ++ arm_cpu_unregister_gdb_regs(cpu); ++ unregister_cp_regs_for_features(cpu); ++ ++ if (cpu->sau_sregion && arm_feature(env, ARM_FEATURE_M_SECURITY)) { ++ g_free(env->sau.rbar); ++ g_free(env->sau.rlar); ++ } ++ ++ if (arm_feature(env, ARM_FEATURE_PMSA) && ++ arm_feature(env, ARM_FEATURE_V7) && ++ cpu->pmsav7_dregion) { ++ if (arm_feature(env, ARM_FEATURE_V8)) { ++ g_free(env->pmsav8.rbar[M_REG_NS]); ++ g_free(env->pmsav8.rlar[M_REG_NS]); ++ if (arm_feature(env, ARM_FEATURE_M_SECURITY)) { ++ g_free(env->pmsav8.rbar[M_REG_S]); ++ g_free(env->pmsav8.rlar[M_REG_S]); ++ } ++ } else { ++ g_free(env->pmsav7.drbar); ++ g_free(env->pmsav7.drsr); ++ g_free(env->pmsav7.dracr); ++ } ++ } ++ ++ if (arm_feature(env, ARM_FEATURE_PMU)) { ++ if (!kvm_enabled()) { ++ arm_unregister_pre_el_change_hooks(cpu); ++ arm_unregister_el_change_hooks(cpu); ++ } ++ ++#ifndef CONFIG_USER_ONLY ++ if (cpu->pmu_timer) { ++ timer_del(cpu->pmu_timer); ++ } ++#endif ++ } ++ ++ cpu_remove_sync(CPU(dev)); ++ acc->parent_unrealize(dev); ++ ++#ifndef CONFIG_USER_ONLY ++ timer_del(cpu->gt_timer[GTIMER_PHYS]); ++ timer_del(cpu->gt_timer[GTIMER_VIRT]); ++ timer_del(cpu->gt_timer[GTIMER_HYP]); ++ timer_del(cpu->gt_timer[GTIMER_SEC]); ++ timer_del(cpu->gt_timer[GTIMER_HYPVIRT]); ++#endif ++} ++ + static void cp_reg_check_reset(gpointer key, gpointer value, gpointer opaque) + { + /* Purely an assertion check: we've already done reset once, +@@ -2021,6 +2105,8 @@ static void arm_cpu_class_init(ObjectClass *oc, void *data) + + device_class_set_props(dc, arm_cpu_properties); + device_class_set_parent_reset(dc, arm_cpu_reset, &acc->parent_reset); ++ device_class_set_parent_unrealize(dc, arm_cpu_unrealizefn, ++ &acc->parent_unrealize); + + cc->class_by_name = arm_cpu_class_by_name; + cc->has_work = arm_cpu_has_work; +diff --git a/target/arm/cpu.h b/target/arm/cpu.h +index ba11468ab5..f7f3308c42 100644 +--- a/target/arm/cpu.h ++++ b/target/arm/cpu.h +@@ -1144,6 +1144,13 @@ void arm_pmu_timer_cb(void *opaque); + * Functions to register as EL change hooks for PMU mode filtering + */ + void pmu_pre_el_change(ARMCPU *cpu, void *ignored); ++ ++/** ++ * arm_unregister_pre_el_change_hook: ++ * unregister all pre EL change hook functions. Generally called during ++ * unrealize'ing leg ++ */ ++void arm_unregister_pre_el_change_hooks(ARMCPU *cpu); + void pmu_post_el_change(ARMCPU *cpu, void *ignored); + + /* +@@ -3616,6 +3623,13 @@ void arm_register_pre_el_change_hook(ARMCPU *cpu, ARMELChangeHookFn *hook, + void arm_register_el_change_hook(ARMCPU *cpu, ARMELChangeHookFn *hook, void + *opaque); + ++/** ++ * arm_unregister_el_change_hook: ++ * unregister all EL change hook functions. Generally called during ++ * unrealize'ing leg ++ */ ++void arm_unregister_el_change_hooks(ARMCPU *cpu); ++ + /** + * arm_rebuild_hflags: + * Rebuild the cached TBFLAGS for arbitrary changed processor state. +diff --git a/target/arm/helper.c b/target/arm/helper.c +index 155d8bf239..3c61b16b56 100644 +--- a/target/arm/helper.c ++++ b/target/arm/helper.c +@@ -507,6 +507,19 @@ void init_cpreg_list(ARMCPU *cpu) + g_list_free(keys); + } + ++void destroy_cpreg_list(ARMCPU *cpu) ++{ ++ assert(cpu->cpreg_indexes); ++ assert(cpu->cpreg_values); ++ assert(cpu->cpreg_vmstate_indexes); ++ assert(cpu->cpreg_vmstate_values); ++ ++ g_free(cpu->cpreg_indexes); ++ g_free(cpu->cpreg_values); ++ g_free(cpu->cpreg_vmstate_indexes); ++ g_free(cpu->cpreg_vmstate_values); ++} ++ + /* + * Some registers are not accessible from AArch32 EL3 if SCR.NS == 0. + */ +@@ -8671,6 +8684,18 @@ void register_cp_regs_for_features(ARMCPU *cpu) + #endif + } + ++void unregister_cp_regs_for_features(ARMCPU *cpu) ++{ ++ CPUARMState *env = &cpu->env; ++ if (arm_feature(env, ARM_FEATURE_M)) { ++ /* M profile has no coprocessor registers */ ++ return; ++ } ++ ++ /* empty it all. unregister all the coprocessor registers */ ++ g_hash_table_remove_all(cpu->cp_regs); ++} ++ + void arm_cpu_register_gdb_regs_for_features(ARMCPU *cpu) + { + CPUState *cs = CPU(cpu); +@@ -8709,6 +8734,12 @@ void arm_cpu_register_gdb_regs_for_features(ARMCPU *cpu) + + } + ++void arm_cpu_unregister_gdb_regs(ARMCPU *cpu) ++{ ++ CPUState *cs = CPU(cpu); ++ gdb_unregister_coprocessor_all(cs); ++} ++ + /* Sort alphabetically by type name, except for "any". */ + static gint arm_cpu_list_compare(gconstpointer a, gconstpointer b) + { +diff --git a/target/arm/internals.h b/target/arm/internals.h +index cd2ea8a388..fbdc3f2eab 100644 +--- a/target/arm/internals.h ++++ b/target/arm/internals.h +@@ -173,6 +173,7 @@ static inline int r14_bank_number(int mode) + void arm_cpu_register_gdb_regs_for_features(ARMCPU *cpu); + void arm_translate_init(void); + ++void arm_cpu_unregister_gdb_regs(ARMCPU *cpu); + #ifdef CONFIG_TCG + void arm_cpu_synchronize_from_tb(CPUState *cs, const TranslationBlock *tb); + #endif /* CONFIG_TCG */ +diff --git a/target/arm/kvm64.c b/target/arm/kvm64.c +index 59982d470d..19d3eac253 100644 +--- a/target/arm/kvm64.c ++++ b/target/arm/kvm64.c +@@ -839,7 +839,9 @@ int kvm_arch_init_vcpu(CPUState *cs) + return -EINVAL; + } + +- qemu_add_vm_change_state_handler(kvm_arm_vm_state_change, cs); ++ if (qemu_present_cpu(cs)) ++ cs->vmcse = qemu_add_vm_change_state_handler(kvm_arm_vm_state_change, ++ cs); + + /* Determine init features for this CPU */ + memset(cpu->kvm_init_features, 0, sizeof(cpu->kvm_init_features)); +@@ -904,6 +906,8 @@ int kvm_arch_init_vcpu(CPUState *cs) + + int kvm_arch_destroy_vcpu(CPUState *cs) + { ++ if (qemu_present_cpu(cs)) ++ qemu_del_vm_change_state_handler(cs->vmcse); + return 0; + } + +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0023-armcpuhp-initial-pvtime-and-pmu-for-all-possible-cpu.patch b/tools/packaging/qemu/patches/6.1.x/0023-armcpuhp-initial-pvtime-and-pmu-for-all-possible-cpu.patch new file mode 100644 index 000000000..80c29cd30 --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0023-armcpuhp-initial-pvtime-and-pmu-for-all-possible-cpu.patch @@ -0,0 +1,38 @@ +From 5864b2046f2481772bb1f28aa4e4bbc5258ad1f1 Mon Sep 17 00:00:00 2001 +From: Huang Shijie +Date: Wed, 8 Dec 2021 13:35:28 +0800 +Subject: [PATCH 23/28] armcpuhp: initial pvtime and pmu for all possible cpu + +initial pvtime and pmu for all possible cpus when machvirt init. + +Signed-off-by: Huang Shijie +Signed-off-by: Huang Shijie +--- + hw/arm/virt.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/hw/arm/virt.c b/hw/arm/virt.c +index ab35bd51af..3f4763367a 100644 +--- a/hw/arm/virt.c ++++ b/hw/arm/virt.c +@@ -1933,6 +1933,7 @@ static void virt_cpu_set_properties(Object *cpuobj, const CPUArchId *cpu_slot) + */ + static void virt_cpu_post_init(VirtMachineState *vms, MemoryRegion *sysmem) + { ++ CPUArchIdList *possible_cpus = vms->parent.possible_cpus; + int max_cpus = MACHINE(vms)->smp.max_cpus; + bool aarch64, pmu, steal_time; + CPUState *cpu; +@@ -1965,7 +1966,8 @@ static void virt_cpu_post_init(VirtMachineState *vms, MemoryRegion *sysmem) + memory_region_add_subregion(sysmem, pvtime_reg_base, pvtime); + } + +- CPU_FOREACH(cpu) { ++ for (int n = 0; n < possible_cpus->len; n++) { ++ cpu = qemu_get_possible_cpu(n); + if (pmu) { + assert(arm_feature(&ARM_CPU(cpu)->env, ARM_FEATURE_PMU)); + if (kvm_irqchip_in_kernel()) { +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0024-armcpuhp-add-cpu-hotunplug-frame-work-in-acpi-device.patch b/tools/packaging/qemu/patches/6.1.x/0024-armcpuhp-add-cpu-hotunplug-frame-work-in-acpi-device.patch new file mode 100644 index 000000000..0768d03af --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0024-armcpuhp-add-cpu-hotunplug-frame-work-in-acpi-device.patch @@ -0,0 +1,47 @@ +From b165fbe697c6f029973fffea151e384247639829 Mon Sep 17 00:00:00 2001 +From: Huang Shijie +Date: Wed, 8 Dec 2021 16:15:33 +0800 +Subject: [PATCH 24/28] armcpuhp: add cpu hotunplug frame work in acpi device + handle + +Signed-off-by: Huang Shijie +Signed-off-by: Huang Shijie +--- + hw/acpi/generic_event_device.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/hw/acpi/generic_event_device.c b/hw/acpi/generic_event_device.c +index 815f4a91ce..22a3fb348b 100644 +--- a/hw/acpi/generic_event_device.c ++++ b/hw/acpi/generic_event_device.c +@@ -12,7 +12,9 @@ + #include "qemu/osdep.h" + #include "qapi/error.h" + #include "hw/acpi/acpi.h" ++#include "hw/acpi/cpu.h" + #include "hw/acpi/generic_event_device.h" ++#include "hw/arm/virt.h" + #include "hw/irq.h" + #include "hw/mem/pc-dimm.h" + #include "hw/mem/nvdimm.h" +@@ -288,6 +290,8 @@ static void acpi_ged_unplug_request_cb(HotplugHandler *hotplug_dev, + if ((object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM) && + !(object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM)))) { + acpi_memory_unplug_request_cb(hotplug_dev, &s->memhp_state, dev, errp); ++ } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { ++ acpi_cpu_unplug_request_cb(hotplug_dev, &s->cpuhp_state, dev, errp); + } else { + error_setg(errp, "acpi: device unplug request for unsupported device" + " type: %s", object_get_typename(OBJECT(dev))); +@@ -301,6 +305,8 @@ static void acpi_ged_unplug_cb(HotplugHandler *hotplug_dev, + + if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { + acpi_memory_unplug_cb(&s->memhp_state, dev, errp); ++ } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { ++ acpi_cpu_unplug_cb(&s->cpuhp_state, dev, errp); + } else { + error_setg(errp, "acpi: device unplug for unsupported device" + " type: %s", object_get_typename(OBJECT(dev))); +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0025-cleanup-code-of-arm-cpu-hotplug-support.patch b/tools/packaging/qemu/patches/6.1.x/0025-cleanup-code-of-arm-cpu-hotplug-support.patch new file mode 100644 index 000000000..6f0daf780 --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0025-cleanup-code-of-arm-cpu-hotplug-support.patch @@ -0,0 +1,180 @@ +From ee68b08a7194ea9fefdf00ee57fa9edcb56b4359 Mon Sep 17 00:00:00 2001 +From: Huang Shijie +Date: Wed, 8 Dec 2021 17:08:07 +0800 +Subject: [PATCH 25/28] cleanup code of arm cpu hotplug support + +Signed-off-by: Huang Shijie +Signed-off-by: Huang Shijie +--- + hw/arm/virt.c | 136 +------------------------------------------------- + 1 file changed, 1 insertion(+), 135 deletions(-) + +diff --git a/hw/arm/virt.c b/hw/arm/virt.c +index 3f4763367a..5c04abb352 100644 +--- a/hw/arm/virt.c ++++ b/hw/arm/virt.c +@@ -1585,38 +1585,6 @@ static void virt_remove_disabled_cpus(VirtMachineState *vms) + } + } + +-/*static bool virt_pmu_init(VirtMachineState *vms) +-{ +- CPUArchIdList *possible_cpus = vms->parent.possible_cpus; +- ARMCPU *armcpu; +- int n; */ +- +- /* +- * As of now KVM ensures that within the host all the vcpus have same +- * features configured. This cannot be changed later and cannot be diferent +- * for new vcpus being plugged in. Also, -cpu option/virt machine cpu-type +- * ensures all the vcpus are identical. +- */ +-/* for (n = 0; n < possible_cpus->len; n++) { +- CPUState *cpu = qemu_get_possible_cpu(n); +- armcpu = ARM_CPU(cpu); +- +- if (!arm_feature(&armcpu->env, ARM_FEATURE_PMU)) { +- warn_report("Not all vcpus might have PMU initialized"); +- return false; +- } +- +- if (kvm_enabled()) { +- if (kvm_irqchip_in_kernel()) { +- kvm_arm_pmu_set_irq(cpu, PPI(VIRTUAL_PMU_IRQ)); +- } +- kvm_arm_pmu_init(cpu); +- } +- } +- +- return true; +-}*/ +- + static void *machvirt_dtb(const struct arm_boot_info *binfo, int *fdt_size) + { + const VirtMachineState *board = container_of(binfo, VirtMachineState, +@@ -2120,110 +2088,11 @@ static void machvirt_init(MachineState *machine) + Object *cpuobj; + CPUState *cs; + +-/* if (n >= smp_cpus) { +- break; +- } +-*/ + cpuobj = object_new(possible_cpus->cpus[n].type); + cs = CPU(cpuobj); +-/* object_property_set_int(cpuobj, "mp-affinity", +- possible_cpus->cpus[n].arch_id, NULL); +- +- cs = CPU(cpuobj); +- cs->cpu_index = n; +- +- numa_cpu_pre_plug(&possible_cpus->cpus[cs->cpu_index], DEVICE(cpuobj), +- &error_fatal); +-*/ + aarch64 &= object_property_get_bool(cpuobj, "aarch64", NULL); + object_property_set_int(cpuobj, "core-id", n, NULL); + +-/* if (!vms->secure) { +- object_property_set_bool(cpuobj, "has_el3", false, NULL); +- } +- +- if (!vms->virt && object_property_find(cpuobj, "has_el2")) { +- object_property_set_bool(cpuobj, "has_el2", false, NULL); +- } +- +- if (vms->psci_conduit != QEMU_PSCI_CONDUIT_DISABLED) { +- object_property_set_int(cpuobj, "psci-conduit", vms->psci_conduit, +- NULL); +-*/ +- /* Secondary CPUs start in PSCI powered-down state */ +-/* if (n > 0) { +- object_property_set_bool(cpuobj, "start-powered-off", true, +- NULL); +- } +- } +- +- if (vmc->kvm_no_adjvtime && +- object_property_find(cpuobj, "kvm-no-adjvtime")) { +- object_property_set_bool(cpuobj, "kvm-no-adjvtime", true, NULL); +- } +- +- if (vmc->no_kvm_steal_time && +- object_property_find(cpuobj, "kvm-steal-time")) { +- object_property_set_bool(cpuobj, "kvm-steal-time", false, NULL); +- } +- +- if (vmc->no_pmu && object_property_find(cpuobj, "pmu")) { +- object_property_set_bool(cpuobj, "pmu", false, NULL); +- } +- +- if (object_property_find(cpuobj, "reset-cbar")) { +- object_property_set_int(cpuobj, "reset-cbar", +- vms->memmap[VIRT_CPUPERIPHS].base, +- &error_abort); +- } +- +- object_property_set_link(cpuobj, "memory", OBJECT(sysmem), +- &error_abort); +- if (vms->secure) { +- object_property_set_link(cpuobj, "secure-memory", +- OBJECT(secure_sysmem), &error_abort); +- } +-*/ +-// if (vms->mte) { +- /* Create the memory region only once, but link to all cpus. */ +-// if (!tag_sysmem) { +- /* +- * The property exists only if MemTag is supported. +- * If it is, we must allocate the ram to back that up. +- */ +-/* if (!object_property_find(cpuobj, "tag-memory")) { +- error_report("MTE requested, but not supported " +- "by the guest CPU"); +- exit(1); +- } +- +- tag_sysmem = g_new(MemoryRegion, 1); +- memory_region_init(tag_sysmem, OBJECT(machine), +- "tag-memory", UINT64_MAX / 32); +- +- if (vms->secure) { +- secure_tag_sysmem = g_new(MemoryRegion, 1); +- memory_region_init(secure_tag_sysmem, OBJECT(machine), +- "secure-tag-memory", UINT64_MAX / 32); +-*/ +- /* As with ram, secure-tag takes precedence over tag. */ +-/* memory_region_add_subregion_overlap(secure_tag_sysmem, 0, +- tag_sysmem, -1); +- } +- } +- +- object_property_set_link(cpuobj, "tag-memory", OBJECT(tag_sysmem), +- &error_abort); +- if (vms->secure) { +- object_property_set_link(cpuobj, "secure-tag-memory", +- OBJECT(secure_tag_sysmem), +- &error_abort); +- } +- } +- +- qdev_realize(DEVICE(cpuobj), NULL, &error_fatal); +- object_unref(cpuobj); +-*/ + if (n < smp_cpus) { + char *core_id = g_strdup_printf("core%d", n); + qdev_set_id(DEVICE(cpuobj),core_id); +@@ -2283,10 +2152,7 @@ static void machvirt_init(MachineState *machine) + + virt_cpu_post_init(vms, sysmem); + +-// if (!vmc->no_pmu && virt_pmu_init(vms)) { +-// vms->pmu = true; +- fdt_add_pmu_nodes(vms); +-// } ++ fdt_add_pmu_nodes(vms); + create_uart(vms, VIRT_UART, sysmem, serial_hd(0)); + + if (vms->secure) { +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0026-armcpuhp-set-cpu-disabled-to-true-when-initialize-cp.patch b/tools/packaging/qemu/patches/6.1.x/0026-armcpuhp-set-cpu-disabled-to-true-when-initialize-cp.patch new file mode 100644 index 000000000..659f797fb --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0026-armcpuhp-set-cpu-disabled-to-true-when-initialize-cp.patch @@ -0,0 +1,65 @@ +From 0e3ad502669659822083fd9fde80220e5a9af0ed Mon Sep 17 00:00:00 2001 +From: Huang Shijie +Date: Fri, 10 Dec 2021 15:49:06 +0800 +Subject: [PATCH 26/28] armcpuhp: set cpu->disabled to true when initialize cpu + +The new qemu edition remove the instance init fn of arm cpu. revert is +back and set cpu->disabled to true in it. + +Signed-off-by: Huang Shijie +Signed-off-by: Huang Shijie +--- + target/arm/cpu64.c | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c +index 2134be0b67..249dc24849 100644 +--- a/target/arm/cpu64.c ++++ b/target/arm/cpu64.c +@@ -895,7 +895,6 @@ static void aarch64_cpu_class_init(ObjectClass *oc, void *data) + { + CPUClass *cc = CPU_CLASS(oc); + DeviceClass *dc = DEVICE_CLASS(oc); +- CPUState *cs = CPU(oc); + + dc->user_creatable = true; + cc->gdb_read_register = aarch64_cpu_gdb_read_register; +@@ -909,11 +908,6 @@ static void aarch64_cpu_class_init(ObjectClass *oc, void *data) + object_class_property_set_description(oc, "aarch64", + "Set on/off to enable/disable aarch64 " + "execution state "); +- /* +- * we start every ARM64 vcpu as disabled possible vcpu. It needs to be +- * enabled explicitly +- */ +- cs->disabled = true; + } + + static void aarch64_cpu_instance_init(Object *obj) +@@ -924,6 +918,15 @@ static void aarch64_cpu_instance_init(Object *obj) + arm_cpu_post_init(obj); + } + ++static void aarch64_cpu_initfn(Object *obj) ++{ ++ CPUState *cs = CPU(obj); ++ /* ++ * we start every ARM64 vcpu as disabled possible vcpu. It needs to be ++ * enabled explicitly ++ */ ++ cs->disabled = true; ++} + static void cpu_register_class_init(ObjectClass *oc, void *data) + { + ARMCPUClass *acc = ARM_CPU_CLASS(oc); +@@ -952,6 +955,7 @@ static const TypeInfo aarch64_cpu_type_info = { + .parent = TYPE_ARM_CPU, + .instance_size = sizeof(ARMCPU), + .instance_finalize = aarch64_cpu_finalizefn, ++ .instance_init = aarch64_cpu_initfn, + .abstract = true, + .class_size = sizeof(AArch64CPUClass), + .class_init = aarch64_cpu_class_init, +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0027-armcpuhp-clean-acpi-ged-call-back.patch b/tools/packaging/qemu/patches/6.1.x/0027-armcpuhp-clean-acpi-ged-call-back.patch new file mode 100644 index 000000000..943d48bff --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0027-armcpuhp-clean-acpi-ged-call-back.patch @@ -0,0 +1,63 @@ +From e9376db8e4113e2222543a9a4cdc68a40b78b69c Mon Sep 17 00:00:00 2001 +From: Huang Shijie +Date: Fri, 10 Dec 2021 15:51:51 +0800 +Subject: [PATCH 27/28] armcpuhp: clean acpi ged call back + +The new qemu edition has add acpi ged call back and should clean the +related patch before. + +Signed-off-by: Huang Shijie +Signed-off-by: Huang Shijie +--- + hw/acpi/generic_event_device.c | 28 ---------------------------- + 1 file changed, 28 deletions(-) + +diff --git a/hw/acpi/generic_event_device.c b/hw/acpi/generic_event_device.c +index 22a3fb348b..928593ab2c 100644 +--- a/hw/acpi/generic_event_device.c ++++ b/hw/acpi/generic_event_device.c +@@ -249,32 +249,6 @@ static void acpi_ged_device_plug_cb(HotplugHandler *hotplug_dev, + } + } + +-static void acpi_ged_device_unplug_request_cb(HotplugHandler *hotplug_dev, +- DeviceState *dev, Error **errp) +-{ +- AcpiGedState *s = ACPI_GED(hotplug_dev); +- +- if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { +- acpi_cpu_unplug_request_cb(hotplug_dev, &s->cpuhp_state, dev, errp); +- } else { +- error_setg(errp, "virt: device unplug request for the unsupported device" +- " type: %s", object_get_typename(OBJECT(dev))); +- } +-} +- +-static void acpi_ged_device_unplug_cb(HotplugHandler *hotplug_dev, +- DeviceState *dev, Error **errp) +-{ +- AcpiGedState *s = ACPI_GED(hotplug_dev); +- +- if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { +- acpi_cpu_unplug_cb(&s->cpuhp_state, dev, errp); +- } else { +- error_setg(errp, "virt: device plug request for unsupported device" +- " type: %s", object_get_typename(OBJECT(dev))); +- } +-} +- + static void acpi_ged_ospm_status(AcpiDeviceIf *adev, ACPIOSTInfoList ***list) + { + AcpiGedState *s = ACPI_GED(adev); +@@ -461,8 +435,6 @@ static void acpi_ged_class_init(ObjectClass *class, void *data) + dc->vmsd = &vmstate_acpi_ged; + + hc->plug = acpi_ged_device_plug_cb; +- hc->unplug_request = acpi_ged_device_unplug_request_cb; +- hc->unplug = acpi_ged_device_unplug_cb; + hc->unplug_request = acpi_ged_unplug_request_cb; + hc->unplug = acpi_ged_unplug_cb; + +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/0028-armcpuhp-fix-bug-when-maxvcpu-number-larger-than-8.patch b/tools/packaging/qemu/patches/6.1.x/0028-armcpuhp-fix-bug-when-maxvcpu-number-larger-than-8.patch new file mode 100644 index 000000000..b5680ce52 --- /dev/null +++ b/tools/packaging/qemu/patches/6.1.x/0028-armcpuhp-fix-bug-when-maxvcpu-number-larger-than-8.patch @@ -0,0 +1,230 @@ +From e9ec5f6617c1811f244618e3a23c29ea2fb27c6a Mon Sep 17 00:00:00 2001 +From: Huang Shijie +Date: Thu, 16 Dec 2021 11:36:25 +0800 +Subject: [PATCH 28/28] armcpuhp: fix bug when maxvcpu number larger than 8 + +The gic version finalized after the use the gic version in +virt_cpu_mp_affinity. But VIRT_GICVERSION_HOST must be determined before +used it. So, must call finalize_gic_version before used gic_version. + +For now cpu socket and thread is not supported, thus we need set thread +and socket to 1 if they are larger than 1. + +Signed-off-by: Huang Shijie +Signed-off-by: Huang Shijie +--- + hw/arm/virt.c | 183 ++++++++++++++++++++++++++++---------------------- + 1 file changed, 102 insertions(+), 81 deletions(-) + +diff --git a/hw/arm/virt.c b/hw/arm/virt.c +index 5c04abb352..23dd2337f6 100644 +--- a/hw/arm/virt.c ++++ b/hw/arm/virt.c +@@ -1661,85 +1661,6 @@ void virt_machine_done(Notifier *notifier, void *data) + virt_remove_disabled_cpus(vms); + } + +-static uint64_t virt_cpu_mp_affinity(VirtMachineState *vms, int idx) +-{ +- uint8_t clustersz = ARM_DEFAULT_CPUS_PER_CLUSTER; +- VirtMachineClass *vmc = VIRT_MACHINE_GET_CLASS(vms); +- +- if (!vmc->disallow_affinity_adjustment) { +- /* Adjust MPIDR like 64-bit KVM hosts, which incorporate the +- * GIC's target-list limitations. 32-bit KVM hosts currently +- * always create clusters of 4 CPUs, but that is expected to +- * change when they gain support for gicv3. When KVM is enabled +- * it will override the changes we make here, therefore our +- * purposes are to make TCG consistent (with 64-bit KVM hosts) +- * and to improve SGI efficiency. +- */ +- if (vms->gic_version == VIRT_GIC_VERSION_3) { +- clustersz = GICV3_TARGETLIST_BITS; +- } else { +- clustersz = GIC_TARGETLIST_BITS; +- } +- } +- return arm_cpu_mp_affinity(idx, clustersz); +-} +- +-static void virt_set_memmap(VirtMachineState *vms) +-{ +- MachineState *ms = MACHINE(vms); +- hwaddr base, device_memory_base, device_memory_size; +- int i; +- +- vms->memmap = extended_memmap; +- +- for (i = 0; i < ARRAY_SIZE(base_memmap); i++) { +- vms->memmap[i] = base_memmap[i]; +- } +- +- if (ms->ram_slots > ACPI_MAX_RAM_SLOTS) { +- error_report("unsupported number of memory slots: %"PRIu64, +- ms->ram_slots); +- exit(EXIT_FAILURE); +- } +- +- /* +- * We compute the base of the high IO region depending on the +- * amount of initial and device memory. The device memory start/size +- * is aligned on 1GiB. We never put the high IO region below 256GiB +- * so that if maxram_size is < 255GiB we keep the legacy memory map. +- * The device region size assumes 1GiB page max alignment per slot. +- */ +- device_memory_base = +- ROUND_UP(vms->memmap[VIRT_MEM].base + ms->ram_size, GiB); +- device_memory_size = ms->maxram_size - ms->ram_size + ms->ram_slots * GiB; +- +- /* Base address of the high IO region */ +- base = device_memory_base + ROUND_UP(device_memory_size, GiB); +- if (base < device_memory_base) { +- error_report("maxmem/slots too huge"); +- exit(EXIT_FAILURE); +- } +- if (base < vms->memmap[VIRT_MEM].base + LEGACY_RAMLIMIT_BYTES) { +- base = vms->memmap[VIRT_MEM].base + LEGACY_RAMLIMIT_BYTES; +- } +- +- for (i = VIRT_LOWMEMMAP_LAST; i < ARRAY_SIZE(extended_memmap); i++) { +- hwaddr size = extended_memmap[i].size; +- +- base = ROUND_UP(base, size); +- vms->memmap[i].base = base; +- vms->memmap[i].size = size; +- base += size; +- } +- vms->highest_gpa = base - 1; +- if (device_memory_size > 0) { +- ms->device_memory = g_malloc0(sizeof(*ms->device_memory)); +- ms->device_memory->base = device_memory_base; +- memory_region_init(&ms->device_memory->mr, OBJECT(vms), +- "device-memory", device_memory_size); +- } +-} +- + /* + * finalize_gic_version - Determines the final gic_version + * according to the gic-version property +@@ -1839,6 +1760,88 @@ static void finalize_gic_version(VirtMachineState *vms) + } + } + ++static uint64_t virt_cpu_mp_affinity(VirtMachineState *vms, int idx) ++{ ++ uint8_t clustersz = ARM_DEFAULT_CPUS_PER_CLUSTER; ++ VirtMachineClass *vmc = VIRT_MACHINE_GET_CLASS(vms); ++ ++ if(vms->gic_version == VIRT_GIC_VERSION_HOST) ++ finalize_gic_version(vms); ++ ++ if (!vmc->disallow_affinity_adjustment) { ++ /* Adjust MPIDR like 64-bit KVM hosts, which incorporate the ++ * GIC's target-list limitations. 32-bit KVM hosts currently ++ * always create clusters of 4 CPUs, but that is expected to ++ * change when they gain support for gicv3. When KVM is enabled ++ * it will override the changes we make here, therefore our ++ * purposes are to make TCG consistent (with 64-bit KVM hosts) ++ * and to improve SGI efficiency. ++ */ ++ if (vms->gic_version == VIRT_GIC_VERSION_3) { ++ clustersz = GICV3_TARGETLIST_BITS; ++ } else { ++ clustersz = GIC_TARGETLIST_BITS; ++ } ++ } ++ return arm_cpu_mp_affinity(idx, clustersz); ++} ++ ++static void virt_set_memmap(VirtMachineState *vms) ++{ ++ MachineState *ms = MACHINE(vms); ++ hwaddr base, device_memory_base, device_memory_size; ++ int i; ++ ++ vms->memmap = extended_memmap; ++ ++ for (i = 0; i < ARRAY_SIZE(base_memmap); i++) { ++ vms->memmap[i] = base_memmap[i]; ++ } ++ ++ if (ms->ram_slots > ACPI_MAX_RAM_SLOTS) { ++ error_report("unsupported number of memory slots: %"PRIu64, ++ ms->ram_slots); ++ exit(EXIT_FAILURE); ++ } ++ ++ /* ++ * We compute the base of the high IO region depending on the ++ * amount of initial and device memory. The device memory start/size ++ * is aligned on 1GiB. We never put the high IO region below 256GiB ++ * so that if maxram_size is < 255GiB we keep the legacy memory map. ++ * The device region size assumes 1GiB page max alignment per slot. ++ */ ++ device_memory_base = ++ ROUND_UP(vms->memmap[VIRT_MEM].base + ms->ram_size, GiB); ++ device_memory_size = ms->maxram_size - ms->ram_size + ms->ram_slots * GiB; ++ ++ /* Base address of the high IO region */ ++ base = device_memory_base + ROUND_UP(device_memory_size, GiB); ++ if (base < device_memory_base) { ++ error_report("maxmem/slots too huge"); ++ exit(EXIT_FAILURE); ++ } ++ if (base < vms->memmap[VIRT_MEM].base + LEGACY_RAMLIMIT_BYTES) { ++ base = vms->memmap[VIRT_MEM].base + LEGACY_RAMLIMIT_BYTES; ++ } ++ ++ for (i = VIRT_LOWMEMMAP_LAST; i < ARRAY_SIZE(extended_memmap); i++) { ++ hwaddr size = extended_memmap[i].size; ++ ++ base = ROUND_UP(base, size); ++ vms->memmap[i].base = base; ++ vms->memmap[i].size = size; ++ base += size; ++ } ++ vms->highest_gpa = base - 1; ++ if (device_memory_size > 0) { ++ ms->device_memory = g_malloc0(sizeof(*ms->device_memory)); ++ ms->device_memory->base = device_memory_base; ++ memory_region_init(&ms->device_memory->mr, OBJECT(vms), ++ "device-memory", device_memory_size); ++ } ++} ++ + static void virt_cpu_set_properties(Object *cpuobj, const CPUArchId *cpu_slot) + { + MachineState *ms = MACHINE(qdev_get_machine()); +@@ -2928,9 +2931,27 @@ static void virt_smp_parse(MachineState *ms, SMPConfiguration *config, Error **e + unsigned threads = config->has_threads ? config->threads: 1; + unsigned int max_cpus; + ++ if(config->has_cores) { ++ config->cores = cpus; ++ cores = cpus; ++ } + if (sockets > 1 || threads > 1) { +- error_report("does not support more than one socket or thread"); +- exit(1); ++ printf("does not support more than one socket or thread, will put sockets and threads to cores"); ++ if(config->has_cores) { ++ if(config->has_sockets && config->has_threads) { ++ threads = 1; ++ sockets = 1; ++ config->sockets = 1; ++ config->threads = 1; ++ } else if (config->has_sockets) { ++ sockets = 1; ++ config->sockets = 1; ++ } else { ++ config->threads = 1; ++ threads = 1; ++ } ++ } else ++ exit(1); + } + + if (cores != cpus) { +-- +2.30.2 + diff --git a/tools/packaging/qemu/patches/6.1.x/no_patches.txt b/tools/packaging/qemu/patches/6.1.x/no_patches.txt deleted file mode 100644 index e69de29bb..000000000 From 8939b0f8e0b57631841f6412a2c568e381392a2a Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Fri, 14 Jan 2022 13:11:03 -0600 Subject: [PATCH 299/385] qemu: add support for SGX Define and implement memory-backend-epc object Signed-off-by: Julio Montes --- qemu/qemu.go | 16 ++++++++++++++++ qemu/qemu_test.go | 13 +++++++++++++ 2 files changed, 29 insertions(+) diff --git a/qemu/qemu.go b/qemu/qemu.go index f6db8481d..c43ff5795 100644 --- a/qemu/qemu.go +++ b/qemu/qemu.go @@ -234,6 +234,9 @@ const ( // MemoryBackendFile represents a guest memory mapped file. MemoryBackendFile ObjectType = "memory-backend-file" + // MemoryBackendEPC represents a guest memory backend EPC for SGX. + MemoryBackendEPC ObjectType = "memory-backend-epc" + // TDXGuest represents a TDX object TDXGuest ObjectType = "tdx-guest" @@ -283,6 +286,9 @@ type Object struct { // ReadOnly specifies whether `MemPath` is opened read-only or read/write (default) ReadOnly bool + + // Prealloc enables memory preallocation + Prealloc bool } // Valid returns true if the Object structure is valid and complete. @@ -290,6 +296,8 @@ func (object Object) Valid() bool { switch object.Type { case MemoryBackendFile: return object.ID != "" && object.MemPath != "" && object.Size != 0 + case MemoryBackendEPC: + return object.ID != "" && object.Size != 0 case TDXGuest: return object.ID != "" && object.File != "" && object.DeviceID != "" case SEVGuest: @@ -326,6 +334,14 @@ func (object Object) QemuParams(config *Config) []string { objectParams = append(objectParams, "readonly=on") deviceParams = append(deviceParams, "unarmed=on") } + case MemoryBackendEPC: + objectParams = append(objectParams, string(object.Type)) + objectParams = append(objectParams, fmt.Sprintf("id=%s", object.ID)) + objectParams = append(objectParams, fmt.Sprintf("size=%d", object.Size)) + if object.Prealloc { + objectParams = append(objectParams, "prealloc=on") + } + case TDXGuest: objectParams = append(objectParams, string(object.Type)) objectParams = append(objectParams, fmt.Sprintf("id=%s", object.ID)) diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index e42366154..2e37b0e16 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -144,6 +144,19 @@ func TestAppendDeviceNVDIMM(t *testing.T) { testAppend(object, deviceNVDIMMString, t) } +var objectEPCString = "-object memory-backend-epc,id=epc0,size=65536,prealloc=on" + +func TestAppendEPCObject(t *testing.T) { + object := Object{ + Type: MemoryBackendEPC, + ID: "epc0", + Size: 1 << 16, + Prealloc: true, + } + + testAppend(object, objectEPCString, t) +} + func TestAppendDeviceFS(t *testing.T) { fsdev := FSDevice{ Driver: Virtio9P, From 927731709890bbd8e4dadcfa01d86cbe913a953e Mon Sep 17 00:00:00 2001 From: Eric Ernst Date: Sun, 16 Jan 2022 14:04:30 -0800 Subject: [PATCH 300/385] agent: resolve unused variables in tests A few tests have unused or unread variables. Let's clean these up... Fixes: #3530 Signed-off-by: Eric Ernst --- src/agent/rustjail/src/mount.rs | 2 +- src/agent/src/util.rs | 12 ------------ 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/src/agent/rustjail/src/mount.rs b/src/agent/rustjail/src/mount.rs index 8866f51e6..883ad6144 100644 --- a/src/agent/rustjail/src/mount.rs +++ b/src/agent/rustjail/src/mount.rs @@ -1385,7 +1385,7 @@ mod tests { for (i, t) in tests.iter().enumerate() { // Create a string containing details of the test - let msg = format!("test[{}]: {:?}", i, t); + let msg = format!("test[{}]: {:?}", i, t.name); // if is_symlink, then should be prepare the softlink environment if t.symlink_path != "" { diff --git a/src/agent/src/util.rs b/src/agent/src/util.rs index 1be52f730..488e6ca6b 100644 --- a/src/agent/src/util.rs +++ b/src/agent/src/util.rs @@ -90,7 +90,6 @@ mod tests { #[derive(Debug, Default, Clone)] struct BufWriter { data: Arc>>, - slow_write: bool, write_delay: Duration, } @@ -98,7 +97,6 @@ mod tests { fn new() -> Self { BufWriter { data: Arc::new(Mutex::new(Vec::::new())), - slow_write: false, write_delay: Duration::new(0, 0), } } @@ -179,45 +177,35 @@ mod tests { #[derive(Debug)] struct TestData { reader_value: String, - result: io::Result, } let tests = &[ TestData { reader_value: "".into(), - result: Ok(0), }, TestData { reader_value: "a".into(), - result: Ok(1), }, TestData { reader_value: "foo".into(), - result: Ok(3), }, TestData { reader_value: "b".repeat(BUF_SIZE - 1), - result: Ok((BUF_SIZE - 1) as u64), }, TestData { reader_value: "c".repeat(BUF_SIZE), - result: Ok((BUF_SIZE) as u64), }, TestData { reader_value: "d".repeat(BUF_SIZE + 1), - result: Ok((BUF_SIZE + 1) as u64), }, TestData { reader_value: "e".repeat((2 * BUF_SIZE) - 1), - result: Ok(((2 * BUF_SIZE) - 1) as u64), }, TestData { reader_value: "f".repeat(2 * BUF_SIZE), - result: Ok((2 * BUF_SIZE) as u64), }, TestData { reader_value: "g".repeat((2 * BUF_SIZE) + 1), - result: Ok(((2 * BUF_SIZE) + 1) as u64), }, ]; From a5829a294ed327ec5c9c3b9058607102328f5dc2 Mon Sep 17 00:00:00 2001 From: zhanghj Date: Mon, 17 Jan 2022 09:17:00 +0800 Subject: [PATCH 301/385] docs: fix a typo in host-cgroups.md doc Container1's cgroupsPath in pod2 should be /kubepods/pod2/container1. Fixes: #3431 Signed-off-by: zhanghj --- docs/design/host-cgroups.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/design/host-cgroups.md b/docs/design/host-cgroups.md index afbc93809..de5f3288d 100644 --- a/docs/design/host-cgroups.md +++ b/docs/design/host-cgroups.md @@ -19,7 +19,7 @@ Cgroups are hierarchical, and this can be seen with the following pod example: - Container 2: `cgroupsPath=/kubepods/pod1/container2` - Pod 2: `cgroupsPath=/kubepods/pod2` - - Container 1: `cgroupsPath=/kubepods/pod2/container2` + - Container 1: `cgroupsPath=/kubepods/pod2/container1` - Container 2: `cgroupsPath=/kubepods/pod2/container2` Depending on the upper-level orchestration layers, the cgroup under which the pod is placed is From 41e0c414a4b9967817d14df2cb40dc89377bcb8c Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Mon, 17 Jan 2022 09:17:35 -0600 Subject: [PATCH 302/385] vendor: update govmm bring SGX support and other fixes shortlog: 8939b0f qemu: add support for SGX b17f073 qemu: update readonly flag for block devices f971801 qemu: only set wait parameter for server mode socket based char device 82cc01d qemu: Fix 32 bit int overflow in test file 1d1a231 qemu: Add support for legacy serial device 9a2bbed qemu: Remove -realtime in favor of -overcommit fe83c20 qemu: Add support for --no-shutdown Knob 1ed5271 qmp: wait for POWERDOWN event in ExecuteSystemPowerdown() fixes #3080 Signed-off-by: Julio Montes --- src/runtime/go.mod | 2 +- src/runtime/go.sum | 4 +- .../kata-containers/govmm/qemu/qemu.go | 101 +++++++++++++----- .../kata-containers/govmm/qemu/qmp.go | 28 +++-- src/runtime/vendor/modules.txt | 2 +- 5 files changed, 97 insertions(+), 40 deletions(-) diff --git a/src/runtime/go.mod b/src/runtime/go.mod index fba0a173f..020700c37 100644 --- a/src/runtime/go.mod +++ b/src/runtime/go.mod @@ -28,7 +28,7 @@ require ( github.com/gogo/protobuf v1.3.2 github.com/hashicorp/go-multierror v1.0.0 github.com/intel-go/cpuid v0.0.0-20210602155658-5747e5cec0d9 - github.com/kata-containers/govmm v0.0.0-20210909155007-1b60b536f3c7 + github.com/kata-containers/govmm v0.0.0-20220117131932-0781a21804ee github.com/mdlayher/vsock v0.0.0-20191108225356-d9c65923cb8f github.com/opencontainers/runc v1.0.3 github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 diff --git a/src/runtime/go.sum b/src/runtime/go.sum index 01c123efd..88f3e0a8a 100644 --- a/src/runtime/go.sum +++ b/src/runtime/go.sum @@ -576,8 +576,8 @@ github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7 github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/kata-containers/govmm v0.0.0-20210909155007-1b60b536f3c7 h1:lrtaReMyoviyn/Gtd9iAmQ9qNSTaS3QC1NgQ+h5fliI= -github.com/kata-containers/govmm v0.0.0-20210909155007-1b60b536f3c7/go.mod h1:A6QaNB6N6PRQ9mTRpFtUxiF5T5CJpzLALjxBrUQPlFI= +github.com/kata-containers/govmm v0.0.0-20220117131932-0781a21804ee h1:XofauxL6B1JEeDS+Ta/M1tM9Kutj/n72JSAvx10ubFA= +github.com/kata-containers/govmm v0.0.0-20220117131932-0781a21804ee/go.mod h1:A6QaNB6N6PRQ9mTRpFtUxiF5T5CJpzLALjxBrUQPlFI= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= diff --git a/src/runtime/vendor/github.com/kata-containers/govmm/qemu/qemu.go b/src/runtime/vendor/github.com/kata-containers/govmm/qemu/qemu.go index e57a4b26a..c43ff5795 100644 --- a/src/runtime/vendor/github.com/kata-containers/govmm/qemu/qemu.go +++ b/src/runtime/vendor/github.com/kata-containers/govmm/qemu/qemu.go @@ -66,6 +66,9 @@ type Device interface { type DeviceDriver string const ( + // LegacySerial is the legacy serial device driver + LegacySerial DeviceDriver = "serial" + // NVDIMM is the Non Volatile DIMM device driver. NVDIMM DeviceDriver = "nvdimm" @@ -231,6 +234,9 @@ const ( // MemoryBackendFile represents a guest memory mapped file. MemoryBackendFile ObjectType = "memory-backend-file" + // MemoryBackendEPC represents a guest memory backend EPC for SGX. + MemoryBackendEPC ObjectType = "memory-backend-epc" + // TDXGuest represents a TDX object TDXGuest ObjectType = "tdx-guest" @@ -280,6 +286,9 @@ type Object struct { // ReadOnly specifies whether `MemPath` is opened read-only or read/write (default) ReadOnly bool + + // Prealloc enables memory preallocation + Prealloc bool } // Valid returns true if the Object structure is valid and complete. @@ -287,6 +296,8 @@ func (object Object) Valid() bool { switch object.Type { case MemoryBackendFile: return object.ID != "" && object.MemPath != "" && object.Size != 0 + case MemoryBackendEPC: + return object.ID != "" && object.Size != 0 case TDXGuest: return object.ID != "" && object.File != "" && object.DeviceID != "" case SEVGuest: @@ -323,6 +334,14 @@ func (object Object) QemuParams(config *Config) []string { objectParams = append(objectParams, "readonly=on") deviceParams = append(deviceParams, "unarmed=on") } + case MemoryBackendEPC: + objectParams = append(objectParams, string(object.Type)) + objectParams = append(objectParams, fmt.Sprintf("id=%s", object.ID)) + objectParams = append(objectParams, fmt.Sprintf("size=%d", object.Size)) + if object.Prealloc { + objectParams = append(objectParams, "prealloc=on") + } + case TDXGuest: objectParams = append(objectParams, string(object.Type)) objectParams = append(objectParams, fmt.Sprintf("id=%s", object.ID)) @@ -549,6 +568,9 @@ const ( // PTY creates a new pseudo-terminal on the host and connect to it. PTY CharDeviceBackend = "pty" + + // File sends traffic from the guest to a file on the host. + File CharDeviceBackend = "file" ) // CharDevice represents a qemu character device. @@ -637,8 +659,11 @@ func (cdev CharDevice) QemuParams(config *Config) []string { cdevParams = append(cdevParams, fmt.Sprintf("path=%s", cdev.Path)) } - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) + // Legacy serial is special. It does not follow the device + driver model + if cdev.Driver != LegacySerial { + qemuParams = append(qemuParams, "-device") + qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) + } qemuParams = append(qemuParams, "-chardev") qemuParams = append(qemuParams, strings.Join(cdevParams, ",")) @@ -978,6 +1003,43 @@ func (netdev NetDevice) QemuParams(config *Config) []string { return qemuParams } +// LegacySerialDevice represents a qemu legacy serial device. +type LegacySerialDevice struct { + // ID is the serial device identifier. + // This maps to the char dev associated with the device + // as serial does not have a notion of id + // e.g: + // -chardev stdio,id=char0,mux=on,logfile=serial.log,signal=off -serial chardev:char0 + // -chardev file,id=char0,path=serial.log -serial chardev:char0 + Chardev string +} + +// Valid returns true if the LegacySerialDevice structure is valid and complete. +func (dev LegacySerialDevice) Valid() bool { + return dev.Chardev != "" +} + +// QemuParams returns the qemu parameters built out of this serial device. +func (dev LegacySerialDevice) QemuParams(config *Config) []string { + var deviceParam string + var qemuParams []string + + deviceParam = fmt.Sprintf("chardev:%s", dev.Chardev) + + qemuParams = append(qemuParams, "-serial") + qemuParams = append(qemuParams, deviceParam) + + return qemuParams +} + +/* Not used currently +// deviceName returns the QEMU device name for the current combination of +// driver and transport. +func (dev LegacySerialDevice) deviceName(config *Config) string { + return dev.Chardev +} +*/ + // SerialDevice represents a qemu serial device. type SerialDevice struct { // Driver is the qemu device driver @@ -1173,7 +1235,7 @@ func (blkdev BlockDevice) QemuParams(config *Config) []string { blkParams = append(blkParams, fmt.Sprintf("if=%s", blkdev.Interface)) if blkdev.ReadOnly { - blkParams = append(blkParams, "readonly") + blkParams = append(blkParams, "readonly=on") } qemuParams = append(qemuParams, "-device") @@ -2411,18 +2473,18 @@ type Knobs struct { MemShared bool // Mlock will control locking of memory - // Only active when Realtime is set to true Mlock bool // Stopped will not start guest CPU at startup Stopped bool - // Realtime will enable realtime QEMU - Realtime bool - // Exit instead of rebooting + // Prevents QEMU from rebooting in the event of a Triple Fault. NoReboot bool + // Don’t exit QEMU on guest shutdown, but instead only stop the emulation. + NoShutdown bool + // IOMMUPlatform will enable IOMMU for supported devices IOMMUPlatform bool } @@ -2795,30 +2857,19 @@ func (config *Config) appendKnobs() { config.qemuParams = append(config.qemuParams, "--no-reboot") } + if config.Knobs.NoShutdown { + config.qemuParams = append(config.qemuParams, "--no-shutdown") + } + if config.Knobs.Daemonize { config.qemuParams = append(config.qemuParams, "-daemonize") } config.appendMemoryKnobs() - if config.Knobs.Realtime { - config.qemuParams = append(config.qemuParams, "-realtime") - // This path is redundant as the default behaviour is locked memory - // Realtime today does not control any other feature even though - // other features may be added in the future - // https://lists.gnu.org/archive/html/qemu-devel/2012-12/msg03330.html - if config.Knobs.Mlock { - config.qemuParams = append(config.qemuParams, "mlock=on") - } else { - config.qemuParams = append(config.qemuParams, "mlock=off") - } - } else { - // In order to turn mlock off we need the -realtime option as well - if !config.Knobs.Mlock { - //Enable realtime anyway just to get the right swapping behaviour - config.qemuParams = append(config.qemuParams, "-realtime") - config.qemuParams = append(config.qemuParams, "mlock=off") - } + if config.Knobs.Mlock { + config.qemuParams = append(config.qemuParams, "-overcommit") + config.qemuParams = append(config.qemuParams, "mem-lock=on") } if config.Knobs.Stopped { diff --git a/src/runtime/vendor/github.com/kata-containers/govmm/qemu/qmp.go b/src/runtime/vendor/github.com/kata-containers/govmm/qemu/qmp.go index f8a33334c..2e30c2ba9 100644 --- a/src/runtime/vendor/github.com/kata-containers/govmm/qemu/qmp.go +++ b/src/runtime/vendor/github.com/kata-containers/govmm/qemu/qmp.go @@ -761,7 +761,7 @@ func (q *QMP) ExecuteCont(ctx context.Context) error { // This function will block until the SHUTDOWN event is received. func (q *QMP) ExecuteSystemPowerdown(ctx context.Context) error { filter := &qmpEventFilter{ - eventName: "SHUTDOWN", + eventName: "POWERDOWN", } return q.executeCommand(ctx, "system_powerdown", nil, filter) } @@ -1518,20 +1518,26 @@ func (q *QMP) ExecuteGetFD(ctx context.Context, fdname string, fd *os.File) erro // id is an identifier for the device, path specifies the local path of the unix socket, // wait is to block waiting for a client to connect, server specifies that the socket is a listening socket. func (q *QMP) ExecuteCharDevUnixSocketAdd(ctx context.Context, id, path string, wait, server bool) error { + data := map[string]interface{}{ + "server": server, + "addr": map[string]interface{}{ + "type": "unix", + "data": map[string]interface{}{ + "path": path, + }, + }, + } + + // wait is only valid for server mode + if server { + data["wait"] = wait + } + args := map[string]interface{}{ "id": id, "backend": map[string]interface{}{ "type": "socket", - "data": map[string]interface{}{ - "wait": wait, - "server": server, - "addr": map[string]interface{}{ - "type": "unix", - "data": map[string]interface{}{ - "path": path, - }, - }, - }, + "data": data, }, } return q.executeCommand(ctx, "chardev-add", args, nil) diff --git a/src/runtime/vendor/modules.txt b/src/runtime/vendor/modules.txt index 2f331d1c4..2f0996ab3 100644 --- a/src/runtime/vendor/modules.txt +++ b/src/runtime/vendor/modules.txt @@ -206,7 +206,7 @@ github.com/hashicorp/go-multierror github.com/intel-go/cpuid # github.com/josharian/intern v1.0.0 github.com/josharian/intern -# github.com/kata-containers/govmm v0.0.0-20210909155007-1b60b536f3c7 +# github.com/kata-containers/govmm v0.0.0-20220117131932-0781a21804ee ## explicit github.com/kata-containers/govmm/qemu # github.com/mailru/easyjson v0.7.6 From e347694fff25f23aa96f6e09b365e0fc872c724e Mon Sep 17 00:00:00 2001 From: Sebastian Hasler Date: Wed, 12 Jan 2022 23:24:43 +0100 Subject: [PATCH 303/385] tools: Fix groupname if it differs from username The script `tools/packaging/static-build/qemu/build-base-qemu.sh` previously failed on systems where the user's groupname differs from the username Fixes: #3461 Signed-off-by: Sebastian Hasler --- tools/packaging/static-build/qemu/build-base-qemu.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/packaging/static-build/qemu/build-base-qemu.sh b/tools/packaging/static-build/qemu/build-base-qemu.sh index a45651f15..0be853e59 100755 --- a/tools/packaging/static-build/qemu/build-base-qemu.sh +++ b/tools/packaging/static-build/qemu/build-base-qemu.sh @@ -54,4 +54,4 @@ sudo "${container_engine}" run \ -v "${PWD}":/share qemu-static \ mv "${qemu_destdir}/${qemu_tar}" /share/ -sudo chown ${USER}:${USER} "${PWD}/${qemu_tar}" +sudo chown ${USER}:$(id -gn ${USER}) "${PWD}/${qemu_tar}" From fc64643437165e2f1c0d4253aee26466541d5807 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Mon, 17 Jan 2022 16:47:15 +0100 Subject: [PATCH 304/385] workflows: Use the correct branch ref on test kata-deploy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The action used for testing kata-deploy is entirely based on the action used to build the kata-deploy tarball, but while the latter is able to use the correct branch, the former always uses `main`. This happens as the `issue_comment`, from GitHub actions, passed the "default branch" as the GITHUB_REF. As we're not the first ones to face such a issue, I've decided to take one of the approaches suggested at one of the checkout's issues, https://github.com/actions/checkout/issues/331, and take advantage of a new action provided by the community, which will get the PR where the comment was made, give us that ref, and that then can be used with the checkout action, resulting on what we originally wanted. Fixes: #3443 Signed-off-by: Fabiano Fidêncio --- .github/workflows/kata-deploy-test.yaml | 31 +++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/.github/workflows/kata-deploy-test.yaml b/.github/workflows/kata-deploy-test.yaml index 4dce7b2f3..6b93c1ec9 100644 --- a/.github/workflows/kata-deploy-test.yaml +++ b/.github/workflows/kata-deploy-test.yaml @@ -48,7 +48,18 @@ jobs: - rootfs-initrd - shim-v2 steps: + # As Github action event `issue_comment` does not provide the right ref + # (commit/branch) to be tested, let's use this third part action to work + # this limitation around. + - name: resolve pr refs + id: refs + uses: kata-containers/resolve-pr-refs@v0.0.3 + with: + token: ${{ secrets.GITHUB_TOKEN }} + - uses: actions/checkout@v2 + with: + ref: ${{ steps.refs.outputs.head_ref }} - name: Install docker run: | curl -fsSL https://test.docker.com -o test-docker.sh @@ -75,7 +86,17 @@ jobs: runs-on: ubuntu-latest needs: build-asset steps: + # As Github action event `issue_comment` does not provide the right ref + # (commit/branch) to be tested, let's use this third part action to work + # this limitation around. + - name: resolve pr refs + id: refs + uses: kata-containers/resolve-pr-refs@v0.0.3 + with: + token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v2 + with: + ref: ${{ steps.refs.outputs.head_ref }} - name: get-artifacts uses: actions/download-artifact@v2 with: @@ -94,7 +115,17 @@ jobs: needs: create-kata-tarball runs-on: ubuntu-latest steps: + # As Github action event `issue_comment` does not provide the right ref + # (commit/branch) to be tested, let's use this third part action to work + # this limitation around. + - name: resolve pr refs + id: refs + uses: kata-containers/resolve-pr-refs@v0.0.3 + with: + token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v2 + with: + ref: ${{ steps.refs.outputs.head_ref }} - name: get-kata-tarball uses: actions/download-artifact@v2 with: From 5285ac2b5789cc2719eecb811b12616953d4788b Mon Sep 17 00:00:00 2001 From: Jakob Naucke Date: Tue, 18 Jan 2022 11:32:03 +0100 Subject: [PATCH 305/385] runtime: -Wl,--s390-pgste for s390x for linking. Required for basic KVM checks on some kernels (e.g. the one RHEL is currently shipping), cf. https://github.com/qemu/qemu/blob/6621441db50d5bae7e34dbd04bf3c57a27a71b32/target/s390x/kvm/meson.build#L15-L16. Fixes: #3469 Signed-off-by: Jakob Naucke --- src/runtime/Makefile | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/runtime/Makefile b/src/runtime/Makefile index fefd31a0b..a72964480 100644 --- a/src/runtime/Makefile +++ b/src/runtime/Makefile @@ -487,7 +487,11 @@ BUILDFLAGS := -buildmode=pie -mod=vendor ${BUILDTAGS} # whether stipping the binary ifeq ($(STRIP),yes) - KATA_LDFLAGS := -ldflags "-w -s" + KATA_LDFLAGS = -w -s +endif + +ifeq ($(ARCH),s390x) + KATA_LDFLAGS += -extldflags=-Wl,--s390-pgste endif # Return non-empty string if specified directory exists @@ -550,10 +554,10 @@ endef GENERATED_FILES += pkg/katautils/config-settings.go $(RUNTIME_OUTPUT): $(SOURCES) $(GENERATED_FILES) $(MAKEFILE_LIST) | show-summary - $(QUIET_BUILD)(cd $(RUNTIME_DIR) && go build $(KATA_LDFLAGS) $(BUILDFLAGS) -o $@ .) + $(QUIET_BUILD)(cd $(RUNTIME_DIR) && go build -ldflags $(KATA_LDFLAGS) $(BUILDFLAGS) -o $@ .) $(SHIMV2_OUTPUT): $(SOURCES) $(GENERATED_FILES) $(MAKEFILE_LIST) - $(QUIET_BUILD)(cd $(SHIMV2_DIR)/ && go build $(KATA_LDFLAGS) $(BUILDFLAGS) -o $@ .) + $(QUIET_BUILD)(cd $(SHIMV2_DIR)/ && go build -ldflags $(KATA_LDFLAGS) $(BUILDFLAGS) -o $@ .) $(MONITOR_OUTPUT): $(SOURCES) $(GENERATED_FILES) $(MAKEFILE_LIST) .git-commit $(QUIET_BUILD)(cd $(MONITOR_DIR)/ && CGO_ENABLED=0 go build \ From d87ab14fa7c2244a631189083cceb6344ae9f306 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Tue, 18 Jan 2022 12:38:18 +0100 Subject: [PATCH 306/385] workflows: Ensure force-skip-ci skips all actions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before this change it was only applied to the static-checks, but if we're already taking the extreme path of skipping the CI, we better ensure we skip all the actions and not just a few of them. Fixes: #3471 Signed-off-by: Fabiano Fidêncio --- .github/workflows/PR-wip-checks.yaml | 1 + .github/workflows/commit-message-check.yaml | 12 +++++++----- .github/workflows/kata-deploy-push.yaml | 7 +++++++ .github/workflows/move-issues-to-in-progress.yaml | 4 ++++ .github/workflows/require-pr-porting-labels.yaml | 3 +++ .github/workflows/snap.yaml | 3 +++ 6 files changed, 25 insertions(+), 5 deletions(-) diff --git a/.github/workflows/PR-wip-checks.yaml b/.github/workflows/PR-wip-checks.yaml index 16f8167b2..97c35145a 100644 --- a/.github/workflows/PR-wip-checks.yaml +++ b/.github/workflows/PR-wip-checks.yaml @@ -15,6 +15,7 @@ jobs: name: WIP Check steps: - name: WIP Check + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }} uses: tim-actions/wip-check@1c2a1ca6c110026b3e2297bb2ef39e1747b5a755 with: labels: '["do-not-merge", "wip", "rfc"]' diff --git a/.github/workflows/commit-message-check.yaml b/.github/workflows/commit-message-check.yaml index 55f03fecd..3c2b5e91a 100644 --- a/.github/workflows/commit-message-check.yaml +++ b/.github/workflows/commit-message-check.yaml @@ -18,24 +18,26 @@ jobs: name: Commit Message Check steps: - name: Get PR Commits + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }} id: 'get-pr-commits' uses: tim-actions/get-pr-commits@v1.0.0 with: token: ${{ secrets.GITHUB_TOKEN }} - name: DCO Check + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }} uses: tim-actions/dco@2fd0504dc0d27b33f542867c300c60840c6dcb20 with: commits: ${{ steps.get-pr-commits.outputs.commits }} - name: Commit Body Missing Check - if: ${{ success() || failure() }} + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') && ( success() || failure() ) }} uses: tim-actions/commit-body-check@v1.0.2 with: commits: ${{ steps.get-pr-commits.outputs.commits }} - name: Check Subject Line Length - if: ${{ success() || failure() }} + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') && ( success() || failure() ) }} uses: tim-actions/commit-message-checker-with-regex@v0.3.1 with: commits: ${{ steps.get-pr-commits.outputs.commits }} @@ -44,7 +46,7 @@ jobs: post_error: ${{ env.error_msg }} - name: Check Body Line Length - if: ${{ success() || failure() }} + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') && ( success() || failure() ) }} uses: tim-actions/commit-message-checker-with-regex@v0.3.1 with: commits: ${{ steps.get-pr-commits.outputs.commits }} @@ -71,7 +73,7 @@ jobs: post_error: ${{ env.error_msg }} - name: Check Fixes - if: ${{ success() || failure() }} + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') && ( success() || failure() ) }} uses: tim-actions/commit-message-checker-with-regex@v0.3.1 with: commits: ${{ steps.get-pr-commits.outputs.commits }} @@ -82,7 +84,7 @@ jobs: one_pass_all_pass: 'true' - name: Check Subsystem - if: ${{ success() || failure() }} + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') && ( success() || failure() ) }} uses: tim-actions/commit-message-checker-with-regex@v0.3.1 with: commits: ${{ steps.get-pr-commits.outputs.commits }} diff --git a/.github/workflows/kata-deploy-push.yaml b/.github/workflows/kata-deploy-push.yaml index effca2e20..051808f89 100644 --- a/.github/workflows/kata-deploy-push.yaml +++ b/.github/workflows/kata-deploy-push.yaml @@ -19,11 +19,13 @@ jobs: steps: - uses: actions/checkout@v2 - name: Install docker + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }} run: | curl -fsSL https://test.docker.com -o test-docker.sh sh test-docker.sh - name: Build ${{ matrix.asset }} + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }} run: | make "${KATA_ASSET}-tarball" build_dir=$(readlink -f build) @@ -33,6 +35,7 @@ jobs: KATA_ASSET: ${{ matrix.asset }} - name: store-artifact ${{ matrix.asset }} + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }} uses: actions/upload-artifact@v2 with: name: kata-artifacts @@ -45,14 +48,17 @@ jobs: steps: - uses: actions/checkout@v2 - name: get-artifacts + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }} uses: actions/download-artifact@v2 with: name: kata-artifacts path: build - name: merge-artifacts + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }} run: | make merge-builds - name: store-artifacts + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }} uses: actions/upload-artifact@v2 with: name: kata-static-tarball @@ -63,6 +69,7 @@ jobs: steps: - uses: actions/checkout@v2 - name: make kata-tarball + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }} run: | make kata-tarball sudo make install-tarball diff --git a/.github/workflows/move-issues-to-in-progress.yaml b/.github/workflows/move-issues-to-in-progress.yaml index 6a55340af..0e15abaea 100644 --- a/.github/workflows/move-issues-to-in-progress.yaml +++ b/.github/workflows/move-issues-to-in-progress.yaml @@ -16,6 +16,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Install hub + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }} run: | HUB_ARCH="amd64" HUB_VER=$(curl -sL "https://api.github.com/repos/github/hub/releases/latest" |\ @@ -26,6 +27,7 @@ jobs: sudo install hub /usr/local/bin - name: Install hub extension script + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }} run: | # Clone into a temporary directory to avoid overwriting # any existing github directory. @@ -35,9 +37,11 @@ jobs: popd &>/dev/null - name: Checkout code to allow hub to communicate with the project + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }} uses: actions/checkout@v2 - name: Move issue to "In progress" + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }} env: GITHUB_TOKEN: ${{ secrets.KATA_GITHUB_ACTIONS_TOKEN }} run: | diff --git a/.github/workflows/require-pr-porting-labels.yaml b/.github/workflows/require-pr-porting-labels.yaml index 3f3807194..585e86bc4 100644 --- a/.github/workflows/require-pr-porting-labels.yaml +++ b/.github/workflows/require-pr-porting-labels.yaml @@ -20,6 +20,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Install hub + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }} run: | HUB_ARCH="amd64" HUB_VER=$(curl -sL "https://api.github.com/repos/github/hub/releases/latest" |\ @@ -30,6 +31,7 @@ jobs: sudo install hub /usr/local/bin - name: Checkout code to allow hub to communicate with the project + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }} uses: actions/checkout@v2 - name: Install porting checker script @@ -42,6 +44,7 @@ jobs: popd &>/dev/null - name: Stop PR being merged unless it has a correct set of porting labels + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }} env: GITHUB_TOKEN: ${{ secrets.KATA_GITHUB_ACTIONS_TOKEN }} run: | diff --git a/.github/workflows/snap.yaml b/.github/workflows/snap.yaml index 165a3a3be..f80df268d 100644 --- a/.github/workflows/snap.yaml +++ b/.github/workflows/snap.yaml @@ -5,13 +5,16 @@ jobs: runs-on: ubuntu-20.04 steps: - name: Check out + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }} uses: actions/checkout@v2 with: fetch-depth: 0 - name: Install Snapcraft + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }} uses: samuelmeuli/action-snapcraft@v1 - name: Build snap + if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }} run: | snapcraft -d snap --destructive-mode From 7a879164bd2fa1a7aad7954a2fda8374e8af9968 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Tue, 18 Jan 2022 14:39:01 +0100 Subject: [PATCH 307/385] workflows: Ensure a label change re-triggers the actions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is needed in order to ensure that, for instance, if `force-skip-ci` label is either added or removed later, the jobs related to the actions will be restarted and accordingly checked. Signed-off-by: Fabiano Fidêncio --- .github/workflows/commit-message-check.yaml | 2 ++ .github/workflows/kata-deploy-push.yaml | 11 ++++++++++- .github/workflows/move-issues-to-in-progress.yaml | 2 ++ .github/workflows/snap.yaml | 11 ++++++++++- 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/.github/workflows/commit-message-check.yaml b/.github/workflows/commit-message-check.yaml index 3c2b5e91a..7abb5d851 100644 --- a/.github/workflows/commit-message-check.yaml +++ b/.github/workflows/commit-message-check.yaml @@ -5,6 +5,8 @@ on: - opened - reopened - synchronize + - labeled + - unlabeled env: error_msg: |+ diff --git a/.github/workflows/kata-deploy-push.yaml b/.github/workflows/kata-deploy-push.yaml index 051808f89..39b10a550 100644 --- a/.github/workflows/kata-deploy-push.yaml +++ b/.github/workflows/kata-deploy-push.yaml @@ -1,6 +1,15 @@ name: kata deploy build -on: [push, pull_request] +on: + pull_request: + types: + - opened + - edited + - reopened + - synchronize + - labeled + - unlabeled + push jobs: build-asset: diff --git a/.github/workflows/move-issues-to-in-progress.yaml b/.github/workflows/move-issues-to-in-progress.yaml index 0e15abaea..ab97e2de9 100644 --- a/.github/workflows/move-issues-to-in-progress.yaml +++ b/.github/workflows/move-issues-to-in-progress.yaml @@ -10,6 +10,8 @@ on: types: - opened - reopened + - labeled + - unlabeled jobs: move-linked-issues-to-in-progress: diff --git a/.github/workflows/snap.yaml b/.github/workflows/snap.yaml index f80df268d..5ec399e83 100644 --- a/.github/workflows/snap.yaml +++ b/.github/workflows/snap.yaml @@ -1,5 +1,14 @@ name: snap CI -on: ["pull_request"] +on: + pull_request: + types: + - opened + - synchronize + - reopened + - edited + - labeled + - unlabeled + jobs: test: runs-on: ubuntu-20.04 From 49223e67af3b2990d32add91aea1df47148c11bd Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Tue, 18 Jan 2022 09:37:20 -0600 Subject: [PATCH 308/385] runtime: remove enable_swap option `enable_swap` option was added long time ago to add `-realtime mlock=off` to the QEMU's command line. Kata now supports QEMU 6, `-realtime` option has been deprecated and `mlock=on` is causing unexpected behaviors in kata. This patch removes support for `enable_swap`, `-realtime` and `mlock=` since they are causing bugs in kata. Signed-off-by: Julio Montes --- docs/how-to/how-to-set-sandbox-config-kata.md | 1 - src/runtime/Makefile | 1 - src/runtime/config/configuration-fc.toml.in | 4 ---- src/runtime/config/configuration-qemu.toml.in | 4 ---- src/runtime/pkg/katautils/config-settings.go.in | 1 - src/runtime/pkg/katautils/config.go | 6 ------ src/runtime/pkg/katautils/config_test.go | 2 -- src/runtime/pkg/oci/utils.go | 9 --------- src/runtime/pkg/oci/utils_test.go | 2 -- src/runtime/virtcontainers/documentation/api/1.0/api.md | 8 -------- src/runtime/virtcontainers/factory/factory_test.go | 1 - src/runtime/virtcontainers/hypervisor.go | 8 -------- src/runtime/virtcontainers/persist.go | 4 ---- src/runtime/virtcontainers/persist/api/config.go | 8 -------- .../virtcontainers/pkg/annotations/annotations.go | 4 ---- src/runtime/virtcontainers/qemu.go | 2 -- 16 files changed, 65 deletions(-) diff --git a/docs/how-to/how-to-set-sandbox-config-kata.md b/docs/how-to/how-to-set-sandbox-config-kata.md index e4f73cedb..a8a7f855e 100644 --- a/docs/how-to/how-to-set-sandbox-config-kata.md +++ b/docs/how-to/how-to-set-sandbox-config-kata.md @@ -56,7 +56,6 @@ There are several kinds of Kata configurations and they are listed below. | `io.katacontainers.config.hypervisor.enable_iommu` | `boolean` | enable `iommu` on Q35 (QEMU x86_64) | | `io.katacontainers.config.hypervisor.enable_iothreads` | `boolean`| enable IO to be processed in a separate thread. Supported currently for virtio-`scsi` driver | | `io.katacontainers.config.hypervisor.enable_mem_prealloc` | `boolean` | the memory space used for `nvdimm` device by the hypervisor | -| `io.katacontainers.config.hypervisor.enable_swap` | `boolean` | enable swap of VM memory | | `io.katacontainers.config.hypervisor.enable_vhost_user_store` | `boolean` | enable vhost-user storage device (QEMU) | | `io.katacontainers.config.hypervisor.enable_virtio_mem` | `boolean` | enable virtio-mem (QEMU) | | `io.katacontainers.config.hypervisor.entropy_source` (R) | string| the path to a host source of entropy (`/dev/random`, `/dev/urandom` or real hardware RNG device) | diff --git a/src/runtime/Makefile b/src/runtime/Makefile index fefd31a0b..bd09e7e3f 100644 --- a/src/runtime/Makefile +++ b/src/runtime/Makefile @@ -361,7 +361,6 @@ USER_VARS += CONFIG_PATH USER_VARS += CONFIG_QEMU_IN USER_VARS += DESTDIR USER_VARS += DEFAULT_HYPERVISOR -USER_VARS += DEFENABLEMSWAP USER_VARS += ACRNCMD USER_VARS += ACRNCTLCMD USER_VARS += ACRNPATH diff --git a/src/runtime/config/configuration-fc.toml.in b/src/runtime/config/configuration-fc.toml.in index 33be336d7..1b63d219d 100644 --- a/src/runtime/config/configuration-fc.toml.in +++ b/src/runtime/config/configuration-fc.toml.in @@ -153,10 +153,6 @@ block_device_driver = "@DEFBLOCKSTORAGEDRIVER_FC@" # command line: intel_iommu=on,iommu=pt #enable_iommu = true -# Enable swap of vm memory. Default false. -# The behaviour is undefined if mem_prealloc is also set to true -#enable_swap = true - # This option changes the default hypervisor and kernel parameters # to enable debug output where available. # diff --git a/src/runtime/config/configuration-qemu.toml.in b/src/runtime/config/configuration-qemu.toml.in index fa549731d..2f6600fc8 100644 --- a/src/runtime/config/configuration-qemu.toml.in +++ b/src/runtime/config/configuration-qemu.toml.in @@ -250,10 +250,6 @@ valid_vhost_user_store_paths = @DEFVALIDVHOSTUSERSTOREPATHS@ # Your distribution recommends: @DEFVALIDFILEMEMBACKENDS@ valid_file_mem_backends = @DEFVALIDFILEMEMBACKENDS@ -# Enable swap of vm memory. Default false. -# The behaviour is undefined if mem_prealloc is also set to true -#enable_swap = true - # -pflash can add image file to VM. The arguments of it should be in format # of ["/path/to/flash0.img", "/path/to/flash1.img"] pflashes = [] diff --git a/src/runtime/pkg/katautils/config-settings.go.in b/src/runtime/pkg/katautils/config-settings.go.in index 8f2ae6bfd..7c26607db 100644 --- a/src/runtime/pkg/katautils/config-settings.go.in +++ b/src/runtime/pkg/katautils/config-settings.go.in @@ -71,7 +71,6 @@ const defaultEnableHugePages bool = false const defaultEnableIOMMU bool = false const defaultEnableIOMMUPlatform bool = false const defaultFileBackedMemRootDir string = "" -const defaultEnableSwap bool = false const defaultEnableDebug bool = false const defaultDisableNestingChecks bool = false const defaultMsize9p uint32 = 8192 diff --git a/src/runtime/pkg/katautils/config.go b/src/runtime/pkg/katautils/config.go index e844bff03..7035860b3 100644 --- a/src/runtime/pkg/katautils/config.go +++ b/src/runtime/pkg/katautils/config.go @@ -123,7 +123,6 @@ type hypervisor struct { VirtioMem bool `toml:"enable_virtio_mem"` IOMMU bool `toml:"enable_iommu"` IOMMUPlatform bool `toml:"enable_iommu_platform"` - Swap bool `toml:"enable_swap"` Debug bool `toml:"enable_debug"` DisableNestingChecks bool `toml:"disable_nesting_checks"` EnableIOThreads bool `toml:"enable_iothreads"` @@ -554,7 +553,6 @@ func newFirecrackerHypervisorConfig(h hypervisor) (vc.HypervisorConfig, error) { DefaultBridges: h.defaultBridges(), DisableBlockDeviceUse: h.DisableBlockDeviceUse, HugePages: h.HugePages, - Mlock: !h.Swap, Debug: h.Debug, DisableNestingChecks: h.DisableNestingChecks, BlockDeviceDriver: blockDriver, @@ -672,7 +670,6 @@ func newQemuHypervisorConfig(h hypervisor) (vc.HypervisorConfig, error) { IOMMUPlatform: h.getIOMMUPlatform(), FileBackedMemRootDir: h.FileBackedMemRootDir, FileBackedMemRootList: h.FileBackedMemRootList, - Mlock: !h.Swap, Debug: h.Debug, DisableNestingChecks: h.DisableNestingChecks, BlockDeviceDriver: blockDriver, @@ -755,7 +752,6 @@ func newAcrnHypervisorConfig(h hypervisor) (vc.HypervisorConfig, error) { EntropySourceList: h.EntropySourceList, DefaultBridges: h.defaultBridges(), HugePages: h.HugePages, - Mlock: !h.Swap, Debug: h.Debug, DisableNestingChecks: h.DisableNestingChecks, BlockDeviceDriver: blockDriver, @@ -841,7 +837,6 @@ func newClhHypervisorConfig(h hypervisor) (vc.HypervisorConfig, error) { HugePages: h.HugePages, FileBackedMemRootDir: h.FileBackedMemRootDir, FileBackedMemRootList: h.FileBackedMemRootList, - Mlock: !h.Swap, Debug: h.Debug, DisableNestingChecks: h.DisableNestingChecks, BlockDeviceDriver: blockDriver, @@ -1022,7 +1017,6 @@ func GetDefaultHypervisorConfig() vc.HypervisorConfig { IOMMU: defaultEnableIOMMU, IOMMUPlatform: defaultEnableIOMMUPlatform, FileBackedMemRootDir: defaultFileBackedMemRootDir, - Mlock: !defaultEnableSwap, Debug: defaultEnableDebug, DisableNestingChecks: defaultDisableNestingChecks, BlockDeviceDriver: defaultBlockDeviceDriver, diff --git a/src/runtime/pkg/katautils/config_test.go b/src/runtime/pkg/katautils/config_test.go index bfabc668c..ac0c4ee03 100644 --- a/src/runtime/pkg/katautils/config_test.go +++ b/src/runtime/pkg/katautils/config_test.go @@ -155,7 +155,6 @@ func createAllRuntimeConfigFiles(dir, hypervisor string) (config testRuntimeConf DisableBlockDeviceUse: disableBlockDevice, BlockDeviceDriver: defaultBlockDeviceDriver, DefaultBridges: defaultBridgesCount, - Mlock: !defaultEnableSwap, EnableIOThreads: enableIOThreads, HotplugVFIOOnRootBus: hotplugVFIOOnRootBus, PCIeRootPort: pcieRootPort, @@ -563,7 +562,6 @@ func TestMinimalRuntimeConfig(t *testing.T) { MemorySize: defaultMemSize, DisableBlockDeviceUse: defaultDisableBlockDeviceUse, DefaultBridges: defaultBridgesCount, - Mlock: !defaultEnableSwap, BlockDeviceDriver: defaultBlockDeviceDriver, Msize9p: defaultMsize9p, GuestHookPath: defaultGuestHookPath, diff --git a/src/runtime/pkg/oci/utils.go b/src/runtime/pkg/oci/utils.go index 1bec74639..71a116f45 100644 --- a/src/runtime/pkg/oci/utils.go +++ b/src/runtime/pkg/oci/utils.go @@ -566,15 +566,6 @@ func addHypervisorMemoryOverrides(ocispec specs.Spec, sbConfig *vc.SandboxConfig return err } - if value, ok := ocispec.Annotations[vcAnnotations.EnableSwap]; ok { - enableSwap, err := strconv.ParseBool(value) - if err != nil { - return fmt.Errorf("Error parsing annotation for enable_swap: Please specify boolean value 'true|false'") - } - - sbConfig.HypervisorConfig.Mlock = !enableSwap - } - if value, ok := ocispec.Annotations[vcAnnotations.FileBackedMemRootDir]; ok { if !checkPathIsInGlobs(runtime.HypervisorConfig.FileBackedMemRootList, value) { return fmt.Errorf("file_mem_backend value %v required from annotation is not valid", value) diff --git a/src/runtime/pkg/oci/utils_test.go b/src/runtime/pkg/oci/utils_test.go index a93bddcdf..95e962542 100644 --- a/src/runtime/pkg/oci/utils_test.go +++ b/src/runtime/pkg/oci/utils_test.go @@ -650,7 +650,6 @@ func TestAddHypervisorAnnotations(t *testing.T) { ocispec.Annotations[vcAnnotations.MemOffset] = "512" ocispec.Annotations[vcAnnotations.VirtioMem] = "true" ocispec.Annotations[vcAnnotations.MemPrealloc] = "true" - ocispec.Annotations[vcAnnotations.EnableSwap] = "true" ocispec.Annotations[vcAnnotations.FileBackedMemRootDir] = "/dev/shm" ocispec.Annotations[vcAnnotations.HugePages] = "true" ocispec.Annotations[vcAnnotations.IOMMU] = "true" @@ -687,7 +686,6 @@ func TestAddHypervisorAnnotations(t *testing.T) { assert.Equal(config.HypervisorConfig.MemOffset, uint64(512)) assert.Equal(config.HypervisorConfig.VirtioMem, true) assert.Equal(config.HypervisorConfig.MemPrealloc, true) - assert.Equal(config.HypervisorConfig.Mlock, false) assert.Equal(config.HypervisorConfig.FileBackedMemRootDir, "/dev/shm") assert.Equal(config.HypervisorConfig.HugePages, true) assert.Equal(config.HypervisorConfig.IOMMU, true) diff --git a/src/runtime/virtcontainers/documentation/api/1.0/api.md b/src/runtime/virtcontainers/documentation/api/1.0/api.md index 403a71280..1f49cfa0f 100644 --- a/src/runtime/virtcontainers/documentation/api/1.0/api.md +++ b/src/runtime/virtcontainers/documentation/api/1.0/api.md @@ -277,14 +277,6 @@ type HypervisorConfig struct { // IOMMUPlatform is used to indicate if IOMMU_PLATFORM is enabled for supported devices IOMMUPlatform bool - // Realtime Used to enable/disable realtime - Realtime bool - - // Mlock is used to control memory locking when Realtime is enabled - // Realtime=true and Mlock=false, allows for swapping out of VM memory - // enabling higher density - Mlock bool - // DisableNestingChecks is used to override customizations performed // when running on top of another VMM. DisableNestingChecks bool diff --git a/src/runtime/virtcontainers/factory/factory_test.go b/src/runtime/virtcontainers/factory/factory_test.go index 91b47cf52..9cd5568b7 100644 --- a/src/runtime/virtcontainers/factory/factory_test.go +++ b/src/runtime/virtcontainers/factory/factory_test.go @@ -263,7 +263,6 @@ func TestFactoryGetVM(t *testing.T) { assert.Nil(err) // checkConfig fall back - vmConfig.HypervisorConfig.Mlock = true vm, err = f.GetVM(ctx, vmConfig) assert.Nil(err) diff --git a/src/runtime/virtcontainers/hypervisor.go b/src/runtime/virtcontainers/hypervisor.go index 715b4793c..39f7a8b74 100644 --- a/src/runtime/virtcontainers/hypervisor.go +++ b/src/runtime/virtcontainers/hypervisor.go @@ -469,14 +469,6 @@ type HypervisorConfig struct { // IOMMUPlatform is used to indicate if IOMMU_PLATFORM is enabled for supported devices IOMMUPlatform bool - // Realtime Used to enable/disable realtime - Realtime bool - - // Mlock is used to control memory locking when Realtime is enabled - // Realtime=true and Mlock=false, allows for swapping out of VM memory - // enabling higher density - Mlock bool - // DisableNestingChecks is used to override customizations performed // when running on top of another VMM. DisableNestingChecks bool diff --git a/src/runtime/virtcontainers/persist.go b/src/runtime/virtcontainers/persist.go index 3a8f70d4a..c36a5bf3e 100644 --- a/src/runtime/virtcontainers/persist.go +++ b/src/runtime/virtcontainers/persist.go @@ -239,8 +239,6 @@ func (s *Sandbox) dumpConfig(ss *persistapi.SandboxState) { HugePages: sconfig.HypervisorConfig.HugePages, FileBackedMemRootDir: sconfig.HypervisorConfig.FileBackedMemRootDir, FileBackedMemRootList: sconfig.HypervisorConfig.FileBackedMemRootList, - Realtime: sconfig.HypervisorConfig.Realtime, - Mlock: sconfig.HypervisorConfig.Mlock, DisableNestingChecks: sconfig.HypervisorConfig.DisableNestingChecks, DisableImageNvdimm: sconfig.HypervisorConfig.DisableImageNvdimm, HotplugVFIOOnRootBus: sconfig.HypervisorConfig.HotplugVFIOOnRootBus, @@ -508,8 +506,6 @@ func loadSandboxConfig(id string) (*SandboxConfig, error) { HugePages: hconf.HugePages, FileBackedMemRootDir: hconf.FileBackedMemRootDir, FileBackedMemRootList: hconf.FileBackedMemRootList, - Realtime: hconf.Realtime, - Mlock: hconf.Mlock, DisableNestingChecks: hconf.DisableNestingChecks, DisableImageNvdimm: hconf.DisableImageNvdimm, HotplugVFIOOnRootBus: hconf.HotplugVFIOOnRootBus, diff --git a/src/runtime/virtcontainers/persist/api/config.go b/src/runtime/virtcontainers/persist/api/config.go index d3453cf1b..30da53372 100644 --- a/src/runtime/virtcontainers/persist/api/config.go +++ b/src/runtime/virtcontainers/persist/api/config.go @@ -184,14 +184,6 @@ type HypervisorConfig struct { // VirtioMem is used to enable/disable virtio-mem VirtioMem bool - // Realtime Used to enable/disable realtime - Realtime bool - - // Mlock is used to control memory locking when Realtime is enabled - // Realtime=true and Mlock=false, allows for swapping out of VM memory - // enabling higher density - Mlock bool - // DisableNestingChecks is used to override customizations performed // when running on top of another VMM. DisableNestingChecks bool diff --git a/src/runtime/virtcontainers/pkg/annotations/annotations.go b/src/runtime/virtcontainers/pkg/annotations/annotations.go index 5161e84b1..517a3ac89 100644 --- a/src/runtime/virtcontainers/pkg/annotations/annotations.go +++ b/src/runtime/virtcontainers/pkg/annotations/annotations.go @@ -152,10 +152,6 @@ const ( // MemPrealloc is a sandbox annotation that specifies the memory space used for nvdimm device by the hypervisor. MemPrealloc = kataAnnotHypervisorPrefix + "enable_mem_prealloc" - // EnableSwap is a sandbox annotation to enable swap of vm memory. - // The behaviour is undefined if mem_prealloc is also set to true - EnableSwap = kataAnnotHypervisorPrefix + "enable_swap" - // HugePages is a sandbox annotation to specify if the memory should be pre-allocated from huge pages HugePages = kataAnnotHypervisorPrefix + "enable_hugepages" diff --git a/src/runtime/virtcontainers/qemu.go b/src/runtime/virtcontainers/qemu.go index 3c82568bd..37a6d4035 100644 --- a/src/runtime/virtcontainers/qemu.go +++ b/src/runtime/virtcontainers/qemu.go @@ -500,8 +500,6 @@ func (q *qemu) CreateVM(ctx context.Context, id string, networkNS NetworkNamespa Daemonize: true, MemPrealloc: q.config.MemPrealloc, HugePages: q.config.HugePages, - Realtime: q.config.Realtime, - Mlock: q.config.Mlock, IOMMUPlatform: q.config.IOMMUPlatform, } From f4a4c3c76a7528cbdb8057e53d4515aea38331a0 Mon Sep 17 00:00:00 2001 From: Eric Ernst Date: Tue, 18 Jan 2022 21:34:22 -0800 Subject: [PATCH 309/385] version: bump to kubernetes 1.23 Current latest release is 1.23.1. Let's update to this version for our integration testing. Fixes: #3477 Signed-off-by: Eric Ernst --- versions.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions.yaml b/versions.yaml index aed5dc1a9..ab364dab1 100644 --- a/versions.yaml +++ b/versions.yaml @@ -209,7 +209,7 @@ externals: uscan-url: >- https://github.com/kubernetes/kubernetes/tags .*/v?([\d\.]+)\.tar\.gz - version: "1.22.0-00" + version: "1.23.1-00" libseccomp: description: "High level interface to Linux seccomp filter" From c3785f6665d3d8baf28d837b5adbdf5752f93f8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Wed, 19 Jan 2022 11:05:58 +0100 Subject: [PATCH 310/385] workflows: Fix typo in kata-deploy-push action MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A `:` was missed when d87ab14fa7c2244a631189083cceb6344ae9f306 was introduced. Fixes: #3485 Signed-off-by: Fabiano Fidêncio --- .github/workflows/kata-deploy-push.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/kata-deploy-push.yaml b/.github/workflows/kata-deploy-push.yaml index 39b10a550..0de874930 100644 --- a/.github/workflows/kata-deploy-push.yaml +++ b/.github/workflows/kata-deploy-push.yaml @@ -9,7 +9,7 @@ on: - synchronize - labeled - unlabeled - push + push: jobs: build-asset: From a8b66de5e84fb3ec5851684bf7c4bff8939240d8 Mon Sep 17 00:00:00 2001 From: Manabu Sugimoto Date: Wed, 19 Jan 2022 19:20:20 +0900 Subject: [PATCH 311/385] release: Escape backticks in Libseccomp Notices Escape (with backslash) backticks (`) to prevent them from being evaluated by the shell. Fixes: #3487 Signed-off-by: Manabu Sugimoto --- tools/packaging/release/release-notes.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/packaging/release/release-notes.sh b/tools/packaging/release/release-notes.sh index 3babc75fe..acf543bcf 100755 --- a/tools/packaging/release/release-notes.sh +++ b/tools/packaging/release/release-notes.sh @@ -114,16 +114,16 @@ Kata Containers ${runtime_version} support the OCI Runtime Specification [${oci_ Kata Containers ${runtime_version} is compatible with Kubernetes ${kubernetes_version} ## Libseccomp Notices -The `kata-agent` binaries inside the Kata Containers images provided with this release are +The \`kata-agent\` binaries inside the Kata Containers images provided with this release are statically linked with the following [GNU LGPL-2.1][lgpl-2.1] licensed libseccomp library. -* [`libseccomp`][libseccomp] +* [\`libseccomp\`][libseccomp] -The `kata-agent` uses the libseccomp v${libseccomp_version} which is not modified from the upstream version. +The \`kata-agent\` uses the libseccomp v${libseccomp_version} which is not modified from the upstream version. However, in order to comply with the LGPL-2.1 (§6(a)), we attach the complete source code for the library. -If you want to use the `kata-agent` which is not statically linked with the library, you can build -a custom `kata-agent` that does not use the library from sources. +If you want to use the \`kata-agent\` which is not statically linked with the library, you can build +a custom \`kata-agent\` that does not use the library from sources. For the details, please check the [developer guide][custom-agent-doc]. ## Kata Linux Containers image From 8cc088b54050198fafb0d371d411fda765cce41d Mon Sep 17 00:00:00 2001 From: Gabriela Cervantes Date: Wed, 19 Jan 2022 15:53:37 +0000 Subject: [PATCH 312/385] packaging: Remove kata-pkgsync tool This PR removes the kata-pkgsync tool that is mainly used for OBS packages, currently for kata 2.0 we do not have OBS packages and this tool is not being used for kata 2.0 Fixes #3493 Signed-off-by: Gabriela Cervantes --- tools/packaging/cmd/kata-pkgsync/Gopkg.lock | 98 - tools/packaging/cmd/kata-pkgsync/Gopkg.toml | 54 - tools/packaging/cmd/kata-pkgsync/Makefile | 35 - tools/packaging/cmd/kata-pkgsync/README.md | 54 - tools/packaging/cmd/kata-pkgsync/VERSION | 1 - .../packaging/cmd/kata-pkgsync/cli/config.go | 39 - tools/packaging/cmd/kata-pkgsync/cli/main.go | 295 -- .../cmd/kata-pkgsync/cli/packagecloud.go | 69 - tools/packaging/cmd/kata-pkgsync/cli/utils.go | 26 - .../cmd/kata-pkgsync/config-example.yaml | 92 - .../go-windows-terminal-sequences/LICENSE | 9 - .../go-windows-terminal-sequences/README.md | 41 - .../go-windows-terminal-sequences/go.mod | 1 - .../sequences.go | 36 - .../sequences_dummy.go | 11 - .../vendor/github.com/marcov/obsgo/Makefile | 8 - .../vendor/github.com/marcov/obsgo/README.md | 8 - .../vendor/github.com/marcov/obsgo/api.go | 124 - .../vendor/github.com/marcov/obsgo/obs.go | 223 -- .../github.com/mattn/go-runewidth/.travis.yml | 8 - .../github.com/mattn/go-runewidth/LICENSE | 21 - .../github.com/mattn/go-runewidth/README.mkd | 27 - .../mattn/go-runewidth/runewidth.go | 977 ------ .../mattn/go-runewidth/runewidth_appengine.go | 8 - .../mattn/go-runewidth/runewidth_js.go | 9 - .../mattn/go-runewidth/runewidth_posix.go | 79 - .../mattn/go-runewidth/runewidth_windows.go | 28 - .../github.com/mlafeldt/pkgcloud/.travis.yml | 20 - .../github.com/mlafeldt/pkgcloud/LICENSE | 202 -- .../github.com/mlafeldt/pkgcloud/Makefile | 21 - .../github.com/mlafeldt/pkgcloud/README.md | 40 - .../github.com/mlafeldt/pkgcloud/distros.go | 108 - .../mlafeldt/pkgcloud/gendistros.py | 34 - .../github.com/mlafeldt/pkgcloud/pkgcloud.go | 241 -- .../mlafeldt/pkgcloud/upload/upload.go | 45 - .../github.com/peterhellberg/link/.travis.yml | 7 - .../github.com/peterhellberg/link/README.md | 81 - .../github.com/peterhellberg/link/doc.go | 40 - .../github.com/peterhellberg/link/link.go | 111 - .../vendor/github.com/pkg/errors/.gitignore | 24 - .../vendor/github.com/pkg/errors/.travis.yml | 15 - .../vendor/github.com/pkg/errors/LICENSE | 23 - .../vendor/github.com/pkg/errors/README.md | 52 - .../vendor/github.com/pkg/errors/appveyor.yml | 32 - .../vendor/github.com/pkg/errors/errors.go | 282 -- .../vendor/github.com/pkg/errors/stack.go | 147 - .../github.com/sirupsen/logrus/.gitignore | 2 - .../github.com/sirupsen/logrus/.travis.yml | 21 - .../github.com/sirupsen/logrus/CHANGELOG.md | 198 -- .../vendor/github.com/sirupsen/logrus/LICENSE | 21 - .../github.com/sirupsen/logrus/README.md | 495 --- .../github.com/sirupsen/logrus/alt_exit.go | 76 - .../github.com/sirupsen/logrus/appveyor.yml | 14 - .../vendor/github.com/sirupsen/logrus/doc.go | 26 - .../github.com/sirupsen/logrus/entry.go | 407 --- .../github.com/sirupsen/logrus/exported.go | 225 -- .../github.com/sirupsen/logrus/formatter.go | 78 - .../vendor/github.com/sirupsen/logrus/go.mod | 10 - .../vendor/github.com/sirupsen/logrus/go.sum | 13 - .../github.com/sirupsen/logrus/hooks.go | 34 - .../sirupsen/logrus/json_formatter.go | 121 - .../github.com/sirupsen/logrus/logger.go | 351 -- .../github.com/sirupsen/logrus/logrus.go | 186 - .../logrus/terminal_check_appengine.go | 11 - .../sirupsen/logrus/terminal_check_bsd.go | 13 - .../sirupsen/logrus/terminal_check_js.go | 11 - .../logrus/terminal_check_notappengine.go | 17 - .../sirupsen/logrus/terminal_check_unix.go | 13 - .../sirupsen/logrus/terminal_check_windows.go | 20 - .../sirupsen/logrus/terminal_notwindows.go | 8 - .../sirupsen/logrus/terminal_windows.go | 18 - .../sirupsen/logrus/text_formatter.go | 299 -- .../github.com/sirupsen/logrus/writer.go | 64 - .../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 - .../golang.org/x/sys/unix/asm_aix_ppc64.s | 17 - .../golang.org/x/sys/unix/asm_darwin_386.s | 29 - .../golang.org/x/sys/unix/asm_darwin_amd64.s | 29 - .../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 - .../golang.org/x/sys/unix/asm_linux_386.s | 65 - .../golang.org/x/sys/unix/asm_linux_amd64.s | 57 - .../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 - .../golang.org/x/sys/unix/asm_netbsd_386.s | 29 - .../golang.org/x/sys/unix/asm_netbsd_amd64.s | 29 - .../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 - .../golang.org/x/sys/unix/cap_freebsd.go | 195 -- .../vendor/golang.org/x/sys/unix/constants.go | 13 - .../golang.org/x/sys/unix/dev_aix_ppc.go | 27 - .../golang.org/x/sys/unix/dev_aix_ppc64.go | 29 - .../golang.org/x/sys/unix/dev_darwin.go | 24 - .../golang.org/x/sys/unix/dev_dragonfly.go | 30 - .../golang.org/x/sys/unix/dev_freebsd.go | 30 - .../vendor/golang.org/x/sys/unix/dev_linux.go | 42 - .../golang.org/x/sys/unix/dev_netbsd.go | 29 - .../golang.org/x/sys/unix/dev_openbsd.go | 29 - .../vendor/golang.org/x/sys/unix/dirent.go | 17 - .../golang.org/x/sys/unix/endian_big.go | 9 - .../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 - .../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 -- .../golang.org/x/sys/unix/mkasm_darwin.go | 61 - .../vendor/golang.org/x/sys/unix/mkerrors.sh | 662 ---- .../vendor/golang.org/x/sys/unix/mkpost.go | 115 - .../vendor/golang.org/x/sys/unix/mksyscall.go | 407 --- .../x/sys/unix/mksyscall_aix_ppc.go | 415 --- .../x/sys/unix/mksyscall_aix_ppc64.go | 614 ---- .../x/sys/unix/mksyscall_solaris.go | 335 -- .../golang.org/x/sys/unix/mksysctl_openbsd.go | 355 -- .../vendor/golang.org/x/sys/unix/mksysnum.go | 190 -- .../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 - .../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 - .../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 - .../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 - .../golang.org/x/sys/unix/syscall_linux.go | 1853 ---------- .../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 | 287 -- .../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 - .../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 - .../golang.org/x/sys/unix/timestruct.go | 82 - .../vendor/golang.org/x/sys/unix/types_aix.go | 236 -- .../golang.org/x/sys/unix/types_darwin.go | 283 -- .../golang.org/x/sys/unix/types_dragonfly.go | 263 -- .../golang.org/x/sys/unix/types_freebsd.go | 356 -- .../golang.org/x/sys/unix/types_netbsd.go | 289 -- .../golang.org/x/sys/unix/types_openbsd.go | 282 -- .../golang.org/x/sys/unix/types_solaris.go | 266 -- .../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 | 2934 ---------------- .../x/sys/unix/zerrors_linux_amd64.go | 2934 ---------------- .../x/sys/unix/zerrors_linux_arm.go | 2940 ---------------- .../x/sys/unix/zerrors_linux_arm64.go | 2925 ---------------- .../x/sys/unix/zerrors_linux_mips.go | 2941 ---------------- .../x/sys/unix/zerrors_linux_mips64.go | 2941 ---------------- .../x/sys/unix/zerrors_linux_mips64le.go | 2941 ---------------- .../x/sys/unix/zerrors_linux_mipsle.go | 2941 ---------------- .../x/sys/unix/zerrors_linux_ppc64.go | 2996 ----------------- .../x/sys/unix/zerrors_linux_ppc64le.go | 2996 ----------------- .../x/sys/unix/zerrors_linux_riscv64.go | 2921 ---------------- .../x/sys/unix/zerrors_linux_s390x.go | 2994 ---------------- .../x/sys/unix/zerrors_linux_sparc64.go | 2990 ---------------- .../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 | 2383 ------------- .../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 | 426 --- .../x/sys/unix/zsysnum_linux_amd64.go | 348 -- .../x/sys/unix/zsysnum_linux_arm.go | 390 --- .../x/sys/unix/zsysnum_linux_arm64.go | 293 -- .../x/sys/unix/zsysnum_linux_mips.go | 411 --- .../x/sys/unix/zsysnum_linux_mips64.go | 341 -- .../x/sys/unix/zsysnum_linux_mips64le.go | 341 -- .../x/sys/unix/zsysnum_linux_mipsle.go | 411 --- .../x/sys/unix/zsysnum_linux_ppc64.go | 390 --- .../x/sys/unix/zsysnum_linux_ppc64le.go | 390 --- .../x/sys/unix/zsysnum_linux_riscv64.go | 292 -- .../x/sys/unix/zsysnum_linux_s390x.go | 355 -- .../x/sys/unix/zsysnum_linux_sparc64.go | 370 -- .../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 | 2467 -------------- .../x/sys/unix/ztypes_linux_amd64.go | 2480 -------------- .../golang.org/x/sys/unix/ztypes_linux_arm.go | 2458 -------------- .../x/sys/unix/ztypes_linux_arm64.go | 2459 -------------- .../x/sys/unix/ztypes_linux_mips.go | 2464 -------------- .../x/sys/unix/ztypes_linux_mips64.go | 2461 -------------- .../x/sys/unix/ztypes_linux_mips64le.go | 2461 -------------- .../x/sys/unix/ztypes_linux_mipsle.go | 2464 -------------- .../x/sys/unix/ztypes_linux_ppc64.go | 2469 -------------- .../x/sys/unix/ztypes_linux_ppc64le.go | 2469 -------------- .../x/sys/unix/ztypes_linux_riscv64.go | 2486 -------------- .../x/sys/unix/ztypes_linux_s390x.go | 2483 -------------- .../x/sys/unix/ztypes_linux_sparc64.go | 2464 -------------- .../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 --- .../gopkg.in/cheggaaa/pb.v1/.travis.yml | 9 - .../vendor/gopkg.in/cheggaaa/pb.v1/LICENSE | 12 - .../vendor/gopkg.in/cheggaaa/pb.v1/README.md | 177 - .../vendor/gopkg.in/cheggaaa/pb.v1/format.go | 125 - .../vendor/gopkg.in/cheggaaa/pb.v1/pb.go | 500 --- .../gopkg.in/cheggaaa/pb.v1/pb_appengine.go | 11 - .../vendor/gopkg.in/cheggaaa/pb.v1/pb_win.go | 143 - .../vendor/gopkg.in/cheggaaa/pb.v1/pb_x.go | 118 - .../vendor/gopkg.in/cheggaaa/pb.v1/pool.go | 104 - .../gopkg.in/cheggaaa/pb.v1/pool_win.go | 45 - .../vendor/gopkg.in/cheggaaa/pb.v1/pool_x.go | 29 - .../vendor/gopkg.in/cheggaaa/pb.v1/reader.go | 25 - .../gopkg.in/cheggaaa/pb.v1/runecount.go | 17 - .../gopkg.in/cheggaaa/pb.v1/termios_bsd.go | 9 - .../gopkg.in/cheggaaa/pb.v1/termios_sysv.go | 13 - .../vendor/gopkg.in/yaml.v2/.travis.yml | 12 - .../vendor/gopkg.in/yaml.v2/LICENSE | 201 -- .../vendor/gopkg.in/yaml.v2/LICENSE.libyaml | 31 - .../vendor/gopkg.in/yaml.v2/NOTICE | 13 - .../vendor/gopkg.in/yaml.v2/README.md | 133 - .../vendor/gopkg.in/yaml.v2/apic.go | 739 ---- .../vendor/gopkg.in/yaml.v2/decode.go | 775 ----- .../vendor/gopkg.in/yaml.v2/emitterc.go | 1685 --------- .../vendor/gopkg.in/yaml.v2/encode.go | 390 --- .../vendor/gopkg.in/yaml.v2/go.mod | 5 - .../vendor/gopkg.in/yaml.v2/parserc.go | 1095 ------ .../vendor/gopkg.in/yaml.v2/readerc.go | 412 --- .../vendor/gopkg.in/yaml.v2/resolve.go | 258 -- .../vendor/gopkg.in/yaml.v2/scannerc.go | 2696 --------------- .../vendor/gopkg.in/yaml.v2/sorter.go | 113 - .../vendor/gopkg.in/yaml.v2/writerc.go | 26 - .../vendor/gopkg.in/yaml.v2/yaml.go | 466 --- .../vendor/gopkg.in/yaml.v2/yamlh.go | 738 ---- .../vendor/gopkg.in/yaml.v2/yamlprivateh.go | 173 - 390 files changed, 244284 deletions(-) delete mode 100644 tools/packaging/cmd/kata-pkgsync/Gopkg.lock delete mode 100644 tools/packaging/cmd/kata-pkgsync/Gopkg.toml delete mode 100644 tools/packaging/cmd/kata-pkgsync/Makefile delete mode 100644 tools/packaging/cmd/kata-pkgsync/README.md delete mode 120000 tools/packaging/cmd/kata-pkgsync/VERSION delete mode 100644 tools/packaging/cmd/kata-pkgsync/cli/config.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/cli/main.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/cli/packagecloud.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/cli/utils.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/config-example.yaml delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/konsorten/go-windows-terminal-sequences/LICENSE delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/konsorten/go-windows-terminal-sequences/README.md delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/konsorten/go-windows-terminal-sequences/go.mod delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/konsorten/go-windows-terminal-sequences/sequences.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/konsorten/go-windows-terminal-sequences/sequences_dummy.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/marcov/obsgo/Makefile delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/marcov/obsgo/README.md delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/marcov/obsgo/api.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/marcov/obsgo/obs.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/.travis.yml delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/LICENSE delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/README.mkd delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/runewidth.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/runewidth_appengine.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/runewidth_js.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/runewidth_posix.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/runewidth_windows.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/.travis.yml delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/LICENSE delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/Makefile delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/README.md delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/distros.go delete mode 100755 tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/gendistros.py delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/pkgcloud.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/upload/upload.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/peterhellberg/link/.travis.yml delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/peterhellberg/link/README.md delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/peterhellberg/link/doc.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/peterhellberg/link/link.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/.gitignore delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/.travis.yml delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/LICENSE delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/README.md delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/appveyor.yml delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/errors.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/stack.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/.gitignore delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/.travis.yml delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/CHANGELOG.md delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/LICENSE delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/README.md delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/alt_exit.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/appveyor.yml delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/doc.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/entry.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/exported.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/formatter.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/go.mod delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/go.sum delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/hooks.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/json_formatter.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/logger.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/logrus.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_appengine.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_bsd.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_js.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_notappengine.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_unix.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_windows.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_notwindows.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_windows.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/text_formatter.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/writer.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/AUTHORS delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/CONTRIBUTORS delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/LICENSE delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/PATENTS delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/.gitignore delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/README.md delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/affinity_linux.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/aliases.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_darwin_386.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_darwin_amd64.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_darwin_arm.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_darwin_arm64.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_freebsd_386.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_freebsd_arm.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_386.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_amd64.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_arm.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_arm64.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_s390x.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_netbsd_386.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_netbsd_arm.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_openbsd_386.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/bluetooth_linux.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/cap_freebsd.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/constants.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_aix_ppc.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_darwin.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_dragonfly.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_freebsd.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_linux.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_netbsd.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_openbsd.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dirent.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/endian_big.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/endian_little.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/env_unix.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/errors_freebsd_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/errors_freebsd_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/fcntl.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/fcntl_darwin.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/gccgo.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/gccgo_c.c delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ioctl.go delete mode 100755 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mkall.sh delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mkasm_darwin.go delete mode 100755 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mkerrors.sh delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mkpost.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksyscall.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksyscall_solaris.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksysctl_openbsd.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksysnum.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/pagesize_unix.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/pledge_openbsd.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/race.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/race0.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/sockcmsg_linux.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/sockcmsg_unix.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/str.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_aix.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_bsd.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_dragonfly.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_freebsd.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_gc.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_netbsd.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_openbsd.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_solaris.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_unix.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_unix_gc.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/timestruct.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_aix.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_darwin.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_dragonfly.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_freebsd.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_netbsd.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_openbsd.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_solaris.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/unveil_openbsd.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/xattr_bsd.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zptrace386_linux.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zptracearm_linux.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zptracemips_linux.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zptracemipsle_linux.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/.travis.yml delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/LICENSE delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/README.md delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/format.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pb.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pb_appengine.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pb_win.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pb_x.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pool.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pool_win.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pool_x.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/reader.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/runecount.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/termios_bsd.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/termios_sysv.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/.travis.yml delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/LICENSE delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/LICENSE.libyaml delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/NOTICE delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/README.md delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/apic.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/decode.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/emitterc.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/encode.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/go.mod delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/parserc.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/readerc.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/resolve.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/scannerc.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/sorter.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/writerc.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/yaml.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/yamlh.go delete mode 100644 tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/yamlprivateh.go diff --git a/tools/packaging/cmd/kata-pkgsync/Gopkg.lock b/tools/packaging/cmd/kata-pkgsync/Gopkg.lock deleted file mode 100644 index 14c86bf36..000000000 --- a/tools/packaging/cmd/kata-pkgsync/Gopkg.lock +++ /dev/null @@ -1,98 +0,0 @@ -# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. - - -[[projects]] - digest = "1:31e761d97c76151dde79e9d28964a812c46efc5baee4085b86f68f0c654450de" - name = "github.com/konsorten/go-windows-terminal-sequences" - packages = ["."] - pruneopts = "UT" - revision = "f55edac94c9bbba5d6182a4be46d86a2c9b5b50e" - version = "v1.0.2" - -[[projects]] - digest = "1:c313decd386284f8362473500b0cdc34cedf7c38e73e05412a277446d7adb289" - name = "github.com/marcov/obsgo" - packages = ["."] - pruneopts = "UT" - revision = "8fdb6f03adc7bea403d6bffb1fddf252d970ea72" - version = "0.0.1" - -[[projects]] - digest = "1:0356f3312c9bd1cbeda81505b7fd437501d8e778ab66998ef69f00d7f9b3a0d7" - name = "github.com/mattn/go-runewidth" - packages = ["."] - pruneopts = "UT" - revision = "3ee7d812e62a0804a7d0a324e0249ca2db3476d3" - version = "v0.0.4" - -[[projects]] - digest = "1:c3d9c7aff913b274bb9cc000b57e87b721aa7296eeeb1ae8c0d1ccffcbc20c47" - name = "github.com/mlafeldt/pkgcloud" - packages = [ - ".", - "upload", - ] - pruneopts = "UT" - revision = "926cf4b57c55666f6a386a50c2ab6581d15fd820" - -[[projects]] - digest = "1:e8fcad58263a7511225a674d9c23b9c55aa2f8616e2dab59f184a516f55c6566" - name = "github.com/peterhellberg/link" - packages = ["."] - pruneopts = "UT" - revision = "d1cebc7ea14a5fc0de7cb4a45acae773161642c6" - version = "v1.0.0" - -[[projects]] - digest = "1:cf31692c14422fa27c83a05292eb5cbe0fb2775972e8f1f8446a71549bd8980b" - name = "github.com/pkg/errors" - packages = ["."] - pruneopts = "UT" - revision = "ba968bfe8b2f7e042a574c888954fccecfa385b4" - version = "v0.8.1" - -[[projects]] - digest = "1:fd61cf4ae1953d55df708acb6b91492d538f49c305b364a014049914495db426" - name = "github.com/sirupsen/logrus" - packages = ["."] - pruneopts = "UT" - revision = "8bdbc7bcc01dcbb8ec23dc8a28e332258d25251f" - version = "v1.4.1" - -[[projects]] - branch = "master" - digest = "1:3851a6d548ec5a808e396408f03a30b8d05ef4426db7ad8688f639b2d88b47bd" - name = "golang.org/x/sys" - packages = ["unix"] - pruneopts = "UT" - revision = "61b9204099cb1bebc803c9ffb9b2d3acd9d457d9" - -[[projects]] - digest = "1:d219400f09c151f0ada918bab650ef46f7ebdb1ff4fea923fdcb839481ec7ec1" - name = "gopkg.in/cheggaaa/pb.v1" - packages = ["."] - pruneopts = "UT" - revision = "f907f6f5dd81f77c2bbc1cde92e4c5a04720cb11" - version = "v1.0.28" - -[[projects]] - digest = "1:4d2e5a73dc1500038e504a8d78b986630e3626dc027bc030ba5c75da257cdb96" - name = "gopkg.in/yaml.v2" - packages = ["."] - pruneopts = "UT" - revision = "51d6538a90f86fe93ac480b35f37b2be17fef232" - version = "v2.2.2" - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - input-imports = [ - "github.com/marcov/obsgo", - "github.com/mlafeldt/pkgcloud", - "github.com/pkg/errors", - "github.com/sirupsen/logrus", - "gopkg.in/cheggaaa/pb.v1", - "gopkg.in/yaml.v2", - ] - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/tools/packaging/cmd/kata-pkgsync/Gopkg.toml b/tools/packaging/cmd/kata-pkgsync/Gopkg.toml deleted file mode 100644 index 5604c2529..000000000 --- a/tools/packaging/cmd/kata-pkgsync/Gopkg.toml +++ /dev/null @@ -1,54 +0,0 @@ -# Gopkg.toml example -# -# Refer to https://golang.github.io/dep/docs/Gopkg.toml.html -# for detailed Gopkg.toml documentation. -# -# required = ["github.com/user/thing/cmd/thing"] -# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"] -# -# [[constraint]] -# name = "github.com/user/project" -# version = "1.0.0" -# -# [[constraint]] -# name = "github.com/user/project2" -# branch = "dev" -# source = "github.com/myfork/project2" -# -# [[override]] -# name = "github.com/x/y" -# version = "2.4.0" -# -# [prune] -# non-go = false -# go-tests = true -# unused-packages = true - - -[[constraint]] - version = "0.0.1" - name = "github.com/marcov/obsgo" - -[[constraint]] - revision = "926cf4b57c55666f6a386a50c2ab6581d15fd820" - name = "github.com/mlafeldt/pkgcloud" - -[[constraint]] - name = "github.com/pkg/errors" - version = "0.8.1" - -[[constraint]] - name = "github.com/sirupsen/logrus" - version = "1.4.1" - -[[constraint]] - name = "gopkg.in/cheggaaa/pb.v1" - version = "1.0.28" - -[[constraint]] - name = "gopkg.in/yaml.v2" - version = "2.2.2" - -[prune] - go-tests = true - unused-packages = true diff --git a/tools/packaging/cmd/kata-pkgsync/Makefile b/tools/packaging/cmd/kata-pkgsync/Makefile deleted file mode 100644 index 6b93ae3d7..000000000 --- a/tools/packaging/cmd/kata-pkgsync/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright (c) 2019 SUSE LLC -# -# SPDX-License-Identifier: Apache-2.0 - -TARGET := kata-pkgsync - -# Define the Go source files by searching in each VPATH element. -SOURCES := $(shell find . -type f 2>&1 | grep -E '.*\.go$$') - -ifneq ($(DEBUG),) - DEBUG_FLAGS := -gcflags=all="-N -l" -endif - -VERSION := ${shell cat ./VERSION} -COMMIT_NO := $(shell git rev-parse HEAD 2> /dev/null || true) -COMMIT := $(if $(shell git status --porcelain --untracked-files=no),"${COMMIT_NO}-dirty","${COMMIT_NO}") - -$(TARGET): $(SOURCES) - cd cli && go build $(DEBUG_FLAGS) \ - -ldflags "-X main.name=${TARGET} \ - -X main.commit=${COMMIT} \ - -X main.version=${VERSION}" \ - -o ../$@ - -.PHONY: all -all: $(TARGET) - -.PHONY: clean -clean: - rm -f $(TARGET) - -.PHONY: lint -lint: - golangci-lint run --enable-all cli/... - diff --git a/tools/packaging/cmd/kata-pkgsync/README.md b/tools/packaging/cmd/kata-pkgsync/README.md deleted file mode 100644 index 41d41826d..000000000 --- a/tools/packaging/cmd/kata-pkgsync/README.md +++ /dev/null @@ -1,54 +0,0 @@ -# Kata OBS to Packagecloud sync tool - -`kata-pkgsync` is a tool to synchronize Kata package from OBS to Packagecloud. - -## How it works - -`kata-pkgsync` autonomously discovers OBS packages, repositories, and architectures -in a OBS project. -It can detect: -- which of the binary files published on OBS are already stored on Packagecloud, -- which ones still needs to be synchronized, -- which packages on Packagecloud are orphans, i.e. do not have a corresponding -file published on OBS. - -Based on this information, `kata-pkgsyncs` can download only the necessary -files from OBS, upload them on Packagecloud, and delete orphans Packagecloud packages. - - -## Detailed behaviour - -This is the sequence of tasks executed: - -1. Fetch the configuration from a YAML config file. -2. For each OBS project specified, retrieve the available repositories, -architectures, packages. For each combination of `{repository,architecture,package}`, -retrieve the list of the build artifacts (i.e. the "rpm" / "deb" package files). -3. Get the list of files/packages already uploaded on Packagecloud. -This is to avoid re-uploading packages already sent to Packagecloud. -4. Build a list of files that needs to be synchronized from OBS to Packagecloud, -and identify which of the Packagecloud files have a corresponding file published -on OBS. -5. Download the identified files from OBS. The download phase create a local cache -of packages, to avoid re-downloading files if already done. -6. Upload the identified files to Packagecloud. -7. Optionally, delete orphans files from Packagecloud. - -## Install and Usage - -Install with: -``` -$ go get github.com/kata-containers/kata-containers` -``` - -Create your configuration: -``` -$ cd $GOPATH/src/github.com/kata-containers/kata-containers/tools/packaging/cmd/kata-pkgsync -$ cp config-example.yaml config.yaml -``` - -Run in "default" mode: -``` -$ ~/go/bin/kata-pkgsync -``` -See the help (`kata-pkgsync -h`) for more details. diff --git a/tools/packaging/cmd/kata-pkgsync/VERSION b/tools/packaging/cmd/kata-pkgsync/VERSION deleted file mode 120000 index a4e948506..000000000 --- a/tools/packaging/cmd/kata-pkgsync/VERSION +++ /dev/null @@ -1 +0,0 @@ -../../../../VERSION \ No newline at end of file diff --git a/tools/packaging/cmd/kata-pkgsync/cli/config.go b/tools/packaging/cmd/kata-pkgsync/cli/config.go deleted file mode 100644 index b9bbcc554..000000000 --- a/tools/packaging/cmd/kata-pkgsync/cli/config.go +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) 2017-2018 Intel Corporation -// -// SPDX-License-Identifier: Apache-2.0 -// - -package main - -type CfgOBSProject struct { - Name string - Auth struct { - User string - Password string - } - Releases []string - Archs []string `yaml:"architectures"` -} - -type CfgPackagecloud struct { - Auth struct { - User string - Token string - } - Repo string -} - -type config struct { - // Mapping from OBS "Repositories" to Packagecloud "Distros" - DistroMapping map[string]string `yaml:"distro-mapping"` - OBSProjects map[string]CfgOBSProject `yaml:"obsprojects"` - Packagecloud CfgPackagecloud -} - -func getConfig(configFile string) (config, error) { - var cfg config - if err := yamlUnmarshal(configFile, &cfg); err != nil { - return cfg, err - } - return cfg, nil -} diff --git a/tools/packaging/cmd/kata-pkgsync/cli/main.go b/tools/packaging/cmd/kata-pkgsync/cli/main.go deleted file mode 100644 index db4a6845c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/cli/main.go +++ /dev/null @@ -1,295 +0,0 @@ -// Copyright (c) 2019 SUSE LLC -// -// SPDX-License-Identifier: Apache-2.0 -// - -package main - -import ( - "flag" - "fmt" - "os" - "strings" - - "github.com/marcov/obsgo" - "github.com/mlafeldt/pkgcloud" - "github.com/sirupsen/logrus" - pb "gopkg.in/cheggaaa/pb.v1" -) - -//nolint[:gochecknoglobals] -var ( - // empty variables are set by "go build -ldflags" option - name = "" - version = "" - commit = "" - defaultConfig = "config.yaml" - defaultOBSDest = "obs-packages" -) - -func usage() { - fmt.Fprintf(flag.CommandLine.Output(), `NAME: - %s - Synchronize packages from OBS to Packagecloud - -USAGE: - %s [options] [config file] - -By default %s reads the configuration from a file named %s. This can be -overridden by passing the path to a config file. - -Options: -`, name, name, name, defaultConfig) - - flag.PrintDefaults() -} - -func getOBSProjects(cfgProjects map[string]CfgOBSProject) []obsgo.Project { - var projects []obsgo.Project - - for n, p := range cfgProjects { - proj := obsgo.Project{ - User: p.Auth.User, - Password: p.Auth.Password, - } - - if len(p.Archs) == 0 { - p.Archs = append(p.Archs, "") - } - - if len(p.Releases) == 0 { - p.Releases = append(p.Releases, "") - } - - // Kata projects names format is "project:release:architecture" - for _, arch := range p.Archs { - for _, release := range p.Releases { - var fullname strings.Builder - - fullname.WriteString(n) - if arch != "" { - fmt.Fprintf(&fullname, ":%s", arch) - } - if release != "" { - fmt.Fprintf(&fullname, ":%s", release) - } - - proj.Name = fullname.String() - projects = append(projects, proj) - } - } - } - - return projects -} - -func getXferBinaries(pkg obsgo.PackageInfo, pcDistro string, - pcPackages []pkgcloud.Package, pcPackagesNeeded *[]bool) []obsgo.PkgBinary { - - var xferBins []obsgo.PkgBinary - for _, src := range pkg.Files { - found := false - for i, dst := range pcPackages { - logrus.WithFields(logrus.Fields{ - "source-file": src.Filename, - "source-distro": pcDistro, - "destination-file": dst.Filename, - "destination-distro": dst.DistroVersion, - }).Debug("Checking package") - if pcDistro == dst.DistroVersion && src.Filename == dst.Filename { - logrus.WithFields(logrus.Fields{ - "filename": src.Filename, - "distro": pcDistro, - }).Debug("Package file already on Packagecloud") - found = true - (*pcPackagesNeeded)[i] = true - break - } - } - if !found { - logrus.WithFields(logrus.Fields{ - "filename": src.Filename, - "distro": pcDistro, - }).Debug("Package file NOT on Packagecloud") - xferBins = append(xferBins, src) - } - } - - return xferBins -} - -func main() { - flag.Usage = usage - verbose := flag.Bool("debug", false, "debug mode") - dlPath := flag.String("dir", defaultOBSDest, "Destination directory of packages download from OBS") - dryRun := flag.Bool("dry-run", false, "dry-run mode (do not download/upload files)") - pcDelete := flag.Bool("delete", false, "Delete Packagecloud packages that are not published on OBS") - showVersion := flag.Bool("version", false, "show the version") - - flag.Parse() - - if *showVersion { - fmt.Printf("%s %s (commit %v)\n", name, version, commit) - os.Exit(0) - } - - if *verbose { - fmt.Println("Starting in debug mode...") - logrus.SetLevel(logrus.DebugLevel) - } - - var configFile string - if len(flag.Args()) > 0 { - configFile = flag.Args()[0] - } else { - configFile = defaultConfig - } - logrus.Debugf("Using config file %s", configFile) - - cfg, err := getConfig(configFile) - if err != nil { - logrus.WithError(err).Error("Failed to read config") - os.Exit(-1) - } - logrus.Debugf("Configuration file content: %+v", cfg) - - var pc PCClient - if err := pc.PackagecloudClient( - cfg.Packagecloud.Auth.User, - cfg.Packagecloud.Auth.Token, - cfg.Packagecloud.Repo); err != nil { - logrus.WithError(err).Error("Failed to create a Packagecloud client instance") - os.Exit(-1) - } - logrus.WithFields(logrus.Fields{ - "repo": pc.Repo, - }).Info("Retrieving Packagecloud list of files") - - pcPackages, err := pc.PackagecloudList() - if err != nil { - logrus.WithFields(logrus.Fields{ - "repo": pc.Repo, - "error": err, - }).Error("Failed to retrieve Packagecloud list of files") - os.Exit(-1) - } - - // lookup table for pcPackages packages that should NOT be deleted from Packagecloud - pcPackagesNeeded := make([]bool, len(pcPackages)) - - projects := getOBSProjects(cfg.OBSProjects) - for _, proj := range projects { - logrus.WithFields(logrus.Fields{ - "OBS project": proj.Name, - }).Info("Retrieving packages info") - - obsPackages, err := proj.FindAllPackages() - if err != nil { - logrus.WithError(err).WithFields(logrus.Fields{ - "project": proj.Name, - }).Error("Failed to get OBS packages") - os.Exit(-1) - } - - logrus.WithFields(logrus.Fields{ - "OBS project": proj.Name, - }).Infof("Found %d packages", len(obsPackages)) - - totalXferred := 0 - for _, pkg := range obsPackages { - pcDistro, found := cfg.DistroMapping[pkg.Repo] - if !found { - logrus.WithFields(logrus.Fields{ - "OBS Repo": pkg.Repo, - }).Warn("No mapped Packagecloud distro specified") - os.Exit(-1) - } - - if pcDistro == "" { - logrus.WithFields(logrus.Fields{ - "package": pkg.Name, - "OBS Repo": pkg.Repo, - }).Warn("Repo not supported by Packagecloud") - continue - } - - xferBins := getXferBinaries(pkg, pcDistro, pcPackages, &pcPackagesNeeded) - if len(xferBins) == 0 { - logrus.WithFields(logrus.Fields{ - "package": pkg.Name, - "OBS Repo": pkg.Repo, - }).Infof("All %d files already on Packagecloud", len(pkg.Files)) - continue - } - - logrus.WithFields(logrus.Fields{ - "pkg": pkg.Name, - "repo": pkg.Repo, - "# files": len(xferBins), - }).Info("Downloading from OBS") - - if *dryRun { - continue - } - - pkg.Files = xferBins - paths, err := proj.DownloadPackageFiles(pkg, *dlPath) - if err != nil { - logrus.WithError(err).Warnf("Failed to download binaries for %s on %s/%s", pkg.Name, pc.Repo, pcDistro) - continue - } - - logrus.WithFields(logrus.Fields{ - "pkg": pkg.Name, - "distro": pcDistro, - "# files": len(xferBins), - }).Info("Uploading to Packagecloud") - - err = pc.PackagecloudPush(paths, pcDistro) - if err != nil { - logrus.WithError(err).WithFields(logrus.Fields{ - "package": pkg.Name, - "distro": pcDistro, - }).Error("Failed to push binaries to Packagecloud") - } - - totalXferred += len(xferBins) - } - - logrus.WithFields(logrus.Fields{ - "OBS project": proj.Name, - "Packagecloud Repo": pc.Repo, - }).Infof("Successfully transferred %d files", totalXferred) - } - - if !*pcDelete { - return - } - - logrus.WithFields(logrus.Fields{ - "Repo": pc.Repo, - }).Info("Finding and deleting Packagecloud files not published on OBS") - progressBar := pb.New(len(pcPackages)) - progressBar.SetMaxWidth(100) - progressBar.Start() - totalDeleted := 0 - for i, pkg := range pcPackages { - if !pcPackagesNeeded[i] { - if *dryRun { - continue - } - if err := pc.PackagecloudDelete(pkg.Filename, pkg.DistroVersion); err != nil { - logrus.WithError(err).WithFields(logrus.Fields{ - "name": pkg.Filename, - "distro": pkg.DistroVersion, - }).Error("Failed to delete package on Packagecloud") - } - totalDeleted++ - } - progressBar.Increment() - } - progressBar.Finish() - - logrus.WithFields(logrus.Fields{ - "Packagecloud Repo": pc.Repo, - }).Infof("Deleted %d files", totalDeleted) -} diff --git a/tools/packaging/cmd/kata-pkgsync/cli/packagecloud.go b/tools/packaging/cmd/kata-pkgsync/cli/packagecloud.go deleted file mode 100644 index a673d4b72..000000000 --- a/tools/packaging/cmd/kata-pkgsync/cli/packagecloud.go +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (c) 2017-2018 Intel Corporation -// -// SPDX-License-Identifier: Apache-2.0 -// - -package main - -import ( - "path" - - "github.com/mlafeldt/pkgcloud" - "github.com/sirupsen/logrus" -) - -type PCClient struct { - *pkgcloud.Client - Repo string -} - -func (pc *PCClient) PackagecloudClient(user string, token string, repo string) error { - client, err := pkgcloud.NewClient(token) - if err != nil { - return err - } - - *pc = PCClient{client, path.Join(user, repo)} - pc.ShowProgress(true) - - return nil -} - -func (pc PCClient) PackagecloudList() ([]pkgcloud.Package, error) { - logrus.WithFields(logrus.Fields{ - "repo": pc.Repo, - }).Debug("Packagecloud listing package(s)") - return pc.All(pc.Repo) -} - -func (pc PCClient) PackagecloudSearchPackage(pkg string) ([]pkgcloud.Package, error) { - logrus.WithFields(logrus.Fields{ - "repo": pc.Repo, - "pkg": pkg, - }).Debug("Packagecloud searching package") - return pc.Search(pc.Repo, pkg, "", "", 0) -} - -func (pc PCClient) PackagecloudPush(packages []string, distro string) error { - logrus.WithFields(logrus.Fields{ - "repo": pc.Repo, - "#": len(packages), - "distro": distro, - }).Debug("Packagecloud pushing package") - for _, pkg := range packages { - if err := pc.CreatePackage(pc.Repo, distro, pkg); err != nil { - return err - } - } - - return nil -} - -func (pc PCClient) PackagecloudDelete(filename string, distro string) error { - logrus.WithFields(logrus.Fields{ - "repo": pc.Repo, - "filename": filename, - "distro": distro, - }).Debug("Packagecloud delete package") - return pc.Destroy(pc.Repo, path.Join(distro, filename)) -} diff --git a/tools/packaging/cmd/kata-pkgsync/cli/utils.go b/tools/packaging/cmd/kata-pkgsync/cli/utils.go deleted file mode 100644 index f1199a0bf..000000000 --- a/tools/packaging/cmd/kata-pkgsync/cli/utils.go +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) 2019 SUSE LLC -// -// SPDX-License-Identifier: Apache-2.0 -// - -package main - -import ( - "fmt" - "os" - - "github.com/pkg/errors" - "gopkg.in/yaml.v2" -) - -func yamlUnmarshal(yamlFile string, cfg interface{}) error { - source, err := os.ReadFile(yamlFile) - if err != nil { - return err - } - err = yaml.Unmarshal(source, cfg) - if err != nil { - return errors.Wrapf(err, fmt.Sprintf("cannot unmarshal %s", yamlFile)) - } - return nil -} diff --git a/tools/packaging/cmd/kata-pkgsync/config-example.yaml b/tools/packaging/cmd/kata-pkgsync/config-example.yaml deleted file mode 100644 index 096450f8a..000000000 --- a/tools/packaging/cmd/kata-pkgsync/config-example.yaml +++ /dev/null @@ -1,92 +0,0 @@ -# Copyright (c) 2019 SUSE LLC -# -# SPDX-License-Identifier: Apache-2.0 - -description: | - This file is used by kata-pkgsync for packages synchronization from OBS to - Packagecloud. - It contains information needed to locate and access packages on OBS, - and to push them to Packagecloud. - - The file contains three top level nodes, with the following content: - - obsprojects: - Each of the top-level keys listed here is a full name or base name of - a OBS project. - - In case of full name, the node identifies one OBS project. - - In case of base name, the node identifies multiple OBS projects. The - complete project names are built combining "architectures" and "releases" - children nodes, using the standardized Kata way to name a OBS projects, - i.e. "::" - In this case the node includes a "architectures" list and/or a "releases" - list, e.g.: - - releases: - - master - - alpha - - beta - - architectures: - - x86_64 - - aarch64 - - Each top-level key must include an "auth" node: - auth: - user: username - password: password - - packagecloud: - This node is used to identify the destination Packagecloud repository, - and to provide authentication details. The "token" value is the API - token key that can be obtained from the Packagecloud web interface. - - distro-mapping: - This node provides a mapping between OBS repositories name and - Packagecloud distribution "name" and "version". - On OBS, a package is built for multiple target repositories, to generate - files for different distributions. Repositories names and configurations - are customizable. - Each package uploaded on Packagecloud needs to be assigned to a specified - distribution "name" and "version", referred as "distro/version". - "distro" and "version" are fixed and selected by Packagecloud. - If a OBS repository does not have a corresponding Packagecloud - "distro/version", then it must be specified as a key with an - empty value. - - -obsprojects: - home:katacontainers:releases: - auth: - user: foo - password: bar - - releases: - - master - - stable-1.5 - - stable-1.6 - - architectures: - - x86_64 - -packagecloud: - auth: - user: baz - token: abc1234 - - repo: testing - -distro-mapping: - openSUSE_Leap_15.0: opensuse/15.0 - openSUSE_Leap_42.3: opensuse/42.3 - Fedora_29 : fedora/29 - Fedora_28 : fedora/28 - xUbuntu_18.04 : ubuntu/bionic - xUbuntu_16.04 : ubuntu/xenial - RHEL_7 : el/7 - SLE_12_SP3 : sles/12.3 - Debian_9 : debian/stretch - CentOS_7 : - openSUSE_Tumbleweed: - diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/konsorten/go-windows-terminal-sequences/LICENSE b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/konsorten/go-windows-terminal-sequences/LICENSE deleted file mode 100644 index 14127cd83..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/konsorten/go-windows-terminal-sequences/LICENSE +++ /dev/null @@ -1,9 +0,0 @@ -(The MIT License) - -Copyright (c) 2017 marvin + konsorten GmbH (open-source@konsorten.de) - -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/tools/packaging/cmd/kata-pkgsync/vendor/github.com/konsorten/go-windows-terminal-sequences/README.md b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/konsorten/go-windows-terminal-sequences/README.md deleted file mode 100644 index 195333e51..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/konsorten/go-windows-terminal-sequences/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Windows Terminal Sequences - -This library allow for enabling Windows terminal color support for Go. - -See [Console Virtual Terminal Sequences](https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences) for details. - -## Usage - -```go -import ( - "syscall" - - sequences "github.com/konsorten/go-windows-terminal-sequences" -) - -func main() { - sequences.EnableVirtualTerminalProcessing(syscall.Stdout, true) -} - -``` - -## Authors - -The tool is sponsored by the [marvin + konsorten GmbH](http://www.konsorten.de). - -We thank all the authors who provided code to this library: - -* Felix Kollmann -* Nicolas Perraut - -## License - -(The MIT License) - -Copyright (c) 2018 marvin + konsorten GmbH (open-source@konsorten.de) - -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/tools/packaging/cmd/kata-pkgsync/vendor/github.com/konsorten/go-windows-terminal-sequences/go.mod b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/konsorten/go-windows-terminal-sequences/go.mod deleted file mode 100644 index 716c61312..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/konsorten/go-windows-terminal-sequences/go.mod +++ /dev/null @@ -1 +0,0 @@ -module github.com/konsorten/go-windows-terminal-sequences diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/konsorten/go-windows-terminal-sequences/sequences.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/konsorten/go-windows-terminal-sequences/sequences.go deleted file mode 100644 index ef18d8f97..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/konsorten/go-windows-terminal-sequences/sequences.go +++ /dev/null @@ -1,36 +0,0 @@ -// +build windows - -package sequences - -import ( - "syscall" - "unsafe" -) - -var ( - kernel32Dll *syscall.LazyDLL = syscall.NewLazyDLL("Kernel32.dll") - setConsoleMode *syscall.LazyProc = kernel32Dll.NewProc("SetConsoleMode") -) - -func EnableVirtualTerminalProcessing(stream syscall.Handle, enable bool) error { - const ENABLE_VIRTUAL_TERMINAL_PROCESSING uint32 = 0x4 - - var mode uint32 - err := syscall.GetConsoleMode(syscall.Stdout, &mode) - if err != nil { - return err - } - - if enable { - mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING - } else { - mode &^= ENABLE_VIRTUAL_TERMINAL_PROCESSING - } - - ret, _, err := setConsoleMode.Call(uintptr(unsafe.Pointer(stream)), uintptr(mode)) - if ret == 0 { - return err - } - - return nil -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/konsorten/go-windows-terminal-sequences/sequences_dummy.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/konsorten/go-windows-terminal-sequences/sequences_dummy.go deleted file mode 100644 index df61a6f2f..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/konsorten/go-windows-terminal-sequences/sequences_dummy.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build linux darwin - -package sequences - -import ( - "fmt" -) - -func EnableVirtualTerminalProcessing(stream uintptr, enable bool) error { - return fmt.Errorf("windows only package") -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/marcov/obsgo/Makefile b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/marcov/obsgo/Makefile deleted file mode 100644 index 38fee5cc1..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/marcov/obsgo/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# Copyright (c) 2019 SUSE LLC -# -# SPDX-License-Identifier: Apache-2.0 - -.PHONY: lint -lint: - golangci-lint run --enable-all ./... - diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/marcov/obsgo/README.md b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/marcov/obsgo/README.md deleted file mode 100644 index 33426f082..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/marcov/obsgo/README.md +++ /dev/null @@ -1,8 +0,0 @@ -### obsgo - -Package obsgo implements some of the [Open Build Service APIs](https://build.opensuse.org/apidocs/index) -for interacting with an OBS project from a Go application. - -At the moment uniquely a limited subset of APIs are implemented, focusing on -those needed to retrieve information about packages, and downloading build -artifacts. diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/marcov/obsgo/api.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/marcov/obsgo/api.go deleted file mode 100644 index 164905636..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/marcov/obsgo/api.go +++ /dev/null @@ -1,124 +0,0 @@ -package obsgo - -import ( - "encoding/xml" - "io" - "io/ioutil" - "net/http" - "path" - - "github.com/pkg/errors" - "github.com/sirupsen/logrus" -) - -// Data structure used for XML unmarshaling of the OBS API responses to retrieve -// the list of binaries inside a package. -type PkgBinary struct { - Filename string `xml:"filename,attr"` - Size string `xml:"size,attr"` - Mtime string `xml:"mtime,attr"` -} - -type binaryList struct { - XMLName xml.Name `xml:"binarylist"` - Bins []PkgBinary `xml:"binary"` -} - -type xmlDirList struct { - XMLName xml.Name `xml:"directory"` - Dirs []struct { - Name string `xml:"name,attr"` - } `xml:"entry"` -} - -const ( - apiBaseURL = "https://api.opensuse.org" -) - -func (proj *Project) obsRequest(resource string) (io.ReadCloser, error) { - url := apiBaseURL + path.Join("/build", proj.Name, resource) - logrus.WithFields(logrus.Fields{ - "url": url, - }).Debug("obsRequest") - - req, err := http.NewRequest(http.MethodGet, url, nil) - if err != nil { - return nil, err - } - req.SetBasicAuth(proj.User, proj.Password) - client := &http.Client{} - resp, err := client.Do(req) - if err != nil { - return nil, err - } - - if resp.StatusCode != 200 { - return nil, errors.Errorf("Unexpected HTTP status code: %d", resp.StatusCode) - } - - logrus.Debugf("obsRequest got HTTP response body: %+v", resp.Body) - - return resp.Body, nil -} - -func (proj *Project) listDirectories(path string) ([]string, error) { - resp, err := proj.obsRequest(path) - if err != nil { - return nil, err - } - defer resp.Close() - - xmlResp, err := ioutil.ReadAll(resp) - if err != nil { - return nil, err - } - - var list xmlDirList - err = xml.Unmarshal(xmlResp, &list) - if err != nil { - return nil, err - } - - dirs := make([]string, 0, len(list.Dirs)) - for _, d := range list.Dirs { - dirs = append(dirs, d.Name) - } - return dirs, nil -} - -func (proj *Project) listBinaries(path string) ([]PkgBinary, error) { - var binaries []PkgBinary - - resp, err := proj.obsRequest(path) - if err != nil { - return binaries, err - } - defer resp.Close() - - xmlResp, err := ioutil.ReadAll(resp) - if err != nil { - return binaries, err - } - - var bList binaryList - if err := xml.Unmarshal(xmlResp, &bList); err != nil { - return nil, err - } - - return bList.Bins, nil -} - -func (proj *Project) downloadBinary(path string, dest io.Writer) error { - resp, err := proj.obsRequest(path) - if err != nil { - return err - } - defer resp.Close() - - _, err = io.Copy(dest, resp) - if err != nil { - return err - } - - return nil -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/marcov/obsgo/obs.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/marcov/obsgo/obs.go deleted file mode 100644 index 653cf19ac..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/marcov/obsgo/obs.go +++ /dev/null @@ -1,223 +0,0 @@ -//Package obsgo implements some of the Open Build Service APIs [1] -//for interacting with an OBS project from a Go application. -// -//At the moment uniquely a limited subset of APIs are implemented, focusing on -//those needed to retrieve information about packages, and downloading build -//artifacts. -// -// [1]: https://build.opensuse.org/apidocs/index -package obsgo - -import ( - "fmt" - "os" - "path" - "path/filepath" - "regexp" - "strconv" - - "github.com/pkg/errors" - "github.com/sirupsen/logrus" - pb "gopkg.in/cheggaaa/pb.v1" -) - -// Project represents an OBS project -type Project struct { - // Name of the project - Name string - // Username needed to access the project with APIs - User string - // Password needed to access the project with APIs - Password string -} - -// PackageInfo groups information related to an OBS package. -type PackageInfo struct { - // Name of the package - Name string - // Path of the package used for APIs queries - Path string - // Repository of the package - Repo string - // Architecture of the binary files built for the Package - Arch string - // The list of binary files built for the package - Files []PkgBinary -} - -// Given a PackageInfo instance, returns all binary Package files published -// on the OBS project, whose names match the binaryPackageRE regular expression. -func (proj *Project) PackageBinaries(pkg *PackageInfo) error { - debArchitectures := map[string]string{ - "x86_64": "amd64", - "aarch64": "arm64", - "ppc64le": "ppc64el", - "s390x": "s390x", - } - debArch, ok := debArchitectures[pkg.Arch] - if !ok { - return errors.Errorf("Cannot find corresponding debian architecture to %s", pkg.Arch) - } - debExtensionRE := fmt.Sprintf(`_(all|%s)\.deb`, debArch) - rpmExtensionRE := fmt.Sprintf(`\.(noarch|%s)\.rpm`, pkg.Arch) - binaryPackageRE := fmt.Sprintf(`(%s|%s)$`, rpmExtensionRE, debExtensionRE) - - pkg.Path = path.Join(pkg.Repo, pkg.Arch, pkg.Name) - logrus.WithFields(logrus.Fields{ - "path": pkg.Path, - }).Debug("Retrieving OBS package binaries") - allBins, err := proj.listBinaries(pkg.Path) - if err != nil { - return errors.Wrapf(err, "Failed to get get list of OBS binaries") - } - - re := regexp.MustCompile(binaryPackageRE) - - for _, b := range allBins { - logrus.WithFields(logrus.Fields{ - "file": b, - }).Debug("OBS processing package file") - if re.Match([]byte(b.Filename)) { - pkg.Files = append(pkg.Files, b) - } - } - - return nil -} - -// Returns all the packages files published on the OBS project. -func (proj *Project) FindAllPackages() ([]PackageInfo, error) { - var pkgList []PackageInfo - - logrus.WithFields(logrus.Fields{ - "project": proj.Name, - }).Debug("Finding all OBS packages and files") - - progressBar := pb.New(0) - progressBar.SetMaxWidth(100) - progressBar.Start() - defer progressBar.Finish() - - repos, err := proj.ListRepos() - if err != nil { - return pkgList, errors.Wrapf(err, "failed to get list of repos for project %s\n", proj.Name) - } - - for _, repo := range repos { - archs, err := proj.ListArchs(repo) - if err != nil { - return pkgList, errors.Wrapf(err, "failed to get list of archs for project %s\n", proj.Name) - } - - for _, arch := range archs { - pkgs, err := proj.ListPackages(repo, arch) - if err != nil { - return pkgList, errors.Wrapf(err, "failed to get list of pkgs for project %s\n", proj.Name) - } - - for _, pkg := range pkgs { - if progressBar.Get() == 0 { - progressBar.SetTotal(len(repos) * len(pkgs) * len(archs)) - } - - progressBar.Increment() - - newPkg := PackageInfo{ - Name: pkg, - Repo: repo, - Arch: arch, - } - - err := proj.PackageBinaries(&newPkg) - if err != nil { - return pkgList, err - } - - pkgList = append(pkgList, newPkg) - } - } - } - - return pkgList, nil -} - -// Downloads all the files specified in the passed pkgInfo argument, and returns -// a slice with a list of the locally downloaded files. -func (proj *Project) DownloadPackageFiles(pkgInfo PackageInfo, root string) ([]string, error) { - logrus.WithFields(logrus.Fields{ - "project": proj.Name, - "repo": pkgInfo.Repo, - }).Debug("Downloading OBS package files") - - progressBar := pb.New(len(pkgInfo.Files)) - progressBar.SetMaxWidth(100) - progressBar.Start() - defer progressBar.Finish() - - filePaths := make([]string, 0, len(pkgInfo.Files)) - for _, f := range pkgInfo.Files { - remotePath := path.Join(pkgInfo.Path, f.Filename) - localFile := filepath.Join(root, proj.Name, remotePath) - filePaths = append(filePaths, localFile) - - info, err := os.Stat(localFile) - if !(err == nil || os.IsNotExist(err)) { - return filePaths, err - } - - fsize, err := strconv.Atoi(f.Size) - if err != nil { - return filePaths, errors.Wrapf(err, "could not parse file size %s", localFile) - } - - if info != nil && info.Size() == int64(fsize) { - logrus.WithFields(logrus.Fields{ - "filename": f.Filename, - }).Debug("OBS file already downloaded") - progressBar.Increment() - continue - } - - err = os.MkdirAll(filepath.Dir(localFile), 0700) - if err != nil { - return filePaths, errors.Wrapf(err, "could not mkdir path %s", remotePath) - } - - destFile, err := os.Create(localFile) - if err != nil { - return filePaths, errors.Wrapf(err, "could not create local file %s", localFile) - } - - logrus.WithFields(logrus.Fields{ - "filename": f.Filename, - }).Debug("Downloading OBS file") - - err = proj.downloadBinary(remotePath, destFile) - if err != nil { - return filePaths, errors.Wrapf(err, "could not download binary at %s", remotePath) - } - - progressBar.Increment() - } - - return filePaths, nil -} - -// Returns a string slice with a list of repositories available in the project -// proj. -func (proj *Project) ListRepos() ([]string, error) { - return proj.listDirectories("") -} - -// Returns a string slice with a list of target architectures available in the -// repository repo inside project proj. -func (proj *Project) ListArchs(repo string) ([]string, error) { - return proj.listDirectories(repo) -} - -// Returns a string slice with a list of packages for the given architecture arch, -// repository repo inside the project proj. -func (proj *Project) ListPackages(repo, arch string) ([]string, error) { - url := path.Join(repo, arch) - return proj.listDirectories(url) -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/.travis.yml b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/.travis.yml deleted file mode 100644 index 5c9c2a30f..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: go -go: - - tip -before_install: - - go get github.com/mattn/goveralls - - go get golang.org/x/tools/cmd/cover -script: - - $HOME/gopath/bin/goveralls -repotoken lAKAWPzcGsD3A8yBX3BGGtRUdJ6CaGERL diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/LICENSE b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/LICENSE deleted file mode 100644 index 91b5cef30..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Yasuhiro Matsumoto - -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/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/README.mkd b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/README.mkd deleted file mode 100644 index 66663a94b..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/README.mkd +++ /dev/null @@ -1,27 +0,0 @@ -go-runewidth -============ - -[![Build Status](https://travis-ci.org/mattn/go-runewidth.png?branch=master)](https://travis-ci.org/mattn/go-runewidth) -[![Coverage Status](https://coveralls.io/repos/mattn/go-runewidth/badge.png?branch=HEAD)](https://coveralls.io/r/mattn/go-runewidth?branch=HEAD) -[![GoDoc](https://godoc.org/github.com/mattn/go-runewidth?status.svg)](http://godoc.org/github.com/mattn/go-runewidth) -[![Go Report Card](https://goreportcard.com/badge/github.com/mattn/go-runewidth)](https://goreportcard.com/report/github.com/mattn/go-runewidth) - -Provides functions to get fixed width of the character or string. - -Usage ------ - -```go -runewidth.StringWidth("つのだ☆HIRO") == 12 -``` - - -Author ------- - -Yasuhiro Matsumoto - -License -------- - -under the MIT License: http://mattn.mit-license.org/2013 diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/runewidth.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/runewidth.go deleted file mode 100644 index 3cb94106f..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/runewidth.go +++ /dev/null @@ -1,977 +0,0 @@ -package runewidth - -import ( - "os" -) - -var ( - // EastAsianWidth will be set true if the current locale is CJK - EastAsianWidth bool - - // ZeroWidthJoiner is flag to set to use UTR#51 ZWJ - ZeroWidthJoiner bool - - // DefaultCondition is a condition in current locale - DefaultCondition = &Condition{} -) - -func init() { - handleEnv() -} - -func handleEnv() { - env := os.Getenv("RUNEWIDTH_EASTASIAN") - if env == "" { - EastAsianWidth = IsEastAsian() - } else { - EastAsianWidth = env == "1" - } - // update DefaultCondition - DefaultCondition.EastAsianWidth = EastAsianWidth - DefaultCondition.ZeroWidthJoiner = ZeroWidthJoiner -} - -type interval struct { - first rune - last rune -} - -type table []interval - -func inTables(r rune, ts ...table) bool { - for _, t := range ts { - if inTable(r, t) { - return true - } - } - return false -} - -func inTable(r rune, t table) bool { - // func (t table) IncludesRune(r rune) bool { - if r < t[0].first { - return false - } - - bot := 0 - top := len(t) - 1 - for top >= bot { - mid := (bot + top) >> 1 - - switch { - case t[mid].last < r: - bot = mid + 1 - case t[mid].first > r: - top = mid - 1 - default: - return true - } - } - - return false -} - -var private = table{ - {0x00E000, 0x00F8FF}, {0x0F0000, 0x0FFFFD}, {0x100000, 0x10FFFD}, -} - -var nonprint = table{ - {0x0000, 0x001F}, {0x007F, 0x009F}, {0x00AD, 0x00AD}, - {0x070F, 0x070F}, {0x180B, 0x180E}, {0x200B, 0x200F}, - {0x2028, 0x202E}, {0x206A, 0x206F}, {0xD800, 0xDFFF}, - {0xFEFF, 0xFEFF}, {0xFFF9, 0xFFFB}, {0xFFFE, 0xFFFF}, -} - -var combining = table{ - {0x0300, 0x036F}, {0x0483, 0x0489}, {0x0591, 0x05BD}, - {0x05BF, 0x05BF}, {0x05C1, 0x05C2}, {0x05C4, 0x05C5}, - {0x05C7, 0x05C7}, {0x0610, 0x061A}, {0x064B, 0x065F}, - {0x0670, 0x0670}, {0x06D6, 0x06DC}, {0x06DF, 0x06E4}, - {0x06E7, 0x06E8}, {0x06EA, 0x06ED}, {0x0711, 0x0711}, - {0x0730, 0x074A}, {0x07A6, 0x07B0}, {0x07EB, 0x07F3}, - {0x0816, 0x0819}, {0x081B, 0x0823}, {0x0825, 0x0827}, - {0x0829, 0x082D}, {0x0859, 0x085B}, {0x08D4, 0x08E1}, - {0x08E3, 0x0903}, {0x093A, 0x093C}, {0x093E, 0x094F}, - {0x0951, 0x0957}, {0x0962, 0x0963}, {0x0981, 0x0983}, - {0x09BC, 0x09BC}, {0x09BE, 0x09C4}, {0x09C7, 0x09C8}, - {0x09CB, 0x09CD}, {0x09D7, 0x09D7}, {0x09E2, 0x09E3}, - {0x0A01, 0x0A03}, {0x0A3C, 0x0A3C}, {0x0A3E, 0x0A42}, - {0x0A47, 0x0A48}, {0x0A4B, 0x0A4D}, {0x0A51, 0x0A51}, - {0x0A70, 0x0A71}, {0x0A75, 0x0A75}, {0x0A81, 0x0A83}, - {0x0ABC, 0x0ABC}, {0x0ABE, 0x0AC5}, {0x0AC7, 0x0AC9}, - {0x0ACB, 0x0ACD}, {0x0AE2, 0x0AE3}, {0x0B01, 0x0B03}, - {0x0B3C, 0x0B3C}, {0x0B3E, 0x0B44}, {0x0B47, 0x0B48}, - {0x0B4B, 0x0B4D}, {0x0B56, 0x0B57}, {0x0B62, 0x0B63}, - {0x0B82, 0x0B82}, {0x0BBE, 0x0BC2}, {0x0BC6, 0x0BC8}, - {0x0BCA, 0x0BCD}, {0x0BD7, 0x0BD7}, {0x0C00, 0x0C03}, - {0x0C3E, 0x0C44}, {0x0C46, 0x0C48}, {0x0C4A, 0x0C4D}, - {0x0C55, 0x0C56}, {0x0C62, 0x0C63}, {0x0C81, 0x0C83}, - {0x0CBC, 0x0CBC}, {0x0CBE, 0x0CC4}, {0x0CC6, 0x0CC8}, - {0x0CCA, 0x0CCD}, {0x0CD5, 0x0CD6}, {0x0CE2, 0x0CE3}, - {0x0D01, 0x0D03}, {0x0D3E, 0x0D44}, {0x0D46, 0x0D48}, - {0x0D4A, 0x0D4D}, {0x0D57, 0x0D57}, {0x0D62, 0x0D63}, - {0x0D82, 0x0D83}, {0x0DCA, 0x0DCA}, {0x0DCF, 0x0DD4}, - {0x0DD6, 0x0DD6}, {0x0DD8, 0x0DDF}, {0x0DF2, 0x0DF3}, - {0x0E31, 0x0E31}, {0x0E34, 0x0E3A}, {0x0E47, 0x0E4E}, - {0x0EB1, 0x0EB1}, {0x0EB4, 0x0EB9}, {0x0EBB, 0x0EBC}, - {0x0EC8, 0x0ECD}, {0x0F18, 0x0F19}, {0x0F35, 0x0F35}, - {0x0F37, 0x0F37}, {0x0F39, 0x0F39}, {0x0F3E, 0x0F3F}, - {0x0F71, 0x0F84}, {0x0F86, 0x0F87}, {0x0F8D, 0x0F97}, - {0x0F99, 0x0FBC}, {0x0FC6, 0x0FC6}, {0x102B, 0x103E}, - {0x1056, 0x1059}, {0x105E, 0x1060}, {0x1062, 0x1064}, - {0x1067, 0x106D}, {0x1071, 0x1074}, {0x1082, 0x108D}, - {0x108F, 0x108F}, {0x109A, 0x109D}, {0x135D, 0x135F}, - {0x1712, 0x1714}, {0x1732, 0x1734}, {0x1752, 0x1753}, - {0x1772, 0x1773}, {0x17B4, 0x17D3}, {0x17DD, 0x17DD}, - {0x180B, 0x180D}, {0x1885, 0x1886}, {0x18A9, 0x18A9}, - {0x1920, 0x192B}, {0x1930, 0x193B}, {0x1A17, 0x1A1B}, - {0x1A55, 0x1A5E}, {0x1A60, 0x1A7C}, {0x1A7F, 0x1A7F}, - {0x1AB0, 0x1ABE}, {0x1B00, 0x1B04}, {0x1B34, 0x1B44}, - {0x1B6B, 0x1B73}, {0x1B80, 0x1B82}, {0x1BA1, 0x1BAD}, - {0x1BE6, 0x1BF3}, {0x1C24, 0x1C37}, {0x1CD0, 0x1CD2}, - {0x1CD4, 0x1CE8}, {0x1CED, 0x1CED}, {0x1CF2, 0x1CF4}, - {0x1CF8, 0x1CF9}, {0x1DC0, 0x1DF5}, {0x1DFB, 0x1DFF}, - {0x20D0, 0x20F0}, {0x2CEF, 0x2CF1}, {0x2D7F, 0x2D7F}, - {0x2DE0, 0x2DFF}, {0x302A, 0x302F}, {0x3099, 0x309A}, - {0xA66F, 0xA672}, {0xA674, 0xA67D}, {0xA69E, 0xA69F}, - {0xA6F0, 0xA6F1}, {0xA802, 0xA802}, {0xA806, 0xA806}, - {0xA80B, 0xA80B}, {0xA823, 0xA827}, {0xA880, 0xA881}, - {0xA8B4, 0xA8C5}, {0xA8E0, 0xA8F1}, {0xA926, 0xA92D}, - {0xA947, 0xA953}, {0xA980, 0xA983}, {0xA9B3, 0xA9C0}, - {0xA9E5, 0xA9E5}, {0xAA29, 0xAA36}, {0xAA43, 0xAA43}, - {0xAA4C, 0xAA4D}, {0xAA7B, 0xAA7D}, {0xAAB0, 0xAAB0}, - {0xAAB2, 0xAAB4}, {0xAAB7, 0xAAB8}, {0xAABE, 0xAABF}, - {0xAAC1, 0xAAC1}, {0xAAEB, 0xAAEF}, {0xAAF5, 0xAAF6}, - {0xABE3, 0xABEA}, {0xABEC, 0xABED}, {0xFB1E, 0xFB1E}, - {0xFE00, 0xFE0F}, {0xFE20, 0xFE2F}, {0x101FD, 0x101FD}, - {0x102E0, 0x102E0}, {0x10376, 0x1037A}, {0x10A01, 0x10A03}, - {0x10A05, 0x10A06}, {0x10A0C, 0x10A0F}, {0x10A38, 0x10A3A}, - {0x10A3F, 0x10A3F}, {0x10AE5, 0x10AE6}, {0x11000, 0x11002}, - {0x11038, 0x11046}, {0x1107F, 0x11082}, {0x110B0, 0x110BA}, - {0x11100, 0x11102}, {0x11127, 0x11134}, {0x11173, 0x11173}, - {0x11180, 0x11182}, {0x111B3, 0x111C0}, {0x111CA, 0x111CC}, - {0x1122C, 0x11237}, {0x1123E, 0x1123E}, {0x112DF, 0x112EA}, - {0x11300, 0x11303}, {0x1133C, 0x1133C}, {0x1133E, 0x11344}, - {0x11347, 0x11348}, {0x1134B, 0x1134D}, {0x11357, 0x11357}, - {0x11362, 0x11363}, {0x11366, 0x1136C}, {0x11370, 0x11374}, - {0x11435, 0x11446}, {0x114B0, 0x114C3}, {0x115AF, 0x115B5}, - {0x115B8, 0x115C0}, {0x115DC, 0x115DD}, {0x11630, 0x11640}, - {0x116AB, 0x116B7}, {0x1171D, 0x1172B}, {0x11C2F, 0x11C36}, - {0x11C38, 0x11C3F}, {0x11C92, 0x11CA7}, {0x11CA9, 0x11CB6}, - {0x16AF0, 0x16AF4}, {0x16B30, 0x16B36}, {0x16F51, 0x16F7E}, - {0x16F8F, 0x16F92}, {0x1BC9D, 0x1BC9E}, {0x1D165, 0x1D169}, - {0x1D16D, 0x1D172}, {0x1D17B, 0x1D182}, {0x1D185, 0x1D18B}, - {0x1D1AA, 0x1D1AD}, {0x1D242, 0x1D244}, {0x1DA00, 0x1DA36}, - {0x1DA3B, 0x1DA6C}, {0x1DA75, 0x1DA75}, {0x1DA84, 0x1DA84}, - {0x1DA9B, 0x1DA9F}, {0x1DAA1, 0x1DAAF}, {0x1E000, 0x1E006}, - {0x1E008, 0x1E018}, {0x1E01B, 0x1E021}, {0x1E023, 0x1E024}, - {0x1E026, 0x1E02A}, {0x1E8D0, 0x1E8D6}, {0x1E944, 0x1E94A}, - {0xE0100, 0xE01EF}, -} - -var doublewidth = table{ - {0x1100, 0x115F}, {0x231A, 0x231B}, {0x2329, 0x232A}, - {0x23E9, 0x23EC}, {0x23F0, 0x23F0}, {0x23F3, 0x23F3}, - {0x25FD, 0x25FE}, {0x2614, 0x2615}, {0x2648, 0x2653}, - {0x267F, 0x267F}, {0x2693, 0x2693}, {0x26A1, 0x26A1}, - {0x26AA, 0x26AB}, {0x26BD, 0x26BE}, {0x26C4, 0x26C5}, - {0x26CE, 0x26CE}, {0x26D4, 0x26D4}, {0x26EA, 0x26EA}, - {0x26F2, 0x26F3}, {0x26F5, 0x26F5}, {0x26FA, 0x26FA}, - {0x26FD, 0x26FD}, {0x2705, 0x2705}, {0x270A, 0x270B}, - {0x2728, 0x2728}, {0x274C, 0x274C}, {0x274E, 0x274E}, - {0x2753, 0x2755}, {0x2757, 0x2757}, {0x2795, 0x2797}, - {0x27B0, 0x27B0}, {0x27BF, 0x27BF}, {0x2B1B, 0x2B1C}, - {0x2B50, 0x2B50}, {0x2B55, 0x2B55}, {0x2E80, 0x2E99}, - {0x2E9B, 0x2EF3}, {0x2F00, 0x2FD5}, {0x2FF0, 0x2FFB}, - {0x3000, 0x303E}, {0x3041, 0x3096}, {0x3099, 0x30FF}, - {0x3105, 0x312D}, {0x3131, 0x318E}, {0x3190, 0x31BA}, - {0x31C0, 0x31E3}, {0x31F0, 0x321E}, {0x3220, 0x3247}, - {0x3250, 0x32FE}, {0x3300, 0x4DBF}, {0x4E00, 0xA48C}, - {0xA490, 0xA4C6}, {0xA960, 0xA97C}, {0xAC00, 0xD7A3}, - {0xF900, 0xFAFF}, {0xFE10, 0xFE19}, {0xFE30, 0xFE52}, - {0xFE54, 0xFE66}, {0xFE68, 0xFE6B}, {0xFF01, 0xFF60}, - {0xFFE0, 0xFFE6}, {0x16FE0, 0x16FE0}, {0x17000, 0x187EC}, - {0x18800, 0x18AF2}, {0x1B000, 0x1B001}, {0x1F004, 0x1F004}, - {0x1F0CF, 0x1F0CF}, {0x1F18E, 0x1F18E}, {0x1F191, 0x1F19A}, - {0x1F200, 0x1F202}, {0x1F210, 0x1F23B}, {0x1F240, 0x1F248}, - {0x1F250, 0x1F251}, {0x1F300, 0x1F320}, {0x1F32D, 0x1F335}, - {0x1F337, 0x1F37C}, {0x1F37E, 0x1F393}, {0x1F3A0, 0x1F3CA}, - {0x1F3CF, 0x1F3D3}, {0x1F3E0, 0x1F3F0}, {0x1F3F4, 0x1F3F4}, - {0x1F3F8, 0x1F43E}, {0x1F440, 0x1F440}, {0x1F442, 0x1F4FC}, - {0x1F4FF, 0x1F53D}, {0x1F54B, 0x1F54E}, {0x1F550, 0x1F567}, - {0x1F57A, 0x1F57A}, {0x1F595, 0x1F596}, {0x1F5A4, 0x1F5A4}, - {0x1F5FB, 0x1F64F}, {0x1F680, 0x1F6C5}, {0x1F6CC, 0x1F6CC}, - {0x1F6D0, 0x1F6D2}, {0x1F6EB, 0x1F6EC}, {0x1F6F4, 0x1F6F6}, - {0x1F910, 0x1F91E}, {0x1F920, 0x1F927}, {0x1F930, 0x1F930}, - {0x1F933, 0x1F93E}, {0x1F940, 0x1F94B}, {0x1F950, 0x1F95E}, - {0x1F980, 0x1F991}, {0x1F9C0, 0x1F9C0}, {0x20000, 0x2FFFD}, - {0x30000, 0x3FFFD}, -} - -var ambiguous = table{ - {0x00A1, 0x00A1}, {0x00A4, 0x00A4}, {0x00A7, 0x00A8}, - {0x00AA, 0x00AA}, {0x00AD, 0x00AE}, {0x00B0, 0x00B4}, - {0x00B6, 0x00BA}, {0x00BC, 0x00BF}, {0x00C6, 0x00C6}, - {0x00D0, 0x00D0}, {0x00D7, 0x00D8}, {0x00DE, 0x00E1}, - {0x00E6, 0x00E6}, {0x00E8, 0x00EA}, {0x00EC, 0x00ED}, - {0x00F0, 0x00F0}, {0x00F2, 0x00F3}, {0x00F7, 0x00FA}, - {0x00FC, 0x00FC}, {0x00FE, 0x00FE}, {0x0101, 0x0101}, - {0x0111, 0x0111}, {0x0113, 0x0113}, {0x011B, 0x011B}, - {0x0126, 0x0127}, {0x012B, 0x012B}, {0x0131, 0x0133}, - {0x0138, 0x0138}, {0x013F, 0x0142}, {0x0144, 0x0144}, - {0x0148, 0x014B}, {0x014D, 0x014D}, {0x0152, 0x0153}, - {0x0166, 0x0167}, {0x016B, 0x016B}, {0x01CE, 0x01CE}, - {0x01D0, 0x01D0}, {0x01D2, 0x01D2}, {0x01D4, 0x01D4}, - {0x01D6, 0x01D6}, {0x01D8, 0x01D8}, {0x01DA, 0x01DA}, - {0x01DC, 0x01DC}, {0x0251, 0x0251}, {0x0261, 0x0261}, - {0x02C4, 0x02C4}, {0x02C7, 0x02C7}, {0x02C9, 0x02CB}, - {0x02CD, 0x02CD}, {0x02D0, 0x02D0}, {0x02D8, 0x02DB}, - {0x02DD, 0x02DD}, {0x02DF, 0x02DF}, {0x0300, 0x036F}, - {0x0391, 0x03A1}, {0x03A3, 0x03A9}, {0x03B1, 0x03C1}, - {0x03C3, 0x03C9}, {0x0401, 0x0401}, {0x0410, 0x044F}, - {0x0451, 0x0451}, {0x2010, 0x2010}, {0x2013, 0x2016}, - {0x2018, 0x2019}, {0x201C, 0x201D}, {0x2020, 0x2022}, - {0x2024, 0x2027}, {0x2030, 0x2030}, {0x2032, 0x2033}, - {0x2035, 0x2035}, {0x203B, 0x203B}, {0x203E, 0x203E}, - {0x2074, 0x2074}, {0x207F, 0x207F}, {0x2081, 0x2084}, - {0x20AC, 0x20AC}, {0x2103, 0x2103}, {0x2105, 0x2105}, - {0x2109, 0x2109}, {0x2113, 0x2113}, {0x2116, 0x2116}, - {0x2121, 0x2122}, {0x2126, 0x2126}, {0x212B, 0x212B}, - {0x2153, 0x2154}, {0x215B, 0x215E}, {0x2160, 0x216B}, - {0x2170, 0x2179}, {0x2189, 0x2189}, {0x2190, 0x2199}, - {0x21B8, 0x21B9}, {0x21D2, 0x21D2}, {0x21D4, 0x21D4}, - {0x21E7, 0x21E7}, {0x2200, 0x2200}, {0x2202, 0x2203}, - {0x2207, 0x2208}, {0x220B, 0x220B}, {0x220F, 0x220F}, - {0x2211, 0x2211}, {0x2215, 0x2215}, {0x221A, 0x221A}, - {0x221D, 0x2220}, {0x2223, 0x2223}, {0x2225, 0x2225}, - {0x2227, 0x222C}, {0x222E, 0x222E}, {0x2234, 0x2237}, - {0x223C, 0x223D}, {0x2248, 0x2248}, {0x224C, 0x224C}, - {0x2252, 0x2252}, {0x2260, 0x2261}, {0x2264, 0x2267}, - {0x226A, 0x226B}, {0x226E, 0x226F}, {0x2282, 0x2283}, - {0x2286, 0x2287}, {0x2295, 0x2295}, {0x2299, 0x2299}, - {0x22A5, 0x22A5}, {0x22BF, 0x22BF}, {0x2312, 0x2312}, - {0x2460, 0x24E9}, {0x24EB, 0x254B}, {0x2550, 0x2573}, - {0x2580, 0x258F}, {0x2592, 0x2595}, {0x25A0, 0x25A1}, - {0x25A3, 0x25A9}, {0x25B2, 0x25B3}, {0x25B6, 0x25B7}, - {0x25BC, 0x25BD}, {0x25C0, 0x25C1}, {0x25C6, 0x25C8}, - {0x25CB, 0x25CB}, {0x25CE, 0x25D1}, {0x25E2, 0x25E5}, - {0x25EF, 0x25EF}, {0x2605, 0x2606}, {0x2609, 0x2609}, - {0x260E, 0x260F}, {0x261C, 0x261C}, {0x261E, 0x261E}, - {0x2640, 0x2640}, {0x2642, 0x2642}, {0x2660, 0x2661}, - {0x2663, 0x2665}, {0x2667, 0x266A}, {0x266C, 0x266D}, - {0x266F, 0x266F}, {0x269E, 0x269F}, {0x26BF, 0x26BF}, - {0x26C6, 0x26CD}, {0x26CF, 0x26D3}, {0x26D5, 0x26E1}, - {0x26E3, 0x26E3}, {0x26E8, 0x26E9}, {0x26EB, 0x26F1}, - {0x26F4, 0x26F4}, {0x26F6, 0x26F9}, {0x26FB, 0x26FC}, - {0x26FE, 0x26FF}, {0x273D, 0x273D}, {0x2776, 0x277F}, - {0x2B56, 0x2B59}, {0x3248, 0x324F}, {0xE000, 0xF8FF}, - {0xFE00, 0xFE0F}, {0xFFFD, 0xFFFD}, {0x1F100, 0x1F10A}, - {0x1F110, 0x1F12D}, {0x1F130, 0x1F169}, {0x1F170, 0x1F18D}, - {0x1F18F, 0x1F190}, {0x1F19B, 0x1F1AC}, {0xE0100, 0xE01EF}, - {0xF0000, 0xFFFFD}, {0x100000, 0x10FFFD}, -} - -var emoji = table{ - {0x203C, 0x203C}, {0x2049, 0x2049}, {0x2122, 0x2122}, - {0x2139, 0x2139}, {0x2194, 0x2199}, {0x21A9, 0x21AA}, - {0x231A, 0x231B}, {0x2328, 0x2328}, {0x23CF, 0x23CF}, - {0x23E9, 0x23F3}, {0x23F8, 0x23FA}, {0x24C2, 0x24C2}, - {0x25AA, 0x25AB}, {0x25B6, 0x25B6}, {0x25C0, 0x25C0}, - {0x25FB, 0x25FE}, {0x2600, 0x2604}, {0x260E, 0x260E}, - {0x2611, 0x2611}, {0x2614, 0x2615}, {0x2618, 0x2618}, - {0x261D, 0x261D}, {0x2620, 0x2620}, {0x2622, 0x2623}, - {0x2626, 0x2626}, {0x262A, 0x262A}, {0x262E, 0x262F}, - {0x2638, 0x263A}, {0x2640, 0x2640}, {0x2642, 0x2642}, - {0x2648, 0x2653}, {0x265F, 0x2660}, {0x2663, 0x2663}, - {0x2665, 0x2666}, {0x2668, 0x2668}, {0x267B, 0x267B}, - {0x267E, 0x267F}, {0x2692, 0x2697}, {0x2699, 0x2699}, - {0x269B, 0x269C}, {0x26A0, 0x26A1}, {0x26AA, 0x26AB}, - {0x26B0, 0x26B1}, {0x26BD, 0x26BE}, {0x26C4, 0x26C5}, - {0x26C8, 0x26C8}, {0x26CE, 0x26CF}, {0x26D1, 0x26D1}, - {0x26D3, 0x26D4}, {0x26E9, 0x26EA}, {0x26F0, 0x26F5}, - {0x26F7, 0x26FA}, {0x26FD, 0x26FD}, {0x2702, 0x2702}, - {0x2705, 0x2705}, {0x2708, 0x270D}, {0x270F, 0x270F}, - {0x2712, 0x2712}, {0x2714, 0x2714}, {0x2716, 0x2716}, - {0x271D, 0x271D}, {0x2721, 0x2721}, {0x2728, 0x2728}, - {0x2733, 0x2734}, {0x2744, 0x2744}, {0x2747, 0x2747}, - {0x274C, 0x274C}, {0x274E, 0x274E}, {0x2753, 0x2755}, - {0x2757, 0x2757}, {0x2763, 0x2764}, {0x2795, 0x2797}, - {0x27A1, 0x27A1}, {0x27B0, 0x27B0}, {0x27BF, 0x27BF}, - {0x2934, 0x2935}, {0x2B05, 0x2B07}, {0x2B1B, 0x2B1C}, - {0x2B50, 0x2B50}, {0x2B55, 0x2B55}, {0x3030, 0x3030}, - {0x303D, 0x303D}, {0x3297, 0x3297}, {0x3299, 0x3299}, - {0x1F004, 0x1F004}, {0x1F0CF, 0x1F0CF}, {0x1F170, 0x1F171}, - {0x1F17E, 0x1F17F}, {0x1F18E, 0x1F18E}, {0x1F191, 0x1F19A}, - {0x1F1E6, 0x1F1FF}, {0x1F201, 0x1F202}, {0x1F21A, 0x1F21A}, - {0x1F22F, 0x1F22F}, {0x1F232, 0x1F23A}, {0x1F250, 0x1F251}, - {0x1F300, 0x1F321}, {0x1F324, 0x1F393}, {0x1F396, 0x1F397}, - {0x1F399, 0x1F39B}, {0x1F39E, 0x1F3F0}, {0x1F3F3, 0x1F3F5}, - {0x1F3F7, 0x1F4FD}, {0x1F4FF, 0x1F53D}, {0x1F549, 0x1F54E}, - {0x1F550, 0x1F567}, {0x1F56F, 0x1F570}, {0x1F573, 0x1F57A}, - {0x1F587, 0x1F587}, {0x1F58A, 0x1F58D}, {0x1F590, 0x1F590}, - {0x1F595, 0x1F596}, {0x1F5A4, 0x1F5A5}, {0x1F5A8, 0x1F5A8}, - {0x1F5B1, 0x1F5B2}, {0x1F5BC, 0x1F5BC}, {0x1F5C2, 0x1F5C4}, - {0x1F5D1, 0x1F5D3}, {0x1F5DC, 0x1F5DE}, {0x1F5E1, 0x1F5E1}, - {0x1F5E3, 0x1F5E3}, {0x1F5E8, 0x1F5E8}, {0x1F5EF, 0x1F5EF}, - {0x1F5F3, 0x1F5F3}, {0x1F5FA, 0x1F64F}, {0x1F680, 0x1F6C5}, - {0x1F6CB, 0x1F6D2}, {0x1F6E0, 0x1F6E5}, {0x1F6E9, 0x1F6E9}, - {0x1F6EB, 0x1F6EC}, {0x1F6F0, 0x1F6F0}, {0x1F6F3, 0x1F6F9}, - {0x1F910, 0x1F93A}, {0x1F93C, 0x1F93E}, {0x1F940, 0x1F945}, - {0x1F947, 0x1F970}, {0x1F973, 0x1F976}, {0x1F97A, 0x1F97A}, - {0x1F97C, 0x1F9A2}, {0x1F9B0, 0x1F9B9}, {0x1F9C0, 0x1F9C2}, - {0x1F9D0, 0x1F9FF}, -} - -var notassigned = table{ - {0x0378, 0x0379}, {0x0380, 0x0383}, {0x038B, 0x038B}, - {0x038D, 0x038D}, {0x03A2, 0x03A2}, {0x0530, 0x0530}, - {0x0557, 0x0558}, {0x0560, 0x0560}, {0x0588, 0x0588}, - {0x058B, 0x058C}, {0x0590, 0x0590}, {0x05C8, 0x05CF}, - {0x05EB, 0x05EF}, {0x05F5, 0x05FF}, {0x061D, 0x061D}, - {0x070E, 0x070E}, {0x074B, 0x074C}, {0x07B2, 0x07BF}, - {0x07FB, 0x07FF}, {0x082E, 0x082F}, {0x083F, 0x083F}, - {0x085C, 0x085D}, {0x085F, 0x089F}, {0x08B5, 0x08B5}, - {0x08BE, 0x08D3}, {0x0984, 0x0984}, {0x098D, 0x098E}, - {0x0991, 0x0992}, {0x09A9, 0x09A9}, {0x09B1, 0x09B1}, - {0x09B3, 0x09B5}, {0x09BA, 0x09BB}, {0x09C5, 0x09C6}, - {0x09C9, 0x09CA}, {0x09CF, 0x09D6}, {0x09D8, 0x09DB}, - {0x09DE, 0x09DE}, {0x09E4, 0x09E5}, {0x09FC, 0x0A00}, - {0x0A04, 0x0A04}, {0x0A0B, 0x0A0E}, {0x0A11, 0x0A12}, - {0x0A29, 0x0A29}, {0x0A31, 0x0A31}, {0x0A34, 0x0A34}, - {0x0A37, 0x0A37}, {0x0A3A, 0x0A3B}, {0x0A3D, 0x0A3D}, - {0x0A43, 0x0A46}, {0x0A49, 0x0A4A}, {0x0A4E, 0x0A50}, - {0x0A52, 0x0A58}, {0x0A5D, 0x0A5D}, {0x0A5F, 0x0A65}, - {0x0A76, 0x0A80}, {0x0A84, 0x0A84}, {0x0A8E, 0x0A8E}, - {0x0A92, 0x0A92}, {0x0AA9, 0x0AA9}, {0x0AB1, 0x0AB1}, - {0x0AB4, 0x0AB4}, {0x0ABA, 0x0ABB}, {0x0AC6, 0x0AC6}, - {0x0ACA, 0x0ACA}, {0x0ACE, 0x0ACF}, {0x0AD1, 0x0ADF}, - {0x0AE4, 0x0AE5}, {0x0AF2, 0x0AF8}, {0x0AFA, 0x0B00}, - {0x0B04, 0x0B04}, {0x0B0D, 0x0B0E}, {0x0B11, 0x0B12}, - {0x0B29, 0x0B29}, {0x0B31, 0x0B31}, {0x0B34, 0x0B34}, - {0x0B3A, 0x0B3B}, {0x0B45, 0x0B46}, {0x0B49, 0x0B4A}, - {0x0B4E, 0x0B55}, {0x0B58, 0x0B5B}, {0x0B5E, 0x0B5E}, - {0x0B64, 0x0B65}, {0x0B78, 0x0B81}, {0x0B84, 0x0B84}, - {0x0B8B, 0x0B8D}, {0x0B91, 0x0B91}, {0x0B96, 0x0B98}, - {0x0B9B, 0x0B9B}, {0x0B9D, 0x0B9D}, {0x0BA0, 0x0BA2}, - {0x0BA5, 0x0BA7}, {0x0BAB, 0x0BAD}, {0x0BBA, 0x0BBD}, - {0x0BC3, 0x0BC5}, {0x0BC9, 0x0BC9}, {0x0BCE, 0x0BCF}, - {0x0BD1, 0x0BD6}, {0x0BD8, 0x0BE5}, {0x0BFB, 0x0BFF}, - {0x0C04, 0x0C04}, {0x0C0D, 0x0C0D}, {0x0C11, 0x0C11}, - {0x0C29, 0x0C29}, {0x0C3A, 0x0C3C}, {0x0C45, 0x0C45}, - {0x0C49, 0x0C49}, {0x0C4E, 0x0C54}, {0x0C57, 0x0C57}, - {0x0C5B, 0x0C5F}, {0x0C64, 0x0C65}, {0x0C70, 0x0C77}, - {0x0C84, 0x0C84}, {0x0C8D, 0x0C8D}, {0x0C91, 0x0C91}, - {0x0CA9, 0x0CA9}, {0x0CB4, 0x0CB4}, {0x0CBA, 0x0CBB}, - {0x0CC5, 0x0CC5}, {0x0CC9, 0x0CC9}, {0x0CCE, 0x0CD4}, - {0x0CD7, 0x0CDD}, {0x0CDF, 0x0CDF}, {0x0CE4, 0x0CE5}, - {0x0CF0, 0x0CF0}, {0x0CF3, 0x0D00}, {0x0D04, 0x0D04}, - {0x0D0D, 0x0D0D}, {0x0D11, 0x0D11}, {0x0D3B, 0x0D3C}, - {0x0D45, 0x0D45}, {0x0D49, 0x0D49}, {0x0D50, 0x0D53}, - {0x0D64, 0x0D65}, {0x0D80, 0x0D81}, {0x0D84, 0x0D84}, - {0x0D97, 0x0D99}, {0x0DB2, 0x0DB2}, {0x0DBC, 0x0DBC}, - {0x0DBE, 0x0DBF}, {0x0DC7, 0x0DC9}, {0x0DCB, 0x0DCE}, - {0x0DD5, 0x0DD5}, {0x0DD7, 0x0DD7}, {0x0DE0, 0x0DE5}, - {0x0DF0, 0x0DF1}, {0x0DF5, 0x0E00}, {0x0E3B, 0x0E3E}, - {0x0E5C, 0x0E80}, {0x0E83, 0x0E83}, {0x0E85, 0x0E86}, - {0x0E89, 0x0E89}, {0x0E8B, 0x0E8C}, {0x0E8E, 0x0E93}, - {0x0E98, 0x0E98}, {0x0EA0, 0x0EA0}, {0x0EA4, 0x0EA4}, - {0x0EA6, 0x0EA6}, {0x0EA8, 0x0EA9}, {0x0EAC, 0x0EAC}, - {0x0EBA, 0x0EBA}, {0x0EBE, 0x0EBF}, {0x0EC5, 0x0EC5}, - {0x0EC7, 0x0EC7}, {0x0ECE, 0x0ECF}, {0x0EDA, 0x0EDB}, - {0x0EE0, 0x0EFF}, {0x0F48, 0x0F48}, {0x0F6D, 0x0F70}, - {0x0F98, 0x0F98}, {0x0FBD, 0x0FBD}, {0x0FCD, 0x0FCD}, - {0x0FDB, 0x0FFF}, {0x10C6, 0x10C6}, {0x10C8, 0x10CC}, - {0x10CE, 0x10CF}, {0x1249, 0x1249}, {0x124E, 0x124F}, - {0x1257, 0x1257}, {0x1259, 0x1259}, {0x125E, 0x125F}, - {0x1289, 0x1289}, {0x128E, 0x128F}, {0x12B1, 0x12B1}, - {0x12B6, 0x12B7}, {0x12BF, 0x12BF}, {0x12C1, 0x12C1}, - {0x12C6, 0x12C7}, {0x12D7, 0x12D7}, {0x1311, 0x1311}, - {0x1316, 0x1317}, {0x135B, 0x135C}, {0x137D, 0x137F}, - {0x139A, 0x139F}, {0x13F6, 0x13F7}, {0x13FE, 0x13FF}, - {0x169D, 0x169F}, {0x16F9, 0x16FF}, {0x170D, 0x170D}, - {0x1715, 0x171F}, {0x1737, 0x173F}, {0x1754, 0x175F}, - {0x176D, 0x176D}, {0x1771, 0x1771}, {0x1774, 0x177F}, - {0x17DE, 0x17DF}, {0x17EA, 0x17EF}, {0x17FA, 0x17FF}, - {0x180F, 0x180F}, {0x181A, 0x181F}, {0x1878, 0x187F}, - {0x18AB, 0x18AF}, {0x18F6, 0x18FF}, {0x191F, 0x191F}, - {0x192C, 0x192F}, {0x193C, 0x193F}, {0x1941, 0x1943}, - {0x196E, 0x196F}, {0x1975, 0x197F}, {0x19AC, 0x19AF}, - {0x19CA, 0x19CF}, {0x19DB, 0x19DD}, {0x1A1C, 0x1A1D}, - {0x1A5F, 0x1A5F}, {0x1A7D, 0x1A7E}, {0x1A8A, 0x1A8F}, - {0x1A9A, 0x1A9F}, {0x1AAE, 0x1AAF}, {0x1ABF, 0x1AFF}, - {0x1B4C, 0x1B4F}, {0x1B7D, 0x1B7F}, {0x1BF4, 0x1BFB}, - {0x1C38, 0x1C3A}, {0x1C4A, 0x1C4C}, {0x1C89, 0x1CBF}, - {0x1CC8, 0x1CCF}, {0x1CF7, 0x1CF7}, {0x1CFA, 0x1CFF}, - {0x1DF6, 0x1DFA}, {0x1F16, 0x1F17}, {0x1F1E, 0x1F1F}, - {0x1F46, 0x1F47}, {0x1F4E, 0x1F4F}, {0x1F58, 0x1F58}, - {0x1F5A, 0x1F5A}, {0x1F5C, 0x1F5C}, {0x1F5E, 0x1F5E}, - {0x1F7E, 0x1F7F}, {0x1FB5, 0x1FB5}, {0x1FC5, 0x1FC5}, - {0x1FD4, 0x1FD5}, {0x1FDC, 0x1FDC}, {0x1FF0, 0x1FF1}, - {0x1FF5, 0x1FF5}, {0x1FFF, 0x1FFF}, {0x2065, 0x2065}, - {0x2072, 0x2073}, {0x208F, 0x208F}, {0x209D, 0x209F}, - {0x20BF, 0x20CF}, {0x20F1, 0x20FF}, {0x218C, 0x218F}, - {0x23FF, 0x23FF}, {0x2427, 0x243F}, {0x244B, 0x245F}, - {0x2B74, 0x2B75}, {0x2B96, 0x2B97}, {0x2BBA, 0x2BBC}, - {0x2BC9, 0x2BC9}, {0x2BD2, 0x2BEB}, {0x2BF0, 0x2BFF}, - {0x2C2F, 0x2C2F}, {0x2C5F, 0x2C5F}, {0x2CF4, 0x2CF8}, - {0x2D26, 0x2D26}, {0x2D28, 0x2D2C}, {0x2D2E, 0x2D2F}, - {0x2D68, 0x2D6E}, {0x2D71, 0x2D7E}, {0x2D97, 0x2D9F}, - {0x2DA7, 0x2DA7}, {0x2DAF, 0x2DAF}, {0x2DB7, 0x2DB7}, - {0x2DBF, 0x2DBF}, {0x2DC7, 0x2DC7}, {0x2DCF, 0x2DCF}, - {0x2DD7, 0x2DD7}, {0x2DDF, 0x2DDF}, {0x2E45, 0x2E7F}, - {0x2E9A, 0x2E9A}, {0x2EF4, 0x2EFF}, {0x2FD6, 0x2FEF}, - {0x2FFC, 0x2FFF}, {0x3040, 0x3040}, {0x3097, 0x3098}, - {0x3100, 0x3104}, {0x312E, 0x3130}, {0x318F, 0x318F}, - {0x31BB, 0x31BF}, {0x31E4, 0x31EF}, {0x321F, 0x321F}, - {0x32FF, 0x32FF}, {0x4DB6, 0x4DBF}, {0x9FD6, 0x9FFF}, - {0xA48D, 0xA48F}, {0xA4C7, 0xA4CF}, {0xA62C, 0xA63F}, - {0xA6F8, 0xA6FF}, {0xA7AF, 0xA7AF}, {0xA7B8, 0xA7F6}, - {0xA82C, 0xA82F}, {0xA83A, 0xA83F}, {0xA878, 0xA87F}, - {0xA8C6, 0xA8CD}, {0xA8DA, 0xA8DF}, {0xA8FE, 0xA8FF}, - {0xA954, 0xA95E}, {0xA97D, 0xA97F}, {0xA9CE, 0xA9CE}, - {0xA9DA, 0xA9DD}, {0xA9FF, 0xA9FF}, {0xAA37, 0xAA3F}, - {0xAA4E, 0xAA4F}, {0xAA5A, 0xAA5B}, {0xAAC3, 0xAADA}, - {0xAAF7, 0xAB00}, {0xAB07, 0xAB08}, {0xAB0F, 0xAB10}, - {0xAB17, 0xAB1F}, {0xAB27, 0xAB27}, {0xAB2F, 0xAB2F}, - {0xAB66, 0xAB6F}, {0xABEE, 0xABEF}, {0xABFA, 0xABFF}, - {0xD7A4, 0xD7AF}, {0xD7C7, 0xD7CA}, {0xD7FC, 0xD7FF}, - {0xFA6E, 0xFA6F}, {0xFADA, 0xFAFF}, {0xFB07, 0xFB12}, - {0xFB18, 0xFB1C}, {0xFB37, 0xFB37}, {0xFB3D, 0xFB3D}, - {0xFB3F, 0xFB3F}, {0xFB42, 0xFB42}, {0xFB45, 0xFB45}, - {0xFBC2, 0xFBD2}, {0xFD40, 0xFD4F}, {0xFD90, 0xFD91}, - {0xFDC8, 0xFDEF}, {0xFDFE, 0xFDFF}, {0xFE1A, 0xFE1F}, - {0xFE53, 0xFE53}, {0xFE67, 0xFE67}, {0xFE6C, 0xFE6F}, - {0xFE75, 0xFE75}, {0xFEFD, 0xFEFE}, {0xFF00, 0xFF00}, - {0xFFBF, 0xFFC1}, {0xFFC8, 0xFFC9}, {0xFFD0, 0xFFD1}, - {0xFFD8, 0xFFD9}, {0xFFDD, 0xFFDF}, {0xFFE7, 0xFFE7}, - {0xFFEF, 0xFFF8}, {0xFFFE, 0xFFFF}, {0x1000C, 0x1000C}, - {0x10027, 0x10027}, {0x1003B, 0x1003B}, {0x1003E, 0x1003E}, - {0x1004E, 0x1004F}, {0x1005E, 0x1007F}, {0x100FB, 0x100FF}, - {0x10103, 0x10106}, {0x10134, 0x10136}, {0x1018F, 0x1018F}, - {0x1019C, 0x1019F}, {0x101A1, 0x101CF}, {0x101FE, 0x1027F}, - {0x1029D, 0x1029F}, {0x102D1, 0x102DF}, {0x102FC, 0x102FF}, - {0x10324, 0x1032F}, {0x1034B, 0x1034F}, {0x1037B, 0x1037F}, - {0x1039E, 0x1039E}, {0x103C4, 0x103C7}, {0x103D6, 0x103FF}, - {0x1049E, 0x1049F}, {0x104AA, 0x104AF}, {0x104D4, 0x104D7}, - {0x104FC, 0x104FF}, {0x10528, 0x1052F}, {0x10564, 0x1056E}, - {0x10570, 0x105FF}, {0x10737, 0x1073F}, {0x10756, 0x1075F}, - {0x10768, 0x107FF}, {0x10806, 0x10807}, {0x10809, 0x10809}, - {0x10836, 0x10836}, {0x10839, 0x1083B}, {0x1083D, 0x1083E}, - {0x10856, 0x10856}, {0x1089F, 0x108A6}, {0x108B0, 0x108DF}, - {0x108F3, 0x108F3}, {0x108F6, 0x108FA}, {0x1091C, 0x1091E}, - {0x1093A, 0x1093E}, {0x10940, 0x1097F}, {0x109B8, 0x109BB}, - {0x109D0, 0x109D1}, {0x10A04, 0x10A04}, {0x10A07, 0x10A0B}, - {0x10A14, 0x10A14}, {0x10A18, 0x10A18}, {0x10A34, 0x10A37}, - {0x10A3B, 0x10A3E}, {0x10A48, 0x10A4F}, {0x10A59, 0x10A5F}, - {0x10AA0, 0x10ABF}, {0x10AE7, 0x10AEA}, {0x10AF7, 0x10AFF}, - {0x10B36, 0x10B38}, {0x10B56, 0x10B57}, {0x10B73, 0x10B77}, - {0x10B92, 0x10B98}, {0x10B9D, 0x10BA8}, {0x10BB0, 0x10BFF}, - {0x10C49, 0x10C7F}, {0x10CB3, 0x10CBF}, {0x10CF3, 0x10CF9}, - {0x10D00, 0x10E5F}, {0x10E7F, 0x10FFF}, {0x1104E, 0x11051}, - {0x11070, 0x1107E}, {0x110C2, 0x110CF}, {0x110E9, 0x110EF}, - {0x110FA, 0x110FF}, {0x11135, 0x11135}, {0x11144, 0x1114F}, - {0x11177, 0x1117F}, {0x111CE, 0x111CF}, {0x111E0, 0x111E0}, - {0x111F5, 0x111FF}, {0x11212, 0x11212}, {0x1123F, 0x1127F}, - {0x11287, 0x11287}, {0x11289, 0x11289}, {0x1128E, 0x1128E}, - {0x1129E, 0x1129E}, {0x112AA, 0x112AF}, {0x112EB, 0x112EF}, - {0x112FA, 0x112FF}, {0x11304, 0x11304}, {0x1130D, 0x1130E}, - {0x11311, 0x11312}, {0x11329, 0x11329}, {0x11331, 0x11331}, - {0x11334, 0x11334}, {0x1133A, 0x1133B}, {0x11345, 0x11346}, - {0x11349, 0x1134A}, {0x1134E, 0x1134F}, {0x11351, 0x11356}, - {0x11358, 0x1135C}, {0x11364, 0x11365}, {0x1136D, 0x1136F}, - {0x11375, 0x113FF}, {0x1145A, 0x1145A}, {0x1145C, 0x1145C}, - {0x1145E, 0x1147F}, {0x114C8, 0x114CF}, {0x114DA, 0x1157F}, - {0x115B6, 0x115B7}, {0x115DE, 0x115FF}, {0x11645, 0x1164F}, - {0x1165A, 0x1165F}, {0x1166D, 0x1167F}, {0x116B8, 0x116BF}, - {0x116CA, 0x116FF}, {0x1171A, 0x1171C}, {0x1172C, 0x1172F}, - {0x11740, 0x1189F}, {0x118F3, 0x118FE}, {0x11900, 0x11ABF}, - {0x11AF9, 0x11BFF}, {0x11C09, 0x11C09}, {0x11C37, 0x11C37}, - {0x11C46, 0x11C4F}, {0x11C6D, 0x11C6F}, {0x11C90, 0x11C91}, - {0x11CA8, 0x11CA8}, {0x11CB7, 0x11FFF}, {0x1239A, 0x123FF}, - {0x1246F, 0x1246F}, {0x12475, 0x1247F}, {0x12544, 0x12FFF}, - {0x1342F, 0x143FF}, {0x14647, 0x167FF}, {0x16A39, 0x16A3F}, - {0x16A5F, 0x16A5F}, {0x16A6A, 0x16A6D}, {0x16A70, 0x16ACF}, - {0x16AEE, 0x16AEF}, {0x16AF6, 0x16AFF}, {0x16B46, 0x16B4F}, - {0x16B5A, 0x16B5A}, {0x16B62, 0x16B62}, {0x16B78, 0x16B7C}, - {0x16B90, 0x16EFF}, {0x16F45, 0x16F4F}, {0x16F7F, 0x16F8E}, - {0x16FA0, 0x16FDF}, {0x16FE1, 0x16FFF}, {0x187ED, 0x187FF}, - {0x18AF3, 0x1AFFF}, {0x1B002, 0x1BBFF}, {0x1BC6B, 0x1BC6F}, - {0x1BC7D, 0x1BC7F}, {0x1BC89, 0x1BC8F}, {0x1BC9A, 0x1BC9B}, - {0x1BCA4, 0x1CFFF}, {0x1D0F6, 0x1D0FF}, {0x1D127, 0x1D128}, - {0x1D1E9, 0x1D1FF}, {0x1D246, 0x1D2FF}, {0x1D357, 0x1D35F}, - {0x1D372, 0x1D3FF}, {0x1D455, 0x1D455}, {0x1D49D, 0x1D49D}, - {0x1D4A0, 0x1D4A1}, {0x1D4A3, 0x1D4A4}, {0x1D4A7, 0x1D4A8}, - {0x1D4AD, 0x1D4AD}, {0x1D4BA, 0x1D4BA}, {0x1D4BC, 0x1D4BC}, - {0x1D4C4, 0x1D4C4}, {0x1D506, 0x1D506}, {0x1D50B, 0x1D50C}, - {0x1D515, 0x1D515}, {0x1D51D, 0x1D51D}, {0x1D53A, 0x1D53A}, - {0x1D53F, 0x1D53F}, {0x1D545, 0x1D545}, {0x1D547, 0x1D549}, - {0x1D551, 0x1D551}, {0x1D6A6, 0x1D6A7}, {0x1D7CC, 0x1D7CD}, - {0x1DA8C, 0x1DA9A}, {0x1DAA0, 0x1DAA0}, {0x1DAB0, 0x1DFFF}, - {0x1E007, 0x1E007}, {0x1E019, 0x1E01A}, {0x1E022, 0x1E022}, - {0x1E025, 0x1E025}, {0x1E02B, 0x1E7FF}, {0x1E8C5, 0x1E8C6}, - {0x1E8D7, 0x1E8FF}, {0x1E94B, 0x1E94F}, {0x1E95A, 0x1E95D}, - {0x1E960, 0x1EDFF}, {0x1EE04, 0x1EE04}, {0x1EE20, 0x1EE20}, - {0x1EE23, 0x1EE23}, {0x1EE25, 0x1EE26}, {0x1EE28, 0x1EE28}, - {0x1EE33, 0x1EE33}, {0x1EE38, 0x1EE38}, {0x1EE3A, 0x1EE3A}, - {0x1EE3C, 0x1EE41}, {0x1EE43, 0x1EE46}, {0x1EE48, 0x1EE48}, - {0x1EE4A, 0x1EE4A}, {0x1EE4C, 0x1EE4C}, {0x1EE50, 0x1EE50}, - {0x1EE53, 0x1EE53}, {0x1EE55, 0x1EE56}, {0x1EE58, 0x1EE58}, - {0x1EE5A, 0x1EE5A}, {0x1EE5C, 0x1EE5C}, {0x1EE5E, 0x1EE5E}, - {0x1EE60, 0x1EE60}, {0x1EE63, 0x1EE63}, {0x1EE65, 0x1EE66}, - {0x1EE6B, 0x1EE6B}, {0x1EE73, 0x1EE73}, {0x1EE78, 0x1EE78}, - {0x1EE7D, 0x1EE7D}, {0x1EE7F, 0x1EE7F}, {0x1EE8A, 0x1EE8A}, - {0x1EE9C, 0x1EEA0}, {0x1EEA4, 0x1EEA4}, {0x1EEAA, 0x1EEAA}, - {0x1EEBC, 0x1EEEF}, {0x1EEF2, 0x1EFFF}, {0x1F02C, 0x1F02F}, - {0x1F094, 0x1F09F}, {0x1F0AF, 0x1F0B0}, {0x1F0C0, 0x1F0C0}, - {0x1F0D0, 0x1F0D0}, {0x1F0F6, 0x1F0FF}, {0x1F10D, 0x1F10F}, - {0x1F12F, 0x1F12F}, {0x1F16C, 0x1F16F}, {0x1F1AD, 0x1F1E5}, - {0x1F203, 0x1F20F}, {0x1F23C, 0x1F23F}, {0x1F249, 0x1F24F}, - {0x1F252, 0x1F2FF}, {0x1F6D3, 0x1F6DF}, {0x1F6ED, 0x1F6EF}, - {0x1F6F7, 0x1F6FF}, {0x1F774, 0x1F77F}, {0x1F7D5, 0x1F7FF}, - {0x1F80C, 0x1F80F}, {0x1F848, 0x1F84F}, {0x1F85A, 0x1F85F}, - {0x1F888, 0x1F88F}, {0x1F8AE, 0x1F90F}, {0x1F91F, 0x1F91F}, - {0x1F928, 0x1F92F}, {0x1F931, 0x1F932}, {0x1F93F, 0x1F93F}, - {0x1F94C, 0x1F94F}, {0x1F95F, 0x1F97F}, {0x1F992, 0x1F9BF}, - {0x1F9C1, 0x1FFFF}, {0x2A6D7, 0x2A6FF}, {0x2B735, 0x2B73F}, - {0x2B81E, 0x2B81F}, {0x2CEA2, 0x2F7FF}, {0x2FA1E, 0xE0000}, - {0xE0002, 0xE001F}, {0xE0080, 0xE00FF}, {0xE01F0, 0xEFFFF}, - {0xFFFFE, 0xFFFFF}, -} - -var neutral = table{ - {0x0000, 0x001F}, {0x007F, 0x00A0}, {0x00A9, 0x00A9}, - {0x00AB, 0x00AB}, {0x00B5, 0x00B5}, {0x00BB, 0x00BB}, - {0x00C0, 0x00C5}, {0x00C7, 0x00CF}, {0x00D1, 0x00D6}, - {0x00D9, 0x00DD}, {0x00E2, 0x00E5}, {0x00E7, 0x00E7}, - {0x00EB, 0x00EB}, {0x00EE, 0x00EF}, {0x00F1, 0x00F1}, - {0x00F4, 0x00F6}, {0x00FB, 0x00FB}, {0x00FD, 0x00FD}, - {0x00FF, 0x0100}, {0x0102, 0x0110}, {0x0112, 0x0112}, - {0x0114, 0x011A}, {0x011C, 0x0125}, {0x0128, 0x012A}, - {0x012C, 0x0130}, {0x0134, 0x0137}, {0x0139, 0x013E}, - {0x0143, 0x0143}, {0x0145, 0x0147}, {0x014C, 0x014C}, - {0x014E, 0x0151}, {0x0154, 0x0165}, {0x0168, 0x016A}, - {0x016C, 0x01CD}, {0x01CF, 0x01CF}, {0x01D1, 0x01D1}, - {0x01D3, 0x01D3}, {0x01D5, 0x01D5}, {0x01D7, 0x01D7}, - {0x01D9, 0x01D9}, {0x01DB, 0x01DB}, {0x01DD, 0x0250}, - {0x0252, 0x0260}, {0x0262, 0x02C3}, {0x02C5, 0x02C6}, - {0x02C8, 0x02C8}, {0x02CC, 0x02CC}, {0x02CE, 0x02CF}, - {0x02D1, 0x02D7}, {0x02DC, 0x02DC}, {0x02DE, 0x02DE}, - {0x02E0, 0x02FF}, {0x0370, 0x0377}, {0x037A, 0x037F}, - {0x0384, 0x038A}, {0x038C, 0x038C}, {0x038E, 0x0390}, - {0x03AA, 0x03B0}, {0x03C2, 0x03C2}, {0x03CA, 0x0400}, - {0x0402, 0x040F}, {0x0450, 0x0450}, {0x0452, 0x052F}, - {0x0531, 0x0556}, {0x0559, 0x055F}, {0x0561, 0x0587}, - {0x0589, 0x058A}, {0x058D, 0x058F}, {0x0591, 0x05C7}, - {0x05D0, 0x05EA}, {0x05F0, 0x05F4}, {0x0600, 0x061C}, - {0x061E, 0x070D}, {0x070F, 0x074A}, {0x074D, 0x07B1}, - {0x07C0, 0x07FA}, {0x0800, 0x082D}, {0x0830, 0x083E}, - {0x0840, 0x085B}, {0x085E, 0x085E}, {0x08A0, 0x08B4}, - {0x08B6, 0x08BD}, {0x08D4, 0x0983}, {0x0985, 0x098C}, - {0x098F, 0x0990}, {0x0993, 0x09A8}, {0x09AA, 0x09B0}, - {0x09B2, 0x09B2}, {0x09B6, 0x09B9}, {0x09BC, 0x09C4}, - {0x09C7, 0x09C8}, {0x09CB, 0x09CE}, {0x09D7, 0x09D7}, - {0x09DC, 0x09DD}, {0x09DF, 0x09E3}, {0x09E6, 0x09FB}, - {0x0A01, 0x0A03}, {0x0A05, 0x0A0A}, {0x0A0F, 0x0A10}, - {0x0A13, 0x0A28}, {0x0A2A, 0x0A30}, {0x0A32, 0x0A33}, - {0x0A35, 0x0A36}, {0x0A38, 0x0A39}, {0x0A3C, 0x0A3C}, - {0x0A3E, 0x0A42}, {0x0A47, 0x0A48}, {0x0A4B, 0x0A4D}, - {0x0A51, 0x0A51}, {0x0A59, 0x0A5C}, {0x0A5E, 0x0A5E}, - {0x0A66, 0x0A75}, {0x0A81, 0x0A83}, {0x0A85, 0x0A8D}, - {0x0A8F, 0x0A91}, {0x0A93, 0x0AA8}, {0x0AAA, 0x0AB0}, - {0x0AB2, 0x0AB3}, {0x0AB5, 0x0AB9}, {0x0ABC, 0x0AC5}, - {0x0AC7, 0x0AC9}, {0x0ACB, 0x0ACD}, {0x0AD0, 0x0AD0}, - {0x0AE0, 0x0AE3}, {0x0AE6, 0x0AF1}, {0x0AF9, 0x0AF9}, - {0x0B01, 0x0B03}, {0x0B05, 0x0B0C}, {0x0B0F, 0x0B10}, - {0x0B13, 0x0B28}, {0x0B2A, 0x0B30}, {0x0B32, 0x0B33}, - {0x0B35, 0x0B39}, {0x0B3C, 0x0B44}, {0x0B47, 0x0B48}, - {0x0B4B, 0x0B4D}, {0x0B56, 0x0B57}, {0x0B5C, 0x0B5D}, - {0x0B5F, 0x0B63}, {0x0B66, 0x0B77}, {0x0B82, 0x0B83}, - {0x0B85, 0x0B8A}, {0x0B8E, 0x0B90}, {0x0B92, 0x0B95}, - {0x0B99, 0x0B9A}, {0x0B9C, 0x0B9C}, {0x0B9E, 0x0B9F}, - {0x0BA3, 0x0BA4}, {0x0BA8, 0x0BAA}, {0x0BAE, 0x0BB9}, - {0x0BBE, 0x0BC2}, {0x0BC6, 0x0BC8}, {0x0BCA, 0x0BCD}, - {0x0BD0, 0x0BD0}, {0x0BD7, 0x0BD7}, {0x0BE6, 0x0BFA}, - {0x0C00, 0x0C03}, {0x0C05, 0x0C0C}, {0x0C0E, 0x0C10}, - {0x0C12, 0x0C28}, {0x0C2A, 0x0C39}, {0x0C3D, 0x0C44}, - {0x0C46, 0x0C48}, {0x0C4A, 0x0C4D}, {0x0C55, 0x0C56}, - {0x0C58, 0x0C5A}, {0x0C60, 0x0C63}, {0x0C66, 0x0C6F}, - {0x0C78, 0x0C83}, {0x0C85, 0x0C8C}, {0x0C8E, 0x0C90}, - {0x0C92, 0x0CA8}, {0x0CAA, 0x0CB3}, {0x0CB5, 0x0CB9}, - {0x0CBC, 0x0CC4}, {0x0CC6, 0x0CC8}, {0x0CCA, 0x0CCD}, - {0x0CD5, 0x0CD6}, {0x0CDE, 0x0CDE}, {0x0CE0, 0x0CE3}, - {0x0CE6, 0x0CEF}, {0x0CF1, 0x0CF2}, {0x0D01, 0x0D03}, - {0x0D05, 0x0D0C}, {0x0D0E, 0x0D10}, {0x0D12, 0x0D3A}, - {0x0D3D, 0x0D44}, {0x0D46, 0x0D48}, {0x0D4A, 0x0D4F}, - {0x0D54, 0x0D63}, {0x0D66, 0x0D7F}, {0x0D82, 0x0D83}, - {0x0D85, 0x0D96}, {0x0D9A, 0x0DB1}, {0x0DB3, 0x0DBB}, - {0x0DBD, 0x0DBD}, {0x0DC0, 0x0DC6}, {0x0DCA, 0x0DCA}, - {0x0DCF, 0x0DD4}, {0x0DD6, 0x0DD6}, {0x0DD8, 0x0DDF}, - {0x0DE6, 0x0DEF}, {0x0DF2, 0x0DF4}, {0x0E01, 0x0E3A}, - {0x0E3F, 0x0E5B}, {0x0E81, 0x0E82}, {0x0E84, 0x0E84}, - {0x0E87, 0x0E88}, {0x0E8A, 0x0E8A}, {0x0E8D, 0x0E8D}, - {0x0E94, 0x0E97}, {0x0E99, 0x0E9F}, {0x0EA1, 0x0EA3}, - {0x0EA5, 0x0EA5}, {0x0EA7, 0x0EA7}, {0x0EAA, 0x0EAB}, - {0x0EAD, 0x0EB9}, {0x0EBB, 0x0EBD}, {0x0EC0, 0x0EC4}, - {0x0EC6, 0x0EC6}, {0x0EC8, 0x0ECD}, {0x0ED0, 0x0ED9}, - {0x0EDC, 0x0EDF}, {0x0F00, 0x0F47}, {0x0F49, 0x0F6C}, - {0x0F71, 0x0F97}, {0x0F99, 0x0FBC}, {0x0FBE, 0x0FCC}, - {0x0FCE, 0x0FDA}, {0x1000, 0x10C5}, {0x10C7, 0x10C7}, - {0x10CD, 0x10CD}, {0x10D0, 0x10FF}, {0x1160, 0x1248}, - {0x124A, 0x124D}, {0x1250, 0x1256}, {0x1258, 0x1258}, - {0x125A, 0x125D}, {0x1260, 0x1288}, {0x128A, 0x128D}, - {0x1290, 0x12B0}, {0x12B2, 0x12B5}, {0x12B8, 0x12BE}, - {0x12C0, 0x12C0}, {0x12C2, 0x12C5}, {0x12C8, 0x12D6}, - {0x12D8, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x135A}, - {0x135D, 0x137C}, {0x1380, 0x1399}, {0x13A0, 0x13F5}, - {0x13F8, 0x13FD}, {0x1400, 0x169C}, {0x16A0, 0x16F8}, - {0x1700, 0x170C}, {0x170E, 0x1714}, {0x1720, 0x1736}, - {0x1740, 0x1753}, {0x1760, 0x176C}, {0x176E, 0x1770}, - {0x1772, 0x1773}, {0x1780, 0x17DD}, {0x17E0, 0x17E9}, - {0x17F0, 0x17F9}, {0x1800, 0x180E}, {0x1810, 0x1819}, - {0x1820, 0x1877}, {0x1880, 0x18AA}, {0x18B0, 0x18F5}, - {0x1900, 0x191E}, {0x1920, 0x192B}, {0x1930, 0x193B}, - {0x1940, 0x1940}, {0x1944, 0x196D}, {0x1970, 0x1974}, - {0x1980, 0x19AB}, {0x19B0, 0x19C9}, {0x19D0, 0x19DA}, - {0x19DE, 0x1A1B}, {0x1A1E, 0x1A5E}, {0x1A60, 0x1A7C}, - {0x1A7F, 0x1A89}, {0x1A90, 0x1A99}, {0x1AA0, 0x1AAD}, - {0x1AB0, 0x1ABE}, {0x1B00, 0x1B4B}, {0x1B50, 0x1B7C}, - {0x1B80, 0x1BF3}, {0x1BFC, 0x1C37}, {0x1C3B, 0x1C49}, - {0x1C4D, 0x1C88}, {0x1CC0, 0x1CC7}, {0x1CD0, 0x1CF6}, - {0x1CF8, 0x1CF9}, {0x1D00, 0x1DF5}, {0x1DFB, 0x1F15}, - {0x1F18, 0x1F1D}, {0x1F20, 0x1F45}, {0x1F48, 0x1F4D}, - {0x1F50, 0x1F57}, {0x1F59, 0x1F59}, {0x1F5B, 0x1F5B}, - {0x1F5D, 0x1F5D}, {0x1F5F, 0x1F7D}, {0x1F80, 0x1FB4}, - {0x1FB6, 0x1FC4}, {0x1FC6, 0x1FD3}, {0x1FD6, 0x1FDB}, - {0x1FDD, 0x1FEF}, {0x1FF2, 0x1FF4}, {0x1FF6, 0x1FFE}, - {0x2000, 0x200F}, {0x2011, 0x2012}, {0x2017, 0x2017}, - {0x201A, 0x201B}, {0x201E, 0x201F}, {0x2023, 0x2023}, - {0x2028, 0x202F}, {0x2031, 0x2031}, {0x2034, 0x2034}, - {0x2036, 0x203A}, {0x203C, 0x203D}, {0x203F, 0x2064}, - {0x2066, 0x2071}, {0x2075, 0x207E}, {0x2080, 0x2080}, - {0x2085, 0x208E}, {0x2090, 0x209C}, {0x20A0, 0x20A8}, - {0x20AA, 0x20AB}, {0x20AD, 0x20BE}, {0x20D0, 0x20F0}, - {0x2100, 0x2102}, {0x2104, 0x2104}, {0x2106, 0x2108}, - {0x210A, 0x2112}, {0x2114, 0x2115}, {0x2117, 0x2120}, - {0x2123, 0x2125}, {0x2127, 0x212A}, {0x212C, 0x2152}, - {0x2155, 0x215A}, {0x215F, 0x215F}, {0x216C, 0x216F}, - {0x217A, 0x2188}, {0x218A, 0x218B}, {0x219A, 0x21B7}, - {0x21BA, 0x21D1}, {0x21D3, 0x21D3}, {0x21D5, 0x21E6}, - {0x21E8, 0x21FF}, {0x2201, 0x2201}, {0x2204, 0x2206}, - {0x2209, 0x220A}, {0x220C, 0x220E}, {0x2210, 0x2210}, - {0x2212, 0x2214}, {0x2216, 0x2219}, {0x221B, 0x221C}, - {0x2221, 0x2222}, {0x2224, 0x2224}, {0x2226, 0x2226}, - {0x222D, 0x222D}, {0x222F, 0x2233}, {0x2238, 0x223B}, - {0x223E, 0x2247}, {0x2249, 0x224B}, {0x224D, 0x2251}, - {0x2253, 0x225F}, {0x2262, 0x2263}, {0x2268, 0x2269}, - {0x226C, 0x226D}, {0x2270, 0x2281}, {0x2284, 0x2285}, - {0x2288, 0x2294}, {0x2296, 0x2298}, {0x229A, 0x22A4}, - {0x22A6, 0x22BE}, {0x22C0, 0x2311}, {0x2313, 0x2319}, - {0x231C, 0x2328}, {0x232B, 0x23E8}, {0x23ED, 0x23EF}, - {0x23F1, 0x23F2}, {0x23F4, 0x23FE}, {0x2400, 0x2426}, - {0x2440, 0x244A}, {0x24EA, 0x24EA}, {0x254C, 0x254F}, - {0x2574, 0x257F}, {0x2590, 0x2591}, {0x2596, 0x259F}, - {0x25A2, 0x25A2}, {0x25AA, 0x25B1}, {0x25B4, 0x25B5}, - {0x25B8, 0x25BB}, {0x25BE, 0x25BF}, {0x25C2, 0x25C5}, - {0x25C9, 0x25CA}, {0x25CC, 0x25CD}, {0x25D2, 0x25E1}, - {0x25E6, 0x25EE}, {0x25F0, 0x25FC}, {0x25FF, 0x2604}, - {0x2607, 0x2608}, {0x260A, 0x260D}, {0x2610, 0x2613}, - {0x2616, 0x261B}, {0x261D, 0x261D}, {0x261F, 0x263F}, - {0x2641, 0x2641}, {0x2643, 0x2647}, {0x2654, 0x265F}, - {0x2662, 0x2662}, {0x2666, 0x2666}, {0x266B, 0x266B}, - {0x266E, 0x266E}, {0x2670, 0x267E}, {0x2680, 0x2692}, - {0x2694, 0x269D}, {0x26A0, 0x26A0}, {0x26A2, 0x26A9}, - {0x26AC, 0x26BC}, {0x26C0, 0x26C3}, {0x26E2, 0x26E2}, - {0x26E4, 0x26E7}, {0x2700, 0x2704}, {0x2706, 0x2709}, - {0x270C, 0x2727}, {0x2729, 0x273C}, {0x273E, 0x274B}, - {0x274D, 0x274D}, {0x274F, 0x2752}, {0x2756, 0x2756}, - {0x2758, 0x2775}, {0x2780, 0x2794}, {0x2798, 0x27AF}, - {0x27B1, 0x27BE}, {0x27C0, 0x27E5}, {0x27EE, 0x2984}, - {0x2987, 0x2B1A}, {0x2B1D, 0x2B4F}, {0x2B51, 0x2B54}, - {0x2B5A, 0x2B73}, {0x2B76, 0x2B95}, {0x2B98, 0x2BB9}, - {0x2BBD, 0x2BC8}, {0x2BCA, 0x2BD1}, {0x2BEC, 0x2BEF}, - {0x2C00, 0x2C2E}, {0x2C30, 0x2C5E}, {0x2C60, 0x2CF3}, - {0x2CF9, 0x2D25}, {0x2D27, 0x2D27}, {0x2D2D, 0x2D2D}, - {0x2D30, 0x2D67}, {0x2D6F, 0x2D70}, {0x2D7F, 0x2D96}, - {0x2DA0, 0x2DA6}, {0x2DA8, 0x2DAE}, {0x2DB0, 0x2DB6}, - {0x2DB8, 0x2DBE}, {0x2DC0, 0x2DC6}, {0x2DC8, 0x2DCE}, - {0x2DD0, 0x2DD6}, {0x2DD8, 0x2DDE}, {0x2DE0, 0x2E44}, - {0x303F, 0x303F}, {0x4DC0, 0x4DFF}, {0xA4D0, 0xA62B}, - {0xA640, 0xA6F7}, {0xA700, 0xA7AE}, {0xA7B0, 0xA7B7}, - {0xA7F7, 0xA82B}, {0xA830, 0xA839}, {0xA840, 0xA877}, - {0xA880, 0xA8C5}, {0xA8CE, 0xA8D9}, {0xA8E0, 0xA8FD}, - {0xA900, 0xA953}, {0xA95F, 0xA95F}, {0xA980, 0xA9CD}, - {0xA9CF, 0xA9D9}, {0xA9DE, 0xA9FE}, {0xAA00, 0xAA36}, - {0xAA40, 0xAA4D}, {0xAA50, 0xAA59}, {0xAA5C, 0xAAC2}, - {0xAADB, 0xAAF6}, {0xAB01, 0xAB06}, {0xAB09, 0xAB0E}, - {0xAB11, 0xAB16}, {0xAB20, 0xAB26}, {0xAB28, 0xAB2E}, - {0xAB30, 0xAB65}, {0xAB70, 0xABED}, {0xABF0, 0xABF9}, - {0xD7B0, 0xD7C6}, {0xD7CB, 0xD7FB}, {0xD800, 0xDFFF}, - {0xFB00, 0xFB06}, {0xFB13, 0xFB17}, {0xFB1D, 0xFB36}, - {0xFB38, 0xFB3C}, {0xFB3E, 0xFB3E}, {0xFB40, 0xFB41}, - {0xFB43, 0xFB44}, {0xFB46, 0xFBC1}, {0xFBD3, 0xFD3F}, - {0xFD50, 0xFD8F}, {0xFD92, 0xFDC7}, {0xFDF0, 0xFDFD}, - {0xFE20, 0xFE2F}, {0xFE70, 0xFE74}, {0xFE76, 0xFEFC}, - {0xFEFF, 0xFEFF}, {0xFFF9, 0xFFFC}, {0x10000, 0x1000B}, - {0x1000D, 0x10026}, {0x10028, 0x1003A}, {0x1003C, 0x1003D}, - {0x1003F, 0x1004D}, {0x10050, 0x1005D}, {0x10080, 0x100FA}, - {0x10100, 0x10102}, {0x10107, 0x10133}, {0x10137, 0x1018E}, - {0x10190, 0x1019B}, {0x101A0, 0x101A0}, {0x101D0, 0x101FD}, - {0x10280, 0x1029C}, {0x102A0, 0x102D0}, {0x102E0, 0x102FB}, - {0x10300, 0x10323}, {0x10330, 0x1034A}, {0x10350, 0x1037A}, - {0x10380, 0x1039D}, {0x1039F, 0x103C3}, {0x103C8, 0x103D5}, - {0x10400, 0x1049D}, {0x104A0, 0x104A9}, {0x104B0, 0x104D3}, - {0x104D8, 0x104FB}, {0x10500, 0x10527}, {0x10530, 0x10563}, - {0x1056F, 0x1056F}, {0x10600, 0x10736}, {0x10740, 0x10755}, - {0x10760, 0x10767}, {0x10800, 0x10805}, {0x10808, 0x10808}, - {0x1080A, 0x10835}, {0x10837, 0x10838}, {0x1083C, 0x1083C}, - {0x1083F, 0x10855}, {0x10857, 0x1089E}, {0x108A7, 0x108AF}, - {0x108E0, 0x108F2}, {0x108F4, 0x108F5}, {0x108FB, 0x1091B}, - {0x1091F, 0x10939}, {0x1093F, 0x1093F}, {0x10980, 0x109B7}, - {0x109BC, 0x109CF}, {0x109D2, 0x10A03}, {0x10A05, 0x10A06}, - {0x10A0C, 0x10A13}, {0x10A15, 0x10A17}, {0x10A19, 0x10A33}, - {0x10A38, 0x10A3A}, {0x10A3F, 0x10A47}, {0x10A50, 0x10A58}, - {0x10A60, 0x10A9F}, {0x10AC0, 0x10AE6}, {0x10AEB, 0x10AF6}, - {0x10B00, 0x10B35}, {0x10B39, 0x10B55}, {0x10B58, 0x10B72}, - {0x10B78, 0x10B91}, {0x10B99, 0x10B9C}, {0x10BA9, 0x10BAF}, - {0x10C00, 0x10C48}, {0x10C80, 0x10CB2}, {0x10CC0, 0x10CF2}, - {0x10CFA, 0x10CFF}, {0x10E60, 0x10E7E}, {0x11000, 0x1104D}, - {0x11052, 0x1106F}, {0x1107F, 0x110C1}, {0x110D0, 0x110E8}, - {0x110F0, 0x110F9}, {0x11100, 0x11134}, {0x11136, 0x11143}, - {0x11150, 0x11176}, {0x11180, 0x111CD}, {0x111D0, 0x111DF}, - {0x111E1, 0x111F4}, {0x11200, 0x11211}, {0x11213, 0x1123E}, - {0x11280, 0x11286}, {0x11288, 0x11288}, {0x1128A, 0x1128D}, - {0x1128F, 0x1129D}, {0x1129F, 0x112A9}, {0x112B0, 0x112EA}, - {0x112F0, 0x112F9}, {0x11300, 0x11303}, {0x11305, 0x1130C}, - {0x1130F, 0x11310}, {0x11313, 0x11328}, {0x1132A, 0x11330}, - {0x11332, 0x11333}, {0x11335, 0x11339}, {0x1133C, 0x11344}, - {0x11347, 0x11348}, {0x1134B, 0x1134D}, {0x11350, 0x11350}, - {0x11357, 0x11357}, {0x1135D, 0x11363}, {0x11366, 0x1136C}, - {0x11370, 0x11374}, {0x11400, 0x11459}, {0x1145B, 0x1145B}, - {0x1145D, 0x1145D}, {0x11480, 0x114C7}, {0x114D0, 0x114D9}, - {0x11580, 0x115B5}, {0x115B8, 0x115DD}, {0x11600, 0x11644}, - {0x11650, 0x11659}, {0x11660, 0x1166C}, {0x11680, 0x116B7}, - {0x116C0, 0x116C9}, {0x11700, 0x11719}, {0x1171D, 0x1172B}, - {0x11730, 0x1173F}, {0x118A0, 0x118F2}, {0x118FF, 0x118FF}, - {0x11AC0, 0x11AF8}, {0x11C00, 0x11C08}, {0x11C0A, 0x11C36}, - {0x11C38, 0x11C45}, {0x11C50, 0x11C6C}, {0x11C70, 0x11C8F}, - {0x11C92, 0x11CA7}, {0x11CA9, 0x11CB6}, {0x12000, 0x12399}, - {0x12400, 0x1246E}, {0x12470, 0x12474}, {0x12480, 0x12543}, - {0x13000, 0x1342E}, {0x14400, 0x14646}, {0x16800, 0x16A38}, - {0x16A40, 0x16A5E}, {0x16A60, 0x16A69}, {0x16A6E, 0x16A6F}, - {0x16AD0, 0x16AED}, {0x16AF0, 0x16AF5}, {0x16B00, 0x16B45}, - {0x16B50, 0x16B59}, {0x16B5B, 0x16B61}, {0x16B63, 0x16B77}, - {0x16B7D, 0x16B8F}, {0x16F00, 0x16F44}, {0x16F50, 0x16F7E}, - {0x16F8F, 0x16F9F}, {0x1BC00, 0x1BC6A}, {0x1BC70, 0x1BC7C}, - {0x1BC80, 0x1BC88}, {0x1BC90, 0x1BC99}, {0x1BC9C, 0x1BCA3}, - {0x1D000, 0x1D0F5}, {0x1D100, 0x1D126}, {0x1D129, 0x1D1E8}, - {0x1D200, 0x1D245}, {0x1D300, 0x1D356}, {0x1D360, 0x1D371}, - {0x1D400, 0x1D454}, {0x1D456, 0x1D49C}, {0x1D49E, 0x1D49F}, - {0x1D4A2, 0x1D4A2}, {0x1D4A5, 0x1D4A6}, {0x1D4A9, 0x1D4AC}, - {0x1D4AE, 0x1D4B9}, {0x1D4BB, 0x1D4BB}, {0x1D4BD, 0x1D4C3}, - {0x1D4C5, 0x1D505}, {0x1D507, 0x1D50A}, {0x1D50D, 0x1D514}, - {0x1D516, 0x1D51C}, {0x1D51E, 0x1D539}, {0x1D53B, 0x1D53E}, - {0x1D540, 0x1D544}, {0x1D546, 0x1D546}, {0x1D54A, 0x1D550}, - {0x1D552, 0x1D6A5}, {0x1D6A8, 0x1D7CB}, {0x1D7CE, 0x1DA8B}, - {0x1DA9B, 0x1DA9F}, {0x1DAA1, 0x1DAAF}, {0x1E000, 0x1E006}, - {0x1E008, 0x1E018}, {0x1E01B, 0x1E021}, {0x1E023, 0x1E024}, - {0x1E026, 0x1E02A}, {0x1E800, 0x1E8C4}, {0x1E8C7, 0x1E8D6}, - {0x1E900, 0x1E94A}, {0x1E950, 0x1E959}, {0x1E95E, 0x1E95F}, - {0x1EE00, 0x1EE03}, {0x1EE05, 0x1EE1F}, {0x1EE21, 0x1EE22}, - {0x1EE24, 0x1EE24}, {0x1EE27, 0x1EE27}, {0x1EE29, 0x1EE32}, - {0x1EE34, 0x1EE37}, {0x1EE39, 0x1EE39}, {0x1EE3B, 0x1EE3B}, - {0x1EE42, 0x1EE42}, {0x1EE47, 0x1EE47}, {0x1EE49, 0x1EE49}, - {0x1EE4B, 0x1EE4B}, {0x1EE4D, 0x1EE4F}, {0x1EE51, 0x1EE52}, - {0x1EE54, 0x1EE54}, {0x1EE57, 0x1EE57}, {0x1EE59, 0x1EE59}, - {0x1EE5B, 0x1EE5B}, {0x1EE5D, 0x1EE5D}, {0x1EE5F, 0x1EE5F}, - {0x1EE61, 0x1EE62}, {0x1EE64, 0x1EE64}, {0x1EE67, 0x1EE6A}, - {0x1EE6C, 0x1EE72}, {0x1EE74, 0x1EE77}, {0x1EE79, 0x1EE7C}, - {0x1EE7E, 0x1EE7E}, {0x1EE80, 0x1EE89}, {0x1EE8B, 0x1EE9B}, - {0x1EEA1, 0x1EEA3}, {0x1EEA5, 0x1EEA9}, {0x1EEAB, 0x1EEBB}, - {0x1EEF0, 0x1EEF1}, {0x1F000, 0x1F003}, {0x1F005, 0x1F02B}, - {0x1F030, 0x1F093}, {0x1F0A0, 0x1F0AE}, {0x1F0B1, 0x1F0BF}, - {0x1F0C1, 0x1F0CE}, {0x1F0D1, 0x1F0F5}, {0x1F10B, 0x1F10C}, - {0x1F12E, 0x1F12E}, {0x1F16A, 0x1F16B}, {0x1F1E6, 0x1F1FF}, - {0x1F321, 0x1F32C}, {0x1F336, 0x1F336}, {0x1F37D, 0x1F37D}, - {0x1F394, 0x1F39F}, {0x1F3CB, 0x1F3CE}, {0x1F3D4, 0x1F3DF}, - {0x1F3F1, 0x1F3F3}, {0x1F3F5, 0x1F3F7}, {0x1F43F, 0x1F43F}, - {0x1F441, 0x1F441}, {0x1F4FD, 0x1F4FE}, {0x1F53E, 0x1F54A}, - {0x1F54F, 0x1F54F}, {0x1F568, 0x1F579}, {0x1F57B, 0x1F594}, - {0x1F597, 0x1F5A3}, {0x1F5A5, 0x1F5FA}, {0x1F650, 0x1F67F}, - {0x1F6C6, 0x1F6CB}, {0x1F6CD, 0x1F6CF}, {0x1F6E0, 0x1F6EA}, - {0x1F6F0, 0x1F6F3}, {0x1F700, 0x1F773}, {0x1F780, 0x1F7D4}, - {0x1F800, 0x1F80B}, {0x1F810, 0x1F847}, {0x1F850, 0x1F859}, - {0x1F860, 0x1F887}, {0x1F890, 0x1F8AD}, {0xE0001, 0xE0001}, - {0xE0020, 0xE007F}, -} - -// Condition have flag EastAsianWidth whether the current locale is CJK or not. -type Condition struct { - EastAsianWidth bool - ZeroWidthJoiner bool -} - -// NewCondition return new instance of Condition which is current locale. -func NewCondition() *Condition { - return &Condition{ - EastAsianWidth: EastAsianWidth, - ZeroWidthJoiner: ZeroWidthJoiner, - } -} - -// RuneWidth returns the number of cells in r. -// See http://www.unicode.org/reports/tr11/ -func (c *Condition) RuneWidth(r rune) int { - switch { - case r < 0 || r > 0x10FFFF || - inTables(r, nonprint, combining, notassigned): - return 0 - case (c.EastAsianWidth && IsAmbiguousWidth(r)) || - inTables(r, doublewidth, emoji): - return 2 - default: - return 1 - } -} - -func (c *Condition) stringWidth(s string) (width int) { - for _, r := range []rune(s) { - width += c.RuneWidth(r) - } - return width -} - -func (c *Condition) stringWidthZeroJoiner(s string) (width int) { - r1, r2 := rune(0), rune(0) - for _, r := range []rune(s) { - if r == 0xFE0E || r == 0xFE0F { - continue - } - w := c.RuneWidth(r) - if r2 == 0x200D && inTables(r, emoji) && inTables(r1, emoji) { - w = 0 - } - width += w - r1, r2 = r2, r - } - return width -} - -// StringWidth return width as you can see -func (c *Condition) StringWidth(s string) (width int) { - if c.ZeroWidthJoiner { - return c.stringWidthZeroJoiner(s) - } - return c.stringWidth(s) -} - -// Truncate return string truncated with w cells -func (c *Condition) Truncate(s string, w int, tail string) string { - if c.StringWidth(s) <= w { - return s - } - r := []rune(s) - tw := c.StringWidth(tail) - w -= tw - width := 0 - i := 0 - for ; i < len(r); i++ { - cw := c.RuneWidth(r[i]) - if width+cw > w { - break - } - width += cw - } - return string(r[0:i]) + tail -} - -// Wrap return string wrapped with w cells -func (c *Condition) Wrap(s string, w int) string { - width := 0 - out := "" - for _, r := range []rune(s) { - cw := RuneWidth(r) - if r == '\n' { - out += string(r) - width = 0 - continue - } else if width+cw > w { - out += "\n" - width = 0 - out += string(r) - width += cw - continue - } - out += string(r) - width += cw - } - return out -} - -// FillLeft return string filled in left by spaces in w cells -func (c *Condition) FillLeft(s string, w int) string { - width := c.StringWidth(s) - count := w - width - if count > 0 { - b := make([]byte, count) - for i := range b { - b[i] = ' ' - } - return string(b) + s - } - return s -} - -// FillRight return string filled in left by spaces in w cells -func (c *Condition) FillRight(s string, w int) string { - width := c.StringWidth(s) - count := w - width - if count > 0 { - b := make([]byte, count) - for i := range b { - b[i] = ' ' - } - return s + string(b) - } - return s -} - -// RuneWidth returns the number of cells in r. -// See http://www.unicode.org/reports/tr11/ -func RuneWidth(r rune) int { - return DefaultCondition.RuneWidth(r) -} - -// IsAmbiguousWidth returns whether is ambiguous width or not. -func IsAmbiguousWidth(r rune) bool { - return inTables(r, private, ambiguous) -} - -// IsNeutralWidth returns whether is neutral width or not. -func IsNeutralWidth(r rune) bool { - return inTable(r, neutral) -} - -// StringWidth return width as you can see -func StringWidth(s string) (width int) { - return DefaultCondition.StringWidth(s) -} - -// Truncate return string truncated with w cells -func Truncate(s string, w int, tail string) string { - return DefaultCondition.Truncate(s, w, tail) -} - -// Wrap return string wrapped with w cells -func Wrap(s string, w int) string { - return DefaultCondition.Wrap(s, w) -} - -// FillLeft return string filled in left by spaces in w cells -func FillLeft(s string, w int) string { - return DefaultCondition.FillLeft(s, w) -} - -// FillRight return string filled in left by spaces in w cells -func FillRight(s string, w int) string { - return DefaultCondition.FillRight(s, w) -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/runewidth_appengine.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/runewidth_appengine.go deleted file mode 100644 index 7d99f6e52..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/runewidth_appengine.go +++ /dev/null @@ -1,8 +0,0 @@ -// +build appengine - -package runewidth - -// IsEastAsian return true if the current locale is CJK -func IsEastAsian() bool { - return false -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/runewidth_js.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/runewidth_js.go deleted file mode 100644 index c5fdf40ba..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/runewidth_js.go +++ /dev/null @@ -1,9 +0,0 @@ -// +build js -// +build !appengine - -package runewidth - -func IsEastAsian() bool { - // TODO: Implement this for the web. Detect east asian in a compatible way, and return true. - return false -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/runewidth_posix.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/runewidth_posix.go deleted file mode 100644 index 66a58b5d8..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/runewidth_posix.go +++ /dev/null @@ -1,79 +0,0 @@ -// +build !windows -// +build !js -// +build !appengine - -package runewidth - -import ( - "os" - "regexp" - "strings" -) - -var reLoc = regexp.MustCompile(`^[a-z][a-z][a-z]?(?:_[A-Z][A-Z])?\.(.+)`) - -var mblenTable = map[string]int{ - "utf-8": 6, - "utf8": 6, - "jis": 8, - "eucjp": 3, - "euckr": 2, - "euccn": 2, - "sjis": 2, - "cp932": 2, - "cp51932": 2, - "cp936": 2, - "cp949": 2, - "cp950": 2, - "big5": 2, - "gbk": 2, - "gb2312": 2, -} - -func isEastAsian(locale string) bool { - charset := strings.ToLower(locale) - r := reLoc.FindStringSubmatch(locale) - if len(r) == 2 { - charset = strings.ToLower(r[1]) - } - - if strings.HasSuffix(charset, "@cjk_narrow") { - return false - } - - for pos, b := range []byte(charset) { - if b == '@' { - charset = charset[:pos] - break - } - } - max := 1 - if m, ok := mblenTable[charset]; ok { - max = m - } - if max > 1 && (charset[0] != 'u' || - strings.HasPrefix(locale, "ja") || - strings.HasPrefix(locale, "ko") || - strings.HasPrefix(locale, "zh")) { - return true - } - return false -} - -// IsEastAsian return true if the current locale is CJK -func IsEastAsian() bool { - locale := os.Getenv("LC_CTYPE") - if locale == "" { - locale = os.Getenv("LANG") - } - - // ignore C locale - if locale == "POSIX" || locale == "C" { - return false - } - if len(locale) > 1 && locale[0] == 'C' && (locale[1] == '.' || locale[1] == '-') { - return false - } - - return isEastAsian(locale) -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/runewidth_windows.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/runewidth_windows.go deleted file mode 100644 index d6a61777d..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mattn/go-runewidth/runewidth_windows.go +++ /dev/null @@ -1,28 +0,0 @@ -// +build windows -// +build !appengine - -package runewidth - -import ( - "syscall" -) - -var ( - kernel32 = syscall.NewLazyDLL("kernel32") - procGetConsoleOutputCP = kernel32.NewProc("GetConsoleOutputCP") -) - -// IsEastAsian return true if the current locale is CJK -func IsEastAsian() bool { - r1, _, _ := procGetConsoleOutputCP.Call() - if r1 == 0 { - return false - } - - switch int(r1) { - case 932, 51932, 936, 949, 950: - return true - } - - return false -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/.travis.yml b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/.travis.yml deleted file mode 100644 index a2bc0cbbf..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/.travis.yml +++ /dev/null @@ -1,20 +0,0 @@ -language: go - -go: - - "1.9" - - "1.10" - - "1.11" - -sudo: false - -before_script: - - go get -d gopkg.in/cheggaaa/pb.v1 - - go get -d github.com/peterhellberg/link - -script: - - make all - - make test - -branches: - only: - - master diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/LICENSE b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/LICENSE deleted file mode 100644 index d64569567..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - 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 - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/Makefile b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/Makefile deleted file mode 100644 index 1553a0b14..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -.PHONY: all -all: pkgcloud-push build - -build: - go build - -pkgcloud-push: - go build ./cmd/$@ - -.PHONY: test -test: - go test -v ./... - -.PHONY: generate -generate: - go generate -x ./... - - -.PHONY: clean -clean: - rm -f pkgcloud-push diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/README.md b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/README.md deleted file mode 100644 index c3e7f4ac1..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# pkgcloud - -[![Build Status](https://travis-ci.org/mlafeldt/pkgcloud.svg?branch=master)](https://travis-ci.org/mlafeldt/pkgcloud) -[![GoDoc](https://godoc.org/github.com/mlafeldt/pkgcloud?status.svg)](https://godoc.org/github.com/mlafeldt/pkgcloud) - -Talk to the [packagecloud API](https://packagecloud.io/docs/api), in Go. - -## Installation - - $ go get github.com/mlafeldt/pkgcloud/... - -## API Usage - -See [Godoc](https://godoc.org/github.com/mlafeldt/pkgcloud) and -[pkgcloud.go](pkgcloud.go) to learn about the API. - -## Client Usage - -### Pushing packages - -Pushing packages with `pkgcloud-push` is the only operation supported so far. -The tool is a simple and fast replacement for the original `package_cloud push` -command. If you pass more than one package, `pkgcloud-push` will push them in -parallel! Before using it, however, make sure that `PACKAGECLOUD_TOKEN` is set -in your environment. - -Usage: - - $ pkgcloud-push user/repo[/distro/version] /path/to/packages - -Examples: - - # Debian - $ pkgcloud-push mlafeldt/myrepo/ubuntu/trusty example_1.2.3_amd64.deb - - # RPM - $ pkgcloud-push mlafeldt/myrepo/el/7 *.rpm - - # RubyGem - $ pkgcloud-push mlafeldt/myrepo example-1.2.3.gem diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/distros.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/distros.go deleted file mode 100644 index c300f1593..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/distros.go +++ /dev/null @@ -1,108 +0,0 @@ -// Generated with ./gendistros.py - -package pkgcloud - -var supportedDistros = map[string]int{ - "ubuntu/warty": 1, - "ubuntu/hoary": 2, - "ubuntu/breezy": 3, - "ubuntu/dapper": 4, - "ubuntu/edgy": 5, - "ubuntu/feisty": 6, - "ubuntu/gutsy": 7, - "ubuntu/hardy": 8, - "ubuntu/intrepid": 9, - "ubuntu/jaunty": 10, - "ubuntu/karmic": 11, - "ubuntu/lucid": 12, - "ubuntu/maverick": 13, - "ubuntu/natty": 14, - "ubuntu/oneiric": 15, - "ubuntu/precise": 16, - "ubuntu/quantal": 17, - "ubuntu/raring": 18, - "ubuntu/saucy": 19, - "ubuntu/trusty": 20, - "debian/etch": 21, - "debian/lenny": 22, - "debian/squeeze": 23, - "debian/wheezy": 24, - "debian/jessie": 25, - "el/5": 26, - "el/6": 27, - "fedora/14": 28, - "fedora/15": 29, - "fedora/16": 30, - "fedora/17": 31, - "fedora/18": 32, - "fedora/19": 33, - "fedora/20": 34, - "any/any": 35, - "scientific/5": 138, - "scientific/6": 139, - "el/7": 140, - "scientific/7": 141, - "ubuntu/utopic": 142, - "fedora/21": 143, - "ol/5": 144, - "ol/6": 145, - "ol/7": 146, - "fedora/22": 147, - "ubuntu/vivid": 148, - "debian/stretch": 149, - "debian/buster": 150, - "fedora/23": 151, - "ubuntu/wily": 152, - "raspbian/wheezy": 153, - "raspbian/jessie": 154, - "raspbian/stretch": 155, - "raspbian/buster": 156, - "linuxmint/petra": 157, - "linuxmint/qiana": 158, - "linuxmint/rebecca": 159, - "linuxmint/rafaela": 160, - "linuxmint/rosa": 161, - "elementaryos/jupiter": 162, - "elementaryos/luna": 163, - "elementaryos/freya": 164, - "ubuntu/xenial": 165, - "python": 166, - "java/maven2": 167, - "ubuntu/yakkety": 168, - "fedora/24": 169, - "linuxmint/sarah": 170, - "poky/jethro": 171, - "poky/krogoth": 172, - "opensuse/13.1": 173, - "opensuse/13.2": 174, - "opensuse/42.1": 175, - "sles/11.4": 176, - "sles/12.0": 177, - "sles/12.1": 178, - "fedora/25": 179, - "linuxmint/serena": 180, - "opensuse/42.2": 181, - "sles/12.2": 182, - "ubuntu/zesty": 183, - "fedora/26": 184, - "linuxmint/sonya": 185, - "opensuse/42.3": 186, - "ubuntu/artful": 187, - "fedora/27": 188, - "linuxmint/sylvia": 189, - "ubuntu/bionic": 190, - "node/1": 191, - "sles/12.3": 192, - "elementaryos/loki": 193, - "fedora/28": 194, - "linuxmint/tara": 195, - "opensuse/15.0": 196, - "opensuse/15.1": 197, - "sles/15.0": 198, - "ubuntu/cosmic": 199, - "elementaryos/juno": 200, - "fedora/29": 201, - "linuxmint/tessa": 202, - "ubuntu/disco": 203, - "fedora/30": 204, -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/gendistros.py b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/gendistros.py deleted file mode 100755 index f05e0aa53..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/gendistros.py +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env python -# Generate Go map of distros supported by Packagecloud API -# By generating the list once, we save an expensive API call. -# See https://packagecloud.io/docs/api#resource_distributions - -import os, sys -import urllib -import json - -var = sys.argv[1] -token = os.environ['PACKAGECLOUD_TOKEN'] - -url = 'https://%s:@packagecloud.io/api/v1/distributions.json' % token -resp = urllib.urlopen(url) -data = json.loads(resp.read()) - -result = {} -for distros in data.values(): - for d in distros: - for v in d['versions']: - k = d['index_name'] - if 'index_name' in v: - k = '/'.join([k, v['index_name']]) - v = v['id'] - result[k] = v - -print '// Generated with %s' % __file__ -print -print 'package pkgcloud' -print -print 'var %s = map[string]int{' % var -for k, v in sorted(result.items(),key=lambda x:x[1]): - print "\t\"%s\": %d," % (k, v) -print '}' diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/pkgcloud.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/pkgcloud.go deleted file mode 100644 index 1eafe7a89..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/pkgcloud.go +++ /dev/null @@ -1,241 +0,0 @@ -// Package pkgcloud allows you to talk to the packagecloud API. -// See https://packagecloud.io/docs/api -package pkgcloud - -import ( - "encoding/json" - "errors" - "fmt" - "net/http" - "os" - "regexp" - "strconv" - - "github.com/mlafeldt/pkgcloud/upload" - "github.com/peterhellberg/link" - pb "gopkg.in/cheggaaa/pb.v1" -) - -//go:generate bash -c "./gendistros.py supportedDistros | gofmt > distros.go" - -// ServiceURL is the URL of packagecloud's API. -const ServiceURL = "https://packagecloud.io/api/v1" - -const UserAgent = "pkgcloud Go client" - -// A Client is a packagecloud client. -type Client struct { - token string - progressBar bool -} - -// NewClient creates a packagecloud client. API requests are authenticated -// using an API token. If no token is passed, it will be read from the -// PACKAGECLOUD_TOKEN environment variable. -func NewClient(token string) (*Client, error) { - if token == "" { - token = os.Getenv("PACKAGECLOUD_TOKEN") - if token == "" { - return nil, errors.New("PACKAGECLOUD_TOKEN unset") - } - } - return &Client{token, false}, nil -} - -// Print a progress bar of paginated API requests when show is set to true -func (c *Client) ShowProgress(show bool) { - c.progressBar = show -} - -// decodeResponse checks http status code and tries to decode json body -func decodeResponse(resp *http.Response, respJson interface{}) error { - switch resp.StatusCode { - case http.StatusOK, http.StatusCreated: - return json.NewDecoder(resp.Body).Decode(respJson) - case http.StatusUnauthorized, http.StatusNotFound: - return fmt.Errorf("HTTP status: %s", http.StatusText(resp.StatusCode)) - case 422: // Unprocessable Entity - var v map[string][]string - if err := json.NewDecoder(resp.Body).Decode(&v); err != nil { - return err - } - for _, messages := range v { - for _, msg := range messages { - // Only return the very first error message - return errors.New(msg) - } - break - } - return fmt.Errorf("invalid HTTP body") - default: - return fmt.Errorf("unexpected HTTP status: %d", resp.StatusCode) - } -} - -// CreatePackage pushes a new package to packagecloud. -func (c Client) CreatePackage(repo, distro, pkgFile string) error { - var extraParams map[string]string - if distro != "" { - distID, ok := supportedDistros[distro] - if !ok { - return fmt.Errorf("invalid distro name: %s", distro) - } - extraParams = map[string]string{ - "package[distro_version_id]": strconv.Itoa(distID), - } - } - - endpoint := fmt.Sprintf("%s/repos/%s/packages.json", ServiceURL, repo) - request, err := upload.NewRequest(endpoint, extraParams, "package[package_file]", pkgFile) - if err != nil { - return err - } - request.SetBasicAuth(c.token, "") - request.Header.Add("User-Agent", UserAgent) - - client := &http.Client{} - resp, err := client.Do(request) - if err != nil { - return err - } - defer resp.Body.Close() - - return decodeResponse(resp, &struct{}{}) -} - -type Package struct { - Name string `json:"name"` - Filename string `json:"filename"` - DistroVersion string `json:"distro_version"` - Version string `json:"version"` - Release string `json:"release"` - Type string `json:"type"` - PackageUrl string `json:"package_url"` - PackageHtmlUrl string `json:"package_html_url"` -} - -// All list all packages in repository -func (c Client) All(repo string) ([]Package, error) { - endpoint := fmt.Sprintf("%s/repos/%s/packages.json", ServiceURL, repo) - return c.paginatedRequest(http.MethodGet, endpoint) -} - -// Destroy removes package from repository. -// -// repo should be full path to repository -// (e.g. youruser/repository/ubuntu/xenial). -func (c Client) Destroy(repo, packageFilename string) error { - endpoint := fmt.Sprintf("%s/repos/%s/%s", ServiceURL, repo, packageFilename) - _, err := c.apiRequest(http.MethodDelete, endpoint, &struct{}{}) - - return err -} - -// Search searches packages from repository. -// repo should be full path to repository -// (e.g. youruser/repository/ubuntu/xenial). -// q: The query string to search for package filename. If empty string is passed, all packages are returned -// filter: Search by package type (RPMs, Debs, DSCs, Gem, Python) - Ignored when dist != "" -// dist: The name of the distribution the package is in. (i.e. ubuntu, el/6) - Overrides filter. -// perPage: The number of packages to return from the results set. If nothing passed, default is 30 -func (c Client) Search(repo, q, filter, dist string, perPage int) ([]Package, error) { - endpoint := fmt.Sprintf("%s/repos/%s/search.json?q=%s&filter=%s&dist=%s&per_page=%d", ServiceURL, repo, q, filter, dist, perPage) - return c.paginatedRequest(http.MethodGet, endpoint) -} - - -func (c Client) paginatedRequest(method string, endpoint string) ([]Package, error) { - var ( - allPackages []Package - getLastPage bool - ) - - newPage := make(chan bool) - total := make(chan int) - - if c.progressBar { - getLastPage = true - progBar := pb.New(0) - progBar.SetMaxWidth(100) - progBar.Start() - defer func() { - progBar.Increment() - progBar.Finish() - }() - - go func() { - for { - select { - case np := <-newPage: - if !np { - return - } - progBar.Increment() - case t := <-total: - progBar.SetTotal(t) - } - } - }() - } - - for { - var pkgs []Package - var group link.Group - group, err := c.apiRequest(method, endpoint, &pkgs) - if err != nil { - return nil, err - } - - allPackages = append(allPackages, pkgs...) - - next, found := group["next"] - newPage <- found - if !found { - break - } - endpoint = next.URI - - if !getLastPage { - continue - } - - if last, found := group["last"]; found { - re := regexp.MustCompile(`page=(\d+)$`) - pages, err := strconv.Atoi(re.FindStringSubmatch(last.URI)[1]) - if err != nil { - continue - } - getLastPage = false - total <- pages - } - } - - return allPackages, nil - -} - -func (c Client) apiRequest(method string, endpoint string, decodedResp interface{}) (link.Group, error) { - req, err := http.NewRequest(method, endpoint, nil) - if err != nil { - return nil, err - } - - req.SetBasicAuth(c.token, "") - req.Header.Add("User-Agent", UserAgent) - - client := &http.Client{} - resp, err := client.Do(req) - if err != nil { - return nil, err - } - defer resp.Body.Close() - - err = decodeResponse(resp, decodedResp) - if err != nil { - return nil, err - } - - // API are paginated, with next page in the response header, as "Link" - // element - return link.ParseResponse(resp), nil -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/upload/upload.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/upload/upload.go deleted file mode 100644 index a402a8155..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/mlafeldt/pkgcloud/upload/upload.go +++ /dev/null @@ -1,45 +0,0 @@ -package upload - -import ( - "bytes" - "io" - "mime/multipart" - "net/http" - "os" - "path/filepath" -) - -// NewRequest creates a new file upload HTTP request with optional extra params. -// Based on https://gist.github.com/mattetti/5914158 -func NewRequest(url string, params map[string]string, paramName, path string) (*http.Request, error) { - file, err := os.Open(path) - if err != nil { - return nil, err - } - defer file.Close() - - var body bytes.Buffer - writer := multipart.NewWriter(&body) - part, err := writer.CreateFormFile(paramName, filepath.Base(path)) - if err != nil { - return nil, err - } - if _, err = io.Copy(part, file); err != nil { - return nil, err - } - for k, v := range params { - if err := writer.WriteField(k, v); err != nil { - return nil, err - } - } - if err := writer.Close(); err != nil { - return nil, err - } - - request, err := http.NewRequest("POST", url, &body) - if err != nil { - return nil, err - } - request.Header.Add("Content-Type", writer.FormDataContentType()) - return request, nil -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/peterhellberg/link/.travis.yml b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/peterhellberg/link/.travis.yml deleted file mode 100644 index 72f01b6c3..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/peterhellberg/link/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -language: go - -go: - - 1.6 - - 1.5.3 - -sudo: false diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/peterhellberg/link/README.md b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/peterhellberg/link/README.md deleted file mode 100644 index 6b897cad5..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/peterhellberg/link/README.md +++ /dev/null @@ -1,81 +0,0 @@ -# link - -[![Build Status](https://travis-ci.org/peterhellberg/link.svg?branch=master)](https://travis-ci.org/peterhellberg/link) -[![GoDoc](https://img.shields.io/badge/godoc-reference-blue.svg?style=flat)](https://godoc.org/github.com/peterhellberg/link) -[![License MIT](https://img.shields.io/badge/license-MIT-lightgrey.svg?style=flat)](https://github.com/peterhellberg/link#license-mit) - -Parses **Link** headers used for pagination, as defined in [RFC 5988](https://tools.ietf.org/html/rfc5988). - -This package was originally based on , but **Parse** takes a `string` instead of `*http.Request` in this version. -It also has the convenience functions **ParseHeader**, **ParseRequest** and **ParseResponse**. - -## Installation - - go get -u github.com/peterhellberg/link - -## Exported functions - - - [Parse(s string) Group](https://godoc.org/github.com/peterhellberg/link#Parse) - - [ParseHeader(h http.Header) Group](https://godoc.org/github.com/peterhellberg/link#ParseHeader) - - [ParseRequest(req \*http.Request) Group](https://godoc.org/github.com/peterhellberg/link#ParseRequest) - - [ParseResponse(resp \*http.Response) Group](https://godoc.org/github.com/peterhellberg/link#ParseResponse) - -## Usage - -```go -package main - -import ( - "fmt" - "net/http" - - "github.com/peterhellberg/link" -) - -func main() { - for _, l := range link.Parse(`; rel="next"; foo="bar"`) { - fmt.Printf("URI: %q, Rel: %q, Extra: %+v\n", l.URI, l.Rel, l.Extra) - // URI: "https://example.com/?page=2", Rel: "next", Extra: map[foo:bar] - } - - if resp, err := http.Get("https://api.github.com/search/code?q=Println+user:golang"); err == nil { - for _, l := range link.ParseResponse(resp) { - fmt.Printf("URI: %q, Rel: %q, Extra: %+v\n", l.URI, l.Rel, l.Extra) - // URI: "https://api.github.com/search/code?q=Println+user%3Agolang&page=2", Rel: "next", Extra: map[] - // URI: "https://api.github.com/search/code?q=Println+user%3Agolang&page=34", Rel: "last", Extra: map[] - } - } -} -``` - -## Not supported - - - Extended notation ([RFC 5987](https://tools.ietf.org/html/rfc5987)) - -## Alternatives to this package - - - [github.com/tent/http-link-go](https://github.com/tent/http-link-go) - - [github.com/swhite24/link](https://github.com/swhite24/link) - -## License (MIT) - -Copyright (c) 2015-2016 [Peter Hellberg](http://c7.se/) - -> 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/tools/packaging/cmd/kata-pkgsync/vendor/github.com/peterhellberg/link/doc.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/peterhellberg/link/doc.go deleted file mode 100644 index f3a5f172e..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/peterhellberg/link/doc.go +++ /dev/null @@ -1,40 +0,0 @@ -/* - -Package link parses Link headers used for pagination, as defined in RFC 5988 - -Installation - -Just go get the package: - - go get -u github.com/peterhellberg/link - -Usage - -A small usage example - - package main - - import ( - "fmt" - "net/http" - - "github.com/peterhellberg/link" - ) - - func main() { - for _, l := range link.Parse(`; rel="next"; foo="bar"`) { - fmt.Printf("URI: %q, Rel: %q, Extra: %+v\n", l.URI, l.Rel, l.Extra) - // URI: "https://example.com/?page=2", Rel: "next", Extra: map[foo:bar] - } - - if resp, err := http.Get("https://api.github.com/search/code?q=Println+user:golang"); err == nil { - for _, l := range link.ParseResponse(resp) { - fmt.Printf("URI: %q, Rel: %q, Extra: %+v\n", l.URI, l.Rel, l.Extra) - // URI: "https://api.github.com/search/code?q=Println+user%3Agolang&page=2", Rel: "next", Extra: map[] - // URI: "https://api.github.com/search/code?q=Println+user%3Agolang&page=34", Rel: "last", Extra: map[] - } - } - } - -*/ -package link diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/peterhellberg/link/link.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/peterhellberg/link/link.go deleted file mode 100644 index 8c2f02525..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/peterhellberg/link/link.go +++ /dev/null @@ -1,111 +0,0 @@ -package link - -import ( - "net/http" - "regexp" - "strings" -) - -var ( - commaRegexp = regexp.MustCompile(`,\s{0,}`) - valueCommaRegexp = regexp.MustCompile(`([^"]),`) - equalRegexp = regexp.MustCompile(` *= *`) - keyRegexp = regexp.MustCompile(`[a-z*]+`) - linkRegexp = regexp.MustCompile(`\A<(.+)>;(.+)\z`) - semiRegexp = regexp.MustCompile(`; +`) - valRegexp = regexp.MustCompile(`"+([^"]+)"+`) -) - -// Group returned by Parse, contains multiple links indexed by "rel" -type Group map[string]*Link - -// Link contains a Link item with URI, Rel, and other non-URI components in Extra. -type Link struct { - URI string - Rel string - Extra map[string]string -} - -// String returns the URI -func (l *Link) String() string { - return l.URI -} - -// ParseRequest parses the provided *http.Request into a Group -func ParseRequest(req *http.Request) Group { - if req == nil { - return nil - } - - return ParseHeader(req.Header) -} - -// ParseResponse parses the provided *http.Response into a Group -func ParseResponse(resp *http.Response) Group { - if resp == nil { - return nil - } - - return ParseHeader(resp.Header) -} - -// ParseHeader retrieves the Link header from the provided http.Header and parses it into a Group -func ParseHeader(h http.Header) Group { - if headers, found := h["Link"]; found { - return Parse(strings.Join(headers, ", ")) - } - - return nil -} - -// Parse parses the provided string into a Group -func Parse(s string) Group { - if s == "" { - return nil - } - - s = valueCommaRegexp.ReplaceAllString(s, "$1") - - group := Group{} - - for _, l := range commaRegexp.Split(s, -1) { - linkMatches := linkRegexp.FindAllStringSubmatch(l, -1) - - if len(linkMatches) == 0 { - return nil - } - - pieces := linkMatches[0] - - link := &Link{URI: pieces[1], Extra: map[string]string{}} - - for _, extra := range semiRegexp.Split(pieces[2], -1) { - vals := equalRegexp.Split(extra, -1) - - key := keyRegexp.FindString(vals[0]) - val := valRegexp.FindStringSubmatch(vals[1])[1] - - if key == "rel" { - vals := strings.Split(val, " ") - rels := []string{vals[0]} - - if len(vals) > 1 { - for _, v := range vals[1:] { - if !strings.HasPrefix(v, "http") { - rels = append(rels, v) - } - } - } - - rel := strings.Join(rels, " ") - - link.Rel = rel - group[rel] = link - } else { - link.Extra[key] = val - } - } - } - - return group -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/.gitignore b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/.gitignore deleted file mode 100644 index daf913b1b..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe -*.test -*.prof diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/.travis.yml b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/.travis.yml deleted file mode 100644 index d4b92663b..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/.travis.yml +++ /dev/null @@ -1,15 +0,0 @@ -language: go -go_import_path: github.com/pkg/errors -go: - - 1.4.x - - 1.5.x - - 1.6.x - - 1.7.x - - 1.8.x - - 1.9.x - - 1.10.x - - 1.11.x - - tip - -script: - - go test -v ./... diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/LICENSE b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/LICENSE deleted file mode 100644 index 835ba3e75..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright (c) 2015, Dave Cheney -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. - -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 HOLDER 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/tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/README.md b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/README.md deleted file mode 100644 index 6483ba2af..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/README.md +++ /dev/null @@ -1,52 +0,0 @@ -# errors [![Travis-CI](https://travis-ci.org/pkg/errors.svg)](https://travis-ci.org/pkg/errors) [![AppVeyor](https://ci.appveyor.com/api/projects/status/b98mptawhudj53ep/branch/master?svg=true)](https://ci.appveyor.com/project/davecheney/errors/branch/master) [![GoDoc](https://godoc.org/github.com/pkg/errors?status.svg)](http://godoc.org/github.com/pkg/errors) [![Report card](https://goreportcard.com/badge/github.com/pkg/errors)](https://goreportcard.com/report/github.com/pkg/errors) [![Sourcegraph](https://sourcegraph.com/github.com/pkg/errors/-/badge.svg)](https://sourcegraph.com/github.com/pkg/errors?badge) - -Package errors provides simple error handling primitives. - -`go get github.com/pkg/errors` - -The traditional error handling idiom in Go is roughly akin to -```go -if err != nil { - return err -} -``` -which applied recursively up the call stack results in error reports without context or debugging information. The errors package allows programmers to add context to the failure path in their code in a way that does not destroy the original value of the error. - -## Adding context to an error - -The errors.Wrap function returns a new error that adds context to the original error. For example -```go -_, err := ioutil.ReadAll(r) -if err != nil { - return errors.Wrap(err, "read failed") -} -``` -## Retrieving the cause of an error - -Using `errors.Wrap` constructs a stack of errors, adding context to the preceding error. Depending on the nature of the error it may be necessary to reverse the operation of errors.Wrap to retrieve the original error for inspection. Any error value which implements this interface can be inspected by `errors.Cause`. -```go -type causer interface { - Cause() error -} -``` -`errors.Cause` will recursively retrieve the topmost error which does not implement `causer`, which is assumed to be the original cause. For example: -```go -switch err := errors.Cause(err).(type) { -case *MyError: - // handle specifically -default: - // unknown error -} -``` - -[Read the package documentation for more information](https://godoc.org/github.com/pkg/errors). - -## Contributing - -We welcome pull requests, bug fixes and issue reports. With that said, the bar for adding new symbols to this package is intentionally set high. - -Before proposing a change, please discuss your change by raising an issue. - -## License - -BSD-2-Clause diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/appveyor.yml b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/appveyor.yml deleted file mode 100644 index a932eade0..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/appveyor.yml +++ /dev/null @@ -1,32 +0,0 @@ -version: build-{build}.{branch} - -clone_folder: C:\gopath\src\github.com\pkg\errors -shallow_clone: true # for startup speed - -environment: - GOPATH: C:\gopath - -platform: - - x64 - -# http://www.appveyor.com/docs/installed-software -install: - # some helpful output for debugging builds - - go version - - go env - # pre-installed MinGW at C:\MinGW is 32bit only - # but MSYS2 at C:\msys64 has mingw64 - - set PATH=C:\msys64\mingw64\bin;%PATH% - - gcc --version - - g++ --version - -build_script: - - go install -v ./... - -test_script: - - set PATH=C:\gopath\bin;%PATH% - - go test -v ./... - -#artifacts: -# - path: '%GOPATH%\bin\*.exe' -deploy: off diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/errors.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/errors.go deleted file mode 100644 index 7421f326f..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/errors.go +++ /dev/null @@ -1,282 +0,0 @@ -// Package errors provides simple error handling primitives. -// -// The traditional error handling idiom in Go is roughly akin to -// -// if err != nil { -// return err -// } -// -// which when applied recursively up the call stack results in error reports -// without context or debugging information. The errors package allows -// programmers to add context to the failure path in their code in a way -// that does not destroy the original value of the error. -// -// Adding context to an error -// -// The errors.Wrap function returns a new error that adds context to the -// original error by recording a stack trace at the point Wrap is called, -// together with the supplied message. For example -// -// _, err := ioutil.ReadAll(r) -// if err != nil { -// return errors.Wrap(err, "read failed") -// } -// -// If additional control is required, the errors.WithStack and -// errors.WithMessage functions destructure errors.Wrap into its component -// operations: annotating an error with a stack trace and with a message, -// respectively. -// -// Retrieving the cause of an error -// -// Using errors.Wrap constructs a stack of errors, adding context to the -// preceding error. Depending on the nature of the error it may be necessary -// to reverse the operation of errors.Wrap to retrieve the original error -// for inspection. Any error value which implements this interface -// -// type causer interface { -// Cause() error -// } -// -// can be inspected by errors.Cause. errors.Cause will recursively retrieve -// the topmost error that does not implement causer, which is assumed to be -// the original cause. For example: -// -// switch err := errors.Cause(err).(type) { -// case *MyError: -// // handle specifically -// default: -// // unknown error -// } -// -// Although the causer interface is not exported by this package, it is -// considered a part of its stable public interface. -// -// Formatted printing of errors -// -// All error values returned from this package implement fmt.Formatter and can -// be formatted by the fmt package. The following verbs are supported: -// -// %s print the error. If the error has a Cause it will be -// printed recursively. -// %v see %s -// %+v extended format. Each Frame of the error's StackTrace will -// be printed in detail. -// -// Retrieving the stack trace of an error or wrapper -// -// New, Errorf, Wrap, and Wrapf record a stack trace at the point they are -// invoked. This information can be retrieved with the following interface: -// -// type stackTracer interface { -// StackTrace() errors.StackTrace -// } -// -// The returned errors.StackTrace type is defined as -// -// type StackTrace []Frame -// -// The Frame type represents a call site in the stack trace. Frame supports -// the fmt.Formatter interface that can be used for printing information about -// the stack trace of this error. For example: -// -// if err, ok := err.(stackTracer); ok { -// for _, f := range err.StackTrace() { -// fmt.Printf("%+s:%d", f) -// } -// } -// -// Although the stackTracer interface is not exported by this package, it is -// considered a part of its stable public interface. -// -// See the documentation for Frame.Format for more details. -package errors - -import ( - "fmt" - "io" -) - -// New returns an error with the supplied message. -// New also records the stack trace at the point it was called. -func New(message string) error { - return &fundamental{ - msg: message, - stack: callers(), - } -} - -// Errorf formats according to a format specifier and returns the string -// as a value that satisfies error. -// Errorf also records the stack trace at the point it was called. -func Errorf(format string, args ...interface{}) error { - return &fundamental{ - msg: fmt.Sprintf(format, args...), - stack: callers(), - } -} - -// fundamental is an error that has a message and a stack, but no caller. -type fundamental struct { - msg string - *stack -} - -func (f *fundamental) Error() string { return f.msg } - -func (f *fundamental) Format(s fmt.State, verb rune) { - switch verb { - case 'v': - if s.Flag('+') { - io.WriteString(s, f.msg) - f.stack.Format(s, verb) - return - } - fallthrough - case 's': - io.WriteString(s, f.msg) - case 'q': - fmt.Fprintf(s, "%q", f.msg) - } -} - -// WithStack annotates err with a stack trace at the point WithStack was called. -// If err is nil, WithStack returns nil. -func WithStack(err error) error { - if err == nil { - return nil - } - return &withStack{ - err, - callers(), - } -} - -type withStack struct { - error - *stack -} - -func (w *withStack) Cause() error { return w.error } - -func (w *withStack) Format(s fmt.State, verb rune) { - switch verb { - case 'v': - if s.Flag('+') { - fmt.Fprintf(s, "%+v", w.Cause()) - w.stack.Format(s, verb) - return - } - fallthrough - case 's': - io.WriteString(s, w.Error()) - case 'q': - fmt.Fprintf(s, "%q", w.Error()) - } -} - -// Wrap returns an error annotating err with a stack trace -// at the point Wrap is called, and the supplied message. -// If err is nil, Wrap returns nil. -func Wrap(err error, message string) error { - if err == nil { - return nil - } - err = &withMessage{ - cause: err, - msg: message, - } - return &withStack{ - err, - callers(), - } -} - -// Wrapf returns an error annotating err with a stack trace -// at the point Wrapf is called, and the format specifier. -// If err is nil, Wrapf returns nil. -func Wrapf(err error, format string, args ...interface{}) error { - if err == nil { - return nil - } - err = &withMessage{ - cause: err, - msg: fmt.Sprintf(format, args...), - } - return &withStack{ - err, - callers(), - } -} - -// WithMessage annotates err with a new message. -// If err is nil, WithMessage returns nil. -func WithMessage(err error, message string) error { - if err == nil { - return nil - } - return &withMessage{ - cause: err, - msg: message, - } -} - -// WithMessagef annotates err with the format specifier. -// If err is nil, WithMessagef returns nil. -func WithMessagef(err error, format string, args ...interface{}) error { - if err == nil { - return nil - } - return &withMessage{ - cause: err, - msg: fmt.Sprintf(format, args...), - } -} - -type withMessage struct { - cause error - msg string -} - -func (w *withMessage) Error() string { return w.msg + ": " + w.cause.Error() } -func (w *withMessage) Cause() error { return w.cause } - -func (w *withMessage) Format(s fmt.State, verb rune) { - switch verb { - case 'v': - if s.Flag('+') { - fmt.Fprintf(s, "%+v\n", w.Cause()) - io.WriteString(s, w.msg) - return - } - fallthrough - case 's', 'q': - io.WriteString(s, w.Error()) - } -} - -// Cause returns the underlying cause of the error, if possible. -// An error value has a cause if it implements the following -// interface: -// -// type causer interface { -// Cause() error -// } -// -// If the error does not implement Cause, the original error will -// be returned. If the error is nil, nil will be returned without further -// investigation. -func Cause(err error) error { - type causer interface { - Cause() error - } - - for err != nil { - cause, ok := err.(causer) - if !ok { - break - } - err = cause.Cause() - } - return err -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/stack.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/stack.go deleted file mode 100644 index 2874a048c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/pkg/errors/stack.go +++ /dev/null @@ -1,147 +0,0 @@ -package errors - -import ( - "fmt" - "io" - "path" - "runtime" - "strings" -) - -// Frame represents a program counter inside a stack frame. -type Frame uintptr - -// pc returns the program counter for this frame; -// multiple frames may have the same PC value. -func (f Frame) pc() uintptr { return uintptr(f) - 1 } - -// file returns the full path to the file that contains the -// function for this Frame's pc. -func (f Frame) file() string { - fn := runtime.FuncForPC(f.pc()) - if fn == nil { - return "unknown" - } - file, _ := fn.FileLine(f.pc()) - return file -} - -// line returns the line number of source code of the -// function for this Frame's pc. -func (f Frame) line() int { - fn := runtime.FuncForPC(f.pc()) - if fn == nil { - return 0 - } - _, line := fn.FileLine(f.pc()) - return line -} - -// Format formats the frame according to the fmt.Formatter interface. -// -// %s source file -// %d source line -// %n function name -// %v equivalent to %s:%d -// -// Format accepts flags that alter the printing of some verbs, as follows: -// -// %+s function name and path of source file relative to the compile time -// GOPATH separated by \n\t (\n\t) -// %+v equivalent to %+s:%d -func (f Frame) Format(s fmt.State, verb rune) { - switch verb { - case 's': - switch { - case s.Flag('+'): - pc := f.pc() - fn := runtime.FuncForPC(pc) - if fn == nil { - io.WriteString(s, "unknown") - } else { - file, _ := fn.FileLine(pc) - fmt.Fprintf(s, "%s\n\t%s", fn.Name(), file) - } - default: - io.WriteString(s, path.Base(f.file())) - } - case 'd': - fmt.Fprintf(s, "%d", f.line()) - case 'n': - name := runtime.FuncForPC(f.pc()).Name() - io.WriteString(s, funcname(name)) - case 'v': - f.Format(s, 's') - io.WriteString(s, ":") - f.Format(s, 'd') - } -} - -// StackTrace is stack of Frames from innermost (newest) to outermost (oldest). -type StackTrace []Frame - -// Format formats the stack of Frames according to the fmt.Formatter interface. -// -// %s lists source files for each Frame in the stack -// %v lists the source file and line number for each Frame in the stack -// -// Format accepts flags that alter the printing of some verbs, as follows: -// -// %+v Prints filename, function, and line number for each Frame in the stack. -func (st StackTrace) Format(s fmt.State, verb rune) { - switch verb { - case 'v': - switch { - case s.Flag('+'): - for _, f := range st { - fmt.Fprintf(s, "\n%+v", f) - } - case s.Flag('#'): - fmt.Fprintf(s, "%#v", []Frame(st)) - default: - fmt.Fprintf(s, "%v", []Frame(st)) - } - case 's': - fmt.Fprintf(s, "%s", []Frame(st)) - } -} - -// stack represents a stack of program counters. -type stack []uintptr - -func (s *stack) Format(st fmt.State, verb rune) { - switch verb { - case 'v': - switch { - case st.Flag('+'): - for _, pc := range *s { - f := Frame(pc) - fmt.Fprintf(st, "\n%+v", f) - } - } - } -} - -func (s *stack) StackTrace() StackTrace { - f := make([]Frame, len(*s)) - for i := 0; i < len(f); i++ { - f[i] = Frame((*s)[i]) - } - return f -} - -func callers() *stack { - const depth = 32 - var pcs [depth]uintptr - n := runtime.Callers(3, pcs[:]) - var st stack = pcs[0:n] - return &st -} - -// funcname removes the path prefix component of a function's name reported by func.Name(). -func funcname(name string) string { - i := strings.LastIndex(name, "/") - name = name[i+1:] - i = strings.Index(name, ".") - return name[i+1:] -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/.gitignore b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/.gitignore deleted file mode 100644 index 6b7d7d1e8..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -logrus -vendor diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/.travis.yml b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/.travis.yml deleted file mode 100644 index 7e54dc6e3..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/.travis.yml +++ /dev/null @@ -1,21 +0,0 @@ -language: go -go_import_path: github.com/sirupsen/logrus -git: - depth: 1 -env: - - GO111MODULE=on - - GO111MODULE=off -go: [ 1.10.x, 1.11.x, 1.12.x ] -os: [ linux, osx, windows ] -matrix: - exclude: - - env: GO111MODULE=on - go: 1.10.x -install: - - if [[ "$GO111MODULE" == "on" ]]; then go mod download; fi - - if [[ "$GO111MODULE" == "off" ]]; then go get github.com/stretchr/testify/assert golang.org/x/sys/unix github.com/konsorten/go-windows-terminal-sequences; fi -script: - - export GOMAXPROCS=4 - - export GORACE=halt_on_error=1 - - go test -race -v ./... - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then go test -race -v -tags appengine ./... ; fi diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/CHANGELOG.md b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/CHANGELOG.md deleted file mode 100644 index f62cbd24a..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/CHANGELOG.md +++ /dev/null @@ -1,198 +0,0 @@ -# 1.4.1 -This new release introduces: - * Enhance TextFormatter to not print caller information when they are empty (#944) - * Remove dependency on golang.org/x/crypto (#932, #943) - -Fixes: - * Fix Entry.WithContext method to return a copy of the initial entry (#941) - -# 1.4.0 -This new release introduces: - * Add `DeferExitHandler`, similar to `RegisterExitHandler` but prepending the handler to the list of handlers (semantically like `defer`) (#848). - * Add `CallerPrettyfier` to `JSONFormatter` and `TextFormatter (#909, #911) - * Add `Entry.WithContext()` and `Entry.Context`, to set a context on entries to be used e.g. in hooks (#919). - -Fixes: - * Fix wrong method calls `Logger.Print` and `Logger.Warningln` (#893). - * Update `Entry.Logf` to not do string formatting unless the log level is enabled (#903) - * Fix infinite recursion on unknown `Level.String()` (#907) - * Fix race condition in `getCaller` (#916). - - -# 1.3.0 -This new release introduces: - * Log, Logf, Logln functions for Logger and Entry that take a Level - -Fixes: - * Building prometheus node_exporter on AIX (#840) - * Race condition in TextFormatter (#468) - * Travis CI import path (#868) - * Remove coloured output on Windows (#862) - * Pointer to func as field in JSONFormatter (#870) - * Properly marshal Levels (#873) - -# 1.2.0 -This new release introduces: - * A new method `SetReportCaller` in the `Logger` to enable the file, line and calling function from which the trace has been issued - * A new trace level named `Trace` whose level is below `Debug` - * A configurable exit function to be called upon a Fatal trace - * The `Level` object now implements `encoding.TextUnmarshaler` interface - -# 1.1.1 -This is a bug fix release. - * fix the build break on Solaris - * don't drop a whole trace in JSONFormatter when a field param is a function pointer which can not be serialized - -# 1.1.0 -This new release introduces: - * several fixes: - * a fix for a race condition on entry formatting - * proper cleanup of previously used entries before putting them back in the pool - * the extra new line at the end of message in text formatter has been removed - * a new global public API to check if a level is activated: IsLevelEnabled - * the following methods have been added to the Logger object - * IsLevelEnabled - * SetFormatter - * SetOutput - * ReplaceHooks - * introduction of go module - * an indent configuration for the json formatter - * output colour support for windows - * the field sort function is now configurable for text formatter - * the CLICOLOR and CLICOLOR\_FORCE environment variable support in text formater - -# 1.0.6 - -This new release introduces: - * a new api WithTime which allows to easily force the time of the log entry - which is mostly useful for logger wrapper - * a fix reverting the immutability of the entry given as parameter to the hooks - a new configuration field of the json formatter in order to put all the fields - in a nested dictionnary - * a new SetOutput method in the Logger - * a new configuration of the textformatter to configure the name of the default keys - * a new configuration of the text formatter to disable the level truncation - -# 1.0.5 - -* Fix hooks race (#707) -* Fix panic deadlock (#695) - -# 1.0.4 - -* Fix race when adding hooks (#612) -* Fix terminal check in AppEngine (#635) - -# 1.0.3 - -* Replace example files with testable examples - -# 1.0.2 - -* bug: quote non-string values in text formatter (#583) -* Make (*Logger) SetLevel a public method - -# 1.0.1 - -* bug: fix escaping in text formatter (#575) - -# 1.0.0 - -* Officially changed name to lower-case -* bug: colors on Windows 10 (#541) -* bug: fix race in accessing level (#512) - -# 0.11.5 - -* feature: add writer and writerlevel to entry (#372) - -# 0.11.4 - -* bug: fix undefined variable on solaris (#493) - -# 0.11.3 - -* formatter: configure quoting of empty values (#484) -* formatter: configure quoting character (default is `"`) (#484) -* bug: fix not importing io correctly in non-linux environments (#481) - -# 0.11.2 - -* bug: fix windows terminal detection (#476) - -# 0.11.1 - -* bug: fix tty detection with custom out (#471) - -# 0.11.0 - -* performance: Use bufferpool to allocate (#370) -* terminal: terminal detection for app-engine (#343) -* feature: exit handler (#375) - -# 0.10.0 - -* feature: Add a test hook (#180) -* feature: `ParseLevel` is now case-insensitive (#326) -* feature: `FieldLogger` interface that generalizes `Logger` and `Entry` (#308) -* performance: avoid re-allocations on `WithFields` (#335) - -# 0.9.0 - -* logrus/text_formatter: don't emit empty msg -* logrus/hooks/airbrake: move out of main repository -* logrus/hooks/sentry: move out of main repository -* logrus/hooks/papertrail: move out of main repository -* logrus/hooks/bugsnag: move out of main repository -* logrus/core: run tests with `-race` -* logrus/core: detect TTY based on `stderr` -* logrus/core: support `WithError` on logger -* logrus/core: Solaris support - -# 0.8.7 - -* logrus/core: fix possible race (#216) -* logrus/doc: small typo fixes and doc improvements - - -# 0.8.6 - -* hooks/raven: allow passing an initialized client - -# 0.8.5 - -* logrus/core: revert #208 - -# 0.8.4 - -* formatter/text: fix data race (#218) - -# 0.8.3 - -* logrus/core: fix entry log level (#208) -* logrus/core: improve performance of text formatter by 40% -* logrus/core: expose `LevelHooks` type -* logrus/core: add support for DragonflyBSD and NetBSD -* formatter/text: print structs more verbosely - -# 0.8.2 - -* logrus: fix more Fatal family functions - -# 0.8.1 - -* logrus: fix not exiting on `Fatalf` and `Fatalln` - -# 0.8.0 - -* logrus: defaults to stderr instead of stdout -* hooks/sentry: add special field for `*http.Request` -* formatter/text: ignore Windows for colors - -# 0.7.3 - -* formatter/\*: allow configuration of timestamp layout - -# 0.7.2 - -* formatter/text: Add configuration option for time format (#158) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/LICENSE b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/LICENSE deleted file mode 100644 index f090cb42f..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Simon Eskildsen - -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/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/README.md b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/README.md deleted file mode 100644 index a4796eb07..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/README.md +++ /dev/null @@ -1,495 +0,0 @@ -# Logrus :walrus: [![Build Status](https://travis-ci.org/sirupsen/logrus.svg?branch=master)](https://travis-ci.org/sirupsen/logrus) [![GoDoc](https://godoc.org/github.com/sirupsen/logrus?status.svg)](https://godoc.org/github.com/sirupsen/logrus) - -Logrus is a structured logger for Go (golang), completely API compatible with -the standard library logger. - -**Seeing weird case-sensitive problems?** It's in the past been possible to -import Logrus as both upper- and lower-case. Due to the Go package environment, -this caused issues in the community and we needed a standard. Some environments -experienced problems with the upper-case variant, so the lower-case was decided. -Everything using `logrus` will need to use the lower-case: -`github.com/sirupsen/logrus`. Any package that isn't, should be changed. - -To fix Glide, see [these -comments](https://github.com/sirupsen/logrus/issues/553#issuecomment-306591437). -For an in-depth explanation of the casing issue, see [this -comment](https://github.com/sirupsen/logrus/issues/570#issuecomment-313933276). - -**Are you interested in assisting in maintaining Logrus?** Currently I have a -lot of obligations, and I am unable to provide Logrus with the maintainership it -needs. If you'd like to help, please reach out to me at `simon at author's -username dot com`. - -Nicely color-coded in development (when a TTY is attached, otherwise just -plain text): - -![Colored](http://i.imgur.com/PY7qMwd.png) - -With `log.SetFormatter(&log.JSONFormatter{})`, for easy parsing by logstash -or Splunk: - -```json -{"animal":"walrus","level":"info","msg":"A group of walrus emerges from the -ocean","size":10,"time":"2014-03-10 19:57:38.562264131 -0400 EDT"} - -{"level":"warning","msg":"The group's number increased tremendously!", -"number":122,"omg":true,"time":"2014-03-10 19:57:38.562471297 -0400 EDT"} - -{"animal":"walrus","level":"info","msg":"A giant walrus appears!", -"size":10,"time":"2014-03-10 19:57:38.562500591 -0400 EDT"} - -{"animal":"walrus","level":"info","msg":"Tremendously sized cow enters the ocean.", -"size":9,"time":"2014-03-10 19:57:38.562527896 -0400 EDT"} - -{"level":"fatal","msg":"The ice breaks!","number":100,"omg":true, -"time":"2014-03-10 19:57:38.562543128 -0400 EDT"} -``` - -With the default `log.SetFormatter(&log.TextFormatter{})` when a TTY is not -attached, the output is compatible with the -[logfmt](http://godoc.org/github.com/kr/logfmt) format: - -```text -time="2015-03-26T01:27:38-04:00" level=debug msg="Started observing beach" animal=walrus number=8 -time="2015-03-26T01:27:38-04:00" level=info msg="A group of walrus emerges from the ocean" animal=walrus size=10 -time="2015-03-26T01:27:38-04:00" level=warning msg="The group's number increased tremendously!" number=122 omg=true -time="2015-03-26T01:27:38-04:00" level=debug msg="Temperature changes" temperature=-4 -time="2015-03-26T01:27:38-04:00" level=panic msg="It's over 9000!" animal=orca size=9009 -time="2015-03-26T01:27:38-04:00" level=fatal msg="The ice breaks!" err=&{0x2082280c0 map[animal:orca size:9009] 2015-03-26 01:27:38.441574009 -0400 EDT panic It's over 9000!} number=100 omg=true -``` -To ensure this behaviour even if a TTY is attached, set your formatter as follows: - -```go - log.SetFormatter(&log.TextFormatter{ - DisableColors: true, - FullTimestamp: true, - }) -``` - -#### Logging Method Name - -If you wish to add the calling method as a field, instruct the logger via: -```go -log.SetReportCaller(true) -``` -This adds the caller as 'method' like so: - -```json -{"animal":"penguin","level":"fatal","method":"github.com/sirupsen/arcticcreatures.migrate","msg":"a penguin swims by", -"time":"2014-03-10 19:57:38.562543129 -0400 EDT"} -``` - -```text -time="2015-03-26T01:27:38-04:00" level=fatal method=github.com/sirupsen/arcticcreatures.migrate msg="a penguin swims by" animal=penguin -``` -Note that this does add measurable overhead - the cost will depend on the version of Go, but is -between 20 and 40% in recent tests with 1.6 and 1.7. You can validate this in your -environment via benchmarks: -``` -go test -bench=.*CallerTracing -``` - - -#### Case-sensitivity - -The organization's name was changed to lower-case--and this will not be changed -back. If you are getting import conflicts due to case sensitivity, please use -the lower-case import: `github.com/sirupsen/logrus`. - -#### Example - -The simplest way to use Logrus is simply the package-level exported logger: - -```go -package main - -import ( - log "github.com/sirupsen/logrus" -) - -func main() { - log.WithFields(log.Fields{ - "animal": "walrus", - }).Info("A walrus appears") -} -``` - -Note that it's completely api-compatible with the stdlib logger, so you can -replace your `log` imports everywhere with `log "github.com/sirupsen/logrus"` -and you'll now have the flexibility of Logrus. You can customize it all you -want: - -```go -package main - -import ( - "os" - log "github.com/sirupsen/logrus" -) - -func init() { - // Log as JSON instead of the default ASCII formatter. - log.SetFormatter(&log.JSONFormatter{}) - - // Output to stdout instead of the default stderr - // Can be any io.Writer, see below for File example - log.SetOutput(os.Stdout) - - // Only log the warning severity or above. - log.SetLevel(log.WarnLevel) -} - -func main() { - log.WithFields(log.Fields{ - "animal": "walrus", - "size": 10, - }).Info("A group of walrus emerges from the ocean") - - log.WithFields(log.Fields{ - "omg": true, - "number": 122, - }).Warn("The group's number increased tremendously!") - - log.WithFields(log.Fields{ - "omg": true, - "number": 100, - }).Fatal("The ice breaks!") - - // A common pattern is to re-use fields between logging statements by re-using - // the logrus.Entry returned from WithFields() - contextLogger := log.WithFields(log.Fields{ - "common": "this is a common field", - "other": "I also should be logged always", - }) - - contextLogger.Info("I'll be logged with common and other field") - contextLogger.Info("Me too") -} -``` - -For more advanced usage such as logging to multiple locations from the same -application, you can also create an instance of the `logrus` Logger: - -```go -package main - -import ( - "os" - "github.com/sirupsen/logrus" -) - -// Create a new instance of the logger. You can have any number of instances. -var log = logrus.New() - -func main() { - // The API for setting attributes is a little different than the package level - // exported logger. See Godoc. - log.Out = os.Stdout - - // You could set this to any `io.Writer` such as a file - // file, err := os.OpenFile("logrus.log", os.O_CREATE|os.O_WRONLY, 0666) - // if err == nil { - // log.Out = file - // } else { - // log.Info("Failed to log to file, using default stderr") - // } - - log.WithFields(logrus.Fields{ - "animal": "walrus", - "size": 10, - }).Info("A group of walrus emerges from the ocean") -} -``` - -#### Fields - -Logrus encourages careful, structured logging through logging fields instead of -long, unparseable error messages. For example, instead of: `log.Fatalf("Failed -to send event %s to topic %s with key %d")`, you should log the much more -discoverable: - -```go -log.WithFields(log.Fields{ - "event": event, - "topic": topic, - "key": key, -}).Fatal("Failed to send event") -``` - -We've found this API forces you to think about logging in a way that produces -much more useful logging messages. We've been in countless situations where just -a single added field to a log statement that was already there would've saved us -hours. The `WithFields` call is optional. - -In general, with Logrus using any of the `printf`-family functions should be -seen as a hint you should add a field, however, you can still use the -`printf`-family functions with Logrus. - -#### Default Fields - -Often it's helpful to have fields _always_ attached to log statements in an -application or parts of one. For example, you may want to always log the -`request_id` and `user_ip` in the context of a request. Instead of writing -`log.WithFields(log.Fields{"request_id": request_id, "user_ip": user_ip})` on -every line, you can create a `logrus.Entry` to pass around instead: - -```go -requestLogger := log.WithFields(log.Fields{"request_id": request_id, "user_ip": user_ip}) -requestLogger.Info("something happened on that request") # will log request_id and user_ip -requestLogger.Warn("something not great happened") -``` - -#### Hooks - -You can add hooks for logging levels. For example to send errors to an exception -tracking service on `Error`, `Fatal` and `Panic`, info to StatsD or log to -multiple places simultaneously, e.g. syslog. - -Logrus comes with [built-in hooks](hooks/). Add those, or your custom hook, in -`init`: - -```go -import ( - log "github.com/sirupsen/logrus" - "gopkg.in/gemnasium/logrus-airbrake-hook.v2" // the package is named "airbrake" - logrus_syslog "github.com/sirupsen/logrus/hooks/syslog" - "log/syslog" -) - -func init() { - - // Use the Airbrake hook to report errors that have Error severity or above to - // an exception tracker. You can create custom hooks, see the Hooks section. - log.AddHook(airbrake.NewHook(123, "xyz", "production")) - - hook, err := logrus_syslog.NewSyslogHook("udp", "localhost:514", syslog.LOG_INFO, "") - if err != nil { - log.Error("Unable to connect to local syslog daemon") - } else { - log.AddHook(hook) - } -} -``` -Note: Syslog hook also support connecting to local syslog (Ex. "/dev/log" or "/var/run/syslog" or "/var/run/log"). For the detail, please check the [syslog hook README](hooks/syslog/README.md). - -A list of currently known of service hook can be found in this wiki [page](https://github.com/sirupsen/logrus/wiki/Hooks) - - -#### Level logging - -Logrus has seven logging levels: Trace, Debug, Info, Warning, Error, Fatal and Panic. - -```go -log.Trace("Something very low level.") -log.Debug("Useful debugging information.") -log.Info("Something noteworthy happened!") -log.Warn("You should probably take a look at this.") -log.Error("Something failed but I'm not quitting.") -// Calls os.Exit(1) after logging -log.Fatal("Bye.") -// Calls panic() after logging -log.Panic("I'm bailing.") -``` - -You can set the logging level on a `Logger`, then it will only log entries with -that severity or anything above it: - -```go -// Will log anything that is info or above (warn, error, fatal, panic). Default. -log.SetLevel(log.InfoLevel) -``` - -It may be useful to set `log.Level = logrus.DebugLevel` in a debug or verbose -environment if your application has that. - -#### Entries - -Besides the fields added with `WithField` or `WithFields` some fields are -automatically added to all logging events: - -1. `time`. The timestamp when the entry was created. -2. `msg`. The logging message passed to `{Info,Warn,Error,Fatal,Panic}` after - the `AddFields` call. E.g. `Failed to send event.` -3. `level`. The logging level. E.g. `info`. - -#### Environments - -Logrus has no notion of environment. - -If you wish for hooks and formatters to only be used in specific environments, -you should handle that yourself. For example, if your application has a global -variable `Environment`, which is a string representation of the environment you -could do: - -```go -import ( - log "github.com/sirupsen/logrus" -) - -init() { - // do something here to set environment depending on an environment variable - // or command-line flag - if Environment == "production" { - log.SetFormatter(&log.JSONFormatter{}) - } else { - // The TextFormatter is default, you don't actually have to do this. - log.SetFormatter(&log.TextFormatter{}) - } -} -``` - -This configuration is how `logrus` was intended to be used, but JSON in -production is mostly only useful if you do log aggregation with tools like -Splunk or Logstash. - -#### Formatters - -The built-in logging formatters are: - -* `logrus.TextFormatter`. Logs the event in colors if stdout is a tty, otherwise - without colors. - * *Note:* to force colored output when there is no TTY, set the `ForceColors` - field to `true`. To force no colored output even if there is a TTY set the - `DisableColors` field to `true`. For Windows, see - [github.com/mattn/go-colorable](https://github.com/mattn/go-colorable). - * When colors are enabled, levels are truncated to 4 characters by default. To disable - truncation set the `DisableLevelTruncation` field to `true`. - * All options are listed in the [generated docs](https://godoc.org/github.com/sirupsen/logrus#TextFormatter). -* `logrus.JSONFormatter`. Logs fields as JSON. - * All options are listed in the [generated docs](https://godoc.org/github.com/sirupsen/logrus#JSONFormatter). - -Third party logging formatters: - -* [`FluentdFormatter`](https://github.com/joonix/log). Formats entries that can be parsed by Kubernetes and Google Container Engine. -* [`GELF`](https://github.com/fabienm/go-logrus-formatters). Formats entries so they comply to Graylog's [GELF 1.1 specification](http://docs.graylog.org/en/2.4/pages/gelf.html). -* [`logstash`](https://github.com/bshuster-repo/logrus-logstash-hook). Logs fields as [Logstash](http://logstash.net) Events. -* [`prefixed`](https://github.com/x-cray/logrus-prefixed-formatter). Displays log entry source along with alternative layout. -* [`zalgo`](https://github.com/aybabtme/logzalgo). Invoking the P͉̫o̳̼̊w̖͈̰͎e̬͔̭͂r͚̼̹̲ ̫͓͉̳͈ō̠͕͖̚f̝͍̠ ͕̲̞͖͑Z̖̫̤̫ͪa͉̬͈̗l͖͎g̳̥o̰̥̅!̣͔̲̻͊̄ ̙̘̦̹̦. -* [`nested-logrus-formatter`](https://github.com/antonfisher/nested-logrus-formatter). Converts logrus fields to a nested structure. - -You can define your formatter by implementing the `Formatter` interface, -requiring a `Format` method. `Format` takes an `*Entry`. `entry.Data` is a -`Fields` type (`map[string]interface{}`) with all your fields as well as the -default ones (see Entries section above): - -```go -type MyJSONFormatter struct { -} - -log.SetFormatter(new(MyJSONFormatter)) - -func (f *MyJSONFormatter) Format(entry *Entry) ([]byte, error) { - // Note this doesn't include Time, Level and Message which are available on - // the Entry. Consult `godoc` on information about those fields or read the - // source of the official loggers. - serialized, err := json.Marshal(entry.Data) - if err != nil { - return nil, fmt.Errorf("Failed to marshal fields to JSON, %v", err) - } - return append(serialized, '\n'), nil -} -``` - -#### Logger as an `io.Writer` - -Logrus can be transformed into an `io.Writer`. That writer is the end of an `io.Pipe` and it is your responsibility to close it. - -```go -w := logger.Writer() -defer w.Close() - -srv := http.Server{ - // create a stdlib log.Logger that writes to - // logrus.Logger. - ErrorLog: log.New(w, "", 0), -} -``` - -Each line written to that writer will be printed the usual way, using formatters -and hooks. The level for those entries is `info`. - -This means that we can override the standard library logger easily: - -```go -logger := logrus.New() -logger.Formatter = &logrus.JSONFormatter{} - -// Use logrus for standard log output -// Note that `log` here references stdlib's log -// Not logrus imported under the name `log`. -log.SetOutput(logger.Writer()) -``` - -#### Rotation - -Log rotation is not provided with Logrus. Log rotation should be done by an -external program (like `logrotate(8)`) that can compress and delete old log -entries. It should not be a feature of the application-level logger. - -#### Tools - -| Tool | Description | -| ---- | ----------- | -|[Logrus Mate](https://github.com/gogap/logrus_mate)|Logrus mate is a tool for Logrus to manage loggers, you can initial logger's level, hook and formatter by config file, the logger will generated with different config at different environment.| -|[Logrus Viper Helper](https://github.com/heirko/go-contrib/tree/master/logrusHelper)|An Helper around Logrus to wrap with spf13/Viper to load configuration with fangs! And to simplify Logrus configuration use some behavior of [Logrus Mate](https://github.com/gogap/logrus_mate). [sample](https://github.com/heirko/iris-contrib/blob/master/middleware/logrus-logger/example) | - -#### Testing - -Logrus has a built in facility for asserting the presence of log messages. This is implemented through the `test` hook and provides: - -* decorators for existing logger (`test.NewLocal` and `test.NewGlobal`) which basically just add the `test` hook -* a test logger (`test.NewNullLogger`) that just records log messages (and does not output any): - -```go -import( - "github.com/sirupsen/logrus" - "github.com/sirupsen/logrus/hooks/test" - "github.com/stretchr/testify/assert" - "testing" -) - -func TestSomething(t*testing.T){ - logger, hook := test.NewNullLogger() - logger.Error("Helloerror") - - assert.Equal(t, 1, len(hook.Entries)) - assert.Equal(t, logrus.ErrorLevel, hook.LastEntry().Level) - assert.Equal(t, "Helloerror", hook.LastEntry().Message) - - hook.Reset() - assert.Nil(t, hook.LastEntry()) -} -``` - -#### Fatal handlers - -Logrus can register one or more functions that will be called when any `fatal` -level message is logged. The registered handlers will be executed before -logrus performs a `os.Exit(1)`. This behavior may be helpful if callers need -to gracefully shutdown. Unlike a `panic("Something went wrong...")` call which can be intercepted with a deferred `recover` a call to `os.Exit(1)` can not be intercepted. - -``` -... -handler := func() { - // gracefully shutdown something... -} -logrus.RegisterExitHandler(handler) -... -``` - -#### Thread safety - -By default, Logger is protected by a mutex for concurrent writes. The mutex is held when calling hooks and writing logs. -If you are sure such locking is not needed, you can call logger.SetNoLock() to disable the locking. - -Situation when locking is not needed includes: - -* You have no hooks registered, or hooks calling is already thread-safe. - -* Writing to logger.Out is already thread-safe, for example: - - 1) logger.Out is protected by locks. - - 2) logger.Out is a os.File handler opened with `O_APPEND` flag, and every write is smaller than 4k. (This allow multi-thread/multi-process writing) - - (Refer to http://www.notthewizard.com/2014/06/17/are-files-appends-really-atomic/) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/alt_exit.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/alt_exit.go deleted file mode 100644 index 8fd189e1c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/alt_exit.go +++ /dev/null @@ -1,76 +0,0 @@ -package logrus - -// The following code was sourced and modified from the -// https://github.com/tebeka/atexit package governed by the following license: -// -// Copyright (c) 2012 Miki Tebeka . -// -// 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. - -import ( - "fmt" - "os" -) - -var handlers = []func(){} - -func runHandler(handler func()) { - defer func() { - if err := recover(); err != nil { - fmt.Fprintln(os.Stderr, "Error: Logrus exit handler error:", err) - } - }() - - handler() -} - -func runHandlers() { - for _, handler := range handlers { - runHandler(handler) - } -} - -// Exit runs all the Logrus atexit handlers and then terminates the program using os.Exit(code) -func Exit(code int) { - runHandlers() - os.Exit(code) -} - -// RegisterExitHandler appends a Logrus Exit handler to the list of handlers, -// call logrus.Exit to invoke all handlers. The handlers will also be invoked when -// any Fatal log entry is made. -// -// This method is useful when a caller wishes to use logrus to log a fatal -// message but also needs to gracefully shutdown. An example usecase could be -// closing database connections, or sending a alert that the application is -// closing. -func RegisterExitHandler(handler func()) { - handlers = append(handlers, handler) -} - -// DeferExitHandler prepends a Logrus Exit handler to the list of handlers, -// call logrus.Exit to invoke all handlers. The handlers will also be invoked when -// any Fatal log entry is made. -// -// This method is useful when a caller wishes to use logrus to log a fatal -// message but also needs to gracefully shutdown. An example usecase could be -// closing database connections, or sending a alert that the application is -// closing. -func DeferExitHandler(handler func()) { - handlers = append([]func(){handler}, handlers...) -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/appveyor.yml b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/appveyor.yml deleted file mode 100644 index 96c2ce15f..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/appveyor.yml +++ /dev/null @@ -1,14 +0,0 @@ -version: "{build}" -platform: x64 -clone_folder: c:\gopath\src\github.com\sirupsen\logrus -environment: - GOPATH: c:\gopath -branches: - only: - - master -install: - - set PATH=%GOPATH%\bin;c:\go\bin;%PATH% - - go version -build_script: - - go get -t - - go test diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/doc.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/doc.go deleted file mode 100644 index da67aba06..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/doc.go +++ /dev/null @@ -1,26 +0,0 @@ -/* -Package logrus is a structured logger for Go, completely API compatible with the standard library logger. - - -The simplest way to use Logrus is simply the package-level exported logger: - - package main - - import ( - log "github.com/sirupsen/logrus" - ) - - func main() { - log.WithFields(log.Fields{ - "animal": "walrus", - "number": 1, - "size": 10, - }).Info("A walrus appears") - } - -Output: - time="2015-09-07T08:48:33Z" level=info msg="A walrus appears" animal=walrus number=1 size=10 - -For a full guide visit https://github.com/sirupsen/logrus -*/ -package logrus diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/entry.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/entry.go deleted file mode 100644 index 63e25583c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/entry.go +++ /dev/null @@ -1,407 +0,0 @@ -package logrus - -import ( - "bytes" - "context" - "fmt" - "os" - "reflect" - "runtime" - "strings" - "sync" - "time" -) - -var ( - bufferPool *sync.Pool - - // qualified package name, cached at first use - logrusPackage string - - // Positions in the call stack when tracing to report the calling method - minimumCallerDepth int - - // Used for caller information initialisation - callerInitOnce sync.Once -) - -const ( - maximumCallerDepth int = 25 - knownLogrusFrames int = 4 -) - -func init() { - bufferPool = &sync.Pool{ - New: func() interface{} { - return new(bytes.Buffer) - }, - } - - // start at the bottom of the stack before the package-name cache is primed - minimumCallerDepth = 1 -} - -// Defines the key when adding errors using WithError. -var ErrorKey = "error" - -// An entry is the final or intermediate Logrus logging entry. It contains all -// the fields passed with WithField{,s}. It's finally logged when Trace, Debug, -// Info, Warn, Error, Fatal or Panic is called on it. These objects can be -// reused and passed around as much as you wish to avoid field duplication. -type Entry struct { - Logger *Logger - - // Contains all the fields set by the user. - Data Fields - - // Time at which the log entry was created - Time time.Time - - // Level the log entry was logged at: Trace, Debug, Info, Warn, Error, Fatal or Panic - // This field will be set on entry firing and the value will be equal to the one in Logger struct field. - Level Level - - // Calling method, with package name - Caller *runtime.Frame - - // Message passed to Trace, Debug, Info, Warn, Error, Fatal or Panic - Message string - - // When formatter is called in entry.log(), a Buffer may be set to entry - Buffer *bytes.Buffer - - // Contains the context set by the user. Useful for hook processing etc. - Context context.Context - - // err may contain a field formatting error - err string -} - -func NewEntry(logger *Logger) *Entry { - return &Entry{ - Logger: logger, - // Default is three fields, plus one optional. Give a little extra room. - Data: make(Fields, 6), - } -} - -// Returns the string representation from the reader and ultimately the -// formatter. -func (entry *Entry) String() (string, error) { - serialized, err := entry.Logger.Formatter.Format(entry) - if err != nil { - return "", err - } - str := string(serialized) - return str, nil -} - -// Add an error as single field (using the key defined in ErrorKey) to the Entry. -func (entry *Entry) WithError(err error) *Entry { - return entry.WithField(ErrorKey, err) -} - -// Add a context to the Entry. -func (entry *Entry) WithContext(ctx context.Context) *Entry { - return &Entry{Logger: entry.Logger, Data: entry.Data, Time: entry.Time, err: entry.err, Context: ctx} -} - -// Add a single field to the Entry. -func (entry *Entry) WithField(key string, value interface{}) *Entry { - return entry.WithFields(Fields{key: value}) -} - -// Add a map of fields to the Entry. -func (entry *Entry) WithFields(fields Fields) *Entry { - data := make(Fields, len(entry.Data)+len(fields)) - for k, v := range entry.Data { - data[k] = v - } - fieldErr := entry.err - for k, v := range fields { - isErrField := false - if t := reflect.TypeOf(v); t != nil { - switch t.Kind() { - case reflect.Func: - isErrField = true - case reflect.Ptr: - isErrField = t.Elem().Kind() == reflect.Func - } - } - if isErrField { - tmp := fmt.Sprintf("can not add field %q", k) - if fieldErr != "" { - fieldErr = entry.err + ", " + tmp - } else { - fieldErr = tmp - } - } else { - data[k] = v - } - } - return &Entry{Logger: entry.Logger, Data: data, Time: entry.Time, err: fieldErr, Context: entry.Context} -} - -// Overrides the time of the Entry. -func (entry *Entry) WithTime(t time.Time) *Entry { - return &Entry{Logger: entry.Logger, Data: entry.Data, Time: t, err: entry.err, Context: entry.Context} -} - -// getPackageName reduces a fully qualified function name to the package name -// There really ought to be to be a better way... -func getPackageName(f string) string { - for { - lastPeriod := strings.LastIndex(f, ".") - lastSlash := strings.LastIndex(f, "/") - if lastPeriod > lastSlash { - f = f[:lastPeriod] - } else { - break - } - } - - return f -} - -// getCaller retrieves the name of the first non-logrus calling function -func getCaller() *runtime.Frame { - - // cache this package's fully-qualified name - callerInitOnce.Do(func() { - pcs := make([]uintptr, 2) - _ = runtime.Callers(0, pcs) - logrusPackage = getPackageName(runtime.FuncForPC(pcs[1]).Name()) - - // now that we have the cache, we can skip a minimum count of known-logrus functions - // XXX this is dubious, the number of frames may vary - minimumCallerDepth = knownLogrusFrames - }) - - // Restrict the lookback frames to avoid runaway lookups - pcs := make([]uintptr, maximumCallerDepth) - depth := runtime.Callers(minimumCallerDepth, pcs) - frames := runtime.CallersFrames(pcs[:depth]) - - for f, again := frames.Next(); again; f, again = frames.Next() { - pkg := getPackageName(f.Function) - - // If the caller isn't part of this package, we're done - if pkg != logrusPackage { - return &f - } - } - - // if we got here, we failed to find the caller's context - return nil -} - -func (entry Entry) HasCaller() (has bool) { - return entry.Logger != nil && - entry.Logger.ReportCaller && - entry.Caller != nil -} - -// This function is not declared with a pointer value because otherwise -// race conditions will occur when using multiple goroutines -func (entry Entry) log(level Level, msg string) { - var buffer *bytes.Buffer - - // Default to now, but allow users to override if they want. - // - // We don't have to worry about polluting future calls to Entry#log() - // with this assignment because this function is declared with a - // non-pointer receiver. - if entry.Time.IsZero() { - entry.Time = time.Now() - } - - entry.Level = level - entry.Message = msg - if entry.Logger.ReportCaller { - entry.Caller = getCaller() - } - - entry.fireHooks() - - buffer = bufferPool.Get().(*bytes.Buffer) - buffer.Reset() - defer bufferPool.Put(buffer) - entry.Buffer = buffer - - entry.write() - - entry.Buffer = nil - - // To avoid Entry#log() returning a value that only would make sense for - // panic() to use in Entry#Panic(), we avoid the allocation by checking - // directly here. - if level <= PanicLevel { - panic(&entry) - } -} - -func (entry *Entry) fireHooks() { - entry.Logger.mu.Lock() - defer entry.Logger.mu.Unlock() - err := entry.Logger.Hooks.Fire(entry.Level, entry) - if err != nil { - fmt.Fprintf(os.Stderr, "Failed to fire hook: %v\n", err) - } -} - -func (entry *Entry) write() { - entry.Logger.mu.Lock() - defer entry.Logger.mu.Unlock() - serialized, err := entry.Logger.Formatter.Format(entry) - if err != nil { - fmt.Fprintf(os.Stderr, "Failed to obtain reader, %v\n", err) - } else { - _, err = entry.Logger.Out.Write(serialized) - if err != nil { - fmt.Fprintf(os.Stderr, "Failed to write to log, %v\n", err) - } - } -} - -func (entry *Entry) Log(level Level, args ...interface{}) { - if entry.Logger.IsLevelEnabled(level) { - entry.log(level, fmt.Sprint(args...)) - } -} - -func (entry *Entry) Trace(args ...interface{}) { - entry.Log(TraceLevel, args...) -} - -func (entry *Entry) Debug(args ...interface{}) { - entry.Log(DebugLevel, args...) -} - -func (entry *Entry) Print(args ...interface{}) { - entry.Info(args...) -} - -func (entry *Entry) Info(args ...interface{}) { - entry.Log(InfoLevel, args...) -} - -func (entry *Entry) Warn(args ...interface{}) { - entry.Log(WarnLevel, args...) -} - -func (entry *Entry) Warning(args ...interface{}) { - entry.Warn(args...) -} - -func (entry *Entry) Error(args ...interface{}) { - entry.Log(ErrorLevel, args...) -} - -func (entry *Entry) Fatal(args ...interface{}) { - entry.Log(FatalLevel, args...) - entry.Logger.Exit(1) -} - -func (entry *Entry) Panic(args ...interface{}) { - entry.Log(PanicLevel, args...) - panic(fmt.Sprint(args...)) -} - -// Entry Printf family functions - -func (entry *Entry) Logf(level Level, format string, args ...interface{}) { - if entry.Logger.IsLevelEnabled(level) { - entry.Log(level, fmt.Sprintf(format, args...)) - } -} - -func (entry *Entry) Tracef(format string, args ...interface{}) { - entry.Logf(TraceLevel, format, args...) -} - -func (entry *Entry) Debugf(format string, args ...interface{}) { - entry.Logf(DebugLevel, format, args...) -} - -func (entry *Entry) Infof(format string, args ...interface{}) { - entry.Logf(InfoLevel, format, args...) -} - -func (entry *Entry) Printf(format string, args ...interface{}) { - entry.Infof(format, args...) -} - -func (entry *Entry) Warnf(format string, args ...interface{}) { - entry.Logf(WarnLevel, format, args...) -} - -func (entry *Entry) Warningf(format string, args ...interface{}) { - entry.Warnf(format, args...) -} - -func (entry *Entry) Errorf(format string, args ...interface{}) { - entry.Logf(ErrorLevel, format, args...) -} - -func (entry *Entry) Fatalf(format string, args ...interface{}) { - entry.Logf(FatalLevel, format, args...) - entry.Logger.Exit(1) -} - -func (entry *Entry) Panicf(format string, args ...interface{}) { - entry.Logf(PanicLevel, format, args...) -} - -// Entry Println family functions - -func (entry *Entry) Logln(level Level, args ...interface{}) { - if entry.Logger.IsLevelEnabled(level) { - entry.Log(level, entry.sprintlnn(args...)) - } -} - -func (entry *Entry) Traceln(args ...interface{}) { - entry.Logln(TraceLevel, args...) -} - -func (entry *Entry) Debugln(args ...interface{}) { - entry.Logln(DebugLevel, args...) -} - -func (entry *Entry) Infoln(args ...interface{}) { - entry.Logln(InfoLevel, args...) -} - -func (entry *Entry) Println(args ...interface{}) { - entry.Infoln(args...) -} - -func (entry *Entry) Warnln(args ...interface{}) { - entry.Logln(WarnLevel, args...) -} - -func (entry *Entry) Warningln(args ...interface{}) { - entry.Warnln(args...) -} - -func (entry *Entry) Errorln(args ...interface{}) { - entry.Logln(ErrorLevel, args...) -} - -func (entry *Entry) Fatalln(args ...interface{}) { - entry.Logln(FatalLevel, args...) - entry.Logger.Exit(1) -} - -func (entry *Entry) Panicln(args ...interface{}) { - entry.Logln(PanicLevel, args...) -} - -// Sprintlnn => Sprint no newline. This is to get the behavior of how -// fmt.Sprintln where spaces are always added between operands, regardless of -// their type. Instead of vendoring the Sprintln implementation to spare a -// string allocation, we do the simplest thing. -func (entry *Entry) sprintlnn(args ...interface{}) string { - msg := fmt.Sprintln(args...) - return msg[:len(msg)-1] -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/exported.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/exported.go deleted file mode 100644 index 62fc2f219..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/exported.go +++ /dev/null @@ -1,225 +0,0 @@ -package logrus - -import ( - "context" - "io" - "time" -) - -var ( - // std is the name of the standard logger in stdlib `log` - std = New() -) - -func StandardLogger() *Logger { - return std -} - -// SetOutput sets the standard logger output. -func SetOutput(out io.Writer) { - std.SetOutput(out) -} - -// SetFormatter sets the standard logger formatter. -func SetFormatter(formatter Formatter) { - std.SetFormatter(formatter) -} - -// SetReportCaller sets whether the standard logger will include the calling -// method as a field. -func SetReportCaller(include bool) { - std.SetReportCaller(include) -} - -// SetLevel sets the standard logger level. -func SetLevel(level Level) { - std.SetLevel(level) -} - -// GetLevel returns the standard logger level. -func GetLevel() Level { - return std.GetLevel() -} - -// IsLevelEnabled checks if the log level of the standard logger is greater than the level param -func IsLevelEnabled(level Level) bool { - return std.IsLevelEnabled(level) -} - -// AddHook adds a hook to the standard logger hooks. -func AddHook(hook Hook) { - std.AddHook(hook) -} - -// WithError creates an entry from the standard logger and adds an error to it, using the value defined in ErrorKey as key. -func WithError(err error) *Entry { - return std.WithField(ErrorKey, err) -} - -// WithContext creates an entry from the standard logger and adds a context to it. -func WithContext(ctx context.Context) *Entry { - return std.WithContext(ctx) -} - -// WithField creates an entry from the standard logger and adds a field to -// it. If you want multiple fields, use `WithFields`. -// -// Note that it doesn't log until you call Debug, Print, Info, Warn, Fatal -// or Panic on the Entry it returns. -func WithField(key string, value interface{}) *Entry { - return std.WithField(key, value) -} - -// WithFields creates an entry from the standard logger and adds multiple -// fields to it. This is simply a helper for `WithField`, invoking it -// once for each field. -// -// Note that it doesn't log until you call Debug, Print, Info, Warn, Fatal -// or Panic on the Entry it returns. -func WithFields(fields Fields) *Entry { - return std.WithFields(fields) -} - -// WithTime creats an entry from the standard logger and overrides the time of -// logs generated with it. -// -// Note that it doesn't log until you call Debug, Print, Info, Warn, Fatal -// or Panic on the Entry it returns. -func WithTime(t time.Time) *Entry { - return std.WithTime(t) -} - -// Trace logs a message at level Trace on the standard logger. -func Trace(args ...interface{}) { - std.Trace(args...) -} - -// Debug logs a message at level Debug on the standard logger. -func Debug(args ...interface{}) { - std.Debug(args...) -} - -// Print logs a message at level Info on the standard logger. -func Print(args ...interface{}) { - std.Print(args...) -} - -// Info logs a message at level Info on the standard logger. -func Info(args ...interface{}) { - std.Info(args...) -} - -// Warn logs a message at level Warn on the standard logger. -func Warn(args ...interface{}) { - std.Warn(args...) -} - -// Warning logs a message at level Warn on the standard logger. -func Warning(args ...interface{}) { - std.Warning(args...) -} - -// Error logs a message at level Error on the standard logger. -func Error(args ...interface{}) { - std.Error(args...) -} - -// Panic logs a message at level Panic on the standard logger. -func Panic(args ...interface{}) { - std.Panic(args...) -} - -// Fatal logs a message at level Fatal on the standard logger then the process will exit with status set to 1. -func Fatal(args ...interface{}) { - std.Fatal(args...) -} - -// Tracef logs a message at level Trace on the standard logger. -func Tracef(format string, args ...interface{}) { - std.Tracef(format, args...) -} - -// Debugf logs a message at level Debug on the standard logger. -func Debugf(format string, args ...interface{}) { - std.Debugf(format, args...) -} - -// Printf logs a message at level Info on the standard logger. -func Printf(format string, args ...interface{}) { - std.Printf(format, args...) -} - -// Infof logs a message at level Info on the standard logger. -func Infof(format string, args ...interface{}) { - std.Infof(format, args...) -} - -// Warnf logs a message at level Warn on the standard logger. -func Warnf(format string, args ...interface{}) { - std.Warnf(format, args...) -} - -// Warningf logs a message at level Warn on the standard logger. -func Warningf(format string, args ...interface{}) { - std.Warningf(format, args...) -} - -// Errorf logs a message at level Error on the standard logger. -func Errorf(format string, args ...interface{}) { - std.Errorf(format, args...) -} - -// Panicf logs a message at level Panic on the standard logger. -func Panicf(format string, args ...interface{}) { - std.Panicf(format, args...) -} - -// Fatalf logs a message at level Fatal on the standard logger then the process will exit with status set to 1. -func Fatalf(format string, args ...interface{}) { - std.Fatalf(format, args...) -} - -// Traceln logs a message at level Trace on the standard logger. -func Traceln(args ...interface{}) { - std.Traceln(args...) -} - -// Debugln logs a message at level Debug on the standard logger. -func Debugln(args ...interface{}) { - std.Debugln(args...) -} - -// Println logs a message at level Info on the standard logger. -func Println(args ...interface{}) { - std.Println(args...) -} - -// Infoln logs a message at level Info on the standard logger. -func Infoln(args ...interface{}) { - std.Infoln(args...) -} - -// Warnln logs a message at level Warn on the standard logger. -func Warnln(args ...interface{}) { - std.Warnln(args...) -} - -// Warningln logs a message at level Warn on the standard logger. -func Warningln(args ...interface{}) { - std.Warningln(args...) -} - -// Errorln logs a message at level Error on the standard logger. -func Errorln(args ...interface{}) { - std.Errorln(args...) -} - -// Panicln logs a message at level Panic on the standard logger. -func Panicln(args ...interface{}) { - std.Panicln(args...) -} - -// Fatalln logs a message at level Fatal on the standard logger then the process will exit with status set to 1. -func Fatalln(args ...interface{}) { - std.Fatalln(args...) -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/formatter.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/formatter.go deleted file mode 100644 index 408883773..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/formatter.go +++ /dev/null @@ -1,78 +0,0 @@ -package logrus - -import "time" - -// Default key names for the default fields -const ( - defaultTimestampFormat = time.RFC3339 - FieldKeyMsg = "msg" - FieldKeyLevel = "level" - FieldKeyTime = "time" - FieldKeyLogrusError = "logrus_error" - FieldKeyFunc = "func" - FieldKeyFile = "file" -) - -// The Formatter interface is used to implement a custom Formatter. It takes an -// `Entry`. It exposes all the fields, including the default ones: -// -// * `entry.Data["msg"]`. The message passed from Info, Warn, Error .. -// * `entry.Data["time"]`. The timestamp. -// * `entry.Data["level"]. The level the entry was logged at. -// -// Any additional fields added with `WithField` or `WithFields` are also in -// `entry.Data`. Format is expected to return an array of bytes which are then -// logged to `logger.Out`. -type Formatter interface { - Format(*Entry) ([]byte, error) -} - -// This is to not silently overwrite `time`, `msg`, `func` and `level` fields when -// dumping it. If this code wasn't there doing: -// -// logrus.WithField("level", 1).Info("hello") -// -// Would just silently drop the user provided level. Instead with this code -// it'll logged as: -// -// {"level": "info", "fields.level": 1, "msg": "hello", "time": "..."} -// -// It's not exported because it's still using Data in an opinionated way. It's to -// avoid code duplication between the two default formatters. -func prefixFieldClashes(data Fields, fieldMap FieldMap, reportCaller bool) { - timeKey := fieldMap.resolve(FieldKeyTime) - if t, ok := data[timeKey]; ok { - data["fields."+timeKey] = t - delete(data, timeKey) - } - - msgKey := fieldMap.resolve(FieldKeyMsg) - if m, ok := data[msgKey]; ok { - data["fields."+msgKey] = m - delete(data, msgKey) - } - - levelKey := fieldMap.resolve(FieldKeyLevel) - if l, ok := data[levelKey]; ok { - data["fields."+levelKey] = l - delete(data, levelKey) - } - - logrusErrKey := fieldMap.resolve(FieldKeyLogrusError) - if l, ok := data[logrusErrKey]; ok { - data["fields."+logrusErrKey] = l - delete(data, logrusErrKey) - } - - // If reportCaller is not set, 'func' will not conflict. - if reportCaller { - funcKey := fieldMap.resolve(FieldKeyFunc) - if l, ok := data[funcKey]; ok { - data["fields."+funcKey] = l - } - fileKey := fieldMap.resolve(FieldKeyFile) - if l, ok := data[fileKey]; ok { - data["fields."+fileKey] = l - } - } -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/go.mod b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/go.mod deleted file mode 100644 index 8261a2b3a..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/go.mod +++ /dev/null @@ -1,10 +0,0 @@ -module github.com/sirupsen/logrus - -require ( - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/konsorten/go-windows-terminal-sequences v1.0.1 - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/stretchr/objx v0.1.1 // indirect - github.com/stretchr/testify v1.2.2 - golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/go.sum b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/go.sum deleted file mode 100644 index 2d787be60..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/go.sum +++ /dev/null @@ -1,13 +0,0 @@ -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/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f2633dfe h1:CHRGQ8V7OlCYtwaKPJi3iA7J+YdNKdo8j7nG5IgDhjs= -github.com/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f2633dfe/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -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/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33 h1:I6FyU15t786LL7oL/hn43zqTuEGr4PN7F4XJ1p4E3Y8= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/hooks.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/hooks.go deleted file mode 100644 index 3f151cdc3..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/hooks.go +++ /dev/null @@ -1,34 +0,0 @@ -package logrus - -// A hook to be fired when logging on the logging levels returned from -// `Levels()` on your implementation of the interface. Note that this is not -// fired in a goroutine or a channel with workers, you should handle such -// functionality yourself if your call is non-blocking and you don't wish for -// the logging calls for levels returned from `Levels()` to block. -type Hook interface { - Levels() []Level - Fire(*Entry) error -} - -// Internal type for storing the hooks on a logger instance. -type LevelHooks map[Level][]Hook - -// Add a hook to an instance of logger. This is called with -// `log.Hooks.Add(new(MyHook))` where `MyHook` implements the `Hook` interface. -func (hooks LevelHooks) Add(hook Hook) { - for _, level := range hook.Levels() { - hooks[level] = append(hooks[level], hook) - } -} - -// Fire all the hooks for the passed level. Used by `entry.log` to fire -// appropriate hooks for a log entry. -func (hooks LevelHooks) Fire(level Level, entry *Entry) error { - for _, hook := range hooks[level] { - if err := hook.Fire(entry); err != nil { - return err - } - } - - return nil -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/json_formatter.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/json_formatter.go deleted file mode 100644 index 098a21a06..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/json_formatter.go +++ /dev/null @@ -1,121 +0,0 @@ -package logrus - -import ( - "bytes" - "encoding/json" - "fmt" - "runtime" -) - -type fieldKey string - -// FieldMap allows customization of the key names for default fields. -type FieldMap map[fieldKey]string - -func (f FieldMap) resolve(key fieldKey) string { - if k, ok := f[key]; ok { - return k - } - - return string(key) -} - -// JSONFormatter formats logs into parsable json -type JSONFormatter struct { - // TimestampFormat sets the format used for marshaling timestamps. - TimestampFormat string - - // DisableTimestamp allows disabling automatic timestamps in output - DisableTimestamp bool - - // DataKey allows users to put all the log entry parameters into a nested dictionary at a given key. - DataKey string - - // FieldMap allows users to customize the names of keys for default fields. - // As an example: - // formatter := &JSONFormatter{ - // FieldMap: FieldMap{ - // FieldKeyTime: "@timestamp", - // FieldKeyLevel: "@level", - // FieldKeyMsg: "@message", - // FieldKeyFunc: "@caller", - // }, - // } - FieldMap FieldMap - - // CallerPrettyfier can be set by the user to modify the content - // of the function and file keys in the json data when ReportCaller is - // activated. If any of the returned value is the empty string the - // corresponding key will be removed from json fields. - CallerPrettyfier func(*runtime.Frame) (function string, file string) - - // PrettyPrint will indent all json logs - PrettyPrint bool -} - -// Format renders a single log entry -func (f *JSONFormatter) Format(entry *Entry) ([]byte, error) { - data := make(Fields, len(entry.Data)+4) - for k, v := range entry.Data { - switch v := v.(type) { - case error: - // Otherwise errors are ignored by `encoding/json` - // https://github.com/sirupsen/logrus/issues/137 - data[k] = v.Error() - default: - data[k] = v - } - } - - if f.DataKey != "" { - newData := make(Fields, 4) - newData[f.DataKey] = data - data = newData - } - - prefixFieldClashes(data, f.FieldMap, entry.HasCaller()) - - timestampFormat := f.TimestampFormat - if timestampFormat == "" { - timestampFormat = defaultTimestampFormat - } - - if entry.err != "" { - data[f.FieldMap.resolve(FieldKeyLogrusError)] = entry.err - } - if !f.DisableTimestamp { - data[f.FieldMap.resolve(FieldKeyTime)] = entry.Time.Format(timestampFormat) - } - data[f.FieldMap.resolve(FieldKeyMsg)] = entry.Message - data[f.FieldMap.resolve(FieldKeyLevel)] = entry.Level.String() - if entry.HasCaller() { - funcVal := entry.Caller.Function - fileVal := fmt.Sprintf("%s:%d", entry.Caller.File, entry.Caller.Line) - if f.CallerPrettyfier != nil { - funcVal, fileVal = f.CallerPrettyfier(entry.Caller) - } - if funcVal != "" { - data[f.FieldMap.resolve(FieldKeyFunc)] = funcVal - } - if fileVal != "" { - data[f.FieldMap.resolve(FieldKeyFile)] = fileVal - } - } - - var b *bytes.Buffer - if entry.Buffer != nil { - b = entry.Buffer - } else { - b = &bytes.Buffer{} - } - - encoder := json.NewEncoder(b) - if f.PrettyPrint { - encoder.SetIndent("", " ") - } - if err := encoder.Encode(data); err != nil { - return nil, fmt.Errorf("failed to marshal fields to JSON, %v", err) - } - - return b.Bytes(), nil -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/logger.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/logger.go deleted file mode 100644 index c0c0b1e55..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/logger.go +++ /dev/null @@ -1,351 +0,0 @@ -package logrus - -import ( - "context" - "io" - "os" - "sync" - "sync/atomic" - "time" -) - -type Logger struct { - // The logs are `io.Copy`'d to this in a mutex. It's common to set this to a - // file, or leave it default which is `os.Stderr`. You can also set this to - // something more adventurous, such as logging to Kafka. - Out io.Writer - // Hooks for the logger instance. These allow firing events based on logging - // levels and log entries. For example, to send errors to an error tracking - // service, log to StatsD or dump the core on fatal errors. - Hooks LevelHooks - // All log entries pass through the formatter before logged to Out. The - // included formatters are `TextFormatter` and `JSONFormatter` for which - // TextFormatter is the default. In development (when a TTY is attached) it - // logs with colors, but to a file it wouldn't. You can easily implement your - // own that implements the `Formatter` interface, see the `README` or included - // formatters for examples. - Formatter Formatter - - // Flag for whether to log caller info (off by default) - ReportCaller bool - - // The logging level the logger should log at. This is typically (and defaults - // to) `logrus.Info`, which allows Info(), Warn(), Error() and Fatal() to be - // logged. - Level Level - // Used to sync writing to the log. Locking is enabled by Default - mu MutexWrap - // Reusable empty entry - entryPool sync.Pool - // Function to exit the application, defaults to `os.Exit()` - ExitFunc exitFunc -} - -type exitFunc func(int) - -type MutexWrap struct { - lock sync.Mutex - disabled bool -} - -func (mw *MutexWrap) Lock() { - if !mw.disabled { - mw.lock.Lock() - } -} - -func (mw *MutexWrap) Unlock() { - if !mw.disabled { - mw.lock.Unlock() - } -} - -func (mw *MutexWrap) Disable() { - mw.disabled = true -} - -// Creates a new logger. Configuration should be set by changing `Formatter`, -// `Out` and `Hooks` directly on the default logger instance. You can also just -// instantiate your own: -// -// var log = &Logger{ -// Out: os.Stderr, -// Formatter: new(JSONFormatter), -// Hooks: make(LevelHooks), -// Level: logrus.DebugLevel, -// } -// -// It's recommended to make this a global instance called `log`. -func New() *Logger { - return &Logger{ - Out: os.Stderr, - Formatter: new(TextFormatter), - Hooks: make(LevelHooks), - Level: InfoLevel, - ExitFunc: os.Exit, - ReportCaller: false, - } -} - -func (logger *Logger) newEntry() *Entry { - entry, ok := logger.entryPool.Get().(*Entry) - if ok { - return entry - } - return NewEntry(logger) -} - -func (logger *Logger) releaseEntry(entry *Entry) { - entry.Data = map[string]interface{}{} - logger.entryPool.Put(entry) -} - -// Adds a field to the log entry, note that it doesn't log until you call -// Debug, Print, Info, Warn, Error, Fatal or Panic. It only creates a log entry. -// If you want multiple fields, use `WithFields`. -func (logger *Logger) WithField(key string, value interface{}) *Entry { - entry := logger.newEntry() - defer logger.releaseEntry(entry) - return entry.WithField(key, value) -} - -// Adds a struct of fields to the log entry. All it does is call `WithField` for -// each `Field`. -func (logger *Logger) WithFields(fields Fields) *Entry { - entry := logger.newEntry() - defer logger.releaseEntry(entry) - return entry.WithFields(fields) -} - -// Add an error as single field to the log entry. All it does is call -// `WithError` for the given `error`. -func (logger *Logger) WithError(err error) *Entry { - entry := logger.newEntry() - defer logger.releaseEntry(entry) - return entry.WithError(err) -} - -// Add a context to the log entry. -func (logger *Logger) WithContext(ctx context.Context) *Entry { - entry := logger.newEntry() - defer logger.releaseEntry(entry) - return entry.WithContext(ctx) -} - -// Overrides the time of the log entry. -func (logger *Logger) WithTime(t time.Time) *Entry { - entry := logger.newEntry() - defer logger.releaseEntry(entry) - return entry.WithTime(t) -} - -func (logger *Logger) Logf(level Level, format string, args ...interface{}) { - if logger.IsLevelEnabled(level) { - entry := logger.newEntry() - entry.Logf(level, format, args...) - logger.releaseEntry(entry) - } -} - -func (logger *Logger) Tracef(format string, args ...interface{}) { - logger.Logf(TraceLevel, format, args...) -} - -func (logger *Logger) Debugf(format string, args ...interface{}) { - logger.Logf(DebugLevel, format, args...) -} - -func (logger *Logger) Infof(format string, args ...interface{}) { - logger.Logf(InfoLevel, format, args...) -} - -func (logger *Logger) Printf(format string, args ...interface{}) { - entry := logger.newEntry() - entry.Printf(format, args...) - logger.releaseEntry(entry) -} - -func (logger *Logger) Warnf(format string, args ...interface{}) { - logger.Logf(WarnLevel, format, args...) -} - -func (logger *Logger) Warningf(format string, args ...interface{}) { - logger.Warnf(format, args...) -} - -func (logger *Logger) Errorf(format string, args ...interface{}) { - logger.Logf(ErrorLevel, format, args...) -} - -func (logger *Logger) Fatalf(format string, args ...interface{}) { - logger.Logf(FatalLevel, format, args...) - logger.Exit(1) -} - -func (logger *Logger) Panicf(format string, args ...interface{}) { - logger.Logf(PanicLevel, format, args...) -} - -func (logger *Logger) Log(level Level, args ...interface{}) { - if logger.IsLevelEnabled(level) { - entry := logger.newEntry() - entry.Log(level, args...) - logger.releaseEntry(entry) - } -} - -func (logger *Logger) Trace(args ...interface{}) { - logger.Log(TraceLevel, args...) -} - -func (logger *Logger) Debug(args ...interface{}) { - logger.Log(DebugLevel, args...) -} - -func (logger *Logger) Info(args ...interface{}) { - logger.Log(InfoLevel, args...) -} - -func (logger *Logger) Print(args ...interface{}) { - entry := logger.newEntry() - entry.Print(args...) - logger.releaseEntry(entry) -} - -func (logger *Logger) Warn(args ...interface{}) { - logger.Log(WarnLevel, args...) -} - -func (logger *Logger) Warning(args ...interface{}) { - logger.Warn(args...) -} - -func (logger *Logger) Error(args ...interface{}) { - logger.Log(ErrorLevel, args...) -} - -func (logger *Logger) Fatal(args ...interface{}) { - logger.Log(FatalLevel, args...) - logger.Exit(1) -} - -func (logger *Logger) Panic(args ...interface{}) { - logger.Log(PanicLevel, args...) -} - -func (logger *Logger) Logln(level Level, args ...interface{}) { - if logger.IsLevelEnabled(level) { - entry := logger.newEntry() - entry.Logln(level, args...) - logger.releaseEntry(entry) - } -} - -func (logger *Logger) Traceln(args ...interface{}) { - logger.Logln(TraceLevel, args...) -} - -func (logger *Logger) Debugln(args ...interface{}) { - logger.Logln(DebugLevel, args...) -} - -func (logger *Logger) Infoln(args ...interface{}) { - logger.Logln(InfoLevel, args...) -} - -func (logger *Logger) Println(args ...interface{}) { - entry := logger.newEntry() - entry.Println(args...) - logger.releaseEntry(entry) -} - -func (logger *Logger) Warnln(args ...interface{}) { - logger.Logln(WarnLevel, args...) -} - -func (logger *Logger) Warningln(args ...interface{}) { - logger.Warnln(args...) -} - -func (logger *Logger) Errorln(args ...interface{}) { - logger.Logln(ErrorLevel, args...) -} - -func (logger *Logger) Fatalln(args ...interface{}) { - logger.Logln(FatalLevel, args...) - logger.Exit(1) -} - -func (logger *Logger) Panicln(args ...interface{}) { - logger.Logln(PanicLevel, args...) -} - -func (logger *Logger) Exit(code int) { - runHandlers() - if logger.ExitFunc == nil { - logger.ExitFunc = os.Exit - } - logger.ExitFunc(code) -} - -//When file is opened with appending mode, it's safe to -//write concurrently to a file (within 4k message on Linux). -//In these cases user can choose to disable the lock. -func (logger *Logger) SetNoLock() { - logger.mu.Disable() -} - -func (logger *Logger) level() Level { - return Level(atomic.LoadUint32((*uint32)(&logger.Level))) -} - -// SetLevel sets the logger level. -func (logger *Logger) SetLevel(level Level) { - atomic.StoreUint32((*uint32)(&logger.Level), uint32(level)) -} - -// GetLevel returns the logger level. -func (logger *Logger) GetLevel() Level { - return logger.level() -} - -// AddHook adds a hook to the logger hooks. -func (logger *Logger) AddHook(hook Hook) { - logger.mu.Lock() - defer logger.mu.Unlock() - logger.Hooks.Add(hook) -} - -// IsLevelEnabled checks if the log level of the logger is greater than the level param -func (logger *Logger) IsLevelEnabled(level Level) bool { - return logger.level() >= level -} - -// SetFormatter sets the logger formatter. -func (logger *Logger) SetFormatter(formatter Formatter) { - logger.mu.Lock() - defer logger.mu.Unlock() - logger.Formatter = formatter -} - -// SetOutput sets the logger output. -func (logger *Logger) SetOutput(output io.Writer) { - logger.mu.Lock() - defer logger.mu.Unlock() - logger.Out = output -} - -func (logger *Logger) SetReportCaller(reportCaller bool) { - logger.mu.Lock() - defer logger.mu.Unlock() - logger.ReportCaller = reportCaller -} - -// ReplaceHooks replaces the logger hooks and returns the old ones -func (logger *Logger) ReplaceHooks(hooks LevelHooks) LevelHooks { - logger.mu.Lock() - oldHooks := logger.Hooks - logger.Hooks = hooks - logger.mu.Unlock() - return oldHooks -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/logrus.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/logrus.go deleted file mode 100644 index 8644761f7..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/logrus.go +++ /dev/null @@ -1,186 +0,0 @@ -package logrus - -import ( - "fmt" - "log" - "strings" -) - -// Fields type, used to pass to `WithFields`. -type Fields map[string]interface{} - -// Level type -type Level uint32 - -// Convert the Level to a string. E.g. PanicLevel becomes "panic". -func (level Level) String() string { - if b, err := level.MarshalText(); err == nil { - return string(b) - } else { - return "unknown" - } -} - -// ParseLevel takes a string level and returns the Logrus log level constant. -func ParseLevel(lvl string) (Level, error) { - switch strings.ToLower(lvl) { - case "panic": - return PanicLevel, nil - case "fatal": - return FatalLevel, nil - case "error": - return ErrorLevel, nil - case "warn", "warning": - return WarnLevel, nil - case "info": - return InfoLevel, nil - case "debug": - return DebugLevel, nil - case "trace": - return TraceLevel, nil - } - - var l Level - return l, fmt.Errorf("not a valid logrus Level: %q", lvl) -} - -// UnmarshalText implements encoding.TextUnmarshaler. -func (level *Level) UnmarshalText(text []byte) error { - l, err := ParseLevel(string(text)) - if err != nil { - return err - } - - *level = Level(l) - - return nil -} - -func (level Level) MarshalText() ([]byte, error) { - switch level { - case TraceLevel: - return []byte("trace"), nil - case DebugLevel: - return []byte("debug"), nil - case InfoLevel: - return []byte("info"), nil - case WarnLevel: - return []byte("warning"), nil - case ErrorLevel: - return []byte("error"), nil - case FatalLevel: - return []byte("fatal"), nil - case PanicLevel: - return []byte("panic"), nil - } - - return nil, fmt.Errorf("not a valid logrus level %d", level) -} - -// A constant exposing all logging levels -var AllLevels = []Level{ - PanicLevel, - FatalLevel, - ErrorLevel, - WarnLevel, - InfoLevel, - DebugLevel, - TraceLevel, -} - -// These are the different logging levels. You can set the logging level to log -// on your instance of logger, obtained with `logrus.New()`. -const ( - // PanicLevel level, highest level of severity. Logs and then calls panic with the - // message passed to Debug, Info, ... - PanicLevel Level = iota - // FatalLevel level. Logs and then calls `logger.Exit(1)`. It will exit even if the - // logging level is set to Panic. - FatalLevel - // ErrorLevel level. Logs. Used for errors that should definitely be noted. - // Commonly used for hooks to send errors to an error tracking service. - ErrorLevel - // WarnLevel level. Non-critical entries that deserve eyes. - WarnLevel - // InfoLevel level. General operational entries about what's going on inside the - // application. - InfoLevel - // DebugLevel level. Usually only enabled when debugging. Very verbose logging. - DebugLevel - // TraceLevel level. Designates finer-grained informational events than the Debug. - TraceLevel -) - -// Won't compile if StdLogger can't be realized by a log.Logger -var ( - _ StdLogger = &log.Logger{} - _ StdLogger = &Entry{} - _ StdLogger = &Logger{} -) - -// StdLogger is what your logrus-enabled library should take, that way -// it'll accept a stdlib logger and a logrus logger. There's no standard -// interface, this is the closest we get, unfortunately. -type StdLogger interface { - Print(...interface{}) - Printf(string, ...interface{}) - Println(...interface{}) - - Fatal(...interface{}) - Fatalf(string, ...interface{}) - Fatalln(...interface{}) - - Panic(...interface{}) - Panicf(string, ...interface{}) - Panicln(...interface{}) -} - -// The FieldLogger interface generalizes the Entry and Logger types -type FieldLogger interface { - WithField(key string, value interface{}) *Entry - WithFields(fields Fields) *Entry - WithError(err error) *Entry - - Debugf(format string, args ...interface{}) - Infof(format string, args ...interface{}) - Printf(format string, args ...interface{}) - Warnf(format string, args ...interface{}) - Warningf(format string, args ...interface{}) - Errorf(format string, args ...interface{}) - Fatalf(format string, args ...interface{}) - Panicf(format string, args ...interface{}) - - Debug(args ...interface{}) - Info(args ...interface{}) - Print(args ...interface{}) - Warn(args ...interface{}) - Warning(args ...interface{}) - Error(args ...interface{}) - Fatal(args ...interface{}) - Panic(args ...interface{}) - - Debugln(args ...interface{}) - Infoln(args ...interface{}) - Println(args ...interface{}) - Warnln(args ...interface{}) - Warningln(args ...interface{}) - Errorln(args ...interface{}) - Fatalln(args ...interface{}) - Panicln(args ...interface{}) - - // IsDebugEnabled() bool - // IsInfoEnabled() bool - // IsWarnEnabled() bool - // IsErrorEnabled() bool - // IsFatalEnabled() bool - // IsPanicEnabled() bool -} - -// Ext1FieldLogger (the first extension to FieldLogger) is superfluous, it is -// here for consistancy. Do not use. Use Logger or Entry instead. -type Ext1FieldLogger interface { - FieldLogger - Tracef(format string, args ...interface{}) - Trace(args ...interface{}) - Traceln(args ...interface{}) -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_appengine.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_appengine.go deleted file mode 100644 index 2403de981..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_appengine.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build appengine - -package logrus - -import ( - "io" -) - -func checkIfTerminal(w io.Writer) bool { - return true -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_bsd.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_bsd.go deleted file mode 100644 index 3c4f43f91..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_bsd.go +++ /dev/null @@ -1,13 +0,0 @@ -// +build darwin dragonfly freebsd netbsd openbsd - -package logrus - -import "golang.org/x/sys/unix" - -const ioctlReadTermios = unix.TIOCGETA - -func isTerminal(fd int) bool { - _, err := unix.IoctlGetTermios(fd, ioctlReadTermios) - return err == nil -} - diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_js.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_js.go deleted file mode 100644 index 0c209750a..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_js.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build js - -package logrus - -import ( - "io" -) - -func checkIfTerminal(w io.Writer) bool { - return false -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_notappengine.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_notappengine.go deleted file mode 100644 index 7be2d87c5..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_notappengine.go +++ /dev/null @@ -1,17 +0,0 @@ -// +build !appengine,!js,!windows - -package logrus - -import ( - "io" - "os" -) - -func checkIfTerminal(w io.Writer) bool { - switch v := w.(type) { - case *os.File: - return isTerminal(int(v.Fd())) - default: - return false - } -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_unix.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_unix.go deleted file mode 100644 index 355dc966f..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_unix.go +++ /dev/null @@ -1,13 +0,0 @@ -// +build linux aix - -package logrus - -import "golang.org/x/sys/unix" - -const ioctlReadTermios = unix.TCGETS - -func isTerminal(fd int) bool { - _, err := unix.IoctlGetTermios(fd, ioctlReadTermios) - return err == nil -} - diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_windows.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_windows.go deleted file mode 100644 index 3b9d2864c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_check_windows.go +++ /dev/null @@ -1,20 +0,0 @@ -// +build !appengine,!js,windows - -package logrus - -import ( - "io" - "os" - "syscall" -) - -func checkIfTerminal(w io.Writer) bool { - switch v := w.(type) { - case *os.File: - var mode uint32 - err := syscall.GetConsoleMode(syscall.Handle(v.Fd()), &mode) - return err == nil - default: - return false - } -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_notwindows.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_notwindows.go deleted file mode 100644 index 3dbd23720..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_notwindows.go +++ /dev/null @@ -1,8 +0,0 @@ -// +build !windows - -package logrus - -import "io" - -func initTerminal(w io.Writer) { -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_windows.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_windows.go deleted file mode 100644 index b4ef5286c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/terminal_windows.go +++ /dev/null @@ -1,18 +0,0 @@ -// +build !appengine,!js,windows - -package logrus - -import ( - "io" - "os" - "syscall" - - sequences "github.com/konsorten/go-windows-terminal-sequences" -) - -func initTerminal(w io.Writer) { - switch v := w.(type) { - case *os.File: - sequences.EnableVirtualTerminalProcessing(syscall.Handle(v.Fd()), true) - } -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/text_formatter.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/text_formatter.go deleted file mode 100644 index 1569161eb..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/text_formatter.go +++ /dev/null @@ -1,299 +0,0 @@ -package logrus - -import ( - "bytes" - "fmt" - "os" - "runtime" - "sort" - "strings" - "sync" - "time" -) - -const ( - red = 31 - yellow = 33 - blue = 36 - gray = 37 -) - -var baseTimestamp time.Time - -func init() { - baseTimestamp = time.Now() -} - -// TextFormatter formats logs into text -type TextFormatter struct { - // Set to true to bypass checking for a TTY before outputting colors. - ForceColors bool - - // Force disabling colors. - DisableColors bool - - // Override coloring based on CLICOLOR and CLICOLOR_FORCE. - https://bixense.com/clicolors/ - EnvironmentOverrideColors bool - - // Disable timestamp logging. useful when output is redirected to logging - // system that already adds timestamps. - DisableTimestamp bool - - // Enable logging the full timestamp when a TTY is attached instead of just - // the time passed since beginning of execution. - FullTimestamp bool - - // TimestampFormat to use for display when a full timestamp is printed - TimestampFormat string - - // The fields are sorted by default for a consistent output. For applications - // that log extremely frequently and don't use the JSON formatter this may not - // be desired. - DisableSorting bool - - // The keys sorting function, when uninitialized it uses sort.Strings. - SortingFunc func([]string) - - // Disables the truncation of the level text to 4 characters. - DisableLevelTruncation bool - - // QuoteEmptyFields will wrap empty fields in quotes if true - QuoteEmptyFields bool - - // Whether the logger's out is to a terminal - isTerminal bool - - // FieldMap allows users to customize the names of keys for default fields. - // As an example: - // formatter := &TextFormatter{ - // FieldMap: FieldMap{ - // FieldKeyTime: "@timestamp", - // FieldKeyLevel: "@level", - // FieldKeyMsg: "@message"}} - FieldMap FieldMap - - // CallerPrettyfier can be set by the user to modify the content - // of the function and file keys in the data when ReportCaller is - // activated. If any of the returned value is the empty string the - // corresponding key will be removed from fields. - CallerPrettyfier func(*runtime.Frame) (function string, file string) - - terminalInitOnce sync.Once -} - -func (f *TextFormatter) init(entry *Entry) { - if entry.Logger != nil { - f.isTerminal = checkIfTerminal(entry.Logger.Out) - - if f.isTerminal { - initTerminal(entry.Logger.Out) - } - } -} - -func (f *TextFormatter) isColored() bool { - isColored := f.ForceColors || (f.isTerminal && (runtime.GOOS != "windows")) - - if f.EnvironmentOverrideColors { - if force, ok := os.LookupEnv("CLICOLOR_FORCE"); ok && force != "0" { - isColored = true - } else if ok && force == "0" { - isColored = false - } else if os.Getenv("CLICOLOR") == "0" { - isColored = false - } - } - - return isColored && !f.DisableColors -} - -// Format renders a single log entry -func (f *TextFormatter) Format(entry *Entry) ([]byte, error) { - data := make(Fields) - for k, v := range entry.Data { - data[k] = v - } - prefixFieldClashes(data, f.FieldMap, entry.HasCaller()) - keys := make([]string, 0, len(data)) - for k := range data { - keys = append(keys, k) - } - - var funcVal, fileVal string - - fixedKeys := make([]string, 0, 4+len(data)) - if !f.DisableTimestamp { - fixedKeys = append(fixedKeys, f.FieldMap.resolve(FieldKeyTime)) - } - fixedKeys = append(fixedKeys, f.FieldMap.resolve(FieldKeyLevel)) - if entry.Message != "" { - fixedKeys = append(fixedKeys, f.FieldMap.resolve(FieldKeyMsg)) - } - if entry.err != "" { - fixedKeys = append(fixedKeys, f.FieldMap.resolve(FieldKeyLogrusError)) - } - if entry.HasCaller() { - if f.CallerPrettyfier != nil { - funcVal, fileVal = f.CallerPrettyfier(entry.Caller) - } else { - funcVal = entry.Caller.Function - fileVal = fmt.Sprintf("%s:%d", entry.Caller.File, entry.Caller.Line) - } - - if funcVal != "" { - fixedKeys = append(fixedKeys, f.FieldMap.resolve(FieldKeyFunc)) - } - if fileVal != "" { - fixedKeys = append(fixedKeys, f.FieldMap.resolve(FieldKeyFile)) - } - } - - if !f.DisableSorting { - if f.SortingFunc == nil { - sort.Strings(keys) - fixedKeys = append(fixedKeys, keys...) - } else { - if !f.isColored() { - fixedKeys = append(fixedKeys, keys...) - f.SortingFunc(fixedKeys) - } else { - f.SortingFunc(keys) - } - } - } else { - fixedKeys = append(fixedKeys, keys...) - } - - var b *bytes.Buffer - if entry.Buffer != nil { - b = entry.Buffer - } else { - b = &bytes.Buffer{} - } - - f.terminalInitOnce.Do(func() { f.init(entry) }) - - timestampFormat := f.TimestampFormat - if timestampFormat == "" { - timestampFormat = defaultTimestampFormat - } - if f.isColored() { - f.printColored(b, entry, keys, data, timestampFormat) - } else { - - for _, key := range fixedKeys { - var value interface{} - switch { - case key == f.FieldMap.resolve(FieldKeyTime): - value = entry.Time.Format(timestampFormat) - case key == f.FieldMap.resolve(FieldKeyLevel): - value = entry.Level.String() - case key == f.FieldMap.resolve(FieldKeyMsg): - value = entry.Message - case key == f.FieldMap.resolve(FieldKeyLogrusError): - value = entry.err - case key == f.FieldMap.resolve(FieldKeyFunc) && entry.HasCaller(): - value = funcVal - case key == f.FieldMap.resolve(FieldKeyFile) && entry.HasCaller(): - value = fileVal - default: - value = data[key] - } - f.appendKeyValue(b, key, value) - } - } - - b.WriteByte('\n') - return b.Bytes(), nil -} - -func (f *TextFormatter) printColored(b *bytes.Buffer, entry *Entry, keys []string, data Fields, timestampFormat string) { - var levelColor int - switch entry.Level { - case DebugLevel, TraceLevel: - levelColor = gray - case WarnLevel: - levelColor = yellow - case ErrorLevel, FatalLevel, PanicLevel: - levelColor = red - default: - levelColor = blue - } - - levelText := strings.ToUpper(entry.Level.String()) - if !f.DisableLevelTruncation { - levelText = levelText[0:4] - } - - // Remove a single newline if it already exists in the message to keep - // the behavior of logrus text_formatter the same as the stdlib log package - entry.Message = strings.TrimSuffix(entry.Message, "\n") - - caller := "" - if entry.HasCaller() { - funcVal := fmt.Sprintf("%s()", entry.Caller.Function) - fileVal := fmt.Sprintf("%s:%d", entry.Caller.File, entry.Caller.Line) - - if f.CallerPrettyfier != nil { - funcVal, fileVal = f.CallerPrettyfier(entry.Caller) - } - - if fileVal == "" { - caller = funcVal - } else if funcVal == "" { - caller = fileVal - } else { - caller = fileVal + " " + funcVal - } - } - - if f.DisableTimestamp { - fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m%s %-44s ", levelColor, levelText, caller, entry.Message) - } else if !f.FullTimestamp { - fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m[%04d]%s %-44s ", levelColor, levelText, int(entry.Time.Sub(baseTimestamp)/time.Second), caller, entry.Message) - } else { - fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m[%s]%s %-44s ", levelColor, levelText, entry.Time.Format(timestampFormat), caller, entry.Message) - } - for _, k := range keys { - v := data[k] - fmt.Fprintf(b, " \x1b[%dm%s\x1b[0m=", levelColor, k) - f.appendValue(b, v) - } -} - -func (f *TextFormatter) needsQuoting(text string) bool { - if f.QuoteEmptyFields && len(text) == 0 { - return true - } - for _, ch := range text { - if !((ch >= 'a' && ch <= 'z') || - (ch >= 'A' && ch <= 'Z') || - (ch >= '0' && ch <= '9') || - ch == '-' || ch == '.' || ch == '_' || ch == '/' || ch == '@' || ch == '^' || ch == '+') { - return true - } - } - return false -} - -func (f *TextFormatter) appendKeyValue(b *bytes.Buffer, key string, value interface{}) { - if b.Len() > 0 { - b.WriteByte(' ') - } - b.WriteString(key) - b.WriteByte('=') - f.appendValue(b, value) -} - -func (f *TextFormatter) appendValue(b *bytes.Buffer, value interface{}) { - stringVal, ok := value.(string) - if !ok { - stringVal = fmt.Sprint(value) - } - - if !f.needsQuoting(stringVal) { - b.WriteString(stringVal) - } else { - b.WriteString(fmt.Sprintf("%q", stringVal)) - } -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/writer.go b/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/writer.go deleted file mode 100644 index 9e1f75135..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/github.com/sirupsen/logrus/writer.go +++ /dev/null @@ -1,64 +0,0 @@ -package logrus - -import ( - "bufio" - "io" - "runtime" -) - -func (logger *Logger) Writer() *io.PipeWriter { - return logger.WriterLevel(InfoLevel) -} - -func (logger *Logger) WriterLevel(level Level) *io.PipeWriter { - return NewEntry(logger).WriterLevel(level) -} - -func (entry *Entry) Writer() *io.PipeWriter { - return entry.WriterLevel(InfoLevel) -} - -func (entry *Entry) WriterLevel(level Level) *io.PipeWriter { - reader, writer := io.Pipe() - - var printFunc func(args ...interface{}) - - switch level { - case TraceLevel: - printFunc = entry.Trace - case DebugLevel: - printFunc = entry.Debug - case InfoLevel: - printFunc = entry.Info - case WarnLevel: - printFunc = entry.Warn - case ErrorLevel: - printFunc = entry.Error - case FatalLevel: - printFunc = entry.Fatal - case PanicLevel: - printFunc = entry.Panic - default: - printFunc = entry.Print - } - - go entry.writerScanner(reader, printFunc) - runtime.SetFinalizer(writer, writerFinalizer) - - return writer -} - -func (entry *Entry) writerScanner(reader *io.PipeReader, printFunc func(args ...interface{})) { - scanner := bufio.NewScanner(reader) - for scanner.Scan() { - printFunc(scanner.Text()) - } - if err := scanner.Err(); err != nil { - entry.Errorf("Error while reading from Writer: %s", err) - } - reader.Close() -} - -func writerFinalizer(writer *io.PipeWriter) { - writer.Close() -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/AUTHORS b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/AUTHORS deleted file mode 100644 index 15167cd74..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/CONTRIBUTORS b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/CONTRIBUTORS deleted file mode 100644 index 1c4577e96..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/LICENSE b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/LICENSE deleted file mode 100644 index 6a66aea5e..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/PATENTS b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/PATENTS deleted file mode 100644 index 733099041..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/PATENTS +++ /dev/null @@ -1,22 +0,0 @@ -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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/.gitignore b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/.gitignore deleted file mode 100644 index e3e0fc6f8..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -_obj/ -unix.test diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/README.md b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/README.md deleted file mode 100644 index eb2f78ae2..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/README.md +++ /dev/null @@ -1,173 +0,0 @@ -# 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/affinity_linux.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/affinity_linux.go deleted file mode 100644 index 72afe3338..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/affinity_linux.go +++ /dev/null @@ -1,124 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/aliases.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/aliases.go deleted file mode 100644 index 951fce4d0..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/aliases.go +++ /dev/null @@ -1,14 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s deleted file mode 100644 index 06f84b855..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s +++ /dev/null @@ -1,17 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_darwin_386.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_darwin_386.s deleted file mode 100644 index 8a7278319..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_darwin_386.s +++ /dev/null @@ -1,29 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_darwin_amd64.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_darwin_amd64.s deleted file mode 100644 index 6321421f2..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_darwin_amd64.s +++ /dev/null @@ -1,29 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_darwin_arm.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_darwin_arm.s deleted file mode 100644 index 333242d50..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_darwin_arm.s +++ /dev/null @@ -1,30 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_darwin_arm64.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_darwin_arm64.s deleted file mode 100644 index 97e017437..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_darwin_arm64.s +++ /dev/null @@ -1,30 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s deleted file mode 100644 index 603dd5728..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s +++ /dev/null @@ -1,29 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_freebsd_386.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_freebsd_386.s deleted file mode 100644 index c9a0a2601..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_freebsd_386.s +++ /dev/null @@ -1,29 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s deleted file mode 100644 index 35172477c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s +++ /dev/null @@ -1,29 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_freebsd_arm.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_freebsd_arm.s deleted file mode 100644 index 9227c875b..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_freebsd_arm.s +++ /dev/null @@ -1,29 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s deleted file mode 100644 index d9318cbf0..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s +++ /dev/null @@ -1,29 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_386.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_386.s deleted file mode 100644 index 448bebbb5..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_386.s +++ /dev/null @@ -1,65 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_amd64.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_amd64.s deleted file mode 100644 index c6468a958..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_amd64.s +++ /dev/null @@ -1,57 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_arm.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_arm.s deleted file mode 100644 index cf0f3575c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_arm.s +++ /dev/null @@ -1,56 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_arm64.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_arm64.s deleted file mode 100644 index afe6fdf6b..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_arm64.s +++ /dev/null @@ -1,52 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s deleted file mode 100644 index ab9d63831..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s +++ /dev/null @@ -1,56 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s deleted file mode 100644 index 99e539904..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s +++ /dev/null @@ -1,54 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s deleted file mode 100644 index 88f712557..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s +++ /dev/null @@ -1,44 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_s390x.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_s390x.s deleted file mode 100644 index a5a863c6b..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_linux_s390x.s +++ /dev/null @@ -1,56 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_netbsd_386.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_netbsd_386.s deleted file mode 100644 index 48bdcd763..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_netbsd_386.s +++ /dev/null @@ -1,29 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s deleted file mode 100644 index 2ede05c72..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s +++ /dev/null @@ -1,29 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_netbsd_arm.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_netbsd_arm.s deleted file mode 100644 index e8928571c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_netbsd_arm.s +++ /dev/null @@ -1,29 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s deleted file mode 100644 index 6f98ba5a3..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s +++ /dev/null @@ -1,29 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_openbsd_386.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_openbsd_386.s deleted file mode 100644 index 00576f3c8..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_openbsd_386.s +++ /dev/null @@ -1,29 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s deleted file mode 100644 index 790ef77f8..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s +++ /dev/null @@ -1,29 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s deleted file mode 100644 index 469bfa100..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s +++ /dev/null @@ -1,29 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s deleted file mode 100644 index 0cedea3d3..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s +++ /dev/null @@ -1,29 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s deleted file mode 100644 index ded8260f3..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s +++ /dev/null @@ -1,17 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/bluetooth_linux.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/bluetooth_linux.go deleted file mode 100644 index 6e3229697..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/bluetooth_linux.go +++ /dev/null @@ -1,35 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/cap_freebsd.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/cap_freebsd.go deleted file mode 100644 index df5204877..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/cap_freebsd.go +++ /dev/null @@ -1,195 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/constants.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/constants.go deleted file mode 100644 index 3a6ac648d..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/constants.go +++ /dev/null @@ -1,13 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_aix_ppc.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_aix_ppc.go deleted file mode 100644 index 5e5fb4510..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_aix_ppc.go +++ /dev/null @@ -1,27 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go deleted file mode 100644 index 8b401244c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go +++ /dev/null @@ -1,29 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_darwin.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_darwin.go deleted file mode 100644 index 8d1dc0fa3..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_darwin.go +++ /dev/null @@ -1,24 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_dragonfly.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_dragonfly.go deleted file mode 100644 index 8502f202c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_dragonfly.go +++ /dev/null @@ -1,30 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_freebsd.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_freebsd.go deleted file mode 100644 index eba3b4bd3..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_freebsd.go +++ /dev/null @@ -1,30 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_linux.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_linux.go deleted file mode 100644 index d165d6f30..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_linux.go +++ /dev/null @@ -1,42 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_netbsd.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_netbsd.go deleted file mode 100644 index b4a203d0c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_netbsd.go +++ /dev/null @@ -1,29 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_openbsd.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_openbsd.go deleted file mode 100644 index f3430c42f..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dev_openbsd.go +++ /dev/null @@ -1,29 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dirent.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dirent.go deleted file mode 100644 index 4407c505a..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/dirent.go +++ /dev/null @@ -1,17 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/endian_big.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/endian_big.go deleted file mode 100644 index 5e9269063..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/endian_big.go +++ /dev/null @@ -1,9 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/endian_little.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/endian_little.go deleted file mode 100644 index 085df2d8d..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/endian_little.go +++ /dev/null @@ -1,9 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/env_unix.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/env_unix.go deleted file mode 100644 index 84178b0a1..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/env_unix.go +++ /dev/null @@ -1,31 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/errors_freebsd_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/errors_freebsd_386.go deleted file mode 100644 index c56bc8b05..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/errors_freebsd_386.go +++ /dev/null @@ -1,227 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go deleted file mode 100644 index 3e9771175..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go +++ /dev/null @@ -1,227 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/errors_freebsd_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/errors_freebsd_arm.go deleted file mode 100644 index 856dca325..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/errors_freebsd_arm.go +++ /dev/null @@ -1,226 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/fcntl.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/fcntl.go deleted file mode 100644 index 39c03f1ef..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/fcntl.go +++ /dev/null @@ -1,32 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/fcntl_darwin.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/fcntl_darwin.go deleted file mode 100644 index 5868a4a47..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/fcntl_darwin.go +++ /dev/null @@ -1,18 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go deleted file mode 100644 index fc0e50e03..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go +++ /dev/null @@ -1,13 +0,0 @@ -// +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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/gccgo.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/gccgo.go deleted file mode 100644 index cd6f5a613..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/gccgo.go +++ /dev/null @@ -1,62 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/gccgo_c.c b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/gccgo_c.c deleted file mode 100644 index c44730c5e..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/gccgo_c.c +++ /dev/null @@ -1,39 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go deleted file mode 100644 index 251a977a8..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go +++ /dev/null @@ -1,20 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ioctl.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ioctl.go deleted file mode 100644 index f121a8d64..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ioctl.go +++ /dev/null @@ -1,30 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mkall.sh b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mkall.sh deleted file mode 100755 index 80d00707b..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mkall.sh +++ /dev/null @@ -1,227 +0,0 @@ -#!/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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mkasm_darwin.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mkasm_darwin.go deleted file mode 100644 index 4548b993d..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mkasm_darwin.go +++ /dev/null @@ -1,61 +0,0 @@ -// 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 ignore - -// mkasm_darwin.go generates assembly trampolines to call libSystem routines from Go. -//This program must be run after mksyscall.go. -package main - -import ( - "bytes" - "fmt" - "io/ioutil" - "log" - "os" - "strings" -) - -func main() { - in1, err := ioutil.ReadFile("syscall_darwin.go") - if err != nil { - log.Fatalf("can't open syscall_darwin.go: %s", err) - } - arch := os.Args[1] - in2, err := ioutil.ReadFile(fmt.Sprintf("syscall_darwin_%s.go", arch)) - if err != nil { - log.Fatalf("can't open syscall_darwin_%s.go: %s", arch, err) - } - in3, err := ioutil.ReadFile(fmt.Sprintf("zsyscall_darwin_%s.go", arch)) - if err != nil { - log.Fatalf("can't open zsyscall_darwin_%s.go: %s", arch, err) - } - in := string(in1) + string(in2) + string(in3) - - trampolines := map[string]bool{} - - var out bytes.Buffer - - fmt.Fprintf(&out, "// go run mkasm_darwin.go %s\n", strings.Join(os.Args[1:], " ")) - fmt.Fprintf(&out, "// Code generated by the command above; DO NOT EDIT.\n") - fmt.Fprintf(&out, "\n") - fmt.Fprintf(&out, "// +build go1.12\n") - fmt.Fprintf(&out, "\n") - fmt.Fprintf(&out, "#include \"textflag.h\"\n") - for _, line := range strings.Split(in, "\n") { - if !strings.HasPrefix(line, "func ") || !strings.HasSuffix(line, "_trampoline()") { - continue - } - fn := line[5 : len(line)-13] - if !trampolines[fn] { - trampolines[fn] = true - fmt.Fprintf(&out, "TEXT ·%s_trampoline(SB),NOSPLIT,$0-0\n", fn) - fmt.Fprintf(&out, "\tJMP\t%s(SB)\n", fn) - } - } - err = ioutil.WriteFile(fmt.Sprintf("zsyscall_darwin_%s.s", arch), out.Bytes(), 0644) - if err != nil { - log.Fatalf("can't write zsyscall_darwin_%s.s: %s", arch, err) - } -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mkerrors.sh b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mkerrors.sh deleted file mode 100755 index 82979b3cf..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mkerrors.sh +++ /dev/null @@ -1,662 +0,0 @@ -#!/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 -#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|BPF_FIB_LOOKUP_[A-Z]+)$/ && - $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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mkpost.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mkpost.go deleted file mode 100644 index 2caf56c7c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mkpost.go +++ /dev/null @@ -1,115 +0,0 @@ -// 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 ignore - -// mkpost processes the output of cgo -godefs to -// modify the generated types. It is used to clean up -// the sys API in an architecture specific manner. -// -// mkpost is run after cgo -godefs; see README.md. -package main - -import ( - "bytes" - "fmt" - "go/format" - "io/ioutil" - "log" - "os" - "regexp" -) - -func main() { - // Get the OS and architecture (using GOARCH_TARGET if it exists) - goos := os.Getenv("GOOS") - goarch := os.Getenv("GOARCH_TARGET") - if goarch == "" { - goarch = os.Getenv("GOARCH") - } - // Check that we are using the Docker-based build system if we should be. - if goos == "linux" { - if os.Getenv("GOLANG_SYS_BUILD") != "docker" { - os.Stderr.WriteString("In the Docker-based build system, mkpost should not be called directly.\n") - os.Stderr.WriteString("See README.md\n") - os.Exit(1) - } - } - - b, err := ioutil.ReadAll(os.Stdin) - if err != nil { - log.Fatal(err) - } - - // Intentionally export __val fields in Fsid and Sigset_t - valRegex := regexp.MustCompile(`type (Fsid|Sigset_t) struct {(\s+)X__val(\s+\S+\s+)}`) - b = valRegex.ReplaceAll(b, []byte("type $1 struct {${2}Val$3}")) - - // Intentionally export __fds_bits field in FdSet - fdSetRegex := regexp.MustCompile(`type (FdSet) struct {(\s+)X__fds_bits(\s+\S+\s+)}`) - b = fdSetRegex.ReplaceAll(b, []byte("type $1 struct {${2}Bits$3}")) - - // If we have empty Ptrace structs, we should delete them. Only s390x emits - // nonempty Ptrace structs. - ptraceRexexp := regexp.MustCompile(`type Ptrace((Psw|Fpregs|Per) struct {\s*})`) - b = ptraceRexexp.ReplaceAll(b, nil) - - // Replace the control_regs union with a blank identifier for now. - controlRegsRegex := regexp.MustCompile(`(Control_regs)\s+\[0\]uint64`) - b = controlRegsRegex.ReplaceAll(b, []byte("_ [0]uint64")) - - // Remove fields that are added by glibc - // Note that this is unstable as the identifers are private. - removeFieldsRegex := regexp.MustCompile(`X__glibc\S*`) - b = removeFieldsRegex.ReplaceAll(b, []byte("_")) - - // Convert [65]int8 to [65]byte in Utsname members to simplify - // conversion to string; see golang.org/issue/20753 - convertUtsnameRegex := regexp.MustCompile(`((Sys|Node|Domain)name|Release|Version|Machine)(\s+)\[(\d+)\]u?int8`) - b = convertUtsnameRegex.ReplaceAll(b, []byte("$1$3[$4]byte")) - - // Convert [1024]int8 to [1024]byte in Ptmget members - convertPtmget := regexp.MustCompile(`([SC]n)(\s+)\[(\d+)\]u?int8`) - b = convertPtmget.ReplaceAll(b, []byte("$1[$3]byte")) - - // Remove spare fields (e.g. in Statx_t) - spareFieldsRegex := regexp.MustCompile(`X__spare\S*`) - b = spareFieldsRegex.ReplaceAll(b, []byte("_")) - - // Remove cgo padding fields - removePaddingFieldsRegex := regexp.MustCompile(`Pad_cgo_\d+`) - b = removePaddingFieldsRegex.ReplaceAll(b, []byte("_")) - - // Remove padding, hidden, or unused fields - removeFieldsRegex = regexp.MustCompile(`\b(X_\S+|Padding)`) - b = removeFieldsRegex.ReplaceAll(b, []byte("_")) - - // Remove the first line of warning from cgo - b = b[bytes.IndexByte(b, '\n')+1:] - // Modify the command in the header to include: - // mkpost, our own warning, and a build tag. - replacement := fmt.Sprintf(`$1 | go run mkpost.go -// Code generated by the command above; see README.md. DO NOT EDIT. - -// +build %s,%s`, goarch, goos) - cgoCommandRegex := regexp.MustCompile(`(cgo -godefs .*)`) - b = cgoCommandRegex.ReplaceAll(b, []byte(replacement)) - - // Rename Stat_t time fields - if goos == "freebsd" && goarch == "386" { - // Hide Stat_t.[AMCB]tim_ext fields - renameStatTimeExtFieldsRegex := regexp.MustCompile(`[AMCB]tim_ext`) - b = renameStatTimeExtFieldsRegex.ReplaceAll(b, []byte("_")) - } - renameStatTimeFieldsRegex := regexp.MustCompile(`([AMCB])(?:irth)?time?(?:spec)?\s+(Timespec|StTimespec)`) - b = renameStatTimeFieldsRegex.ReplaceAll(b, []byte("${1}tim ${2}")) - - // gofmt - b, err = format.Source(b) - if err != nil { - log.Fatal(err) - } - - os.Stdout.Write(b) -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksyscall.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksyscall.go deleted file mode 100644 index e4af9424e..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksyscall.go +++ /dev/null @@ -1,407 +0,0 @@ -// 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 ignore - -/* -This program reads a file containing function prototypes -(like syscall_darwin.go) and generates system call bodies. -The prototypes are marked by lines beginning with "//sys" -and read like func declarations if //sys is replaced by func, but: - * The parameter lists must give a name for each argument. - This includes return parameters. - * The parameter lists must give a type for each argument: - the (x, y, z int) shorthand is not allowed. - * If the return parameter is an error number, it must be named errno. - -A line beginning with //sysnb is like //sys, except that the -goroutine will not be suspended during the execution of the system -call. This must only be used for system calls which can never -block, as otherwise the system call could cause all goroutines to -hang. -*/ -package main - -import ( - "bufio" - "flag" - "fmt" - "os" - "regexp" - "strings" -) - -var ( - b32 = flag.Bool("b32", false, "32bit big-endian") - l32 = flag.Bool("l32", false, "32bit little-endian") - plan9 = flag.Bool("plan9", false, "plan9") - openbsd = flag.Bool("openbsd", false, "openbsd") - netbsd = flag.Bool("netbsd", false, "netbsd") - dragonfly = flag.Bool("dragonfly", false, "dragonfly") - arm = flag.Bool("arm", false, "arm") // 64-bit value should use (even, odd)-pair - tags = flag.String("tags", "", "build tags") - filename = flag.String("output", "", "output file name (standard output if omitted)") -) - -// cmdLine returns this programs's commandline arguments -func cmdLine() string { - return "go run mksyscall.go " + strings.Join(os.Args[1:], " ") -} - -// buildTags returns build tags -func buildTags() string { - return *tags -} - -// Param is function parameter -type Param struct { - Name string - Type string -} - -// usage prints the program usage -func usage() { - fmt.Fprintf(os.Stderr, "usage: go run mksyscall.go [-b32 | -l32] [-tags x,y] [file ...]\n") - os.Exit(1) -} - -// parseParamList parses parameter list and returns a slice of parameters -func parseParamList(list string) []string { - list = strings.TrimSpace(list) - if list == "" { - return []string{} - } - return regexp.MustCompile(`\s*,\s*`).Split(list, -1) -} - -// parseParam splits a parameter into name and type -func parseParam(p string) Param { - ps := regexp.MustCompile(`^(\S*) (\S*)$`).FindStringSubmatch(p) - if ps == nil { - fmt.Fprintf(os.Stderr, "malformed parameter: %s\n", p) - os.Exit(1) - } - return Param{ps[1], ps[2]} -} - -func main() { - // Get the OS and architecture (using GOARCH_TARGET if it exists) - goos := os.Getenv("GOOS") - if goos == "" { - fmt.Fprintln(os.Stderr, "GOOS not defined in environment") - os.Exit(1) - } - goarch := os.Getenv("GOARCH_TARGET") - if goarch == "" { - goarch = os.Getenv("GOARCH") - } - - // Check that we are using the Docker-based build system if we should - if goos == "linux" { - if os.Getenv("GOLANG_SYS_BUILD") != "docker" { - fmt.Fprintf(os.Stderr, "In the Docker-based build system, mksyscall should not be called directly.\n") - fmt.Fprintf(os.Stderr, "See README.md\n") - os.Exit(1) - } - } - - flag.Usage = usage - flag.Parse() - if len(flag.Args()) <= 0 { - fmt.Fprintf(os.Stderr, "no files to parse provided\n") - usage() - } - - endianness := "" - if *b32 { - endianness = "big-endian" - } else if *l32 { - endianness = "little-endian" - } - - libc := false - if goos == "darwin" && strings.Contains(buildTags(), ",go1.12") { - libc = true - } - trampolines := map[string]bool{} - - text := "" - for _, path := range flag.Args() { - file, err := os.Open(path) - if err != nil { - fmt.Fprintf(os.Stderr, err.Error()) - os.Exit(1) - } - s := bufio.NewScanner(file) - for s.Scan() { - t := s.Text() - t = strings.TrimSpace(t) - t = regexp.MustCompile(`\s+`).ReplaceAllString(t, ` `) - nonblock := regexp.MustCompile(`^\/\/sysnb `).FindStringSubmatch(t) - if regexp.MustCompile(`^\/\/sys `).FindStringSubmatch(t) == nil && nonblock == nil { - continue - } - - // Line must be of the form - // func Open(path string, mode int, perm int) (fd int, errno error) - // Split into name, in params, out params. - f := regexp.MustCompile(`^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*((?i)SYS_[A-Z0-9_]+))?$`).FindStringSubmatch(t) - if f == nil { - fmt.Fprintf(os.Stderr, "%s:%s\nmalformed //sys declaration\n", path, t) - os.Exit(1) - } - funct, inps, outps, sysname := f[2], f[3], f[4], f[5] - - // ClockGettime doesn't have a syscall number on Darwin, only generate libc wrappers. - if goos == "darwin" && !libc && funct == "ClockGettime" { - continue - } - - // Split argument lists on comma. - in := parseParamList(inps) - out := parseParamList(outps) - - // Try in vain to keep people from editing this file. - // The theory is that they jump into the middle of the file - // without reading the header. - text += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n" - - // Go function header. - outDecl := "" - if len(out) > 0 { - outDecl = fmt.Sprintf(" (%s)", strings.Join(out, ", ")) - } - text += fmt.Sprintf("func %s(%s)%s {\n", funct, strings.Join(in, ", "), outDecl) - - // Check if err return available - errvar := "" - for _, param := range out { - p := parseParam(param) - if p.Type == "error" { - errvar = p.Name - break - } - } - - // Prepare arguments to Syscall. - var args []string - n := 0 - for _, param := range in { - p := parseParam(param) - if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil { - args = append(args, "uintptr(unsafe.Pointer("+p.Name+"))") - } else if p.Type == "string" && errvar != "" { - text += fmt.Sprintf("\tvar _p%d *byte\n", n) - text += fmt.Sprintf("\t_p%d, %s = BytePtrFromString(%s)\n", n, errvar, p.Name) - text += fmt.Sprintf("\tif %s != nil {\n\t\treturn\n\t}\n", errvar) - args = append(args, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n)) - n++ - } else if p.Type == "string" { - fmt.Fprintf(os.Stderr, path+":"+funct+" uses string arguments, but has no error return\n") - text += fmt.Sprintf("\tvar _p%d *byte\n", n) - text += fmt.Sprintf("\t_p%d, _ = BytePtrFromString(%s)\n", n, p.Name) - args = append(args, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n)) - n++ - } else if regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type) != nil { - // Convert slice into pointer, length. - // Have to be careful not to take address of &a[0] if len == 0: - // pass dummy pointer in that case. - // Used to pass nil, but some OSes or simulators reject write(fd, nil, 0). - text += fmt.Sprintf("\tvar _p%d unsafe.Pointer\n", n) - text += fmt.Sprintf("\tif len(%s) > 0 {\n\t\t_p%d = unsafe.Pointer(&%s[0])\n\t}", p.Name, n, p.Name) - text += fmt.Sprintf(" else {\n\t\t_p%d = unsafe.Pointer(&_zero)\n\t}\n", n) - args = append(args, fmt.Sprintf("uintptr(_p%d)", n), fmt.Sprintf("uintptr(len(%s))", p.Name)) - n++ - } else if p.Type == "int64" && (*openbsd || *netbsd) { - args = append(args, "0") - if endianness == "big-endian" { - args = append(args, fmt.Sprintf("uintptr(%s>>32)", p.Name), fmt.Sprintf("uintptr(%s)", p.Name)) - } else if endianness == "little-endian" { - args = append(args, fmt.Sprintf("uintptr(%s)", p.Name), fmt.Sprintf("uintptr(%s>>32)", p.Name)) - } else { - args = append(args, fmt.Sprintf("uintptr(%s)", p.Name)) - } - } else if p.Type == "int64" && *dragonfly { - if regexp.MustCompile(`^(?i)extp(read|write)`).FindStringSubmatch(funct) == nil { - args = append(args, "0") - } - if endianness == "big-endian" { - args = append(args, fmt.Sprintf("uintptr(%s>>32)", p.Name), fmt.Sprintf("uintptr(%s)", p.Name)) - } else if endianness == "little-endian" { - args = append(args, fmt.Sprintf("uintptr(%s)", p.Name), fmt.Sprintf("uintptr(%s>>32)", p.Name)) - } else { - args = append(args, fmt.Sprintf("uintptr(%s)", p.Name)) - } - } else if (p.Type == "int64" || p.Type == "uint64") && endianness != "" { - if len(args)%2 == 1 && *arm { - // arm abi specifies 64-bit argument uses - // (even, odd) pair - args = append(args, "0") - } - if endianness == "big-endian" { - args = append(args, fmt.Sprintf("uintptr(%s>>32)", p.Name), fmt.Sprintf("uintptr(%s)", p.Name)) - } else { - args = append(args, fmt.Sprintf("uintptr(%s)", p.Name), fmt.Sprintf("uintptr(%s>>32)", p.Name)) - } - } else { - args = append(args, fmt.Sprintf("uintptr(%s)", p.Name)) - } - } - - // Determine which form to use; pad args with zeros. - asm := "Syscall" - if nonblock != nil { - if errvar == "" && goos == "linux" { - asm = "RawSyscallNoError" - } else { - asm = "RawSyscall" - } - } else { - if errvar == "" && goos == "linux" { - asm = "SyscallNoError" - } - } - if len(args) <= 3 { - for len(args) < 3 { - args = append(args, "0") - } - } else if len(args) <= 6 { - asm += "6" - for len(args) < 6 { - args = append(args, "0") - } - } else if len(args) <= 9 { - asm += "9" - for len(args) < 9 { - args = append(args, "0") - } - } else { - fmt.Fprintf(os.Stderr, "%s:%s too many arguments to system call\n", path, funct) - } - - // System call number. - if sysname == "" { - sysname = "SYS_" + funct - sysname = regexp.MustCompile(`([a-z])([A-Z])`).ReplaceAllString(sysname, `${1}_$2`) - sysname = strings.ToUpper(sysname) - } - - var libcFn string - if libc { - asm = "syscall_" + strings.ToLower(asm[:1]) + asm[1:] // internal syscall call - sysname = strings.TrimPrefix(sysname, "SYS_") // remove SYS_ - sysname = strings.ToLower(sysname) // lowercase - if sysname == "getdirentries64" { - // Special case - libSystem name and - // raw syscall name don't match. - sysname = "__getdirentries64" - } - libcFn = sysname - sysname = "funcPC(libc_" + sysname + "_trampoline)" - } - - // Actual call. - arglist := strings.Join(args, ", ") - call := fmt.Sprintf("%s(%s, %s)", asm, sysname, arglist) - - // Assign return values. - body := "" - ret := []string{"_", "_", "_"} - doErrno := false - for i := 0; i < len(out); i++ { - p := parseParam(out[i]) - reg := "" - if p.Name == "err" && !*plan9 { - reg = "e1" - ret[2] = reg - doErrno = true - } else if p.Name == "err" && *plan9 { - ret[0] = "r0" - ret[2] = "e1" - break - } else { - reg = fmt.Sprintf("r%d", i) - ret[i] = reg - } - if p.Type == "bool" { - reg = fmt.Sprintf("%s != 0", reg) - } - if p.Type == "int64" && endianness != "" { - // 64-bit number in r1:r0 or r0:r1. - if i+2 > len(out) { - fmt.Fprintf(os.Stderr, "%s:%s not enough registers for int64 return\n", path, funct) - } - if endianness == "big-endian" { - reg = fmt.Sprintf("int64(r%d)<<32 | int64(r%d)", i, i+1) - } else { - reg = fmt.Sprintf("int64(r%d)<<32 | int64(r%d)", i+1, i) - } - ret[i] = fmt.Sprintf("r%d", i) - ret[i+1] = fmt.Sprintf("r%d", i+1) - } - if reg != "e1" || *plan9 { - body += fmt.Sprintf("\t%s = %s(%s)\n", p.Name, p.Type, reg) - } - } - if ret[0] == "_" && ret[1] == "_" && ret[2] == "_" { - text += fmt.Sprintf("\t%s\n", call) - } else { - if errvar == "" && goos == "linux" { - // raw syscall without error on Linux, see golang.org/issue/22924 - text += fmt.Sprintf("\t%s, %s := %s\n", ret[0], ret[1], call) - } else { - text += fmt.Sprintf("\t%s, %s, %s := %s\n", ret[0], ret[1], ret[2], call) - } - } - text += body - - if *plan9 && ret[2] == "e1" { - text += "\tif int32(r0) == -1 {\n" - text += "\t\terr = e1\n" - text += "\t}\n" - } else if doErrno { - text += "\tif e1 != 0 {\n" - text += "\t\terr = errnoErr(e1)\n" - text += "\t}\n" - } - text += "\treturn\n" - text += "}\n\n" - - if libc && !trampolines[libcFn] { - // some system calls share a trampoline, like read and readlen. - trampolines[libcFn] = true - // Declare assembly trampoline. - text += fmt.Sprintf("func libc_%s_trampoline()\n", libcFn) - // Assembly trampoline calls the libc_* function, which this magic - // redirects to use the function from libSystem. - text += fmt.Sprintf("//go:linkname libc_%s libc_%s\n", libcFn, libcFn) - text += fmt.Sprintf("//go:cgo_import_dynamic libc_%s %s \"/usr/lib/libSystem.B.dylib\"\n", libcFn, libcFn) - text += "\n" - } - } - if err := s.Err(); err != nil { - fmt.Fprintf(os.Stderr, err.Error()) - os.Exit(1) - } - file.Close() - } - fmt.Printf(srcTemplate, cmdLine(), buildTags(), text) -} - -const srcTemplate = `// %s -// Code generated by the command above; see README.md. DO NOT EDIT. - -// +build %s - -package unix - -import ( - "syscall" - "unsafe" -) - -var _ syscall.Errno - -%s -` diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.go deleted file mode 100644 index 3be3cdfc3..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.go +++ /dev/null @@ -1,415 +0,0 @@ -// 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 ignore - -/* -This program reads a file containing function prototypes -(like syscall_aix.go) and generates system call bodies. -The prototypes are marked by lines beginning with "//sys" -and read like func declarations if //sys is replaced by func, but: - * The parameter lists must give a name for each argument. - This includes return parameters. - * The parameter lists must give a type for each argument: - the (x, y, z int) shorthand is not allowed. - * If the return parameter is an error number, it must be named err. - * If go func name needs to be different than its libc name, - * or the function is not in libc, name could be specified - * at the end, after "=" sign, like - //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt -*/ -package main - -import ( - "bufio" - "flag" - "fmt" - "os" - "regexp" - "strings" -) - -var ( - b32 = flag.Bool("b32", false, "32bit big-endian") - l32 = flag.Bool("l32", false, "32bit little-endian") - aix = flag.Bool("aix", false, "aix") - tags = flag.String("tags", "", "build tags") -) - -// cmdLine returns this programs's commandline arguments -func cmdLine() string { - return "go run mksyscall_aix_ppc.go " + strings.Join(os.Args[1:], " ") -} - -// buildTags returns build tags -func buildTags() string { - return *tags -} - -// Param is function parameter -type Param struct { - Name string - Type string -} - -// usage prints the program usage -func usage() { - fmt.Fprintf(os.Stderr, "usage: go run mksyscall_aix_ppc.go [-b32 | -l32] [-tags x,y] [file ...]\n") - os.Exit(1) -} - -// parseParamList parses parameter list and returns a slice of parameters -func parseParamList(list string) []string { - list = strings.TrimSpace(list) - if list == "" { - return []string{} - } - return regexp.MustCompile(`\s*,\s*`).Split(list, -1) -} - -// parseParam splits a parameter into name and type -func parseParam(p string) Param { - ps := regexp.MustCompile(`^(\S*) (\S*)$`).FindStringSubmatch(p) - if ps == nil { - fmt.Fprintf(os.Stderr, "malformed parameter: %s\n", p) - os.Exit(1) - } - return Param{ps[1], ps[2]} -} - -func main() { - flag.Usage = usage - flag.Parse() - if len(flag.Args()) <= 0 { - fmt.Fprintf(os.Stderr, "no files to parse provided\n") - usage() - } - - endianness := "" - if *b32 { - endianness = "big-endian" - } else if *l32 { - endianness = "little-endian" - } - - pack := "" - text := "" - cExtern := "/*\n#include \n#include \n" - for _, path := range flag.Args() { - file, err := os.Open(path) - if err != nil { - fmt.Fprintf(os.Stderr, err.Error()) - os.Exit(1) - } - s := bufio.NewScanner(file) - for s.Scan() { - t := s.Text() - t = strings.TrimSpace(t) - t = regexp.MustCompile(`\s+`).ReplaceAllString(t, ` `) - if p := regexp.MustCompile(`^package (\S+)$`).FindStringSubmatch(t); p != nil && pack == "" { - pack = p[1] - } - nonblock := regexp.MustCompile(`^\/\/sysnb `).FindStringSubmatch(t) - if regexp.MustCompile(`^\/\/sys `).FindStringSubmatch(t) == nil && nonblock == nil { - continue - } - - // Line must be of the form - // func Open(path string, mode int, perm int) (fd int, err error) - // Split into name, in params, out params. - f := regexp.MustCompile(`^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*(?:(\w*)\.)?(\w*))?$`).FindStringSubmatch(t) - if f == nil { - fmt.Fprintf(os.Stderr, "%s:%s\nmalformed //sys declaration\n", path, t) - os.Exit(1) - } - funct, inps, outps, modname, sysname := f[2], f[3], f[4], f[5], f[6] - - // Split argument lists on comma. - in := parseParamList(inps) - out := parseParamList(outps) - - inps = strings.Join(in, ", ") - outps = strings.Join(out, ", ") - - // Try in vain to keep people from editing this file. - // The theory is that they jump into the middle of the file - // without reading the header. - text += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n" - - // Check if value return, err return available - errvar := "" - retvar := "" - rettype := "" - for _, param := range out { - p := parseParam(param) - if p.Type == "error" { - errvar = p.Name - } else { - retvar = p.Name - rettype = p.Type - } - } - - // System call name. - if sysname == "" { - sysname = funct - } - sysname = regexp.MustCompile(`([a-z])([A-Z])`).ReplaceAllString(sysname, `${1}_$2`) - sysname = strings.ToLower(sysname) // All libc functions are lowercase. - - cRettype := "" - if rettype == "unsafe.Pointer" { - cRettype = "uintptr_t" - } else if rettype == "uintptr" { - cRettype = "uintptr_t" - } else if regexp.MustCompile(`^_`).FindStringSubmatch(rettype) != nil { - cRettype = "uintptr_t" - } else if rettype == "int" { - cRettype = "int" - } else if rettype == "int32" { - cRettype = "int" - } else if rettype == "int64" { - cRettype = "long long" - } else if rettype == "uint32" { - cRettype = "unsigned int" - } else if rettype == "uint64" { - cRettype = "unsigned long long" - } else { - cRettype = "int" - } - if sysname == "exit" { - cRettype = "void" - } - - // Change p.Types to c - var cIn []string - for _, param := range in { - p := parseParam(param) - if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil { - cIn = append(cIn, "uintptr_t") - } else if p.Type == "string" { - cIn = append(cIn, "uintptr_t") - } else if regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type) != nil { - cIn = append(cIn, "uintptr_t", "size_t") - } else if p.Type == "unsafe.Pointer" { - cIn = append(cIn, "uintptr_t") - } else if p.Type == "uintptr" { - cIn = append(cIn, "uintptr_t") - } else if regexp.MustCompile(`^_`).FindStringSubmatch(p.Type) != nil { - cIn = append(cIn, "uintptr_t") - } else if p.Type == "int" { - cIn = append(cIn, "int") - } else if p.Type == "int32" { - cIn = append(cIn, "int") - } else if p.Type == "int64" { - cIn = append(cIn, "long long") - } else if p.Type == "uint32" { - cIn = append(cIn, "unsigned int") - } else if p.Type == "uint64" { - cIn = append(cIn, "unsigned long long") - } else { - cIn = append(cIn, "int") - } - } - - if funct != "fcntl" && funct != "FcntlInt" && funct != "readlen" && funct != "writelen" { - if sysname == "select" { - // select is a keyword of Go. Its name is - // changed to c_select. - cExtern += "#define c_select select\n" - } - // Imports of system calls from libc - cExtern += fmt.Sprintf("%s %s", cRettype, sysname) - cIn := strings.Join(cIn, ", ") - cExtern += fmt.Sprintf("(%s);\n", cIn) - } - - // So file name. - if *aix { - if modname == "" { - modname = "libc.a/shr_64.o" - } else { - fmt.Fprintf(os.Stderr, "%s: only syscall using libc are available\n", funct) - os.Exit(1) - } - } - - strconvfunc := "C.CString" - - // Go function header. - if outps != "" { - outps = fmt.Sprintf(" (%s)", outps) - } - if text != "" { - text += "\n" - } - - text += fmt.Sprintf("func %s(%s)%s {\n", funct, strings.Join(in, ", "), outps) - - // Prepare arguments to Syscall. - var args []string - n := 0 - argN := 0 - for _, param := range in { - p := parseParam(param) - if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil { - args = append(args, "C.uintptr_t(uintptr(unsafe.Pointer("+p.Name+")))") - } else if p.Type == "string" && errvar != "" { - text += fmt.Sprintf("\t_p%d := uintptr(unsafe.Pointer(%s(%s)))\n", n, strconvfunc, p.Name) - args = append(args, fmt.Sprintf("C.uintptr_t(_p%d)", n)) - n++ - } else if p.Type == "string" { - fmt.Fprintf(os.Stderr, path+":"+funct+" uses string arguments, but has no error return\n") - text += fmt.Sprintf("\t_p%d := uintptr(unsafe.Pointer(%s(%s)))\n", n, strconvfunc, p.Name) - args = append(args, fmt.Sprintf("C.uintptr_t(_p%d)", n)) - n++ - } else if m := regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type); m != nil { - // Convert slice into pointer, length. - // Have to be careful not to take address of &a[0] if len == 0: - // pass nil in that case. - text += fmt.Sprintf("\tvar _p%d *%s\n", n, m[1]) - text += fmt.Sprintf("\tif len(%s) > 0 {\n\t\t_p%d = &%s[0]\n\t}\n", p.Name, n, p.Name) - args = append(args, fmt.Sprintf("C.uintptr_t(uintptr(unsafe.Pointer(_p%d)))", n)) - n++ - text += fmt.Sprintf("\tvar _p%d int\n", n) - text += fmt.Sprintf("\t_p%d = len(%s)\n", n, p.Name) - args = append(args, fmt.Sprintf("C.size_t(_p%d)", n)) - n++ - } else if p.Type == "int64" && endianness != "" { - if endianness == "big-endian" { - args = append(args, fmt.Sprintf("uintptr(%s>>32)", p.Name), fmt.Sprintf("uintptr(%s)", p.Name)) - } else { - args = append(args, fmt.Sprintf("uintptr(%s)", p.Name), fmt.Sprintf("uintptr(%s>>32)", p.Name)) - } - n++ - } else if p.Type == "bool" { - text += fmt.Sprintf("\tvar _p%d uint32\n", n) - text += fmt.Sprintf("\tif %s {\n\t\t_p%d = 1\n\t} else {\n\t\t_p%d = 0\n\t}\n", p.Name, n, n) - args = append(args, fmt.Sprintf("_p%d", n)) - } else if regexp.MustCompile(`^_`).FindStringSubmatch(p.Type) != nil { - args = append(args, fmt.Sprintf("C.uintptr_t(uintptr(%s))", p.Name)) - } else if p.Type == "unsafe.Pointer" { - args = append(args, fmt.Sprintf("C.uintptr_t(uintptr(%s))", p.Name)) - } else if p.Type == "int" { - if (argN == 2) && ((funct == "readlen") || (funct == "writelen")) { - args = append(args, fmt.Sprintf("C.size_t(%s)", p.Name)) - } else if argN == 0 && funct == "fcntl" { - args = append(args, fmt.Sprintf("C.uintptr_t(%s)", p.Name)) - } else if (argN == 2) && ((funct == "fcntl") || (funct == "FcntlInt")) { - args = append(args, fmt.Sprintf("C.uintptr_t(%s)", p.Name)) - } else { - args = append(args, fmt.Sprintf("C.int(%s)", p.Name)) - } - } else if p.Type == "int32" { - args = append(args, fmt.Sprintf("C.int(%s)", p.Name)) - } else if p.Type == "int64" { - args = append(args, fmt.Sprintf("C.longlong(%s)", p.Name)) - } else if p.Type == "uint32" { - args = append(args, fmt.Sprintf("C.uint(%s)", p.Name)) - } else if p.Type == "uint64" { - args = append(args, fmt.Sprintf("C.ulonglong(%s)", p.Name)) - } else if p.Type == "uintptr" { - args = append(args, fmt.Sprintf("C.uintptr_t(%s)", p.Name)) - } else { - args = append(args, fmt.Sprintf("C.int(%s)", p.Name)) - } - argN++ - } - - // Actual call. - arglist := strings.Join(args, ", ") - call := "" - if sysname == "exit" { - if errvar != "" { - call += "er :=" - } else { - call += "" - } - } else if errvar != "" { - call += "r0,er :=" - } else if retvar != "" { - call += "r0,_ :=" - } else { - call += "" - } - if sysname == "select" { - // select is a keyword of Go. Its name is - // changed to c_select. - call += fmt.Sprintf("C.c_%s(%s)", sysname, arglist) - } else { - call += fmt.Sprintf("C.%s(%s)", sysname, arglist) - } - - // Assign return values. - body := "" - for i := 0; i < len(out); i++ { - p := parseParam(out[i]) - reg := "" - if p.Name == "err" { - reg = "e1" - } else { - reg = "r0" - } - if reg != "e1" { - body += fmt.Sprintf("\t%s = %s(%s)\n", p.Name, p.Type, reg) - } - } - - // verify return - if sysname != "exit" && errvar != "" { - if regexp.MustCompile(`^uintptr`).FindStringSubmatch(cRettype) != nil { - body += "\tif (uintptr(r0) ==^uintptr(0) && er != nil) {\n" - body += fmt.Sprintf("\t\t%s = er\n", errvar) - body += "\t}\n" - } else { - body += "\tif (r0 ==-1 && er != nil) {\n" - body += fmt.Sprintf("\t\t%s = er\n", errvar) - body += "\t}\n" - } - } else if errvar != "" { - body += "\tif (er != nil) {\n" - body += fmt.Sprintf("\t\t%s = er\n", errvar) - body += "\t}\n" - } - - text += fmt.Sprintf("\t%s\n", call) - text += body - - text += "\treturn\n" - text += "}\n" - } - if err := s.Err(); err != nil { - fmt.Fprintf(os.Stderr, err.Error()) - os.Exit(1) - } - file.Close() - } - imp := "" - if pack != "unix" { - imp = "import \"golang.org/x/sys/unix\"\n" - - } - fmt.Printf(srcTemplate, cmdLine(), buildTags(), pack, cExtern, imp, text) -} - -const srcTemplate = `// %s -// Code generated by the command above; see README.md. DO NOT EDIT. - -// +build %s - -package %s - - -%s -*/ -import "C" -import ( - "unsafe" -) - - -%s - -%s -` diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc64.go deleted file mode 100644 index c96009951..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc64.go +++ /dev/null @@ -1,614 +0,0 @@ -// 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 ignore - -/* -This program reads a file containing function prototypes -(like syscall_aix.go) and generates system call bodies. -The prototypes are marked by lines beginning with "//sys" -and read like func declarations if //sys is replaced by func, but: - * The parameter lists must give a name for each argument. - This includes return parameters. - * The parameter lists must give a type for each argument: - the (x, y, z int) shorthand is not allowed. - * If the return parameter is an error number, it must be named err. - * If go func name needs to be different than its libc name, - * or the function is not in libc, name could be specified - * at the end, after "=" sign, like - //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt - - -This program will generate three files and handle both gc and gccgo implementation: - - zsyscall_aix_ppc64.go: the common part of each implementation (error handler, pointer creation) - - zsyscall_aix_ppc64_gc.go: gc part with //go_cgo_import_dynamic and a call to syscall6 - - zsyscall_aix_ppc64_gccgo.go: gccgo part with C function and conversion to C type. - - The generated code looks like this - -zsyscall_aix_ppc64.go -func asyscall(...) (n int, err error) { - // Pointer Creation - r1, e1 := callasyscall(...) - // Type Conversion - // Error Handler - return -} - -zsyscall_aix_ppc64_gc.go -//go:cgo_import_dynamic libc_asyscall asyscall "libc.a/shr_64.o" -//go:linkname libc_asyscall libc_asyscall -var asyscall syscallFunc - -func callasyscall(...) (r1 uintptr, e1 Errno) { - r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_asyscall)), "nb_args", ... ) - return -} - -zsyscall_aix_ppc64_ggcgo.go - -// int asyscall(...) - -import "C" - -func callasyscall(...) (r1 uintptr, e1 Errno) { - r1 = uintptr(C.asyscall(...)) - e1 = syscall.GetErrno() - return -} -*/ - -package main - -import ( - "bufio" - "flag" - "fmt" - "io/ioutil" - "os" - "regexp" - "strings" -) - -var ( - b32 = flag.Bool("b32", false, "32bit big-endian") - l32 = flag.Bool("l32", false, "32bit little-endian") - aix = flag.Bool("aix", false, "aix") - tags = flag.String("tags", "", "build tags") -) - -// cmdLine returns this programs's commandline arguments -func cmdLine() string { - return "go run mksyscall_aix_ppc64.go " + strings.Join(os.Args[1:], " ") -} - -// buildTags returns build tags -func buildTags() string { - return *tags -} - -// Param is function parameter -type Param struct { - Name string - Type string -} - -// usage prints the program usage -func usage() { - fmt.Fprintf(os.Stderr, "usage: go run mksyscall_aix_ppc64.go [-b32 | -l32] [-tags x,y] [file ...]\n") - os.Exit(1) -} - -// parseParamList parses parameter list and returns a slice of parameters -func parseParamList(list string) []string { - list = strings.TrimSpace(list) - if list == "" { - return []string{} - } - return regexp.MustCompile(`\s*,\s*`).Split(list, -1) -} - -// parseParam splits a parameter into name and type -func parseParam(p string) Param { - ps := regexp.MustCompile(`^(\S*) (\S*)$`).FindStringSubmatch(p) - if ps == nil { - fmt.Fprintf(os.Stderr, "malformed parameter: %s\n", p) - os.Exit(1) - } - return Param{ps[1], ps[2]} -} - -func main() { - flag.Usage = usage - flag.Parse() - if len(flag.Args()) <= 0 { - fmt.Fprintf(os.Stderr, "no files to parse provided\n") - usage() - } - - endianness := "" - if *b32 { - endianness = "big-endian" - } else if *l32 { - endianness = "little-endian" - } - - pack := "" - // GCCGO - textgccgo := "" - cExtern := "/*\n#include \n" - // GC - textgc := "" - dynimports := "" - linknames := "" - var vars []string - // COMMON - textcommon := "" - for _, path := range flag.Args() { - file, err := os.Open(path) - if err != nil { - fmt.Fprintf(os.Stderr, err.Error()) - os.Exit(1) - } - s := bufio.NewScanner(file) - for s.Scan() { - t := s.Text() - t = strings.TrimSpace(t) - t = regexp.MustCompile(`\s+`).ReplaceAllString(t, ` `) - if p := regexp.MustCompile(`^package (\S+)$`).FindStringSubmatch(t); p != nil && pack == "" { - pack = p[1] - } - nonblock := regexp.MustCompile(`^\/\/sysnb `).FindStringSubmatch(t) - if regexp.MustCompile(`^\/\/sys `).FindStringSubmatch(t) == nil && nonblock == nil { - continue - } - - // Line must be of the form - // func Open(path string, mode int, perm int) (fd int, err error) - // Split into name, in params, out params. - f := regexp.MustCompile(`^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*(?:(\w*)\.)?(\w*))?$`).FindStringSubmatch(t) - if f == nil { - fmt.Fprintf(os.Stderr, "%s:%s\nmalformed //sys declaration\n", path, t) - os.Exit(1) - } - funct, inps, outps, modname, sysname := f[2], f[3], f[4], f[5], f[6] - - // Split argument lists on comma. - in := parseParamList(inps) - out := parseParamList(outps) - - inps = strings.Join(in, ", ") - outps = strings.Join(out, ", ") - - if sysname == "" { - sysname = funct - } - - onlyCommon := false - if funct == "readlen" || funct == "writelen" || funct == "FcntlInt" || funct == "FcntlFlock" { - // This function call another syscall which is already implemented. - // Therefore, the gc and gccgo part must not be generated. - onlyCommon = true - } - - // Try in vain to keep people from editing this file. - // The theory is that they jump into the middle of the file - // without reading the header. - - textcommon += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n" - if !onlyCommon { - textgccgo += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n" - textgc += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n" - } - - // Check if value return, err return available - errvar := "" - rettype := "" - for _, param := range out { - p := parseParam(param) - if p.Type == "error" { - errvar = p.Name - } else { - rettype = p.Type - } - } - - sysname = regexp.MustCompile(`([a-z])([A-Z])`).ReplaceAllString(sysname, `${1}_$2`) - sysname = strings.ToLower(sysname) // All libc functions are lowercase. - - // GCCGO Prototype return type - cRettype := "" - if rettype == "unsafe.Pointer" { - cRettype = "uintptr_t" - } else if rettype == "uintptr" { - cRettype = "uintptr_t" - } else if regexp.MustCompile(`^_`).FindStringSubmatch(rettype) != nil { - cRettype = "uintptr_t" - } else if rettype == "int" { - cRettype = "int" - } else if rettype == "int32" { - cRettype = "int" - } else if rettype == "int64" { - cRettype = "long long" - } else if rettype == "uint32" { - cRettype = "unsigned int" - } else if rettype == "uint64" { - cRettype = "unsigned long long" - } else { - cRettype = "int" - } - if sysname == "exit" { - cRettype = "void" - } - - // GCCGO Prototype arguments type - var cIn []string - for i, param := range in { - p := parseParam(param) - if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil { - cIn = append(cIn, "uintptr_t") - } else if p.Type == "string" { - cIn = append(cIn, "uintptr_t") - } else if regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type) != nil { - cIn = append(cIn, "uintptr_t", "size_t") - } else if p.Type == "unsafe.Pointer" { - cIn = append(cIn, "uintptr_t") - } else if p.Type == "uintptr" { - cIn = append(cIn, "uintptr_t") - } else if regexp.MustCompile(`^_`).FindStringSubmatch(p.Type) != nil { - cIn = append(cIn, "uintptr_t") - } else if p.Type == "int" { - if (i == 0 || i == 2) && funct == "fcntl" { - // These fcntl arguments needs to be uintptr to be able to call FcntlInt and FcntlFlock - cIn = append(cIn, "uintptr_t") - } else { - cIn = append(cIn, "int") - } - - } else if p.Type == "int32" { - cIn = append(cIn, "int") - } else if p.Type == "int64" { - cIn = append(cIn, "long long") - } else if p.Type == "uint32" { - cIn = append(cIn, "unsigned int") - } else if p.Type == "uint64" { - cIn = append(cIn, "unsigned long long") - } else { - cIn = append(cIn, "int") - } - } - - if !onlyCommon { - // GCCGO Prototype Generation - // Imports of system calls from libc - if sysname == "select" { - // select is a keyword of Go. Its name is - // changed to c_select. - cExtern += "#define c_select select\n" - } - cExtern += fmt.Sprintf("%s %s", cRettype, sysname) - cIn := strings.Join(cIn, ", ") - cExtern += fmt.Sprintf("(%s);\n", cIn) - } - // GC Library name - if modname == "" { - modname = "libc.a/shr_64.o" - } else { - fmt.Fprintf(os.Stderr, "%s: only syscall using libc are available\n", funct) - os.Exit(1) - } - sysvarname := fmt.Sprintf("libc_%s", sysname) - - if !onlyCommon { - // GC Runtime import of function to allow cross-platform builds. - dynimports += fmt.Sprintf("//go:cgo_import_dynamic %s %s \"%s\"\n", sysvarname, sysname, modname) - // GC Link symbol to proc address variable. - linknames += fmt.Sprintf("//go:linkname %s %s\n", sysvarname, sysvarname) - // GC Library proc address variable. - vars = append(vars, sysvarname) - } - - strconvfunc := "BytePtrFromString" - strconvtype := "*byte" - - // Go function header. - if outps != "" { - outps = fmt.Sprintf(" (%s)", outps) - } - if textcommon != "" { - textcommon += "\n" - } - - textcommon += fmt.Sprintf("func %s(%s)%s {\n", funct, strings.Join(in, ", "), outps) - - // Prepare arguments tocall. - var argscommon []string // Arguments in the common part - var argscall []string // Arguments for call prototype - var argsgc []string // Arguments for gc call (with syscall6) - var argsgccgo []string // Arguments for gccgo call (with C.name_of_syscall) - n := 0 - argN := 0 - for _, param := range in { - p := parseParam(param) - if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil { - argscommon = append(argscommon, fmt.Sprintf("uintptr(unsafe.Pointer(%s))", p.Name)) - argscall = append(argscall, fmt.Sprintf("%s uintptr", p.Name)) - argsgc = append(argsgc, p.Name) - argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(%s)", p.Name)) - } else if p.Type == "string" && errvar != "" { - textcommon += fmt.Sprintf("\tvar _p%d %s\n", n, strconvtype) - textcommon += fmt.Sprintf("\t_p%d, %s = %s(%s)\n", n, errvar, strconvfunc, p.Name) - textcommon += fmt.Sprintf("\tif %s != nil {\n\t\treturn\n\t}\n", errvar) - - argscommon = append(argscommon, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n)) - argscall = append(argscall, fmt.Sprintf("_p%d uintptr ", n)) - argsgc = append(argsgc, fmt.Sprintf("_p%d", n)) - argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(_p%d)", n)) - n++ - } else if p.Type == "string" { - fmt.Fprintf(os.Stderr, path+":"+funct+" uses string arguments, but has no error return\n") - textcommon += fmt.Sprintf("\tvar _p%d %s\n", n, strconvtype) - textcommon += fmt.Sprintf("\t_p%d, %s = %s(%s)\n", n, errvar, strconvfunc, p.Name) - textcommon += fmt.Sprintf("\tif %s != nil {\n\t\treturn\n\t}\n", errvar) - - argscommon = append(argscommon, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n)) - argscall = append(argscall, fmt.Sprintf("_p%d uintptr", n)) - argsgc = append(argsgc, fmt.Sprintf("_p%d", n)) - argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(_p%d)", n)) - n++ - } else if m := regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type); m != nil { - // Convert slice into pointer, length. - // Have to be careful not to take address of &a[0] if len == 0: - // pass nil in that case. - textcommon += fmt.Sprintf("\tvar _p%d *%s\n", n, m[1]) - textcommon += fmt.Sprintf("\tif len(%s) > 0 {\n\t\t_p%d = &%s[0]\n\t}\n", p.Name, n, p.Name) - argscommon = append(argscommon, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n), fmt.Sprintf("len(%s)", p.Name)) - argscall = append(argscall, fmt.Sprintf("_p%d uintptr", n), fmt.Sprintf("_lenp%d int", n)) - argsgc = append(argsgc, fmt.Sprintf("_p%d", n), fmt.Sprintf("uintptr(_lenp%d)", n)) - argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(_p%d)", n), fmt.Sprintf("C.size_t(_lenp%d)", n)) - n++ - } else if p.Type == "int64" && endianness != "" { - fmt.Fprintf(os.Stderr, path+":"+funct+" uses int64 with 32 bits mode. Case not yet implemented\n") - } else if p.Type == "bool" { - fmt.Fprintf(os.Stderr, path+":"+funct+" uses bool. Case not yet implemented\n") - } else if regexp.MustCompile(`^_`).FindStringSubmatch(p.Type) != nil || p.Type == "unsafe.Pointer" { - argscommon = append(argscommon, fmt.Sprintf("uintptr(%s)", p.Name)) - argscall = append(argscall, fmt.Sprintf("%s uintptr", p.Name)) - argsgc = append(argsgc, p.Name) - argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(%s)", p.Name)) - } else if p.Type == "int" { - if (argN == 0 || argN == 2) && ((funct == "fcntl") || (funct == "FcntlInt") || (funct == "FcntlFlock")) { - // These fcntl arguments need to be uintptr to be able to call FcntlInt and FcntlFlock - argscommon = append(argscommon, fmt.Sprintf("uintptr(%s)", p.Name)) - argscall = append(argscall, fmt.Sprintf("%s uintptr", p.Name)) - argsgc = append(argsgc, p.Name) - argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(%s)", p.Name)) - - } else { - argscommon = append(argscommon, p.Name) - argscall = append(argscall, fmt.Sprintf("%s int", p.Name)) - argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name)) - argsgccgo = append(argsgccgo, fmt.Sprintf("C.int(%s)", p.Name)) - } - } else if p.Type == "int32" { - argscommon = append(argscommon, p.Name) - argscall = append(argscall, fmt.Sprintf("%s int32", p.Name)) - argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name)) - argsgccgo = append(argsgccgo, fmt.Sprintf("C.int(%s)", p.Name)) - } else if p.Type == "int64" { - argscommon = append(argscommon, p.Name) - argscall = append(argscall, fmt.Sprintf("%s int64", p.Name)) - argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name)) - argsgccgo = append(argsgccgo, fmt.Sprintf("C.longlong(%s)", p.Name)) - } else if p.Type == "uint32" { - argscommon = append(argscommon, p.Name) - argscall = append(argscall, fmt.Sprintf("%s uint32", p.Name)) - argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name)) - argsgccgo = append(argsgccgo, fmt.Sprintf("C.uint(%s)", p.Name)) - } else if p.Type == "uint64" { - argscommon = append(argscommon, p.Name) - argscall = append(argscall, fmt.Sprintf("%s uint64", p.Name)) - argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name)) - argsgccgo = append(argsgccgo, fmt.Sprintf("C.ulonglong(%s)", p.Name)) - } else if p.Type == "uintptr" { - argscommon = append(argscommon, p.Name) - argscall = append(argscall, fmt.Sprintf("%s uintptr", p.Name)) - argsgc = append(argsgc, p.Name) - argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(%s)", p.Name)) - } else { - argscommon = append(argscommon, fmt.Sprintf("int(%s)", p.Name)) - argscall = append(argscall, fmt.Sprintf("%s int", p.Name)) - argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name)) - argsgccgo = append(argsgccgo, fmt.Sprintf("C.int(%s)", p.Name)) - } - argN++ - } - nargs := len(argsgc) - - // COMMON function generation - argscommonlist := strings.Join(argscommon, ", ") - callcommon := fmt.Sprintf("call%s(%s)", sysname, argscommonlist) - ret := []string{"_", "_"} - body := "" - doErrno := false - for i := 0; i < len(out); i++ { - p := parseParam(out[i]) - reg := "" - if p.Name == "err" { - reg = "e1" - ret[1] = reg - doErrno = true - } else { - reg = "r0" - ret[0] = reg - } - if p.Type == "bool" { - reg = fmt.Sprintf("%s != 0", reg) - } - if reg != "e1" { - body += fmt.Sprintf("\t%s = %s(%s)\n", p.Name, p.Type, reg) - } - } - if ret[0] == "_" && ret[1] == "_" { - textcommon += fmt.Sprintf("\t%s\n", callcommon) - } else { - textcommon += fmt.Sprintf("\t%s, %s := %s\n", ret[0], ret[1], callcommon) - } - textcommon += body - - if doErrno { - textcommon += "\tif e1 != 0 {\n" - textcommon += "\t\terr = errnoErr(e1)\n" - textcommon += "\t}\n" - } - textcommon += "\treturn\n" - textcommon += "}\n" - - if onlyCommon { - continue - } - - // CALL Prototype - callProto := fmt.Sprintf("func call%s(%s) (r1 uintptr, e1 Errno) {\n", sysname, strings.Join(argscall, ", ")) - - // GC function generation - asm := "syscall6" - if nonblock != nil { - asm = "rawSyscall6" - } - - if len(argsgc) <= 6 { - for len(argsgc) < 6 { - argsgc = append(argsgc, "0") - } - } else { - fmt.Fprintf(os.Stderr, "%s: too many arguments to system call", funct) - os.Exit(1) - } - argsgclist := strings.Join(argsgc, ", ") - callgc := fmt.Sprintf("%s(uintptr(unsafe.Pointer(&%s)), %d, %s)", asm, sysvarname, nargs, argsgclist) - - textgc += callProto - textgc += fmt.Sprintf("\tr1, _, e1 = %s\n", callgc) - textgc += "\treturn\n}\n" - - // GCCGO function generation - argsgccgolist := strings.Join(argsgccgo, ", ") - var callgccgo string - if sysname == "select" { - // select is a keyword of Go. Its name is - // changed to c_select. - callgccgo = fmt.Sprintf("C.c_%s(%s)", sysname, argsgccgolist) - } else { - callgccgo = fmt.Sprintf("C.%s(%s)", sysname, argsgccgolist) - } - textgccgo += callProto - textgccgo += fmt.Sprintf("\tr1 = uintptr(%s)\n", callgccgo) - textgccgo += "\te1 = syscall.GetErrno()\n" - textgccgo += "\treturn\n}\n" - } - if err := s.Err(); err != nil { - fmt.Fprintf(os.Stderr, err.Error()) - os.Exit(1) - } - file.Close() - } - imp := "" - if pack != "unix" { - imp = "import \"golang.org/x/sys/unix\"\n" - - } - - // Print zsyscall_aix_ppc64.go - err := ioutil.WriteFile("zsyscall_aix_ppc64.go", - []byte(fmt.Sprintf(srcTemplate1, cmdLine(), buildTags(), pack, imp, textcommon)), - 0644) - if err != nil { - fmt.Fprintf(os.Stderr, err.Error()) - os.Exit(1) - } - - // Print zsyscall_aix_ppc64_gc.go - vardecls := "\t" + strings.Join(vars, ",\n\t") - vardecls += " syscallFunc" - err = ioutil.WriteFile("zsyscall_aix_ppc64_gc.go", - []byte(fmt.Sprintf(srcTemplate2, cmdLine(), buildTags(), pack, imp, dynimports, linknames, vardecls, textgc)), - 0644) - if err != nil { - fmt.Fprintf(os.Stderr, err.Error()) - os.Exit(1) - } - - // Print zsyscall_aix_ppc64_gccgo.go - err = ioutil.WriteFile("zsyscall_aix_ppc64_gccgo.go", - []byte(fmt.Sprintf(srcTemplate3, cmdLine(), buildTags(), pack, cExtern, imp, textgccgo)), - 0644) - if err != nil { - fmt.Fprintf(os.Stderr, err.Error()) - os.Exit(1) - } -} - -const srcTemplate1 = `// %s -// Code generated by the command above; see README.md. DO NOT EDIT. - -// +build %s - -package %s - -import ( - "unsafe" -) - - -%s - -%s -` -const srcTemplate2 = `// %s -// Code generated by the command above; see README.md. DO NOT EDIT. - -// +build %s -// +build !gccgo - -package %s - -import ( - "unsafe" -) -%s -%s -%s -type syscallFunc uintptr - -var ( -%s -) - -// 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) - -%s -` -const srcTemplate3 = `// %s -// Code generated by the command above; see README.md. DO NOT EDIT. - -// +build %s -// +build gccgo - -package %s - -%s -*/ -import "C" -import ( - "syscall" -) - - -%s - -%s -` diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksyscall_solaris.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksyscall_solaris.go deleted file mode 100644 index 3d864738b..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksyscall_solaris.go +++ /dev/null @@ -1,335 +0,0 @@ -// 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 ignore - -/* - This program reads a file containing function prototypes - (like syscall_solaris.go) and generates system call bodies. - The prototypes are marked by lines beginning with "//sys" - and read like func declarations if //sys is replaced by func, but: - * The parameter lists must give a name for each argument. - This includes return parameters. - * The parameter lists must give a type for each argument: - the (x, y, z int) shorthand is not allowed. - * If the return parameter is an error number, it must be named err. - * If go func name needs to be different than its libc name, - * or the function is not in libc, name could be specified - * at the end, after "=" sign, like - //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt -*/ - -package main - -import ( - "bufio" - "flag" - "fmt" - "os" - "regexp" - "strings" -) - -var ( - b32 = flag.Bool("b32", false, "32bit big-endian") - l32 = flag.Bool("l32", false, "32bit little-endian") - tags = flag.String("tags", "", "build tags") -) - -// cmdLine returns this programs's commandline arguments -func cmdLine() string { - return "go run mksyscall_solaris.go " + strings.Join(os.Args[1:], " ") -} - -// buildTags returns build tags -func buildTags() string { - return *tags -} - -// Param is function parameter -type Param struct { - Name string - Type string -} - -// usage prints the program usage -func usage() { - fmt.Fprintf(os.Stderr, "usage: go run mksyscall_solaris.go [-b32 | -l32] [-tags x,y] [file ...]\n") - os.Exit(1) -} - -// parseParamList parses parameter list and returns a slice of parameters -func parseParamList(list string) []string { - list = strings.TrimSpace(list) - if list == "" { - return []string{} - } - return regexp.MustCompile(`\s*,\s*`).Split(list, -1) -} - -// parseParam splits a parameter into name and type -func parseParam(p string) Param { - ps := regexp.MustCompile(`^(\S*) (\S*)$`).FindStringSubmatch(p) - if ps == nil { - fmt.Fprintf(os.Stderr, "malformed parameter: %s\n", p) - os.Exit(1) - } - return Param{ps[1], ps[2]} -} - -func main() { - flag.Usage = usage - flag.Parse() - if len(flag.Args()) <= 0 { - fmt.Fprintf(os.Stderr, "no files to parse provided\n") - usage() - } - - endianness := "" - if *b32 { - endianness = "big-endian" - } else if *l32 { - endianness = "little-endian" - } - - pack := "" - text := "" - dynimports := "" - linknames := "" - var vars []string - for _, path := range flag.Args() { - file, err := os.Open(path) - if err != nil { - fmt.Fprintf(os.Stderr, err.Error()) - os.Exit(1) - } - s := bufio.NewScanner(file) - for s.Scan() { - t := s.Text() - t = strings.TrimSpace(t) - t = regexp.MustCompile(`\s+`).ReplaceAllString(t, ` `) - if p := regexp.MustCompile(`^package (\S+)$`).FindStringSubmatch(t); p != nil && pack == "" { - pack = p[1] - } - nonblock := regexp.MustCompile(`^\/\/sysnb `).FindStringSubmatch(t) - if regexp.MustCompile(`^\/\/sys `).FindStringSubmatch(t) == nil && nonblock == nil { - continue - } - - // Line must be of the form - // func Open(path string, mode int, perm int) (fd int, err error) - // Split into name, in params, out params. - f := regexp.MustCompile(`^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*(?:(\w*)\.)?(\w*))?$`).FindStringSubmatch(t) - if f == nil { - fmt.Fprintf(os.Stderr, "%s:%s\nmalformed //sys declaration\n", path, t) - os.Exit(1) - } - funct, inps, outps, modname, sysname := f[2], f[3], f[4], f[5], f[6] - - // Split argument lists on comma. - in := parseParamList(inps) - out := parseParamList(outps) - - inps = strings.Join(in, ", ") - outps = strings.Join(out, ", ") - - // Try in vain to keep people from editing this file. - // The theory is that they jump into the middle of the file - // without reading the header. - text += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n" - - // So file name. - if modname == "" { - modname = "libc" - } - - // System call name. - if sysname == "" { - sysname = funct - } - - // System call pointer variable name. - sysvarname := fmt.Sprintf("proc%s", sysname) - - strconvfunc := "BytePtrFromString" - strconvtype := "*byte" - - sysname = strings.ToLower(sysname) // All libc functions are lowercase. - - // Runtime import of function to allow cross-platform builds. - dynimports += fmt.Sprintf("//go:cgo_import_dynamic libc_%s %s \"%s.so\"\n", sysname, sysname, modname) - // Link symbol to proc address variable. - linknames += fmt.Sprintf("//go:linkname %s libc_%s\n", sysvarname, sysname) - // Library proc address variable. - vars = append(vars, sysvarname) - - // Go function header. - outlist := strings.Join(out, ", ") - if outlist != "" { - outlist = fmt.Sprintf(" (%s)", outlist) - } - if text != "" { - text += "\n" - } - text += fmt.Sprintf("func %s(%s)%s {\n", funct, strings.Join(in, ", "), outlist) - - // Check if err return available - errvar := "" - for _, param := range out { - p := parseParam(param) - if p.Type == "error" { - errvar = p.Name - continue - } - } - - // Prepare arguments to Syscall. - var args []string - n := 0 - for _, param := range in { - p := parseParam(param) - if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil { - args = append(args, "uintptr(unsafe.Pointer("+p.Name+"))") - } else if p.Type == "string" && errvar != "" { - text += fmt.Sprintf("\tvar _p%d %s\n", n, strconvtype) - text += fmt.Sprintf("\t_p%d, %s = %s(%s)\n", n, errvar, strconvfunc, p.Name) - text += fmt.Sprintf("\tif %s != nil {\n\t\treturn\n\t}\n", errvar) - args = append(args, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n)) - n++ - } else if p.Type == "string" { - fmt.Fprintf(os.Stderr, path+":"+funct+" uses string arguments, but has no error return\n") - text += fmt.Sprintf("\tvar _p%d %s\n", n, strconvtype) - text += fmt.Sprintf("\t_p%d, _ = %s(%s)\n", n, strconvfunc, p.Name) - args = append(args, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n)) - n++ - } else if s := regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type); s != nil { - // Convert slice into pointer, length. - // Have to be careful not to take address of &a[0] if len == 0: - // pass nil in that case. - text += fmt.Sprintf("\tvar _p%d *%s\n", n, s[1]) - text += fmt.Sprintf("\tif len(%s) > 0 {\n\t\t_p%d = &%s[0]\n\t}\n", p.Name, n, p.Name) - args = append(args, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n), fmt.Sprintf("uintptr(len(%s))", p.Name)) - n++ - } else if p.Type == "int64" && endianness != "" { - if endianness == "big-endian" { - args = append(args, fmt.Sprintf("uintptr(%s>>32)", p.Name), fmt.Sprintf("uintptr(%s)", p.Name)) - } else { - args = append(args, fmt.Sprintf("uintptr(%s)", p.Name), fmt.Sprintf("uintptr(%s>>32)", p.Name)) - } - } else if p.Type == "bool" { - text += fmt.Sprintf("\tvar _p%d uint32\n", n) - text += fmt.Sprintf("\tif %s {\n\t\t_p%d = 1\n\t} else {\n\t\t_p%d = 0\n\t}\n", p.Name, n, n) - args = append(args, fmt.Sprintf("uintptr(_p%d)", n)) - n++ - } else { - args = append(args, fmt.Sprintf("uintptr(%s)", p.Name)) - } - } - nargs := len(args) - - // Determine which form to use; pad args with zeros. - asm := "sysvicall6" - if nonblock != nil { - asm = "rawSysvicall6" - } - if len(args) <= 6 { - for len(args) < 6 { - args = append(args, "0") - } - } else { - fmt.Fprintf(os.Stderr, "%s: too many arguments to system call\n", path) - os.Exit(1) - } - - // Actual call. - arglist := strings.Join(args, ", ") - call := fmt.Sprintf("%s(uintptr(unsafe.Pointer(&%s)), %d, %s)", asm, sysvarname, nargs, arglist) - - // Assign return values. - body := "" - ret := []string{"_", "_", "_"} - doErrno := false - for i := 0; i < len(out); i++ { - p := parseParam(out[i]) - reg := "" - if p.Name == "err" { - reg = "e1" - ret[2] = reg - doErrno = true - } else { - reg = fmt.Sprintf("r%d", i) - ret[i] = reg - } - if p.Type == "bool" { - reg = fmt.Sprintf("%d != 0", reg) - } - if p.Type == "int64" && endianness != "" { - // 64-bit number in r1:r0 or r0:r1. - if i+2 > len(out) { - fmt.Fprintf(os.Stderr, "%s: not enough registers for int64 return\n", path) - os.Exit(1) - } - if endianness == "big-endian" { - reg = fmt.Sprintf("int64(r%d)<<32 | int64(r%d)", i, i+1) - } else { - reg = fmt.Sprintf("int64(r%d)<<32 | int64(r%d)", i+1, i) - } - ret[i] = fmt.Sprintf("r%d", i) - ret[i+1] = fmt.Sprintf("r%d", i+1) - } - if reg != "e1" { - body += fmt.Sprintf("\t%s = %s(%s)\n", p.Name, p.Type, reg) - } - } - if ret[0] == "_" && ret[1] == "_" && ret[2] == "_" { - text += fmt.Sprintf("\t%s\n", call) - } else { - text += fmt.Sprintf("\t%s, %s, %s := %s\n", ret[0], ret[1], ret[2], call) - } - text += body - - if doErrno { - text += "\tif e1 != 0 {\n" - text += "\t\terr = e1\n" - text += "\t}\n" - } - text += "\treturn\n" - text += "}\n" - } - if err := s.Err(); err != nil { - fmt.Fprintf(os.Stderr, err.Error()) - os.Exit(1) - } - file.Close() - } - imp := "" - if pack != "unix" { - imp = "import \"golang.org/x/sys/unix\"\n" - - } - vardecls := "\t" + strings.Join(vars, ",\n\t") - vardecls += " syscallFunc" - fmt.Printf(srcTemplate, cmdLine(), buildTags(), pack, imp, dynimports, linknames, vardecls, text) -} - -const srcTemplate = `// %s -// Code generated by the command above; see README.md. DO NOT EDIT. - -// +build %s - -package %s - -import ( - "syscall" - "unsafe" -) -%s -%s -%s -var ( -%s -) - -%s -` diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksysctl_openbsd.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksysctl_openbsd.go deleted file mode 100644 index b6b409909..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksysctl_openbsd.go +++ /dev/null @@ -1,355 +0,0 @@ -// 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 ignore - -// Parse the header files for OpenBSD and generate a Go usable sysctl MIB. -// -// Build a MIB with each entry being an array containing the level, type and -// a hash that will contain additional entries if the current entry is a node. -// We then walk this MIB and create a flattened sysctl name to OID hash. - -package main - -import ( - "bufio" - "fmt" - "os" - "path/filepath" - "regexp" - "sort" - "strings" -) - -var ( - goos, goarch string -) - -// cmdLine returns this programs's commandline arguments. -func cmdLine() string { - return "go run mksysctl_openbsd.go " + strings.Join(os.Args[1:], " ") -} - -// buildTags returns build tags. -func buildTags() string { - return fmt.Sprintf("%s,%s", goarch, goos) -} - -// reMatch performs regular expression match and stores the substring slice to value pointed by m. -func reMatch(re *regexp.Regexp, str string, m *[]string) bool { - *m = re.FindStringSubmatch(str) - if *m != nil { - return true - } - return false -} - -type nodeElement struct { - n int - t string - pE *map[string]nodeElement -} - -var ( - debugEnabled bool - mib map[string]nodeElement - node *map[string]nodeElement - nodeMap map[string]string - sysCtl []string -) - -var ( - ctlNames1RE = regexp.MustCompile(`^#define\s+(CTL_NAMES)\s+{`) - ctlNames2RE = regexp.MustCompile(`^#define\s+(CTL_(.*)_NAMES)\s+{`) - ctlNames3RE = regexp.MustCompile(`^#define\s+((.*)CTL_NAMES)\s+{`) - netInetRE = regexp.MustCompile(`^netinet/`) - netInet6RE = regexp.MustCompile(`^netinet6/`) - netRE = regexp.MustCompile(`^net/`) - bracesRE = regexp.MustCompile(`{.*}`) - ctlTypeRE = regexp.MustCompile(`{\s+"(\w+)",\s+(CTLTYPE_[A-Z]+)\s+}`) - fsNetKernRE = regexp.MustCompile(`^(fs|net|kern)_`) -) - -func debug(s string) { - if debugEnabled { - fmt.Fprintln(os.Stderr, s) - } -} - -// Walk the MIB and build a sysctl name to OID mapping. -func buildSysctl(pNode *map[string]nodeElement, name string, oid []int) { - lNode := pNode // local copy of pointer to node - var keys []string - for k := range *lNode { - keys = append(keys, k) - } - sort.Strings(keys) - - for _, key := range keys { - nodename := name - if name != "" { - nodename += "." - } - nodename += key - - nodeoid := append(oid, (*pNode)[key].n) - - if (*pNode)[key].t == `CTLTYPE_NODE` { - if _, ok := nodeMap[nodename]; ok { - lNode = &mib - ctlName := nodeMap[nodename] - for _, part := range strings.Split(ctlName, ".") { - lNode = ((*lNode)[part]).pE - } - } else { - lNode = (*pNode)[key].pE - } - buildSysctl(lNode, nodename, nodeoid) - } else if (*pNode)[key].t != "" { - oidStr := []string{} - for j := range nodeoid { - oidStr = append(oidStr, fmt.Sprintf("%d", nodeoid[j])) - } - text := "\t{ \"" + nodename + "\", []_C_int{ " + strings.Join(oidStr, ", ") + " } }, \n" - sysCtl = append(sysCtl, text) - } - } -} - -func main() { - // Get the OS (using GOOS_TARGET if it exist) - goos = os.Getenv("GOOS_TARGET") - if goos == "" { - goos = os.Getenv("GOOS") - } - // Get the architecture (using GOARCH_TARGET if it exists) - goarch = os.Getenv("GOARCH_TARGET") - if goarch == "" { - goarch = os.Getenv("GOARCH") - } - // Check if GOOS and GOARCH environment variables are defined - if goarch == "" || goos == "" { - fmt.Fprintf(os.Stderr, "GOARCH or GOOS not defined in environment\n") - os.Exit(1) - } - - mib = make(map[string]nodeElement) - headers := [...]string{ - `sys/sysctl.h`, - `sys/socket.h`, - `sys/tty.h`, - `sys/malloc.h`, - `sys/mount.h`, - `sys/namei.h`, - `sys/sem.h`, - `sys/shm.h`, - `sys/vmmeter.h`, - `uvm/uvmexp.h`, - `uvm/uvm_param.h`, - `uvm/uvm_swap_encrypt.h`, - `ddb/db_var.h`, - `net/if.h`, - `net/if_pfsync.h`, - `net/pipex.h`, - `netinet/in.h`, - `netinet/icmp_var.h`, - `netinet/igmp_var.h`, - `netinet/ip_ah.h`, - `netinet/ip_carp.h`, - `netinet/ip_divert.h`, - `netinet/ip_esp.h`, - `netinet/ip_ether.h`, - `netinet/ip_gre.h`, - `netinet/ip_ipcomp.h`, - `netinet/ip_ipip.h`, - `netinet/pim_var.h`, - `netinet/tcp_var.h`, - `netinet/udp_var.h`, - `netinet6/in6.h`, - `netinet6/ip6_divert.h`, - `netinet6/pim6_var.h`, - `netinet/icmp6.h`, - `netmpls/mpls.h`, - } - - ctls := [...]string{ - `kern`, - `vm`, - `fs`, - `net`, - //debug /* Special handling required */ - `hw`, - //machdep /* Arch specific */ - `user`, - `ddb`, - //vfs /* Special handling required */ - `fs.posix`, - `kern.forkstat`, - `kern.intrcnt`, - `kern.malloc`, - `kern.nchstats`, - `kern.seminfo`, - `kern.shminfo`, - `kern.timecounter`, - `kern.tty`, - `kern.watchdog`, - `net.bpf`, - `net.ifq`, - `net.inet`, - `net.inet.ah`, - `net.inet.carp`, - `net.inet.divert`, - `net.inet.esp`, - `net.inet.etherip`, - `net.inet.gre`, - `net.inet.icmp`, - `net.inet.igmp`, - `net.inet.ip`, - `net.inet.ip.ifq`, - `net.inet.ipcomp`, - `net.inet.ipip`, - `net.inet.mobileip`, - `net.inet.pfsync`, - `net.inet.pim`, - `net.inet.tcp`, - `net.inet.udp`, - `net.inet6`, - `net.inet6.divert`, - `net.inet6.ip6`, - `net.inet6.icmp6`, - `net.inet6.pim6`, - `net.inet6.tcp6`, - `net.inet6.udp6`, - `net.mpls`, - `net.mpls.ifq`, - `net.key`, - `net.pflow`, - `net.pfsync`, - `net.pipex`, - `net.rt`, - `vm.swapencrypt`, - //vfsgenctl /* Special handling required */ - } - - // Node name "fixups" - ctlMap := map[string]string{ - "ipproto": "net.inet", - "net.inet.ipproto": "net.inet", - "net.inet6.ipv6proto": "net.inet6", - "net.inet6.ipv6": "net.inet6.ip6", - "net.inet.icmpv6": "net.inet6.icmp6", - "net.inet6.divert6": "net.inet6.divert", - "net.inet6.tcp6": "net.inet.tcp", - "net.inet6.udp6": "net.inet.udp", - "mpls": "net.mpls", - "swpenc": "vm.swapencrypt", - } - - // Node mappings - nodeMap = map[string]string{ - "net.inet.ip.ifq": "net.ifq", - "net.inet.pfsync": "net.pfsync", - "net.mpls.ifq": "net.ifq", - } - - mCtls := make(map[string]bool) - for _, ctl := range ctls { - mCtls[ctl] = true - } - - for _, header := range headers { - debug("Processing " + header) - file, err := os.Open(filepath.Join("/usr/include", header)) - if err != nil { - fmt.Fprintf(os.Stderr, "%v\n", err) - os.Exit(1) - } - s := bufio.NewScanner(file) - for s.Scan() { - var sub []string - if reMatch(ctlNames1RE, s.Text(), &sub) || - reMatch(ctlNames2RE, s.Text(), &sub) || - reMatch(ctlNames3RE, s.Text(), &sub) { - if sub[1] == `CTL_NAMES` { - // Top level. - node = &mib - } else { - // Node. - nodename := strings.ToLower(sub[2]) - ctlName := "" - if reMatch(netInetRE, header, &sub) { - ctlName = "net.inet." + nodename - } else if reMatch(netInet6RE, header, &sub) { - ctlName = "net.inet6." + nodename - } else if reMatch(netRE, header, &sub) { - ctlName = "net." + nodename - } else { - ctlName = nodename - ctlName = fsNetKernRE.ReplaceAllString(ctlName, `$1.`) - } - - if val, ok := ctlMap[ctlName]; ok { - ctlName = val - } - if _, ok := mCtls[ctlName]; !ok { - debug("Ignoring " + ctlName + "...") - continue - } - - // Walk down from the top of the MIB. - node = &mib - for _, part := range strings.Split(ctlName, ".") { - if _, ok := (*node)[part]; !ok { - debug("Missing node " + part) - (*node)[part] = nodeElement{n: 0, t: "", pE: &map[string]nodeElement{}} - } - node = (*node)[part].pE - } - } - - // Populate current node with entries. - i := -1 - for !strings.HasPrefix(s.Text(), "}") { - s.Scan() - if reMatch(bracesRE, s.Text(), &sub) { - i++ - } - if !reMatch(ctlTypeRE, s.Text(), &sub) { - continue - } - (*node)[sub[1]] = nodeElement{n: i, t: sub[2], pE: &map[string]nodeElement{}} - } - } - } - err = s.Err() - if err != nil { - fmt.Fprintf(os.Stderr, "%v\n", err) - os.Exit(1) - } - file.Close() - } - buildSysctl(&mib, "", []int{}) - - sort.Strings(sysCtl) - text := strings.Join(sysCtl, "") - - fmt.Printf(srcTemplate, cmdLine(), buildTags(), text) -} - -const srcTemplate = `// %s -// Code generated by the command above; DO NOT EDIT. - -// +build %s - -package unix - -type mibentry struct { - ctlname string - ctloid []_C_int -} - -var sysctlMib = []mibentry { -%s -} -` diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksysnum.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksysnum.go deleted file mode 100644 index 07f8960ff..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/mksysnum.go +++ /dev/null @@ -1,190 +0,0 @@ -// 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 ignore - -// Generate system call table for DragonFly, NetBSD, -// FreeBSD, OpenBSD or Darwin from master list -// (for example, /usr/src/sys/kern/syscalls.master or -// sys/syscall.h). -package main - -import ( - "bufio" - "fmt" - "io" - "io/ioutil" - "net/http" - "os" - "regexp" - "strings" -) - -var ( - goos, goarch string -) - -// cmdLine returns this programs's commandline arguments -func cmdLine() string { - return "go run mksysnum.go " + strings.Join(os.Args[1:], " ") -} - -// buildTags returns build tags -func buildTags() string { - return fmt.Sprintf("%s,%s", goarch, goos) -} - -func checkErr(err error) { - if err != nil { - fmt.Fprintf(os.Stderr, "%v\n", err) - os.Exit(1) - } -} - -// source string and substring slice for regexp -type re struct { - str string // source string - sub []string // matched sub-string -} - -// Match performs regular expression match -func (r *re) Match(exp string) bool { - r.sub = regexp.MustCompile(exp).FindStringSubmatch(r.str) - if r.sub != nil { - return true - } - return false -} - -// fetchFile fetches a text file from URL -func fetchFile(URL string) io.Reader { - resp, err := http.Get(URL) - checkErr(err) - defer resp.Body.Close() - body, err := ioutil.ReadAll(resp.Body) - checkErr(err) - return strings.NewReader(string(body)) -} - -// readFile reads a text file from path -func readFile(path string) io.Reader { - file, err := os.Open(os.Args[1]) - checkErr(err) - return file -} - -func format(name, num, proto string) string { - name = strings.ToUpper(name) - // There are multiple entries for enosys and nosys, so comment them out. - nm := re{str: name} - if nm.Match(`^SYS_E?NOSYS$`) { - name = fmt.Sprintf("// %s", name) - } - if name == `SYS_SYS_EXIT` { - name = `SYS_EXIT` - } - return fmt.Sprintf(" %s = %s; // %s\n", name, num, proto) -} - -func main() { - // Get the OS (using GOOS_TARGET if it exist) - goos = os.Getenv("GOOS_TARGET") - if goos == "" { - goos = os.Getenv("GOOS") - } - // Get the architecture (using GOARCH_TARGET if it exists) - goarch = os.Getenv("GOARCH_TARGET") - if goarch == "" { - goarch = os.Getenv("GOARCH") - } - // Check if GOOS and GOARCH environment variables are defined - if goarch == "" || goos == "" { - fmt.Fprintf(os.Stderr, "GOARCH or GOOS not defined in environment\n") - os.Exit(1) - } - - file := strings.TrimSpace(os.Args[1]) - var syscalls io.Reader - if strings.HasPrefix(file, "https://") || strings.HasPrefix(file, "http://") { - // Download syscalls.master file - syscalls = fetchFile(file) - } else { - syscalls = readFile(file) - } - - var text, line string - s := bufio.NewScanner(syscalls) - for s.Scan() { - t := re{str: line} - if t.Match(`^(.*)\\$`) { - // Handle continuation - line = t.sub[1] - line += strings.TrimLeft(s.Text(), " \t") - } else { - // New line - line = s.Text() - } - t = re{str: line} - if t.Match(`\\$`) { - continue - } - t = re{str: line} - - switch goos { - case "dragonfly": - if t.Match(`^([0-9]+)\s+STD\s+({ \S+\s+(\w+).*)$`) { - num, proto := t.sub[1], t.sub[2] - name := fmt.Sprintf("SYS_%s", t.sub[3]) - text += format(name, num, proto) - } - case "freebsd": - if t.Match(`^([0-9]+)\s+\S+\s+(?:NO)?STD\s+({ \S+\s+(\w+).*)$`) { - num, proto := t.sub[1], t.sub[2] - name := fmt.Sprintf("SYS_%s", t.sub[3]) - text += format(name, num, proto) - } - case "openbsd": - if t.Match(`^([0-9]+)\s+STD\s+(NOLOCK\s+)?({ \S+\s+\*?(\w+).*)$`) { - num, proto, name := t.sub[1], t.sub[3], t.sub[4] - text += format(name, num, proto) - } - case "netbsd": - if t.Match(`^([0-9]+)\s+((STD)|(NOERR))\s+(RUMP\s+)?({\s+\S+\s*\*?\s*\|(\S+)\|(\S*)\|(\w+).*\s+})(\s+(\S+))?$`) { - num, proto, compat := t.sub[1], t.sub[6], t.sub[8] - name := t.sub[7] + "_" + t.sub[9] - if t.sub[11] != "" { - name = t.sub[7] + "_" + t.sub[11] - } - name = strings.ToUpper(name) - if compat == "" || compat == "13" || compat == "30" || compat == "50" { - text += fmt.Sprintf(" %s = %s; // %s\n", name, num, proto) - } - } - case "darwin": - if t.Match(`^#define\s+SYS_(\w+)\s+([0-9]+)`) { - name, num := t.sub[1], t.sub[2] - name = strings.ToUpper(name) - text += fmt.Sprintf(" SYS_%s = %s;\n", name, num) - } - default: - fmt.Fprintf(os.Stderr, "unrecognized GOOS=%s\n", goos) - os.Exit(1) - - } - } - err := s.Err() - checkErr(err) - - fmt.Printf(template, cmdLine(), buildTags(), text) -} - -const template = `// %s -// Code generated by the command above; see README.md. DO NOT EDIT. - -// +build %s - -package unix - -const( -%s)` diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/pagesize_unix.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/pagesize_unix.go deleted file mode 100644 index bc2f3629a..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/pagesize_unix.go +++ /dev/null @@ -1,15 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/pledge_openbsd.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/pledge_openbsd.go deleted file mode 100644 index eb48294b2..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/pledge_openbsd.go +++ /dev/null @@ -1,163 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/race.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/race.go deleted file mode 100644 index 61712b51c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/race.go +++ /dev/null @@ -1,30 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/race0.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/race0.go deleted file mode 100644 index ad026678c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/race0.go +++ /dev/null @@ -1,25 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/sockcmsg_linux.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/sockcmsg_linux.go deleted file mode 100644 index 6079eb4ac..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/sockcmsg_linux.go +++ /dev/null @@ -1,36 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/sockcmsg_unix.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/sockcmsg_unix.go deleted file mode 100644 index 062bcabab..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/sockcmsg_unix.go +++ /dev/null @@ -1,120 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/str.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/str.go deleted file mode 100644 index 17fb69868..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/str.go +++ /dev/null @@ -1,26 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall.go deleted file mode 100644 index fd4ee8ebe..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall.go +++ /dev/null @@ -1,53 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_aix.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_aix.go deleted file mode 100644 index c1fb7bd16..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_aix.go +++ /dev/null @@ -1,557 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go deleted file mode 100644 index c28af1f86..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go +++ /dev/null @@ -1,34 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go deleted file mode 100644 index 881cacc6c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go +++ /dev/null @@ -1,34 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_bsd.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_bsd.go deleted file mode 100644 index 33c8b5f0d..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_bsd.go +++ /dev/null @@ -1,624 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin.go deleted file mode 100644 index 212009189..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin.go +++ /dev/null @@ -1,706 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin_386.go deleted file mode 100644 index 489726fa9..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin_386.go +++ /dev/null @@ -1,63 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go deleted file mode 100644 index 914b89bde..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +++ /dev/null @@ -1,63 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go deleted file mode 100644 index 4a284cf50..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go +++ /dev/null @@ -1,64 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go deleted file mode 100644 index 52dcd88f6..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go +++ /dev/null @@ -1,66 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go deleted file mode 100644 index 4b4ae460f..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go +++ /dev/null @@ -1,31 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_dragonfly.go deleted file mode 100644 index 962eee304..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_dragonfly.go +++ /dev/null @@ -1,539 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go deleted file mode 100644 index 9babb31ea..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go +++ /dev/null @@ -1,52 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_freebsd.go deleted file mode 100644 index f135812a3..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_freebsd.go +++ /dev/null @@ -1,824 +0,0 @@ -// 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, - Btim: old.Btim, - 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go deleted file mode 100644 index 21e03958c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go +++ /dev/null @@ -1,52 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go deleted file mode 100644 index 9c945a657..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go +++ /dev/null @@ -1,52 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go deleted file mode 100644 index 5cd6243f2..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go +++ /dev/null @@ -1,52 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go deleted file mode 100644 index a31805487..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go +++ /dev/null @@ -1,52 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux.go deleted file mode 100644 index d7a8f7317..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux.go +++ /dev/null @@ -1,1853 +0,0 @@ -// 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 IoctlGetUint32(fd int, req uint) (uint32, error) { - var value uint32 - 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_386.go deleted file mode 100644 index e2f8cf6e5..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_386.go +++ /dev/null @@ -1,386 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go deleted file mode 100644 index 87a30744d..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go +++ /dev/null @@ -1,190 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go deleted file mode 100644 index 21a4946ba..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go +++ /dev/null @@ -1,13 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_arm.go deleted file mode 100644 index f62679443..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_arm.go +++ /dev/null @@ -1,287 +0,0 @@ -// 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) -} - -//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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go deleted file mode 100644 index cb20b15d5..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go +++ /dev/null @@ -1,223 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_gc.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_gc.go deleted file mode 100644 index c26e6ec23..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_gc.go +++ /dev/null @@ -1,14 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go deleted file mode 100644 index 070bd3899..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go +++ /dev/null @@ -1,16 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go deleted file mode 100644 index 308eb7aec..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go +++ /dev/null @@ -1,30 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go deleted file mode 100644 index aa7fc9e19..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go +++ /dev/null @@ -1,20 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go deleted file mode 100644 index b3b21ec1e..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +++ /dev/null @@ -1,222 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go deleted file mode 100644 index 5144d4e13..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +++ /dev/null @@ -1,234 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go deleted file mode 100644 index 0a100b66a..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go +++ /dev/null @@ -1,152 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go deleted file mode 100644 index 6230f6405..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +++ /dev/null @@ -1,226 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go deleted file mode 100644 index f81dbdc9c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go +++ /dev/null @@ -1,338 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go deleted file mode 100644 index b69565616..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go +++ /dev/null @@ -1,147 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_netbsd.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_netbsd.go deleted file mode 100644 index 5240e16e4..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_netbsd.go +++ /dev/null @@ -1,622 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go deleted file mode 100644 index 24f74e58c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go +++ /dev/null @@ -1,33 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go deleted file mode 100644 index 6878bf7ff..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go +++ /dev/null @@ -1,33 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go deleted file mode 100644 index dbbfcf71d..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go +++ /dev/null @@ -1,33 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go deleted file mode 100644 index f3434465a..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go +++ /dev/null @@ -1,33 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_openbsd.go deleted file mode 100644 index c8648ec02..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_openbsd.go +++ /dev/null @@ -1,416 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go deleted file mode 100644 index d62da60d1..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go +++ /dev/null @@ -1,37 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go deleted file mode 100644 index 9a35334cb..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go +++ /dev/null @@ -1,37 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go deleted file mode 100644 index 5d812aaea..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go +++ /dev/null @@ -1,37 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go deleted file mode 100644 index 0fb39cf5e..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go +++ /dev/null @@ -1,37 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_solaris.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_solaris.go deleted file mode 100644 index e47801275..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_solaris.go +++ /dev/null @@ -1,737 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go deleted file mode 100644 index 91c32ddf0..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go +++ /dev/null @@ -1,23 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_unix.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_unix.go deleted file mode 100644 index 3de37566c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_unix.go +++ /dev/null @@ -1,431 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_unix_gc.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_unix_gc.go deleted file mode 100644 index 1c70d1b69..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_unix_gc.go +++ /dev/null @@ -1,15 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go deleted file mode 100644 index 86dc765ab..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go +++ /dev/null @@ -1,24 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/timestruct.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/timestruct.go deleted file mode 100644 index 4a672f569..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/timestruct.go +++ /dev/null @@ -1,82 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_aix.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_aix.go deleted file mode 100644 index 25e834940..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_aix.go +++ /dev/null @@ -1,236 +0,0 @@ -// 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 ignore -// +build aix - -/* -Input to cgo -godefs. See also mkerrors.sh and mkall.sh -*/ - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package unix - -/* -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include - - -#include -#include - -enum { - sizeofPtr = sizeof(void*), -}; - -union sockaddr_all { - struct sockaddr s1; // this one gets used for fields - struct sockaddr_in s2; // these pad it out - struct sockaddr_in6 s3; - struct sockaddr_un s4; - struct sockaddr_dl s5; -}; - -struct sockaddr_any { - struct sockaddr addr; - char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; -}; - -*/ -import "C" - -// Machine characteristics - -const ( - SizeofPtr = C.sizeofPtr - SizeofShort = C.sizeof_short - SizeofInt = C.sizeof_int - SizeofLong = C.sizeof_long - SizeofLongLong = C.sizeof_longlong - PathMax = C.PATH_MAX -) - -// Basic types - -type ( - _C_short C.short - _C_int C.int - _C_long C.long - _C_long_long C.longlong -) - -type off64 C.off64_t -type off C.off_t -type Mode_t C.mode_t - -// Time - -type Timespec C.struct_timespec - -type StTimespec C.struct_st_timespec - -type Timeval C.struct_timeval - -type Timeval32 C.struct_timeval32 - -type Timex C.struct_timex - -type Time_t C.time_t - -type Tms C.struct_tms - -type Utimbuf C.struct_utimbuf - -type Timezone C.struct_timezone - -// Processes - -type Rusage C.struct_rusage - -type Rlimit C.struct_rlimit64 - -type Pid_t C.pid_t - -type _Gid_t C.gid_t - -type dev_t C.dev_t - -// Files - -type Stat_t C.struct_stat - -type StatxTimestamp C.struct_statx_timestamp - -type Statx_t C.struct_statx - -type Dirent C.struct_dirent - -// Sockets - -type RawSockaddrInet4 C.struct_sockaddr_in - -type RawSockaddrInet6 C.struct_sockaddr_in6 - -type RawSockaddrUnix C.struct_sockaddr_un - -type RawSockaddr C.struct_sockaddr - -type RawSockaddrAny C.struct_sockaddr_any - -type _Socklen C.socklen_t - -type Cmsghdr C.struct_cmsghdr - -type ICMPv6Filter C.struct_icmp6_filter - -type Iovec C.struct_iovec - -type IPMreq C.struct_ip_mreq - -type IPv6Mreq C.struct_ipv6_mreq - -type IPv6MTUInfo C.struct_ip6_mtuinfo - -type Linger C.struct_linger - -type Msghdr C.struct_msghdr - -const ( - SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in - SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - SizeofSockaddrAny = C.sizeof_struct_sockaddr_any - SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un - SizeofLinger = C.sizeof_struct_linger - SizeofIPMreq = C.sizeof_struct_ip_mreq - SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo - SizeofMsghdr = C.sizeof_struct_msghdr - SizeofCmsghdr = C.sizeof_struct_cmsghdr - SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter -) - -// Routing and interface messages - -const ( - SizeofIfMsghdr = C.sizeof_struct_if_msghdr -) - -type IfMsgHdr C.struct_if_msghdr - -// Misc - -type FdSet C.fd_set - -type Utsname C.struct_utsname - -type Ustat_t C.struct_ustat - -type Sigset_t C.sigset_t - -const ( - AT_FDCWD = C.AT_FDCWD - AT_REMOVEDIR = C.AT_REMOVEDIR - AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW -) - -// Terminal handling - -type Termios C.struct_termios - -type Termio C.struct_termio - -type Winsize C.struct_winsize - -//poll - -type PollFd struct { - Fd int32 - Events uint16 - Revents uint16 -} - -const ( - POLLERR = C.POLLERR - POLLHUP = C.POLLHUP - POLLIN = C.POLLIN - POLLNVAL = C.POLLNVAL - POLLOUT = C.POLLOUT - POLLPRI = C.POLLPRI - POLLRDBAND = C.POLLRDBAND - POLLRDNORM = C.POLLRDNORM - POLLWRBAND = C.POLLWRBAND - POLLWRNORM = C.POLLWRNORM -) - -//flock_t - -type Flock_t C.struct_flock64 - -// Statfs - -type Fsid_t C.struct_fsid_t -type Fsid64_t C.struct_fsid64_t - -type Statfs_t C.struct_statfs - -const RNDGETENTCNT = 0x80045200 diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_darwin.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_darwin.go deleted file mode 100644 index 155c2e692..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_darwin.go +++ /dev/null @@ -1,283 +0,0 @@ -// 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 ignore - -/* -Input to cgo -godefs. See README.md -*/ - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package unix - -/* -#define __DARWIN_UNIX03 0 -#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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -enum { - sizeofPtr = sizeof(void*), -}; - -union sockaddr_all { - struct sockaddr s1; // this one gets used for fields - struct sockaddr_in s2; // these pad it out - struct sockaddr_in6 s3; - struct sockaddr_un s4; - struct sockaddr_dl s5; -}; - -struct sockaddr_any { - struct sockaddr addr; - char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; -}; - -*/ -import "C" - -// Machine characteristics - -const ( - SizeofPtr = C.sizeofPtr - SizeofShort = C.sizeof_short - SizeofInt = C.sizeof_int - SizeofLong = C.sizeof_long - SizeofLongLong = C.sizeof_longlong -) - -// Basic types - -type ( - _C_short C.short - _C_int C.int - _C_long C.long - _C_long_long C.longlong -) - -// Time - -type Timespec C.struct_timespec - -type Timeval C.struct_timeval - -type Timeval32 C.struct_timeval32 - -// Processes - -type Rusage C.struct_rusage - -type Rlimit C.struct_rlimit - -type _Gid_t C.gid_t - -// Files - -type Stat_t C.struct_stat64 - -type Statfs_t C.struct_statfs64 - -type Flock_t C.struct_flock - -type Fstore_t C.struct_fstore - -type Radvisory_t C.struct_radvisory - -type Fbootstraptransfer_t C.struct_fbootstraptransfer - -type Log2phys_t C.struct_log2phys - -type Fsid C.struct_fsid - -type Dirent C.struct_dirent - -// Sockets - -type RawSockaddrInet4 C.struct_sockaddr_in - -type RawSockaddrInet6 C.struct_sockaddr_in6 - -type RawSockaddrUnix C.struct_sockaddr_un - -type RawSockaddrDatalink C.struct_sockaddr_dl - -type RawSockaddr C.struct_sockaddr - -type RawSockaddrAny C.struct_sockaddr_any - -type _Socklen C.socklen_t - -type Linger C.struct_linger - -type Iovec C.struct_iovec - -type IPMreq C.struct_ip_mreq - -type IPv6Mreq C.struct_ipv6_mreq - -type Msghdr C.struct_msghdr - -type Cmsghdr C.struct_cmsghdr - -type Inet4Pktinfo C.struct_in_pktinfo - -type Inet6Pktinfo C.struct_in6_pktinfo - -type IPv6MTUInfo C.struct_ip6_mtuinfo - -type ICMPv6Filter C.struct_icmp6_filter - -const ( - SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in - SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - SizeofSockaddrAny = C.sizeof_struct_sockaddr_any - SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un - SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl - SizeofLinger = C.sizeof_struct_linger - SizeofIPMreq = C.sizeof_struct_ip_mreq - SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - SizeofMsghdr = C.sizeof_struct_msghdr - SizeofCmsghdr = C.sizeof_struct_cmsghdr - SizeofInet4Pktinfo = C.sizeof_struct_in_pktinfo - SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo - SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter -) - -// Ptrace requests - -const ( - PTRACE_TRACEME = C.PT_TRACE_ME - PTRACE_CONT = C.PT_CONTINUE - PTRACE_KILL = C.PT_KILL -) - -// Events (kqueue, kevent) - -type Kevent_t C.struct_kevent - -// Select - -type FdSet C.fd_set - -// Routing and interface messages - -const ( - SizeofIfMsghdr = C.sizeof_struct_if_msghdr - SizeofIfData = C.sizeof_struct_if_data - SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr - SizeofIfmaMsghdr = C.sizeof_struct_ifma_msghdr - SizeofIfmaMsghdr2 = C.sizeof_struct_ifma_msghdr2 - SizeofRtMsghdr = C.sizeof_struct_rt_msghdr - SizeofRtMetrics = C.sizeof_struct_rt_metrics -) - -type IfMsghdr C.struct_if_msghdr - -type IfData C.struct_if_data - -type IfaMsghdr C.struct_ifa_msghdr - -type IfmaMsghdr C.struct_ifma_msghdr - -type IfmaMsghdr2 C.struct_ifma_msghdr2 - -type RtMsghdr C.struct_rt_msghdr - -type RtMetrics C.struct_rt_metrics - -// Berkeley packet filter - -const ( - SizeofBpfVersion = C.sizeof_struct_bpf_version - SizeofBpfStat = C.sizeof_struct_bpf_stat - SizeofBpfProgram = C.sizeof_struct_bpf_program - SizeofBpfInsn = C.sizeof_struct_bpf_insn - SizeofBpfHdr = C.sizeof_struct_bpf_hdr -) - -type BpfVersion C.struct_bpf_version - -type BpfStat C.struct_bpf_stat - -type BpfProgram C.struct_bpf_program - -type BpfInsn C.struct_bpf_insn - -type BpfHdr C.struct_bpf_hdr - -// Terminal handling - -type Termios C.struct_termios - -type Winsize C.struct_winsize - -// fchmodat-like syscalls. - -const ( - AT_FDCWD = C.AT_FDCWD - AT_REMOVEDIR = C.AT_REMOVEDIR - AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW - AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW -) - -// poll - -type PollFd C.struct_pollfd - -const ( - POLLERR = C.POLLERR - POLLHUP = C.POLLHUP - POLLIN = C.POLLIN - POLLNVAL = C.POLLNVAL - POLLOUT = C.POLLOUT - POLLPRI = C.POLLPRI - POLLRDBAND = C.POLLRDBAND - POLLRDNORM = C.POLLRDNORM - POLLWRBAND = C.POLLWRBAND - POLLWRNORM = C.POLLWRNORM -) - -// uname - -type Utsname C.struct_utsname - -// Clockinfo - -const SizeofClockinfo = C.sizeof_struct_clockinfo - -type Clockinfo C.struct_clockinfo diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_dragonfly.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_dragonfly.go deleted file mode 100644 index 3365dd79d..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_dragonfly.go +++ /dev/null @@ -1,263 +0,0 @@ -// 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 ignore - -/* -Input to cgo -godefs. See README.md -*/ - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package unix - -/* -#define KERNEL -#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 - -enum { - sizeofPtr = sizeof(void*), -}; - -union sockaddr_all { - struct sockaddr s1; // this one gets used for fields - struct sockaddr_in s2; // these pad it out - struct sockaddr_in6 s3; - struct sockaddr_un s4; - struct sockaddr_dl s5; -}; - -struct sockaddr_any { - struct sockaddr addr; - char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; -}; - -*/ -import "C" - -// Machine characteristics - -const ( - SizeofPtr = C.sizeofPtr - SizeofShort = C.sizeof_short - SizeofInt = C.sizeof_int - SizeofLong = C.sizeof_long - SizeofLongLong = C.sizeof_longlong -) - -// Basic types - -type ( - _C_short C.short - _C_int C.int - _C_long C.long - _C_long_long C.longlong -) - -// Time - -type Timespec C.struct_timespec - -type Timeval C.struct_timeval - -// Processes - -type Rusage C.struct_rusage - -type Rlimit C.struct_rlimit - -type _Gid_t C.gid_t - -// Files - -type Stat_t C.struct_stat - -type Statfs_t C.struct_statfs - -type Flock_t C.struct_flock - -type Dirent C.struct_dirent - -type Fsid C.struct_fsid - -// File system limits - -const ( - PathMax = C.PATH_MAX -) - -// Sockets - -type RawSockaddrInet4 C.struct_sockaddr_in - -type RawSockaddrInet6 C.struct_sockaddr_in6 - -type RawSockaddrUnix C.struct_sockaddr_un - -type RawSockaddrDatalink C.struct_sockaddr_dl - -type RawSockaddr C.struct_sockaddr - -type RawSockaddrAny C.struct_sockaddr_any - -type _Socklen C.socklen_t - -type Linger C.struct_linger - -type Iovec C.struct_iovec - -type IPMreq C.struct_ip_mreq - -type IPv6Mreq C.struct_ipv6_mreq - -type Msghdr C.struct_msghdr - -type Cmsghdr C.struct_cmsghdr - -type Inet6Pktinfo C.struct_in6_pktinfo - -type IPv6MTUInfo C.struct_ip6_mtuinfo - -type ICMPv6Filter C.struct_icmp6_filter - -const ( - SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in - SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - SizeofSockaddrAny = C.sizeof_struct_sockaddr_any - SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un - SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl - SizeofLinger = C.sizeof_struct_linger - SizeofIPMreq = C.sizeof_struct_ip_mreq - SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - SizeofMsghdr = C.sizeof_struct_msghdr - SizeofCmsghdr = C.sizeof_struct_cmsghdr - SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo - SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter -) - -// Ptrace requests - -const ( - PTRACE_TRACEME = C.PT_TRACE_ME - PTRACE_CONT = C.PT_CONTINUE - PTRACE_KILL = C.PT_KILL -) - -// Events (kqueue, kevent) - -type Kevent_t C.struct_kevent - -// Select - -type FdSet C.fd_set - -// Routing and interface messages - -const ( - SizeofIfMsghdr = C.sizeof_struct_if_msghdr - SizeofIfData = C.sizeof_struct_if_data - SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr - SizeofIfmaMsghdr = C.sizeof_struct_ifma_msghdr - SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr - SizeofRtMsghdr = C.sizeof_struct_rt_msghdr - SizeofRtMetrics = C.sizeof_struct_rt_metrics -) - -type IfMsghdr C.struct_if_msghdr - -type IfData C.struct_if_data - -type IfaMsghdr C.struct_ifa_msghdr - -type IfmaMsghdr C.struct_ifma_msghdr - -type IfAnnounceMsghdr C.struct_if_announcemsghdr - -type RtMsghdr C.struct_rt_msghdr - -type RtMetrics C.struct_rt_metrics - -// Berkeley packet filter - -const ( - SizeofBpfVersion = C.sizeof_struct_bpf_version - SizeofBpfStat = C.sizeof_struct_bpf_stat - SizeofBpfProgram = C.sizeof_struct_bpf_program - SizeofBpfInsn = C.sizeof_struct_bpf_insn - SizeofBpfHdr = C.sizeof_struct_bpf_hdr -) - -type BpfVersion C.struct_bpf_version - -type BpfStat C.struct_bpf_stat - -type BpfProgram C.struct_bpf_program - -type BpfInsn C.struct_bpf_insn - -type BpfHdr C.struct_bpf_hdr - -// Terminal handling - -type Termios C.struct_termios - -type Winsize C.struct_winsize - -// fchmodat-like syscalls. - -const ( - AT_FDCWD = C.AT_FDCWD - AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW -) - -// poll - -type PollFd C.struct_pollfd - -const ( - POLLERR = C.POLLERR - POLLHUP = C.POLLHUP - POLLIN = C.POLLIN - POLLNVAL = C.POLLNVAL - POLLOUT = C.POLLOUT - POLLPRI = C.POLLPRI - POLLRDBAND = C.POLLRDBAND - POLLRDNORM = C.POLLRDNORM - POLLWRBAND = C.POLLWRBAND - POLLWRNORM = C.POLLWRNORM -) - -// Uname - -type Utsname C.struct_utsname diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_freebsd.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_freebsd.go deleted file mode 100644 index 747079895..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_freebsd.go +++ /dev/null @@ -1,356 +0,0 @@ -// 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 ignore - -/* -Input to cgo -godefs. See README.md -*/ - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package unix - -/* -#define _WANT_FREEBSD11_STAT 1 -#define _WANT_FREEBSD11_STATFS 1 -#define _WANT_FREEBSD11_DIRENT 1 -#define _WANT_FREEBSD11_KEVENT 1 - -#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 - -enum { - sizeofPtr = sizeof(void*), -}; - -union sockaddr_all { - struct sockaddr s1; // this one gets used for fields - struct sockaddr_in s2; // these pad it out - struct sockaddr_in6 s3; - struct sockaddr_un s4; - struct sockaddr_dl s5; -}; - -struct sockaddr_any { - struct sockaddr addr; - char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; -}; - -// This structure is a duplicate of if_data on FreeBSD 8-STABLE. -// See /usr/include/net/if.h. -struct if_data8 { - u_char ifi_type; - u_char ifi_physical; - u_char ifi_addrlen; - u_char ifi_hdrlen; - u_char ifi_link_state; - u_char ifi_spare_char1; - u_char ifi_spare_char2; - u_char ifi_datalen; - u_long ifi_mtu; - u_long ifi_metric; - u_long ifi_baudrate; - u_long ifi_ipackets; - u_long ifi_ierrors; - u_long ifi_opackets; - u_long ifi_oerrors; - u_long ifi_collisions; - u_long ifi_ibytes; - u_long ifi_obytes; - u_long ifi_imcasts; - u_long ifi_omcasts; - u_long ifi_iqdrops; - u_long ifi_noproto; - u_long ifi_hwassist; -// FIXME: these are now unions, so maybe need to change definitions? -#undef ifi_epoch - time_t ifi_epoch; -#undef ifi_lastchange - struct timeval ifi_lastchange; -}; - -// This structure is a duplicate of if_msghdr on FreeBSD 8-STABLE. -// See /usr/include/net/if.h. -struct if_msghdr8 { - u_short ifm_msglen; - u_char ifm_version; - u_char ifm_type; - int ifm_addrs; - int ifm_flags; - u_short ifm_index; - struct if_data8 ifm_data; -}; -*/ -import "C" - -// Machine characteristics - -const ( - SizeofPtr = C.sizeofPtr - SizeofShort = C.sizeof_short - SizeofInt = C.sizeof_int - SizeofLong = C.sizeof_long - SizeofLongLong = C.sizeof_longlong -) - -// Basic types - -type ( - _C_short C.short - _C_int C.int - _C_long C.long - _C_long_long C.longlong -) - -// Time - -type Timespec C.struct_timespec - -type Timeval C.struct_timeval - -// Processes - -type Rusage C.struct_rusage - -type Rlimit C.struct_rlimit - -type _Gid_t C.gid_t - -// Files - -const ( - _statfsVersion = C.STATFS_VERSION - _dirblksiz = C.DIRBLKSIZ -) - -type Stat_t C.struct_stat - -type stat_freebsd11_t C.struct_freebsd11_stat - -type Statfs_t C.struct_statfs - -type statfs_freebsd11_t C.struct_freebsd11_statfs - -type Flock_t C.struct_flock - -type Dirent C.struct_dirent - -type dirent_freebsd11 C.struct_freebsd11_dirent - -type Fsid C.struct_fsid - -// File system limits - -const ( - PathMax = C.PATH_MAX -) - -// Advice to Fadvise - -const ( - FADV_NORMAL = C.POSIX_FADV_NORMAL - FADV_RANDOM = C.POSIX_FADV_RANDOM - FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL - FADV_WILLNEED = C.POSIX_FADV_WILLNEED - FADV_DONTNEED = C.POSIX_FADV_DONTNEED - FADV_NOREUSE = C.POSIX_FADV_NOREUSE -) - -// Sockets - -type RawSockaddrInet4 C.struct_sockaddr_in - -type RawSockaddrInet6 C.struct_sockaddr_in6 - -type RawSockaddrUnix C.struct_sockaddr_un - -type RawSockaddrDatalink C.struct_sockaddr_dl - -type RawSockaddr C.struct_sockaddr - -type RawSockaddrAny C.struct_sockaddr_any - -type _Socklen C.socklen_t - -type Linger C.struct_linger - -type Iovec C.struct_iovec - -type IPMreq C.struct_ip_mreq - -type IPMreqn C.struct_ip_mreqn - -type IPv6Mreq C.struct_ipv6_mreq - -type Msghdr C.struct_msghdr - -type Cmsghdr C.struct_cmsghdr - -type Inet6Pktinfo C.struct_in6_pktinfo - -type IPv6MTUInfo C.struct_ip6_mtuinfo - -type ICMPv6Filter C.struct_icmp6_filter - -const ( - SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in - SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - SizeofSockaddrAny = C.sizeof_struct_sockaddr_any - SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un - SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl - SizeofLinger = C.sizeof_struct_linger - SizeofIPMreq = C.sizeof_struct_ip_mreq - SizeofIPMreqn = C.sizeof_struct_ip_mreqn - SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - SizeofMsghdr = C.sizeof_struct_msghdr - SizeofCmsghdr = C.sizeof_struct_cmsghdr - SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo - SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter -) - -// Ptrace requests - -const ( - PTRACE_TRACEME = C.PT_TRACE_ME - PTRACE_CONT = C.PT_CONTINUE - PTRACE_KILL = C.PT_KILL -) - -// Events (kqueue, kevent) - -type Kevent_t C.struct_kevent_freebsd11 - -// Select - -type FdSet C.fd_set - -// Routing and interface messages - -const ( - sizeofIfMsghdr = C.sizeof_struct_if_msghdr - SizeofIfMsghdr = C.sizeof_struct_if_msghdr8 - sizeofIfData = C.sizeof_struct_if_data - SizeofIfData = C.sizeof_struct_if_data8 - SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr - SizeofIfmaMsghdr = C.sizeof_struct_ifma_msghdr - SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr - SizeofRtMsghdr = C.sizeof_struct_rt_msghdr - SizeofRtMetrics = C.sizeof_struct_rt_metrics -) - -type ifMsghdr C.struct_if_msghdr - -type IfMsghdr C.struct_if_msghdr8 - -type ifData C.struct_if_data - -type IfData C.struct_if_data8 - -type IfaMsghdr C.struct_ifa_msghdr - -type IfmaMsghdr C.struct_ifma_msghdr - -type IfAnnounceMsghdr C.struct_if_announcemsghdr - -type RtMsghdr C.struct_rt_msghdr - -type RtMetrics C.struct_rt_metrics - -// Berkeley packet filter - -const ( - SizeofBpfVersion = C.sizeof_struct_bpf_version - SizeofBpfStat = C.sizeof_struct_bpf_stat - SizeofBpfZbuf = C.sizeof_struct_bpf_zbuf - SizeofBpfProgram = C.sizeof_struct_bpf_program - SizeofBpfInsn = C.sizeof_struct_bpf_insn - SizeofBpfHdr = C.sizeof_struct_bpf_hdr - SizeofBpfZbufHeader = C.sizeof_struct_bpf_zbuf_header -) - -type BpfVersion C.struct_bpf_version - -type BpfStat C.struct_bpf_stat - -type BpfZbuf C.struct_bpf_zbuf - -type BpfProgram C.struct_bpf_program - -type BpfInsn C.struct_bpf_insn - -type BpfHdr C.struct_bpf_hdr - -type BpfZbufHeader C.struct_bpf_zbuf_header - -// Terminal handling - -type Termios C.struct_termios - -type Winsize C.struct_winsize - -// fchmodat-like syscalls. - -const ( - AT_FDCWD = C.AT_FDCWD - AT_REMOVEDIR = C.AT_REMOVEDIR - AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW - AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW -) - -// poll - -type PollFd C.struct_pollfd - -const ( - POLLERR = C.POLLERR - POLLHUP = C.POLLHUP - POLLIN = C.POLLIN - POLLINIGNEOF = C.POLLINIGNEOF - POLLNVAL = C.POLLNVAL - POLLOUT = C.POLLOUT - POLLPRI = C.POLLPRI - POLLRDBAND = C.POLLRDBAND - POLLRDNORM = C.POLLRDNORM - POLLWRBAND = C.POLLWRBAND - POLLWRNORM = C.POLLWRNORM -) - -// Capabilities - -type CapRights C.struct_cap_rights - -// Uname - -type Utsname C.struct_utsname diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_netbsd.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_netbsd.go deleted file mode 100644 index 2dd4f9542..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_netbsd.go +++ /dev/null @@ -1,289 +0,0 @@ -// 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 ignore - -/* -Input to cgo -godefs. See README.md -*/ - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package unix - -/* -#define KERNEL -#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 - -enum { - sizeofPtr = sizeof(void*), -}; - -union sockaddr_all { - struct sockaddr s1; // this one gets used for fields - struct sockaddr_in s2; // these pad it out - struct sockaddr_in6 s3; - struct sockaddr_un s4; - struct sockaddr_dl s5; -}; - -struct sockaddr_any { - struct sockaddr addr; - char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; -}; - -*/ -import "C" - -// Machine characteristics - -const ( - SizeofPtr = C.sizeofPtr - SizeofShort = C.sizeof_short - SizeofInt = C.sizeof_int - SizeofLong = C.sizeof_long - SizeofLongLong = C.sizeof_longlong -) - -// Basic types - -type ( - _C_short C.short - _C_int C.int - _C_long C.long - _C_long_long C.longlong -) - -// Time - -type Timespec C.struct_timespec - -type Timeval C.struct_timeval - -// Processes - -type Rusage C.struct_rusage - -type Rlimit C.struct_rlimit - -type _Gid_t C.gid_t - -// Files - -type Stat_t C.struct_stat - -type Statfs_t C.struct_statfs - -type Flock_t C.struct_flock - -type Dirent C.struct_dirent - -type Fsid C.fsid_t - -// File system limits - -const ( - PathMax = C.PATH_MAX -) - -// Advice to Fadvise - -const ( - FADV_NORMAL = C.POSIX_FADV_NORMAL - FADV_RANDOM = C.POSIX_FADV_RANDOM - FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL - FADV_WILLNEED = C.POSIX_FADV_WILLNEED - FADV_DONTNEED = C.POSIX_FADV_DONTNEED - FADV_NOREUSE = C.POSIX_FADV_NOREUSE -) - -// Sockets - -type RawSockaddrInet4 C.struct_sockaddr_in - -type RawSockaddrInet6 C.struct_sockaddr_in6 - -type RawSockaddrUnix C.struct_sockaddr_un - -type RawSockaddrDatalink C.struct_sockaddr_dl - -type RawSockaddr C.struct_sockaddr - -type RawSockaddrAny C.struct_sockaddr_any - -type _Socklen C.socklen_t - -type Linger C.struct_linger - -type Iovec C.struct_iovec - -type IPMreq C.struct_ip_mreq - -type IPv6Mreq C.struct_ipv6_mreq - -type Msghdr C.struct_msghdr - -type Cmsghdr C.struct_cmsghdr - -type Inet6Pktinfo C.struct_in6_pktinfo - -type IPv6MTUInfo C.struct_ip6_mtuinfo - -type ICMPv6Filter C.struct_icmp6_filter - -const ( - SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in - SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - SizeofSockaddrAny = C.sizeof_struct_sockaddr_any - SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un - SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl - SizeofLinger = C.sizeof_struct_linger - SizeofIPMreq = C.sizeof_struct_ip_mreq - SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - SizeofMsghdr = C.sizeof_struct_msghdr - SizeofCmsghdr = C.sizeof_struct_cmsghdr - SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo - SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter -) - -// Ptrace requests - -const ( - PTRACE_TRACEME = C.PT_TRACE_ME - PTRACE_CONT = C.PT_CONTINUE - PTRACE_KILL = C.PT_KILL -) - -// Events (kqueue, kevent) - -type Kevent_t C.struct_kevent - -// Select - -type FdSet C.fd_set - -// Routing and interface messages - -const ( - SizeofIfMsghdr = C.sizeof_struct_if_msghdr - SizeofIfData = C.sizeof_struct_if_data - SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr - SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr - SizeofRtMsghdr = C.sizeof_struct_rt_msghdr - SizeofRtMetrics = C.sizeof_struct_rt_metrics -) - -type IfMsghdr C.struct_if_msghdr - -type IfData C.struct_if_data - -type IfaMsghdr C.struct_ifa_msghdr - -type IfAnnounceMsghdr C.struct_if_announcemsghdr - -type RtMsghdr C.struct_rt_msghdr - -type RtMetrics C.struct_rt_metrics - -type Mclpool C.struct_mclpool - -// Berkeley packet filter - -const ( - SizeofBpfVersion = C.sizeof_struct_bpf_version - SizeofBpfStat = C.sizeof_struct_bpf_stat - SizeofBpfProgram = C.sizeof_struct_bpf_program - SizeofBpfInsn = C.sizeof_struct_bpf_insn - SizeofBpfHdr = C.sizeof_struct_bpf_hdr -) - -type BpfVersion C.struct_bpf_version - -type BpfStat C.struct_bpf_stat - -type BpfProgram C.struct_bpf_program - -type BpfInsn C.struct_bpf_insn - -type BpfHdr C.struct_bpf_hdr - -type BpfTimeval C.struct_bpf_timeval - -// Terminal handling - -type Termios C.struct_termios - -type Winsize C.struct_winsize - -type Ptmget C.struct_ptmget - -// fchmodat-like syscalls. - -const ( - AT_FDCWD = C.AT_FDCWD - AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW -) - -// poll - -type PollFd C.struct_pollfd - -const ( - POLLERR = C.POLLERR - POLLHUP = C.POLLHUP - POLLIN = C.POLLIN - POLLNVAL = C.POLLNVAL - POLLOUT = C.POLLOUT - POLLPRI = C.POLLPRI - POLLRDBAND = C.POLLRDBAND - POLLRDNORM = C.POLLRDNORM - POLLWRBAND = C.POLLWRBAND - POLLWRNORM = C.POLLWRNORM -) - -// Sysctl - -type Sysctlnode C.struct_sysctlnode - -// Uname - -type Utsname C.struct_utsname - -// Clockinfo - -const SizeofClockinfo = C.sizeof_struct_clockinfo - -type Clockinfo C.struct_clockinfo diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_openbsd.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_openbsd.go deleted file mode 100644 index 8aafbe446..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_openbsd.go +++ /dev/null @@ -1,282 +0,0 @@ -// 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 ignore - -/* -Input to cgo -godefs. See README.md -*/ - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package unix - -/* -#define KERNEL -#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 - -enum { - sizeofPtr = sizeof(void*), -}; - -union sockaddr_all { - struct sockaddr s1; // this one gets used for fields - struct sockaddr_in s2; // these pad it out - struct sockaddr_in6 s3; - struct sockaddr_un s4; - struct sockaddr_dl s5; -}; - -struct sockaddr_any { - struct sockaddr addr; - char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; -}; - -*/ -import "C" - -// Machine characteristics - -const ( - SizeofPtr = C.sizeofPtr - SizeofShort = C.sizeof_short - SizeofInt = C.sizeof_int - SizeofLong = C.sizeof_long - SizeofLongLong = C.sizeof_longlong -) - -// Basic types - -type ( - _C_short C.short - _C_int C.int - _C_long C.long - _C_long_long C.longlong -) - -// Time - -type Timespec C.struct_timespec - -type Timeval C.struct_timeval - -// Processes - -type Rusage C.struct_rusage - -type Rlimit C.struct_rlimit - -type _Gid_t C.gid_t - -// Files - -type Stat_t C.struct_stat - -type Statfs_t C.struct_statfs - -type Flock_t C.struct_flock - -type Dirent C.struct_dirent - -type Fsid C.fsid_t - -// File system limits - -const ( - PathMax = C.PATH_MAX -) - -// Sockets - -type RawSockaddrInet4 C.struct_sockaddr_in - -type RawSockaddrInet6 C.struct_sockaddr_in6 - -type RawSockaddrUnix C.struct_sockaddr_un - -type RawSockaddrDatalink C.struct_sockaddr_dl - -type RawSockaddr C.struct_sockaddr - -type RawSockaddrAny C.struct_sockaddr_any - -type _Socklen C.socklen_t - -type Linger C.struct_linger - -type Iovec C.struct_iovec - -type IPMreq C.struct_ip_mreq - -type IPv6Mreq C.struct_ipv6_mreq - -type Msghdr C.struct_msghdr - -type Cmsghdr C.struct_cmsghdr - -type Inet6Pktinfo C.struct_in6_pktinfo - -type IPv6MTUInfo C.struct_ip6_mtuinfo - -type ICMPv6Filter C.struct_icmp6_filter - -const ( - SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in - SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - SizeofSockaddrAny = C.sizeof_struct_sockaddr_any - SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un - SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl - SizeofLinger = C.sizeof_struct_linger - SizeofIPMreq = C.sizeof_struct_ip_mreq - SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - SizeofMsghdr = C.sizeof_struct_msghdr - SizeofCmsghdr = C.sizeof_struct_cmsghdr - SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo - SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter -) - -// Ptrace requests - -const ( - PTRACE_TRACEME = C.PT_TRACE_ME - PTRACE_CONT = C.PT_CONTINUE - PTRACE_KILL = C.PT_KILL -) - -// Events (kqueue, kevent) - -type Kevent_t C.struct_kevent - -// Select - -type FdSet C.fd_set - -// Routing and interface messages - -const ( - SizeofIfMsghdr = C.sizeof_struct_if_msghdr - SizeofIfData = C.sizeof_struct_if_data - SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr - SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr - SizeofRtMsghdr = C.sizeof_struct_rt_msghdr - SizeofRtMetrics = C.sizeof_struct_rt_metrics -) - -type IfMsghdr C.struct_if_msghdr - -type IfData C.struct_if_data - -type IfaMsghdr C.struct_ifa_msghdr - -type IfAnnounceMsghdr C.struct_if_announcemsghdr - -type RtMsghdr C.struct_rt_msghdr - -type RtMetrics C.struct_rt_metrics - -type Mclpool C.struct_mclpool - -// Berkeley packet filter - -const ( - SizeofBpfVersion = C.sizeof_struct_bpf_version - SizeofBpfStat = C.sizeof_struct_bpf_stat - SizeofBpfProgram = C.sizeof_struct_bpf_program - SizeofBpfInsn = C.sizeof_struct_bpf_insn - SizeofBpfHdr = C.sizeof_struct_bpf_hdr -) - -type BpfVersion C.struct_bpf_version - -type BpfStat C.struct_bpf_stat - -type BpfProgram C.struct_bpf_program - -type BpfInsn C.struct_bpf_insn - -type BpfHdr C.struct_bpf_hdr - -type BpfTimeval C.struct_bpf_timeval - -// Terminal handling - -type Termios C.struct_termios - -type Winsize C.struct_winsize - -// fchmodat-like syscalls. - -const ( - AT_FDCWD = C.AT_FDCWD - AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW -) - -// poll - -type PollFd C.struct_pollfd - -const ( - POLLERR = C.POLLERR - POLLHUP = C.POLLHUP - POLLIN = C.POLLIN - POLLNVAL = C.POLLNVAL - POLLOUT = C.POLLOUT - POLLPRI = C.POLLPRI - POLLRDBAND = C.POLLRDBAND - POLLRDNORM = C.POLLRDNORM - POLLWRBAND = C.POLLWRBAND - POLLWRNORM = C.POLLWRNORM -) - -// Signal Sets - -type Sigset_t C.sigset_t - -// Uname - -type Utsname C.struct_utsname - -// Uvmexp - -const SizeofUvmexp = C.sizeof_struct_uvmexp - -type Uvmexp C.struct_uvmexp - -// Clockinfo - -const SizeofClockinfo = C.sizeof_struct_clockinfo - -type Clockinfo C.struct_clockinfo diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_solaris.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_solaris.go deleted file mode 100644 index 2b716f934..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/types_solaris.go +++ /dev/null @@ -1,266 +0,0 @@ -// 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 ignore - -/* -Input to cgo -godefs. See README.md -*/ - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package unix - -/* -#define KERNEL -// These defines ensure that builds done on newer versions of Solaris are -// backwards-compatible with older versions of Solaris and -// OpenSolaris-based derivatives. -#define __USE_SUNOS_SOCKETS__ // msghdr -#define __USE_LEGACY_PROTOTYPES__ // iovec -#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 - -enum { - sizeofPtr = sizeof(void*), -}; - -union sockaddr_all { - struct sockaddr s1; // this one gets used for fields - struct sockaddr_in s2; // these pad it out - struct sockaddr_in6 s3; - struct sockaddr_un s4; - struct sockaddr_dl s5; -}; - -struct sockaddr_any { - struct sockaddr addr; - char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; -}; - -*/ -import "C" - -// Machine characteristics - -const ( - SizeofPtr = C.sizeofPtr - SizeofShort = C.sizeof_short - SizeofInt = C.sizeof_int - SizeofLong = C.sizeof_long - SizeofLongLong = C.sizeof_longlong - PathMax = C.PATH_MAX - MaxHostNameLen = C.MAXHOSTNAMELEN -) - -// Basic types - -type ( - _C_short C.short - _C_int C.int - _C_long C.long - _C_long_long C.longlong -) - -// Time - -type Timespec C.struct_timespec - -type Timeval C.struct_timeval - -type Timeval32 C.struct_timeval32 - -type Tms C.struct_tms - -type Utimbuf C.struct_utimbuf - -// Processes - -type Rusage C.struct_rusage - -type Rlimit C.struct_rlimit - -type _Gid_t C.gid_t - -// Files - -type Stat_t C.struct_stat - -type Flock_t C.struct_flock - -type Dirent C.struct_dirent - -// Filesystems - -type _Fsblkcnt_t C.fsblkcnt_t - -type Statvfs_t C.struct_statvfs - -// Sockets - -type RawSockaddrInet4 C.struct_sockaddr_in - -type RawSockaddrInet6 C.struct_sockaddr_in6 - -type RawSockaddrUnix C.struct_sockaddr_un - -type RawSockaddrDatalink C.struct_sockaddr_dl - -type RawSockaddr C.struct_sockaddr - -type RawSockaddrAny C.struct_sockaddr_any - -type _Socklen C.socklen_t - -type Linger C.struct_linger - -type Iovec C.struct_iovec - -type IPMreq C.struct_ip_mreq - -type IPv6Mreq C.struct_ipv6_mreq - -type Msghdr C.struct_msghdr - -type Cmsghdr C.struct_cmsghdr - -type Inet6Pktinfo C.struct_in6_pktinfo - -type IPv6MTUInfo C.struct_ip6_mtuinfo - -type ICMPv6Filter C.struct_icmp6_filter - -const ( - SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in - SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - SizeofSockaddrAny = C.sizeof_struct_sockaddr_any - SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un - SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl - SizeofLinger = C.sizeof_struct_linger - SizeofIPMreq = C.sizeof_struct_ip_mreq - SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - SizeofMsghdr = C.sizeof_struct_msghdr - SizeofCmsghdr = C.sizeof_struct_cmsghdr - SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo - SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter -) - -// Select - -type FdSet C.fd_set - -// Misc - -type Utsname C.struct_utsname - -type Ustat_t C.struct_ustat - -const ( - AT_FDCWD = C.AT_FDCWD - AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW - AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW - AT_REMOVEDIR = C.AT_REMOVEDIR - AT_EACCESS = C.AT_EACCESS -) - -// Routing and interface messages - -const ( - SizeofIfMsghdr = C.sizeof_struct_if_msghdr - SizeofIfData = C.sizeof_struct_if_data - SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr - SizeofRtMsghdr = C.sizeof_struct_rt_msghdr - SizeofRtMetrics = C.sizeof_struct_rt_metrics -) - -type IfMsghdr C.struct_if_msghdr - -type IfData C.struct_if_data - -type IfaMsghdr C.struct_ifa_msghdr - -type RtMsghdr C.struct_rt_msghdr - -type RtMetrics C.struct_rt_metrics - -// Berkeley packet filter - -const ( - SizeofBpfVersion = C.sizeof_struct_bpf_version - SizeofBpfStat = C.sizeof_struct_bpf_stat - SizeofBpfProgram = C.sizeof_struct_bpf_program - SizeofBpfInsn = C.sizeof_struct_bpf_insn - SizeofBpfHdr = C.sizeof_struct_bpf_hdr -) - -type BpfVersion C.struct_bpf_version - -type BpfStat C.struct_bpf_stat - -type BpfProgram C.struct_bpf_program - -type BpfInsn C.struct_bpf_insn - -type BpfTimeval C.struct_bpf_timeval - -type BpfHdr C.struct_bpf_hdr - -// Terminal handling - -type Termios C.struct_termios - -type Termio C.struct_termio - -type Winsize C.struct_winsize - -// poll - -type PollFd C.struct_pollfd - -const ( - POLLERR = C.POLLERR - POLLHUP = C.POLLHUP - POLLIN = C.POLLIN - POLLNVAL = C.POLLNVAL - POLLOUT = C.POLLOUT - POLLPRI = C.POLLPRI - POLLRDBAND = C.POLLRDBAND - POLLRDNORM = C.POLLRDNORM - POLLWRBAND = C.POLLWRBAND - POLLWRNORM = C.POLLWRNORM -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/unveil_openbsd.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/unveil_openbsd.go deleted file mode 100644 index 168d5ae77..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/unveil_openbsd.go +++ /dev/null @@ -1,42 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/xattr_bsd.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/xattr_bsd.go deleted file mode 100644 index 30c1d71f4..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/xattr_bsd.go +++ /dev/null @@ -1,240 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go deleted file mode 100644 index 1def8a581..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go +++ /dev/null @@ -1,1374 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go deleted file mode 100644 index 03187dea9..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go +++ /dev/null @@ -1,1375 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go deleted file mode 100644 index 3b39d7408..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go +++ /dev/null @@ -1,1783 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go deleted file mode 100644 index 8fe554777..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +++ /dev/null @@ -1,1783 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go deleted file mode 100644 index 7a977770d..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go +++ /dev/null @@ -1,1783 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go deleted file mode 100644 index 6d56d8a05..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +++ /dev/null @@ -1,1783 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go deleted file mode 100644 index bbe6089bb..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go +++ /dev/null @@ -1,1650 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go deleted file mode 100644 index d2bbaabc8..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +++ /dev/null @@ -1,1793 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go deleted file mode 100644 index 4f8db783d..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +++ /dev/null @@ -1,1794 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go deleted file mode 100644 index 53e5de605..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +++ /dev/null @@ -1,1802 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go deleted file mode 100644 index d4a192fef..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go +++ /dev/null @@ -1,1794 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_386.go deleted file mode 100644 index cd117521d..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ /dev/null @@ -1,2934 +0,0 @@ -// 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_ALU64 = 0x7 - BPF_AND = 0x50 - BPF_ANY = 0x0 - BPF_ARSH = 0xc0 - BPF_B = 0x10 - BPF_BUILD_ID_SIZE = 0x14 - BPF_CALL = 0x80 - BPF_DEVCG_ACC_MKNOD = 0x1 - BPF_DEVCG_ACC_READ = 0x2 - BPF_DEVCG_ACC_WRITE = 0x4 - BPF_DEVCG_DEV_BLOCK = 0x1 - BPF_DEVCG_DEV_CHAR = 0x2 - BPF_DIV = 0x30 - BPF_DW = 0x18 - BPF_END = 0xd0 - BPF_EXIST = 0x2 - BPF_EXIT = 0x90 - BPF_FROM_BE = 0x8 - BPF_FROM_LE = 0x0 - BPF_FS_MAGIC = 0xcafe4a11 - BPF_F_ALLOW_MULTI = 0x2 - BPF_F_ALLOW_OVERRIDE = 0x1 - BPF_F_ANY_ALIGNMENT = 0x2 - BPF_F_CTXLEN_MASK = 0xfffff00000000 - BPF_F_CURRENT_CPU = 0xffffffff - BPF_F_CURRENT_NETNS = -0x1 - BPF_F_DONT_FRAGMENT = 0x4 - BPF_F_FAST_STACK_CMP = 0x200 - BPF_F_HDR_FIELD_MASK = 0xf - BPF_F_INDEX_MASK = 0xffffffff - BPF_F_INGRESS = 0x1 - BPF_F_INVALIDATE_HASH = 0x2 - BPF_F_MARK_ENFORCE = 0x40 - BPF_F_MARK_MANGLED_0 = 0x20 - BPF_F_NO_COMMON_LRU = 0x2 - BPF_F_NO_PREALLOC = 0x1 - BPF_F_NUMA_NODE = 0x4 - BPF_F_PSEUDO_HDR = 0x10 - BPF_F_QUERY_EFFECTIVE = 0x1 - BPF_F_RDONLY = 0x8 - BPF_F_RECOMPUTE_CSUM = 0x1 - BPF_F_REUSE_STACKID = 0x400 - BPF_F_SEQ_NUMBER = 0x8 - BPF_F_SKIP_FIELD_MASK = 0xff - BPF_F_STACK_BUILD_ID = 0x20 - BPF_F_STRICT_ALIGNMENT = 0x1 - BPF_F_TUNINFO_IPV6 = 0x1 - BPF_F_USER_BUILD_ID = 0x800 - BPF_F_USER_STACK = 0x100 - BPF_F_WRONLY = 0x10 - BPF_F_ZERO_CSUM_TX = 0x2 - BPF_F_ZERO_SEED = 0x40 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JLE = 0xb0 - BPF_JLT = 0xa0 - BPF_JMP = 0x5 - BPF_JNE = 0x50 - BPF_JSET = 0x40 - BPF_JSGE = 0x70 - BPF_JSGT = 0x60 - BPF_JSLE = 0xd0 - BPF_JSLT = 0xc0 - 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_MOV = 0xb0 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_NET_OFF = -0x100000 - BPF_NOEXIST = 0x1 - BPF_OBJ_NAME_LEN = 0x10 - BPF_OR = 0x40 - BPF_PSEUDO_CALL = 0x1 - BPF_PSEUDO_MAP_FD = 0x1 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 - BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 - BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 - BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAG_SIZE = 0x8 - BPF_TAX = 0x0 - BPF_TO_BE = 0x8 - BPF_TO_LE = 0x0 - BPF_TXA = 0x80 - BPF_W = 0x0 - BPF_X = 0x8 - BPF_XADD = 0xc0 - 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_ATTRIB = 0x4 - 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_CREATE = 0x100 - FAN_DELETE = 0x200 - FAN_DELETE_SELF = 0x400 - FAN_DENY = 0x2 - FAN_ENABLE_AUDIT = 0x40 - FAN_EVENT_INFO_TYPE_FID = 0x1 - 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_MOVE = 0xc0 - FAN_MOVED_FROM = 0x40 - FAN_MOVED_TO = 0x80 - FAN_MOVE_SELF = 0x800 - 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_FID = 0x200 - 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_DISABLE_NOEXEC = 0x10 - 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_BINDTOIFINDEX = 0x3e - 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_RCVTIMEO_NEW = 0x42 - SO_RCVTIMEO_OLD = 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_SNDTIMEO_NEW = 0x43 - SO_SNDTIMEO_OLD = 0x15 - SO_TIMESTAMP = 0x1d - SO_TIMESTAMPING = 0x25 - SO_TIMESTAMPING_NEW = 0x41 - SO_TIMESTAMPING_OLD = 0x25 - SO_TIMESTAMPNS = 0x23 - SO_TIMESTAMPNS_NEW = 0x40 - SO_TIMESTAMPNS_OLD = 0x23 - SO_TIMESTAMP_NEW = 0x3f - SO_TIMESTAMP_OLD = 0x1d - 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_BPF_IW = 0x3e9 - TCP_BPF_SNDCWND_CLAMP = 0x3ea - 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_IOCRPEB = 0x40046f04 - UBI_IOCRSVOL = 0x400c6f02 - UBI_IOCSETVOLPROP = 0x40104f06 - UBI_IOCSPEB = 0x40046f05 - 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_PACKET_HEADROOM = 0x100 - 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go deleted file mode 100644 index c1c0e9cb4..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ /dev/null @@ -1,2934 +0,0 @@ -// 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_ALU64 = 0x7 - BPF_AND = 0x50 - BPF_ANY = 0x0 - BPF_ARSH = 0xc0 - BPF_B = 0x10 - BPF_BUILD_ID_SIZE = 0x14 - BPF_CALL = 0x80 - BPF_DEVCG_ACC_MKNOD = 0x1 - BPF_DEVCG_ACC_READ = 0x2 - BPF_DEVCG_ACC_WRITE = 0x4 - BPF_DEVCG_DEV_BLOCK = 0x1 - BPF_DEVCG_DEV_CHAR = 0x2 - BPF_DIV = 0x30 - BPF_DW = 0x18 - BPF_END = 0xd0 - BPF_EXIST = 0x2 - BPF_EXIT = 0x90 - BPF_FROM_BE = 0x8 - BPF_FROM_LE = 0x0 - BPF_FS_MAGIC = 0xcafe4a11 - BPF_F_ALLOW_MULTI = 0x2 - BPF_F_ALLOW_OVERRIDE = 0x1 - BPF_F_ANY_ALIGNMENT = 0x2 - BPF_F_CTXLEN_MASK = 0xfffff00000000 - BPF_F_CURRENT_CPU = 0xffffffff - BPF_F_CURRENT_NETNS = -0x1 - BPF_F_DONT_FRAGMENT = 0x4 - BPF_F_FAST_STACK_CMP = 0x200 - BPF_F_HDR_FIELD_MASK = 0xf - BPF_F_INDEX_MASK = 0xffffffff - BPF_F_INGRESS = 0x1 - BPF_F_INVALIDATE_HASH = 0x2 - BPF_F_MARK_ENFORCE = 0x40 - BPF_F_MARK_MANGLED_0 = 0x20 - BPF_F_NO_COMMON_LRU = 0x2 - BPF_F_NO_PREALLOC = 0x1 - BPF_F_NUMA_NODE = 0x4 - BPF_F_PSEUDO_HDR = 0x10 - BPF_F_QUERY_EFFECTIVE = 0x1 - BPF_F_RDONLY = 0x8 - BPF_F_RECOMPUTE_CSUM = 0x1 - BPF_F_REUSE_STACKID = 0x400 - BPF_F_SEQ_NUMBER = 0x8 - BPF_F_SKIP_FIELD_MASK = 0xff - BPF_F_STACK_BUILD_ID = 0x20 - BPF_F_STRICT_ALIGNMENT = 0x1 - BPF_F_TUNINFO_IPV6 = 0x1 - BPF_F_USER_BUILD_ID = 0x800 - BPF_F_USER_STACK = 0x100 - BPF_F_WRONLY = 0x10 - BPF_F_ZERO_CSUM_TX = 0x2 - BPF_F_ZERO_SEED = 0x40 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JLE = 0xb0 - BPF_JLT = 0xa0 - BPF_JMP = 0x5 - BPF_JNE = 0x50 - BPF_JSET = 0x40 - BPF_JSGE = 0x70 - BPF_JSGT = 0x60 - BPF_JSLE = 0xd0 - BPF_JSLT = 0xc0 - 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_MOV = 0xb0 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_NET_OFF = -0x100000 - BPF_NOEXIST = 0x1 - BPF_OBJ_NAME_LEN = 0x10 - BPF_OR = 0x40 - BPF_PSEUDO_CALL = 0x1 - BPF_PSEUDO_MAP_FD = 0x1 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 - BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 - BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 - BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAG_SIZE = 0x8 - BPF_TAX = 0x0 - BPF_TO_BE = 0x8 - BPF_TO_LE = 0x0 - BPF_TXA = 0x80 - BPF_W = 0x0 - BPF_X = 0x8 - BPF_XADD = 0xc0 - 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_ATTRIB = 0x4 - 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_CREATE = 0x100 - FAN_DELETE = 0x200 - FAN_DELETE_SELF = 0x400 - FAN_DENY = 0x2 - FAN_ENABLE_AUDIT = 0x40 - FAN_EVENT_INFO_TYPE_FID = 0x1 - 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_MOVE = 0xc0 - FAN_MOVED_FROM = 0x40 - FAN_MOVED_TO = 0x80 - FAN_MOVE_SELF = 0x800 - 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_FID = 0x200 - 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_DISABLE_NOEXEC = 0x10 - 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_BINDTOIFINDEX = 0x3e - 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_RCVTIMEO_NEW = 0x42 - SO_RCVTIMEO_OLD = 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_SNDTIMEO_NEW = 0x43 - SO_SNDTIMEO_OLD = 0x15 - SO_TIMESTAMP = 0x1d - SO_TIMESTAMPING = 0x25 - SO_TIMESTAMPING_NEW = 0x41 - SO_TIMESTAMPING_OLD = 0x25 - SO_TIMESTAMPNS = 0x23 - SO_TIMESTAMPNS_NEW = 0x40 - SO_TIMESTAMPNS_OLD = 0x23 - SO_TIMESTAMP_NEW = 0x3f - SO_TIMESTAMP_OLD = 0x1d - 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_BPF_IW = 0x3e9 - TCP_BPF_SNDCWND_CLAMP = 0x3ea - 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_IOCRPEB = 0x40046f04 - UBI_IOCRSVOL = 0x400c6f02 - UBI_IOCSETVOLPROP = 0x40104f06 - UBI_IOCSPEB = 0x40046f05 - 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_PACKET_HEADROOM = 0x100 - 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go deleted file mode 100644 index 513cdbadb..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ /dev/null @@ -1,2940 +0,0 @@ -// 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_ALU64 = 0x7 - BPF_AND = 0x50 - BPF_ANY = 0x0 - BPF_ARSH = 0xc0 - BPF_B = 0x10 - BPF_BUILD_ID_SIZE = 0x14 - BPF_CALL = 0x80 - BPF_DEVCG_ACC_MKNOD = 0x1 - BPF_DEVCG_ACC_READ = 0x2 - BPF_DEVCG_ACC_WRITE = 0x4 - BPF_DEVCG_DEV_BLOCK = 0x1 - BPF_DEVCG_DEV_CHAR = 0x2 - BPF_DIV = 0x30 - BPF_DW = 0x18 - BPF_END = 0xd0 - BPF_EXIST = 0x2 - BPF_EXIT = 0x90 - BPF_FROM_BE = 0x8 - BPF_FROM_LE = 0x0 - BPF_FS_MAGIC = 0xcafe4a11 - BPF_F_ALLOW_MULTI = 0x2 - BPF_F_ALLOW_OVERRIDE = 0x1 - BPF_F_ANY_ALIGNMENT = 0x2 - BPF_F_CTXLEN_MASK = 0xfffff00000000 - BPF_F_CURRENT_CPU = 0xffffffff - BPF_F_CURRENT_NETNS = -0x1 - BPF_F_DONT_FRAGMENT = 0x4 - BPF_F_FAST_STACK_CMP = 0x200 - BPF_F_HDR_FIELD_MASK = 0xf - BPF_F_INDEX_MASK = 0xffffffff - BPF_F_INGRESS = 0x1 - BPF_F_INVALIDATE_HASH = 0x2 - BPF_F_MARK_ENFORCE = 0x40 - BPF_F_MARK_MANGLED_0 = 0x20 - BPF_F_NO_COMMON_LRU = 0x2 - BPF_F_NO_PREALLOC = 0x1 - BPF_F_NUMA_NODE = 0x4 - BPF_F_PSEUDO_HDR = 0x10 - BPF_F_QUERY_EFFECTIVE = 0x1 - BPF_F_RDONLY = 0x8 - BPF_F_RECOMPUTE_CSUM = 0x1 - BPF_F_REUSE_STACKID = 0x400 - BPF_F_SEQ_NUMBER = 0x8 - BPF_F_SKIP_FIELD_MASK = 0xff - BPF_F_STACK_BUILD_ID = 0x20 - BPF_F_STRICT_ALIGNMENT = 0x1 - BPF_F_TUNINFO_IPV6 = 0x1 - BPF_F_USER_BUILD_ID = 0x800 - BPF_F_USER_STACK = 0x100 - BPF_F_WRONLY = 0x10 - BPF_F_ZERO_CSUM_TX = 0x2 - BPF_F_ZERO_SEED = 0x40 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JLE = 0xb0 - BPF_JLT = 0xa0 - BPF_JMP = 0x5 - BPF_JNE = 0x50 - BPF_JSET = 0x40 - BPF_JSGE = 0x70 - BPF_JSGT = 0x60 - BPF_JSLE = 0xd0 - BPF_JSLT = 0xc0 - 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_MOV = 0xb0 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_NET_OFF = -0x100000 - BPF_NOEXIST = 0x1 - BPF_OBJ_NAME_LEN = 0x10 - BPF_OR = 0x40 - BPF_PSEUDO_CALL = 0x1 - BPF_PSEUDO_MAP_FD = 0x1 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 - BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 - BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 - BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAG_SIZE = 0x8 - BPF_TAX = 0x0 - BPF_TO_BE = 0x8 - BPF_TO_LE = 0x0 - BPF_TXA = 0x80 - BPF_W = 0x0 - BPF_X = 0x8 - BPF_XADD = 0xc0 - 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_ATTRIB = 0x4 - 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_CREATE = 0x100 - FAN_DELETE = 0x200 - FAN_DELETE_SELF = 0x400 - FAN_DENY = 0x2 - FAN_ENABLE_AUDIT = 0x40 - FAN_EVENT_INFO_TYPE_FID = 0x1 - 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_MOVE = 0xc0 - FAN_MOVED_FROM = 0x40 - FAN_MOVED_TO = 0x80 - FAN_MOVE_SELF = 0x800 - 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_FID = 0x200 - 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_DISABLE_NOEXEC = 0x10 - 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_BINDTOIFINDEX = 0x3e - 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_RCVTIMEO_NEW = 0x42 - SO_RCVTIMEO_OLD = 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_SNDTIMEO_NEW = 0x43 - SO_SNDTIMEO_OLD = 0x15 - SO_TIMESTAMP = 0x1d - SO_TIMESTAMPING = 0x25 - SO_TIMESTAMPING_NEW = 0x41 - SO_TIMESTAMPING_OLD = 0x25 - SO_TIMESTAMPNS = 0x23 - SO_TIMESTAMPNS_NEW = 0x40 - SO_TIMESTAMPNS_OLD = 0x23 - SO_TIMESTAMP_NEW = 0x3f - SO_TIMESTAMP_OLD = 0x1d - 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_BPF_IW = 0x3e9 - TCP_BPF_SNDCWND_CLAMP = 0x3ea - 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_IOCRPEB = 0x40046f04 - UBI_IOCRSVOL = 0x400c6f02 - UBI_IOCSETVOLPROP = 0x40104f06 - UBI_IOCSPEB = 0x40046f05 - 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_PACKET_HEADROOM = 0x100 - 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go deleted file mode 100644 index 4573ca837..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ /dev/null @@ -1,2925 +0,0 @@ -// 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_ALU64 = 0x7 - BPF_AND = 0x50 - BPF_ANY = 0x0 - BPF_ARSH = 0xc0 - BPF_B = 0x10 - BPF_BUILD_ID_SIZE = 0x14 - BPF_CALL = 0x80 - BPF_DEVCG_ACC_MKNOD = 0x1 - BPF_DEVCG_ACC_READ = 0x2 - BPF_DEVCG_ACC_WRITE = 0x4 - BPF_DEVCG_DEV_BLOCK = 0x1 - BPF_DEVCG_DEV_CHAR = 0x2 - BPF_DIV = 0x30 - BPF_DW = 0x18 - BPF_END = 0xd0 - BPF_EXIST = 0x2 - BPF_EXIT = 0x90 - BPF_FROM_BE = 0x8 - BPF_FROM_LE = 0x0 - BPF_FS_MAGIC = 0xcafe4a11 - BPF_F_ALLOW_MULTI = 0x2 - BPF_F_ALLOW_OVERRIDE = 0x1 - BPF_F_ANY_ALIGNMENT = 0x2 - BPF_F_CTXLEN_MASK = 0xfffff00000000 - BPF_F_CURRENT_CPU = 0xffffffff - BPF_F_CURRENT_NETNS = -0x1 - BPF_F_DONT_FRAGMENT = 0x4 - BPF_F_FAST_STACK_CMP = 0x200 - BPF_F_HDR_FIELD_MASK = 0xf - BPF_F_INDEX_MASK = 0xffffffff - BPF_F_INGRESS = 0x1 - BPF_F_INVALIDATE_HASH = 0x2 - BPF_F_MARK_ENFORCE = 0x40 - BPF_F_MARK_MANGLED_0 = 0x20 - BPF_F_NO_COMMON_LRU = 0x2 - BPF_F_NO_PREALLOC = 0x1 - BPF_F_NUMA_NODE = 0x4 - BPF_F_PSEUDO_HDR = 0x10 - BPF_F_QUERY_EFFECTIVE = 0x1 - BPF_F_RDONLY = 0x8 - BPF_F_RECOMPUTE_CSUM = 0x1 - BPF_F_REUSE_STACKID = 0x400 - BPF_F_SEQ_NUMBER = 0x8 - BPF_F_SKIP_FIELD_MASK = 0xff - BPF_F_STACK_BUILD_ID = 0x20 - BPF_F_STRICT_ALIGNMENT = 0x1 - BPF_F_TUNINFO_IPV6 = 0x1 - BPF_F_USER_BUILD_ID = 0x800 - BPF_F_USER_STACK = 0x100 - BPF_F_WRONLY = 0x10 - BPF_F_ZERO_CSUM_TX = 0x2 - BPF_F_ZERO_SEED = 0x40 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JLE = 0xb0 - BPF_JLT = 0xa0 - BPF_JMP = 0x5 - BPF_JNE = 0x50 - BPF_JSET = 0x40 - BPF_JSGE = 0x70 - BPF_JSGT = 0x60 - BPF_JSLE = 0xd0 - BPF_JSLT = 0xc0 - 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_MOV = 0xb0 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_NET_OFF = -0x100000 - BPF_NOEXIST = 0x1 - BPF_OBJ_NAME_LEN = 0x10 - BPF_OR = 0x40 - BPF_PSEUDO_CALL = 0x1 - BPF_PSEUDO_MAP_FD = 0x1 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 - BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 - BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 - BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAG_SIZE = 0x8 - BPF_TAX = 0x0 - BPF_TO_BE = 0x8 - BPF_TO_LE = 0x0 - BPF_TXA = 0x80 - BPF_W = 0x0 - BPF_X = 0x8 - BPF_XADD = 0xc0 - 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_ATTRIB = 0x4 - 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_CREATE = 0x100 - FAN_DELETE = 0x200 - FAN_DELETE_SELF = 0x400 - FAN_DENY = 0x2 - FAN_ENABLE_AUDIT = 0x40 - FAN_EVENT_INFO_TYPE_FID = 0x1 - 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_MOVE = 0xc0 - FAN_MOVED_FROM = 0x40 - FAN_MOVED_TO = 0x80 - FAN_MOVE_SELF = 0x800 - 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_FID = 0x200 - 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_DISABLE_NOEXEC = 0x10 - 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_BINDTOIFINDEX = 0x3e - 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_RCVTIMEO_NEW = 0x42 - SO_RCVTIMEO_OLD = 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_SNDTIMEO_NEW = 0x43 - SO_SNDTIMEO_OLD = 0x15 - SO_TIMESTAMP = 0x1d - SO_TIMESTAMPING = 0x25 - SO_TIMESTAMPING_NEW = 0x41 - SO_TIMESTAMPING_OLD = 0x25 - SO_TIMESTAMPNS = 0x23 - SO_TIMESTAMPNS_NEW = 0x40 - SO_TIMESTAMPNS_OLD = 0x23 - SO_TIMESTAMP_NEW = 0x3f - SO_TIMESTAMP_OLD = 0x1d - 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_BPF_IW = 0x3e9 - TCP_BPF_SNDCWND_CLAMP = 0x3ea - 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_IOCRPEB = 0x40046f04 - UBI_IOCRSVOL = 0x400c6f02 - UBI_IOCSETVOLPROP = 0x40104f06 - UBI_IOCSPEB = 0x40046f05 - 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_PACKET_HEADROOM = 0x100 - 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go deleted file mode 100644 index 3ce8a9cd1..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ /dev/null @@ -1,2941 +0,0 @@ -// 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_ALU64 = 0x7 - BPF_AND = 0x50 - BPF_ANY = 0x0 - BPF_ARSH = 0xc0 - BPF_B = 0x10 - BPF_BUILD_ID_SIZE = 0x14 - BPF_CALL = 0x80 - BPF_DEVCG_ACC_MKNOD = 0x1 - BPF_DEVCG_ACC_READ = 0x2 - BPF_DEVCG_ACC_WRITE = 0x4 - BPF_DEVCG_DEV_BLOCK = 0x1 - BPF_DEVCG_DEV_CHAR = 0x2 - BPF_DIV = 0x30 - BPF_DW = 0x18 - BPF_END = 0xd0 - BPF_EXIST = 0x2 - BPF_EXIT = 0x90 - BPF_FROM_BE = 0x8 - BPF_FROM_LE = 0x0 - BPF_FS_MAGIC = 0xcafe4a11 - BPF_F_ALLOW_MULTI = 0x2 - BPF_F_ALLOW_OVERRIDE = 0x1 - BPF_F_ANY_ALIGNMENT = 0x2 - BPF_F_CTXLEN_MASK = 0xfffff00000000 - BPF_F_CURRENT_CPU = 0xffffffff - BPF_F_CURRENT_NETNS = -0x1 - BPF_F_DONT_FRAGMENT = 0x4 - BPF_F_FAST_STACK_CMP = 0x200 - BPF_F_HDR_FIELD_MASK = 0xf - BPF_F_INDEX_MASK = 0xffffffff - BPF_F_INGRESS = 0x1 - BPF_F_INVALIDATE_HASH = 0x2 - BPF_F_MARK_ENFORCE = 0x40 - BPF_F_MARK_MANGLED_0 = 0x20 - BPF_F_NO_COMMON_LRU = 0x2 - BPF_F_NO_PREALLOC = 0x1 - BPF_F_NUMA_NODE = 0x4 - BPF_F_PSEUDO_HDR = 0x10 - BPF_F_QUERY_EFFECTIVE = 0x1 - BPF_F_RDONLY = 0x8 - BPF_F_RECOMPUTE_CSUM = 0x1 - BPF_F_REUSE_STACKID = 0x400 - BPF_F_SEQ_NUMBER = 0x8 - BPF_F_SKIP_FIELD_MASK = 0xff - BPF_F_STACK_BUILD_ID = 0x20 - BPF_F_STRICT_ALIGNMENT = 0x1 - BPF_F_TUNINFO_IPV6 = 0x1 - BPF_F_USER_BUILD_ID = 0x800 - BPF_F_USER_STACK = 0x100 - BPF_F_WRONLY = 0x10 - BPF_F_ZERO_CSUM_TX = 0x2 - BPF_F_ZERO_SEED = 0x40 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JLE = 0xb0 - BPF_JLT = 0xa0 - BPF_JMP = 0x5 - BPF_JNE = 0x50 - BPF_JSET = 0x40 - BPF_JSGE = 0x70 - BPF_JSGT = 0x60 - BPF_JSLE = 0xd0 - BPF_JSLT = 0xc0 - 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_MOV = 0xb0 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_NET_OFF = -0x100000 - BPF_NOEXIST = 0x1 - BPF_OBJ_NAME_LEN = 0x10 - BPF_OR = 0x40 - BPF_PSEUDO_CALL = 0x1 - BPF_PSEUDO_MAP_FD = 0x1 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 - BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 - BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 - BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAG_SIZE = 0x8 - BPF_TAX = 0x0 - BPF_TO_BE = 0x8 - BPF_TO_LE = 0x0 - BPF_TXA = 0x80 - BPF_W = 0x0 - BPF_X = 0x8 - BPF_XADD = 0xc0 - 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_ATTRIB = 0x4 - 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_CREATE = 0x100 - FAN_DELETE = 0x200 - FAN_DELETE_SELF = 0x400 - FAN_DENY = 0x2 - FAN_ENABLE_AUDIT = 0x40 - FAN_EVENT_INFO_TYPE_FID = 0x1 - 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_MOVE = 0xc0 - FAN_MOVED_FROM = 0x40 - FAN_MOVED_TO = 0x80 - FAN_MOVE_SELF = 0x800 - 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_FID = 0x200 - 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_DISABLE_NOEXEC = 0x10 - 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_BINDTOIFINDEX = 0x3e - 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_RCVTIMEO_NEW = 0x42 - SO_RCVTIMEO_OLD = 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_SNDTIMEO_NEW = 0x43 - SO_SNDTIMEO_OLD = 0x1005 - SO_STYLE = 0x1008 - SO_TIMESTAMP = 0x1d - SO_TIMESTAMPING = 0x25 - SO_TIMESTAMPING_NEW = 0x41 - SO_TIMESTAMPING_OLD = 0x25 - SO_TIMESTAMPNS = 0x23 - SO_TIMESTAMPNS_NEW = 0x40 - SO_TIMESTAMPNS_OLD = 0x23 - SO_TIMESTAMP_NEW = 0x3f - SO_TIMESTAMP_OLD = 0x1d - 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_BPF_IW = 0x3e9 - TCP_BPF_SNDCWND_CLAMP = 0x3ea - 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_IOCRPEB = 0x80046f04 - UBI_IOCRSVOL = 0x800c6f02 - UBI_IOCSETVOLPROP = 0x80104f06 - UBI_IOCSPEB = 0x80046f05 - 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_PACKET_HEADROOM = 0x100 - 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go deleted file mode 100644 index 9a00a9d5e..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ /dev/null @@ -1,2941 +0,0 @@ -// 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_ALU64 = 0x7 - BPF_AND = 0x50 - BPF_ANY = 0x0 - BPF_ARSH = 0xc0 - BPF_B = 0x10 - BPF_BUILD_ID_SIZE = 0x14 - BPF_CALL = 0x80 - BPF_DEVCG_ACC_MKNOD = 0x1 - BPF_DEVCG_ACC_READ = 0x2 - BPF_DEVCG_ACC_WRITE = 0x4 - BPF_DEVCG_DEV_BLOCK = 0x1 - BPF_DEVCG_DEV_CHAR = 0x2 - BPF_DIV = 0x30 - BPF_DW = 0x18 - BPF_END = 0xd0 - BPF_EXIST = 0x2 - BPF_EXIT = 0x90 - BPF_FROM_BE = 0x8 - BPF_FROM_LE = 0x0 - BPF_FS_MAGIC = 0xcafe4a11 - BPF_F_ALLOW_MULTI = 0x2 - BPF_F_ALLOW_OVERRIDE = 0x1 - BPF_F_ANY_ALIGNMENT = 0x2 - BPF_F_CTXLEN_MASK = 0xfffff00000000 - BPF_F_CURRENT_CPU = 0xffffffff - BPF_F_CURRENT_NETNS = -0x1 - BPF_F_DONT_FRAGMENT = 0x4 - BPF_F_FAST_STACK_CMP = 0x200 - BPF_F_HDR_FIELD_MASK = 0xf - BPF_F_INDEX_MASK = 0xffffffff - BPF_F_INGRESS = 0x1 - BPF_F_INVALIDATE_HASH = 0x2 - BPF_F_MARK_ENFORCE = 0x40 - BPF_F_MARK_MANGLED_0 = 0x20 - BPF_F_NO_COMMON_LRU = 0x2 - BPF_F_NO_PREALLOC = 0x1 - BPF_F_NUMA_NODE = 0x4 - BPF_F_PSEUDO_HDR = 0x10 - BPF_F_QUERY_EFFECTIVE = 0x1 - BPF_F_RDONLY = 0x8 - BPF_F_RECOMPUTE_CSUM = 0x1 - BPF_F_REUSE_STACKID = 0x400 - BPF_F_SEQ_NUMBER = 0x8 - BPF_F_SKIP_FIELD_MASK = 0xff - BPF_F_STACK_BUILD_ID = 0x20 - BPF_F_STRICT_ALIGNMENT = 0x1 - BPF_F_TUNINFO_IPV6 = 0x1 - BPF_F_USER_BUILD_ID = 0x800 - BPF_F_USER_STACK = 0x100 - BPF_F_WRONLY = 0x10 - BPF_F_ZERO_CSUM_TX = 0x2 - BPF_F_ZERO_SEED = 0x40 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JLE = 0xb0 - BPF_JLT = 0xa0 - BPF_JMP = 0x5 - BPF_JNE = 0x50 - BPF_JSET = 0x40 - BPF_JSGE = 0x70 - BPF_JSGT = 0x60 - BPF_JSLE = 0xd0 - BPF_JSLT = 0xc0 - 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_MOV = 0xb0 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_NET_OFF = -0x100000 - BPF_NOEXIST = 0x1 - BPF_OBJ_NAME_LEN = 0x10 - BPF_OR = 0x40 - BPF_PSEUDO_CALL = 0x1 - BPF_PSEUDO_MAP_FD = 0x1 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 - BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 - BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 - BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAG_SIZE = 0x8 - BPF_TAX = 0x0 - BPF_TO_BE = 0x8 - BPF_TO_LE = 0x0 - BPF_TXA = 0x80 - BPF_W = 0x0 - BPF_X = 0x8 - BPF_XADD = 0xc0 - 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_ATTRIB = 0x4 - 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_CREATE = 0x100 - FAN_DELETE = 0x200 - FAN_DELETE_SELF = 0x400 - FAN_DENY = 0x2 - FAN_ENABLE_AUDIT = 0x40 - FAN_EVENT_INFO_TYPE_FID = 0x1 - 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_MOVE = 0xc0 - FAN_MOVED_FROM = 0x40 - FAN_MOVED_TO = 0x80 - FAN_MOVE_SELF = 0x800 - 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_FID = 0x200 - 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_DISABLE_NOEXEC = 0x10 - 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_BINDTOIFINDEX = 0x3e - 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_RCVTIMEO_NEW = 0x42 - SO_RCVTIMEO_OLD = 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_SNDTIMEO_NEW = 0x43 - SO_SNDTIMEO_OLD = 0x1005 - SO_STYLE = 0x1008 - SO_TIMESTAMP = 0x1d - SO_TIMESTAMPING = 0x25 - SO_TIMESTAMPING_NEW = 0x41 - SO_TIMESTAMPING_OLD = 0x25 - SO_TIMESTAMPNS = 0x23 - SO_TIMESTAMPNS_NEW = 0x40 - SO_TIMESTAMPNS_OLD = 0x23 - SO_TIMESTAMP_NEW = 0x3f - SO_TIMESTAMP_OLD = 0x1d - 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_BPF_IW = 0x3e9 - TCP_BPF_SNDCWND_CLAMP = 0x3ea - 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_IOCRPEB = 0x80046f04 - UBI_IOCRSVOL = 0x800c6f02 - UBI_IOCSETVOLPROP = 0x80104f06 - UBI_IOCSPEB = 0x80046f05 - 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_PACKET_HEADROOM = 0x100 - 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go deleted file mode 100644 index f63ff6523..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ /dev/null @@ -1,2941 +0,0 @@ -// 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_ALU64 = 0x7 - BPF_AND = 0x50 - BPF_ANY = 0x0 - BPF_ARSH = 0xc0 - BPF_B = 0x10 - BPF_BUILD_ID_SIZE = 0x14 - BPF_CALL = 0x80 - BPF_DEVCG_ACC_MKNOD = 0x1 - BPF_DEVCG_ACC_READ = 0x2 - BPF_DEVCG_ACC_WRITE = 0x4 - BPF_DEVCG_DEV_BLOCK = 0x1 - BPF_DEVCG_DEV_CHAR = 0x2 - BPF_DIV = 0x30 - BPF_DW = 0x18 - BPF_END = 0xd0 - BPF_EXIST = 0x2 - BPF_EXIT = 0x90 - BPF_FROM_BE = 0x8 - BPF_FROM_LE = 0x0 - BPF_FS_MAGIC = 0xcafe4a11 - BPF_F_ALLOW_MULTI = 0x2 - BPF_F_ALLOW_OVERRIDE = 0x1 - BPF_F_ANY_ALIGNMENT = 0x2 - BPF_F_CTXLEN_MASK = 0xfffff00000000 - BPF_F_CURRENT_CPU = 0xffffffff - BPF_F_CURRENT_NETNS = -0x1 - BPF_F_DONT_FRAGMENT = 0x4 - BPF_F_FAST_STACK_CMP = 0x200 - BPF_F_HDR_FIELD_MASK = 0xf - BPF_F_INDEX_MASK = 0xffffffff - BPF_F_INGRESS = 0x1 - BPF_F_INVALIDATE_HASH = 0x2 - BPF_F_MARK_ENFORCE = 0x40 - BPF_F_MARK_MANGLED_0 = 0x20 - BPF_F_NO_COMMON_LRU = 0x2 - BPF_F_NO_PREALLOC = 0x1 - BPF_F_NUMA_NODE = 0x4 - BPF_F_PSEUDO_HDR = 0x10 - BPF_F_QUERY_EFFECTIVE = 0x1 - BPF_F_RDONLY = 0x8 - BPF_F_RECOMPUTE_CSUM = 0x1 - BPF_F_REUSE_STACKID = 0x400 - BPF_F_SEQ_NUMBER = 0x8 - BPF_F_SKIP_FIELD_MASK = 0xff - BPF_F_STACK_BUILD_ID = 0x20 - BPF_F_STRICT_ALIGNMENT = 0x1 - BPF_F_TUNINFO_IPV6 = 0x1 - BPF_F_USER_BUILD_ID = 0x800 - BPF_F_USER_STACK = 0x100 - BPF_F_WRONLY = 0x10 - BPF_F_ZERO_CSUM_TX = 0x2 - BPF_F_ZERO_SEED = 0x40 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JLE = 0xb0 - BPF_JLT = 0xa0 - BPF_JMP = 0x5 - BPF_JNE = 0x50 - BPF_JSET = 0x40 - BPF_JSGE = 0x70 - BPF_JSGT = 0x60 - BPF_JSLE = 0xd0 - BPF_JSLT = 0xc0 - 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_MOV = 0xb0 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_NET_OFF = -0x100000 - BPF_NOEXIST = 0x1 - BPF_OBJ_NAME_LEN = 0x10 - BPF_OR = 0x40 - BPF_PSEUDO_CALL = 0x1 - BPF_PSEUDO_MAP_FD = 0x1 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 - BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 - BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 - BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAG_SIZE = 0x8 - BPF_TAX = 0x0 - BPF_TO_BE = 0x8 - BPF_TO_LE = 0x0 - BPF_TXA = 0x80 - BPF_W = 0x0 - BPF_X = 0x8 - BPF_XADD = 0xc0 - 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_ATTRIB = 0x4 - 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_CREATE = 0x100 - FAN_DELETE = 0x200 - FAN_DELETE_SELF = 0x400 - FAN_DENY = 0x2 - FAN_ENABLE_AUDIT = 0x40 - FAN_EVENT_INFO_TYPE_FID = 0x1 - 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_MOVE = 0xc0 - FAN_MOVED_FROM = 0x40 - FAN_MOVED_TO = 0x80 - FAN_MOVE_SELF = 0x800 - 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_FID = 0x200 - 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_DISABLE_NOEXEC = 0x10 - 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_BINDTOIFINDEX = 0x3e - 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_RCVTIMEO_NEW = 0x42 - SO_RCVTIMEO_OLD = 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_SNDTIMEO_NEW = 0x43 - SO_SNDTIMEO_OLD = 0x1005 - SO_STYLE = 0x1008 - SO_TIMESTAMP = 0x1d - SO_TIMESTAMPING = 0x25 - SO_TIMESTAMPING_NEW = 0x41 - SO_TIMESTAMPING_OLD = 0x25 - SO_TIMESTAMPNS = 0x23 - SO_TIMESTAMPNS_NEW = 0x40 - SO_TIMESTAMPNS_OLD = 0x23 - SO_TIMESTAMP_NEW = 0x3f - SO_TIMESTAMP_OLD = 0x1d - 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_BPF_IW = 0x3e9 - TCP_BPF_SNDCWND_CLAMP = 0x3ea - 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_IOCRPEB = 0x80046f04 - UBI_IOCRSVOL = 0x800c6f02 - UBI_IOCSETVOLPROP = 0x80104f06 - UBI_IOCSPEB = 0x80046f05 - 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_PACKET_HEADROOM = 0x100 - 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go deleted file mode 100644 index 1c8aea8b3..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ /dev/null @@ -1,2941 +0,0 @@ -// 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_ALU64 = 0x7 - BPF_AND = 0x50 - BPF_ANY = 0x0 - BPF_ARSH = 0xc0 - BPF_B = 0x10 - BPF_BUILD_ID_SIZE = 0x14 - BPF_CALL = 0x80 - BPF_DEVCG_ACC_MKNOD = 0x1 - BPF_DEVCG_ACC_READ = 0x2 - BPF_DEVCG_ACC_WRITE = 0x4 - BPF_DEVCG_DEV_BLOCK = 0x1 - BPF_DEVCG_DEV_CHAR = 0x2 - BPF_DIV = 0x30 - BPF_DW = 0x18 - BPF_END = 0xd0 - BPF_EXIST = 0x2 - BPF_EXIT = 0x90 - BPF_FROM_BE = 0x8 - BPF_FROM_LE = 0x0 - BPF_FS_MAGIC = 0xcafe4a11 - BPF_F_ALLOW_MULTI = 0x2 - BPF_F_ALLOW_OVERRIDE = 0x1 - BPF_F_ANY_ALIGNMENT = 0x2 - BPF_F_CTXLEN_MASK = 0xfffff00000000 - BPF_F_CURRENT_CPU = 0xffffffff - BPF_F_CURRENT_NETNS = -0x1 - BPF_F_DONT_FRAGMENT = 0x4 - BPF_F_FAST_STACK_CMP = 0x200 - BPF_F_HDR_FIELD_MASK = 0xf - BPF_F_INDEX_MASK = 0xffffffff - BPF_F_INGRESS = 0x1 - BPF_F_INVALIDATE_HASH = 0x2 - BPF_F_MARK_ENFORCE = 0x40 - BPF_F_MARK_MANGLED_0 = 0x20 - BPF_F_NO_COMMON_LRU = 0x2 - BPF_F_NO_PREALLOC = 0x1 - BPF_F_NUMA_NODE = 0x4 - BPF_F_PSEUDO_HDR = 0x10 - BPF_F_QUERY_EFFECTIVE = 0x1 - BPF_F_RDONLY = 0x8 - BPF_F_RECOMPUTE_CSUM = 0x1 - BPF_F_REUSE_STACKID = 0x400 - BPF_F_SEQ_NUMBER = 0x8 - BPF_F_SKIP_FIELD_MASK = 0xff - BPF_F_STACK_BUILD_ID = 0x20 - BPF_F_STRICT_ALIGNMENT = 0x1 - BPF_F_TUNINFO_IPV6 = 0x1 - BPF_F_USER_BUILD_ID = 0x800 - BPF_F_USER_STACK = 0x100 - BPF_F_WRONLY = 0x10 - BPF_F_ZERO_CSUM_TX = 0x2 - BPF_F_ZERO_SEED = 0x40 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JLE = 0xb0 - BPF_JLT = 0xa0 - BPF_JMP = 0x5 - BPF_JNE = 0x50 - BPF_JSET = 0x40 - BPF_JSGE = 0x70 - BPF_JSGT = 0x60 - BPF_JSLE = 0xd0 - BPF_JSLT = 0xc0 - 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_MOV = 0xb0 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_NET_OFF = -0x100000 - BPF_NOEXIST = 0x1 - BPF_OBJ_NAME_LEN = 0x10 - BPF_OR = 0x40 - BPF_PSEUDO_CALL = 0x1 - BPF_PSEUDO_MAP_FD = 0x1 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 - BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 - BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 - BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAG_SIZE = 0x8 - BPF_TAX = 0x0 - BPF_TO_BE = 0x8 - BPF_TO_LE = 0x0 - BPF_TXA = 0x80 - BPF_W = 0x0 - BPF_X = 0x8 - BPF_XADD = 0xc0 - 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_ATTRIB = 0x4 - 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_CREATE = 0x100 - FAN_DELETE = 0x200 - FAN_DELETE_SELF = 0x400 - FAN_DENY = 0x2 - FAN_ENABLE_AUDIT = 0x40 - FAN_EVENT_INFO_TYPE_FID = 0x1 - 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_MOVE = 0xc0 - FAN_MOVED_FROM = 0x40 - FAN_MOVED_TO = 0x80 - FAN_MOVE_SELF = 0x800 - 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_FID = 0x200 - 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_DISABLE_NOEXEC = 0x10 - 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_BINDTOIFINDEX = 0x3e - 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_RCVTIMEO_NEW = 0x42 - SO_RCVTIMEO_OLD = 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_SNDTIMEO_NEW = 0x43 - SO_SNDTIMEO_OLD = 0x1005 - SO_STYLE = 0x1008 - SO_TIMESTAMP = 0x1d - SO_TIMESTAMPING = 0x25 - SO_TIMESTAMPING_NEW = 0x41 - SO_TIMESTAMPING_OLD = 0x25 - SO_TIMESTAMPNS = 0x23 - SO_TIMESTAMPNS_NEW = 0x40 - SO_TIMESTAMPNS_OLD = 0x23 - SO_TIMESTAMP_NEW = 0x3f - SO_TIMESTAMP_OLD = 0x1d - 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_BPF_IW = 0x3e9 - TCP_BPF_SNDCWND_CLAMP = 0x3ea - 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_IOCRPEB = 0x80046f04 - UBI_IOCRSVOL = 0x800c6f02 - UBI_IOCSETVOLPROP = 0x80104f06 - UBI_IOCSPEB = 0x80046f05 - 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_PACKET_HEADROOM = 0x100 - 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go deleted file mode 100644 index 9e310b2e8..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ /dev/null @@ -1,2996 +0,0 @@ -// 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_ALU64 = 0x7 - BPF_AND = 0x50 - BPF_ANY = 0x0 - BPF_ARSH = 0xc0 - BPF_B = 0x10 - BPF_BUILD_ID_SIZE = 0x14 - BPF_CALL = 0x80 - BPF_DEVCG_ACC_MKNOD = 0x1 - BPF_DEVCG_ACC_READ = 0x2 - BPF_DEVCG_ACC_WRITE = 0x4 - BPF_DEVCG_DEV_BLOCK = 0x1 - BPF_DEVCG_DEV_CHAR = 0x2 - BPF_DIV = 0x30 - BPF_DW = 0x18 - BPF_END = 0xd0 - BPF_EXIST = 0x2 - BPF_EXIT = 0x90 - BPF_FROM_BE = 0x8 - BPF_FROM_LE = 0x0 - BPF_FS_MAGIC = 0xcafe4a11 - BPF_F_ALLOW_MULTI = 0x2 - BPF_F_ALLOW_OVERRIDE = 0x1 - BPF_F_ANY_ALIGNMENT = 0x2 - BPF_F_CTXLEN_MASK = 0xfffff00000000 - BPF_F_CURRENT_CPU = 0xffffffff - BPF_F_CURRENT_NETNS = -0x1 - BPF_F_DONT_FRAGMENT = 0x4 - BPF_F_FAST_STACK_CMP = 0x200 - BPF_F_HDR_FIELD_MASK = 0xf - BPF_F_INDEX_MASK = 0xffffffff - BPF_F_INGRESS = 0x1 - BPF_F_INVALIDATE_HASH = 0x2 - BPF_F_MARK_ENFORCE = 0x40 - BPF_F_MARK_MANGLED_0 = 0x20 - BPF_F_NO_COMMON_LRU = 0x2 - BPF_F_NO_PREALLOC = 0x1 - BPF_F_NUMA_NODE = 0x4 - BPF_F_PSEUDO_HDR = 0x10 - BPF_F_QUERY_EFFECTIVE = 0x1 - BPF_F_RDONLY = 0x8 - BPF_F_RECOMPUTE_CSUM = 0x1 - BPF_F_REUSE_STACKID = 0x400 - BPF_F_SEQ_NUMBER = 0x8 - BPF_F_SKIP_FIELD_MASK = 0xff - BPF_F_STACK_BUILD_ID = 0x20 - BPF_F_STRICT_ALIGNMENT = 0x1 - BPF_F_TUNINFO_IPV6 = 0x1 - BPF_F_USER_BUILD_ID = 0x800 - BPF_F_USER_STACK = 0x100 - BPF_F_WRONLY = 0x10 - BPF_F_ZERO_CSUM_TX = 0x2 - BPF_F_ZERO_SEED = 0x40 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JLE = 0xb0 - BPF_JLT = 0xa0 - BPF_JMP = 0x5 - BPF_JNE = 0x50 - BPF_JSET = 0x40 - BPF_JSGE = 0x70 - BPF_JSGT = 0x60 - BPF_JSLE = 0xd0 - BPF_JSLT = 0xc0 - 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_MOV = 0xb0 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_NET_OFF = -0x100000 - BPF_NOEXIST = 0x1 - BPF_OBJ_NAME_LEN = 0x10 - BPF_OR = 0x40 - BPF_PSEUDO_CALL = 0x1 - BPF_PSEUDO_MAP_FD = 0x1 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 - BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 - BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 - BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAG_SIZE = 0x8 - BPF_TAX = 0x0 - BPF_TO_BE = 0x8 - BPF_TO_LE = 0x0 - BPF_TXA = 0x80 - BPF_W = 0x0 - BPF_X = 0x8 - BPF_XADD = 0xc0 - 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_ATTRIB = 0x4 - 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_CREATE = 0x100 - FAN_DELETE = 0x200 - FAN_DELETE_SELF = 0x400 - FAN_DENY = 0x2 - FAN_ENABLE_AUDIT = 0x40 - FAN_EVENT_INFO_TYPE_FID = 0x1 - 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_MOVE = 0xc0 - FAN_MOVED_FROM = 0x40 - FAN_MOVED_TO = 0x80 - FAN_MOVE_SELF = 0x800 - 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_FID = 0x200 - 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_DISABLE_NOEXEC = 0x10 - 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_BINDTOIFINDEX = 0x3e - 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_RCVTIMEO_NEW = 0x42 - SO_RCVTIMEO_OLD = 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_SNDTIMEO_NEW = 0x43 - SO_SNDTIMEO_OLD = 0x13 - SO_TIMESTAMP = 0x1d - SO_TIMESTAMPING = 0x25 - SO_TIMESTAMPING_NEW = 0x41 - SO_TIMESTAMPING_OLD = 0x25 - SO_TIMESTAMPNS = 0x23 - SO_TIMESTAMPNS_NEW = 0x40 - SO_TIMESTAMPNS_OLD = 0x23 - SO_TIMESTAMP_NEW = 0x3f - SO_TIMESTAMP_OLD = 0x1d - 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_BPF_IW = 0x3e9 - TCP_BPF_SNDCWND_CLAMP = 0x3ea - 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_IOCRPEB = 0x80046f04 - UBI_IOCRSVOL = 0x800c6f02 - UBI_IOCSETVOLPROP = 0x80104f06 - UBI_IOCSPEB = 0x80046f05 - 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_PACKET_HEADROOM = 0x100 - 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go deleted file mode 100644 index e3f06606b..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ /dev/null @@ -1,2996 +0,0 @@ -// 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_ALU64 = 0x7 - BPF_AND = 0x50 - BPF_ANY = 0x0 - BPF_ARSH = 0xc0 - BPF_B = 0x10 - BPF_BUILD_ID_SIZE = 0x14 - BPF_CALL = 0x80 - BPF_DEVCG_ACC_MKNOD = 0x1 - BPF_DEVCG_ACC_READ = 0x2 - BPF_DEVCG_ACC_WRITE = 0x4 - BPF_DEVCG_DEV_BLOCK = 0x1 - BPF_DEVCG_DEV_CHAR = 0x2 - BPF_DIV = 0x30 - BPF_DW = 0x18 - BPF_END = 0xd0 - BPF_EXIST = 0x2 - BPF_EXIT = 0x90 - BPF_FROM_BE = 0x8 - BPF_FROM_LE = 0x0 - BPF_FS_MAGIC = 0xcafe4a11 - BPF_F_ALLOW_MULTI = 0x2 - BPF_F_ALLOW_OVERRIDE = 0x1 - BPF_F_ANY_ALIGNMENT = 0x2 - BPF_F_CTXLEN_MASK = 0xfffff00000000 - BPF_F_CURRENT_CPU = 0xffffffff - BPF_F_CURRENT_NETNS = -0x1 - BPF_F_DONT_FRAGMENT = 0x4 - BPF_F_FAST_STACK_CMP = 0x200 - BPF_F_HDR_FIELD_MASK = 0xf - BPF_F_INDEX_MASK = 0xffffffff - BPF_F_INGRESS = 0x1 - BPF_F_INVALIDATE_HASH = 0x2 - BPF_F_MARK_ENFORCE = 0x40 - BPF_F_MARK_MANGLED_0 = 0x20 - BPF_F_NO_COMMON_LRU = 0x2 - BPF_F_NO_PREALLOC = 0x1 - BPF_F_NUMA_NODE = 0x4 - BPF_F_PSEUDO_HDR = 0x10 - BPF_F_QUERY_EFFECTIVE = 0x1 - BPF_F_RDONLY = 0x8 - BPF_F_RECOMPUTE_CSUM = 0x1 - BPF_F_REUSE_STACKID = 0x400 - BPF_F_SEQ_NUMBER = 0x8 - BPF_F_SKIP_FIELD_MASK = 0xff - BPF_F_STACK_BUILD_ID = 0x20 - BPF_F_STRICT_ALIGNMENT = 0x1 - BPF_F_TUNINFO_IPV6 = 0x1 - BPF_F_USER_BUILD_ID = 0x800 - BPF_F_USER_STACK = 0x100 - BPF_F_WRONLY = 0x10 - BPF_F_ZERO_CSUM_TX = 0x2 - BPF_F_ZERO_SEED = 0x40 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JLE = 0xb0 - BPF_JLT = 0xa0 - BPF_JMP = 0x5 - BPF_JNE = 0x50 - BPF_JSET = 0x40 - BPF_JSGE = 0x70 - BPF_JSGT = 0x60 - BPF_JSLE = 0xd0 - BPF_JSLT = 0xc0 - 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_MOV = 0xb0 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_NET_OFF = -0x100000 - BPF_NOEXIST = 0x1 - BPF_OBJ_NAME_LEN = 0x10 - BPF_OR = 0x40 - BPF_PSEUDO_CALL = 0x1 - BPF_PSEUDO_MAP_FD = 0x1 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 - BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 - BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 - BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAG_SIZE = 0x8 - BPF_TAX = 0x0 - BPF_TO_BE = 0x8 - BPF_TO_LE = 0x0 - BPF_TXA = 0x80 - BPF_W = 0x0 - BPF_X = 0x8 - BPF_XADD = 0xc0 - 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_ATTRIB = 0x4 - 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_CREATE = 0x100 - FAN_DELETE = 0x200 - FAN_DELETE_SELF = 0x400 - FAN_DENY = 0x2 - FAN_ENABLE_AUDIT = 0x40 - FAN_EVENT_INFO_TYPE_FID = 0x1 - 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_MOVE = 0xc0 - FAN_MOVED_FROM = 0x40 - FAN_MOVED_TO = 0x80 - FAN_MOVE_SELF = 0x800 - 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_FID = 0x200 - 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_DISABLE_NOEXEC = 0x10 - 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_BINDTOIFINDEX = 0x3e - 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_RCVTIMEO_NEW = 0x42 - SO_RCVTIMEO_OLD = 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_SNDTIMEO_NEW = 0x43 - SO_SNDTIMEO_OLD = 0x13 - SO_TIMESTAMP = 0x1d - SO_TIMESTAMPING = 0x25 - SO_TIMESTAMPING_NEW = 0x41 - SO_TIMESTAMPING_OLD = 0x25 - SO_TIMESTAMPNS = 0x23 - SO_TIMESTAMPNS_NEW = 0x40 - SO_TIMESTAMPNS_OLD = 0x23 - SO_TIMESTAMP_NEW = 0x3f - SO_TIMESTAMP_OLD = 0x1d - 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_BPF_IW = 0x3e9 - TCP_BPF_SNDCWND_CLAMP = 0x3ea - 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_IOCRPEB = 0x80046f04 - UBI_IOCRSVOL = 0x800c6f02 - UBI_IOCSETVOLPROP = 0x80104f06 - UBI_IOCSPEB = 0x80046f05 - 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_PACKET_HEADROOM = 0x100 - 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go deleted file mode 100644 index 9b36643b2..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +++ /dev/null @@ -1,2921 +0,0 @@ -// 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_ALU64 = 0x7 - BPF_AND = 0x50 - BPF_ANY = 0x0 - BPF_ARSH = 0xc0 - BPF_B = 0x10 - BPF_BUILD_ID_SIZE = 0x14 - BPF_CALL = 0x80 - BPF_DEVCG_ACC_MKNOD = 0x1 - BPF_DEVCG_ACC_READ = 0x2 - BPF_DEVCG_ACC_WRITE = 0x4 - BPF_DEVCG_DEV_BLOCK = 0x1 - BPF_DEVCG_DEV_CHAR = 0x2 - BPF_DIV = 0x30 - BPF_DW = 0x18 - BPF_END = 0xd0 - BPF_EXIST = 0x2 - BPF_EXIT = 0x90 - BPF_FROM_BE = 0x8 - BPF_FROM_LE = 0x0 - BPF_FS_MAGIC = 0xcafe4a11 - BPF_F_ALLOW_MULTI = 0x2 - BPF_F_ALLOW_OVERRIDE = 0x1 - BPF_F_ANY_ALIGNMENT = 0x2 - BPF_F_CTXLEN_MASK = 0xfffff00000000 - BPF_F_CURRENT_CPU = 0xffffffff - BPF_F_CURRENT_NETNS = -0x1 - BPF_F_DONT_FRAGMENT = 0x4 - BPF_F_FAST_STACK_CMP = 0x200 - BPF_F_HDR_FIELD_MASK = 0xf - BPF_F_INDEX_MASK = 0xffffffff - BPF_F_INGRESS = 0x1 - BPF_F_INVALIDATE_HASH = 0x2 - BPF_F_MARK_ENFORCE = 0x40 - BPF_F_MARK_MANGLED_0 = 0x20 - BPF_F_NO_COMMON_LRU = 0x2 - BPF_F_NO_PREALLOC = 0x1 - BPF_F_NUMA_NODE = 0x4 - BPF_F_PSEUDO_HDR = 0x10 - BPF_F_QUERY_EFFECTIVE = 0x1 - BPF_F_RDONLY = 0x8 - BPF_F_RECOMPUTE_CSUM = 0x1 - BPF_F_REUSE_STACKID = 0x400 - BPF_F_SEQ_NUMBER = 0x8 - BPF_F_SKIP_FIELD_MASK = 0xff - BPF_F_STACK_BUILD_ID = 0x20 - BPF_F_STRICT_ALIGNMENT = 0x1 - BPF_F_TUNINFO_IPV6 = 0x1 - BPF_F_USER_BUILD_ID = 0x800 - BPF_F_USER_STACK = 0x100 - BPF_F_WRONLY = 0x10 - BPF_F_ZERO_CSUM_TX = 0x2 - BPF_F_ZERO_SEED = 0x40 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JLE = 0xb0 - BPF_JLT = 0xa0 - BPF_JMP = 0x5 - BPF_JNE = 0x50 - BPF_JSET = 0x40 - BPF_JSGE = 0x70 - BPF_JSGT = 0x60 - BPF_JSLE = 0xd0 - BPF_JSLT = 0xc0 - 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_MOV = 0xb0 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_NET_OFF = -0x100000 - BPF_NOEXIST = 0x1 - BPF_OBJ_NAME_LEN = 0x10 - BPF_OR = 0x40 - BPF_PSEUDO_CALL = 0x1 - BPF_PSEUDO_MAP_FD = 0x1 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 - BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 - BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 - BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAG_SIZE = 0x8 - BPF_TAX = 0x0 - BPF_TO_BE = 0x8 - BPF_TO_LE = 0x0 - BPF_TXA = 0x80 - BPF_W = 0x0 - BPF_X = 0x8 - BPF_XADD = 0xc0 - 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_ATTRIB = 0x4 - 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_CREATE = 0x100 - FAN_DELETE = 0x200 - FAN_DELETE_SELF = 0x400 - FAN_DENY = 0x2 - FAN_ENABLE_AUDIT = 0x40 - FAN_EVENT_INFO_TYPE_FID = 0x1 - 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_MOVE = 0xc0 - FAN_MOVED_FROM = 0x40 - FAN_MOVED_TO = 0x80 - FAN_MOVE_SELF = 0x800 - 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_FID = 0x200 - 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_DISABLE_NOEXEC = 0x10 - 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_BINDTOIFINDEX = 0x3e - 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_RCVTIMEO_NEW = 0x42 - SO_RCVTIMEO_OLD = 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_SNDTIMEO_NEW = 0x43 - SO_SNDTIMEO_OLD = 0x15 - SO_TIMESTAMP = 0x1d - SO_TIMESTAMPING = 0x25 - SO_TIMESTAMPING_NEW = 0x41 - SO_TIMESTAMPING_OLD = 0x25 - SO_TIMESTAMPNS = 0x23 - SO_TIMESTAMPNS_NEW = 0x40 - SO_TIMESTAMPNS_OLD = 0x23 - SO_TIMESTAMP_NEW = 0x3f - SO_TIMESTAMP_OLD = 0x1d - 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_BPF_IW = 0x3e9 - TCP_BPF_SNDCWND_CLAMP = 0x3ea - 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_IOCRPEB = 0x40046f04 - UBI_IOCRSVOL = 0x400c6f02 - UBI_IOCSETVOLPROP = 0x40104f06 - UBI_IOCSPEB = 0x40046f05 - 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_PACKET_HEADROOM = 0x100 - 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go deleted file mode 100644 index 67134be21..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ /dev/null @@ -1,2994 +0,0 @@ -// 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_ALU64 = 0x7 - BPF_AND = 0x50 - BPF_ANY = 0x0 - BPF_ARSH = 0xc0 - BPF_B = 0x10 - BPF_BUILD_ID_SIZE = 0x14 - BPF_CALL = 0x80 - BPF_DEVCG_ACC_MKNOD = 0x1 - BPF_DEVCG_ACC_READ = 0x2 - BPF_DEVCG_ACC_WRITE = 0x4 - BPF_DEVCG_DEV_BLOCK = 0x1 - BPF_DEVCG_DEV_CHAR = 0x2 - BPF_DIV = 0x30 - BPF_DW = 0x18 - BPF_END = 0xd0 - BPF_EXIST = 0x2 - BPF_EXIT = 0x90 - BPF_FROM_BE = 0x8 - BPF_FROM_LE = 0x0 - BPF_FS_MAGIC = 0xcafe4a11 - BPF_F_ALLOW_MULTI = 0x2 - BPF_F_ALLOW_OVERRIDE = 0x1 - BPF_F_ANY_ALIGNMENT = 0x2 - BPF_F_CTXLEN_MASK = 0xfffff00000000 - BPF_F_CURRENT_CPU = 0xffffffff - BPF_F_CURRENT_NETNS = -0x1 - BPF_F_DONT_FRAGMENT = 0x4 - BPF_F_FAST_STACK_CMP = 0x200 - BPF_F_HDR_FIELD_MASK = 0xf - BPF_F_INDEX_MASK = 0xffffffff - BPF_F_INGRESS = 0x1 - BPF_F_INVALIDATE_HASH = 0x2 - BPF_F_MARK_ENFORCE = 0x40 - BPF_F_MARK_MANGLED_0 = 0x20 - BPF_F_NO_COMMON_LRU = 0x2 - BPF_F_NO_PREALLOC = 0x1 - BPF_F_NUMA_NODE = 0x4 - BPF_F_PSEUDO_HDR = 0x10 - BPF_F_QUERY_EFFECTIVE = 0x1 - BPF_F_RDONLY = 0x8 - BPF_F_RECOMPUTE_CSUM = 0x1 - BPF_F_REUSE_STACKID = 0x400 - BPF_F_SEQ_NUMBER = 0x8 - BPF_F_SKIP_FIELD_MASK = 0xff - BPF_F_STACK_BUILD_ID = 0x20 - BPF_F_STRICT_ALIGNMENT = 0x1 - BPF_F_TUNINFO_IPV6 = 0x1 - BPF_F_USER_BUILD_ID = 0x800 - BPF_F_USER_STACK = 0x100 - BPF_F_WRONLY = 0x10 - BPF_F_ZERO_CSUM_TX = 0x2 - BPF_F_ZERO_SEED = 0x40 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JLE = 0xb0 - BPF_JLT = 0xa0 - BPF_JMP = 0x5 - BPF_JNE = 0x50 - BPF_JSET = 0x40 - BPF_JSGE = 0x70 - BPF_JSGT = 0x60 - BPF_JSLE = 0xd0 - BPF_JSLT = 0xc0 - 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_MOV = 0xb0 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_NET_OFF = -0x100000 - BPF_NOEXIST = 0x1 - BPF_OBJ_NAME_LEN = 0x10 - BPF_OR = 0x40 - BPF_PSEUDO_CALL = 0x1 - BPF_PSEUDO_MAP_FD = 0x1 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 - BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 - BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 - BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAG_SIZE = 0x8 - BPF_TAX = 0x0 - BPF_TO_BE = 0x8 - BPF_TO_LE = 0x0 - BPF_TXA = 0x80 - BPF_W = 0x0 - BPF_X = 0x8 - BPF_XADD = 0xc0 - 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_ATTRIB = 0x4 - 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_CREATE = 0x100 - FAN_DELETE = 0x200 - FAN_DELETE_SELF = 0x400 - FAN_DENY = 0x2 - FAN_ENABLE_AUDIT = 0x40 - FAN_EVENT_INFO_TYPE_FID = 0x1 - 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_MOVE = 0xc0 - FAN_MOVED_FROM = 0x40 - FAN_MOVED_TO = 0x80 - FAN_MOVE_SELF = 0x800 - 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_FID = 0x200 - 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_DISABLE_NOEXEC = 0x10 - 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_BINDTOIFINDEX = 0x3e - 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_RCVTIMEO_NEW = 0x42 - SO_RCVTIMEO_OLD = 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_SNDTIMEO_NEW = 0x43 - SO_SNDTIMEO_OLD = 0x15 - SO_TIMESTAMP = 0x1d - SO_TIMESTAMPING = 0x25 - SO_TIMESTAMPING_NEW = 0x41 - SO_TIMESTAMPING_OLD = 0x25 - SO_TIMESTAMPNS = 0x23 - SO_TIMESTAMPNS_NEW = 0x40 - SO_TIMESTAMPNS_OLD = 0x23 - SO_TIMESTAMP_NEW = 0x3f - SO_TIMESTAMP_OLD = 0x1d - 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_BPF_IW = 0x3e9 - TCP_BPF_SNDCWND_CLAMP = 0x3ea - 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_IOCRPEB = 0x40046f04 - UBI_IOCRSVOL = 0x400c6f02 - UBI_IOCSETVOLPROP = 0x40104f06 - UBI_IOCSPEB = 0x40046f05 - 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_PACKET_HEADROOM = 0x100 - 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go deleted file mode 100644 index 100851b4b..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +++ /dev/null @@ -1,2990 +0,0 @@ -// 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_ALU64 = 0x7 - BPF_AND = 0x50 - BPF_ANY = 0x0 - BPF_ARSH = 0xc0 - BPF_B = 0x10 - BPF_BUILD_ID_SIZE = 0x14 - BPF_CALL = 0x80 - BPF_DEVCG_ACC_MKNOD = 0x1 - BPF_DEVCG_ACC_READ = 0x2 - BPF_DEVCG_ACC_WRITE = 0x4 - BPF_DEVCG_DEV_BLOCK = 0x1 - BPF_DEVCG_DEV_CHAR = 0x2 - BPF_DIV = 0x30 - BPF_DW = 0x18 - BPF_END = 0xd0 - BPF_EXIST = 0x2 - BPF_EXIT = 0x90 - BPF_FROM_BE = 0x8 - BPF_FROM_LE = 0x0 - BPF_FS_MAGIC = 0xcafe4a11 - BPF_F_ALLOW_MULTI = 0x2 - BPF_F_ALLOW_OVERRIDE = 0x1 - BPF_F_ANY_ALIGNMENT = 0x2 - BPF_F_CTXLEN_MASK = 0xfffff00000000 - BPF_F_CURRENT_CPU = 0xffffffff - BPF_F_CURRENT_NETNS = -0x1 - BPF_F_DONT_FRAGMENT = 0x4 - BPF_F_FAST_STACK_CMP = 0x200 - BPF_F_HDR_FIELD_MASK = 0xf - BPF_F_INDEX_MASK = 0xffffffff - BPF_F_INGRESS = 0x1 - BPF_F_INVALIDATE_HASH = 0x2 - BPF_F_MARK_ENFORCE = 0x40 - BPF_F_MARK_MANGLED_0 = 0x20 - BPF_F_NO_COMMON_LRU = 0x2 - BPF_F_NO_PREALLOC = 0x1 - BPF_F_NUMA_NODE = 0x4 - BPF_F_PSEUDO_HDR = 0x10 - BPF_F_QUERY_EFFECTIVE = 0x1 - BPF_F_RDONLY = 0x8 - BPF_F_RECOMPUTE_CSUM = 0x1 - BPF_F_REUSE_STACKID = 0x400 - BPF_F_SEQ_NUMBER = 0x8 - BPF_F_SKIP_FIELD_MASK = 0xff - BPF_F_STACK_BUILD_ID = 0x20 - BPF_F_STRICT_ALIGNMENT = 0x1 - BPF_F_TUNINFO_IPV6 = 0x1 - BPF_F_USER_BUILD_ID = 0x800 - BPF_F_USER_STACK = 0x100 - BPF_F_WRONLY = 0x10 - BPF_F_ZERO_CSUM_TX = 0x2 - BPF_F_ZERO_SEED = 0x40 - BPF_H = 0x8 - BPF_IMM = 0x0 - BPF_IND = 0x40 - BPF_JA = 0x0 - BPF_JEQ = 0x10 - BPF_JGE = 0x30 - BPF_JGT = 0x20 - BPF_JLE = 0xb0 - BPF_JLT = 0xa0 - BPF_JMP = 0x5 - BPF_JNE = 0x50 - BPF_JSET = 0x40 - BPF_JSGE = 0x70 - BPF_JSGT = 0x60 - BPF_JSLE = 0xd0 - BPF_JSLT = 0xc0 - 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_MOV = 0xb0 - BPF_MSH = 0xa0 - BPF_MUL = 0x20 - BPF_NEG = 0x80 - BPF_NET_OFF = -0x100000 - BPF_NOEXIST = 0x1 - BPF_OBJ_NAME_LEN = 0x10 - BPF_OR = 0x40 - BPF_PSEUDO_CALL = 0x1 - BPF_PSEUDO_MAP_FD = 0x1 - BPF_RET = 0x6 - BPF_RSH = 0x70 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 - BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 - BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 - BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 - BPF_ST = 0x2 - BPF_STX = 0x3 - BPF_SUB = 0x10 - BPF_TAG_SIZE = 0x8 - BPF_TAX = 0x0 - BPF_TO_BE = 0x8 - BPF_TO_LE = 0x0 - BPF_TXA = 0x80 - BPF_W = 0x0 - BPF_X = 0x8 - BPF_XADD = 0xc0 - 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_ATTRIB = 0x4 - 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_CREATE = 0x100 - FAN_DELETE = 0x200 - FAN_DELETE_SELF = 0x400 - FAN_DENY = 0x2 - FAN_ENABLE_AUDIT = 0x40 - FAN_EVENT_INFO_TYPE_FID = 0x1 - 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_MOVE = 0xc0 - FAN_MOVED_FROM = 0x40 - FAN_MOVED_TO = 0x80 - FAN_MOVE_SELF = 0x800 - 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_FID = 0x200 - 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_DISABLE_NOEXEC = 0x10 - 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_BINDTOIFINDEX = 0x41 - 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_RCVTIMEO_NEW = 0x44 - SO_RCVTIMEO_OLD = 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_SNDTIMEO_NEW = 0x45 - SO_SNDTIMEO_OLD = 0x4000 - SO_TIMESTAMP = 0x1d - SO_TIMESTAMPING = 0x23 - SO_TIMESTAMPING_NEW = 0x43 - SO_TIMESTAMPING_OLD = 0x23 - SO_TIMESTAMPNS = 0x21 - SO_TIMESTAMPNS_NEW = 0x42 - SO_TIMESTAMPNS_OLD = 0x21 - SO_TIMESTAMP_NEW = 0x46 - SO_TIMESTAMP_OLD = 0x1d - 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_BPF_IW = 0x3e9 - TCP_BPF_SNDCWND_CLAMP = 0x3ea - 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_IOCRPEB = 0x80046f04 - UBI_IOCRSVOL = 0x800c6f02 - UBI_IOCSETVOLPROP = 0x80104f06 - UBI_IOCSPEB = 0x80046f05 - 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_PACKET_HEADROOM = 0x100 - 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go deleted file mode 100644 index 78cc04ea6..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go +++ /dev/null @@ -1,1772 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go deleted file mode 100644 index 92185e693..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go +++ /dev/null @@ -1,1762 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go deleted file mode 100644 index 373ad4543..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go +++ /dev/null @@ -1,1751 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go deleted file mode 100644 index fb6c60441..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go +++ /dev/null @@ -1,1762 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go deleted file mode 100644 index d8be04518..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go +++ /dev/null @@ -1,1654 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go deleted file mode 100644 index 1f9e8a29e..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go +++ /dev/null @@ -1,1765 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go deleted file mode 100644 index 79d5695c3..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go +++ /dev/null @@ -1,1656 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go deleted file mode 100644 index ec5f92de8..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go +++ /dev/null @@ -1,1789 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go deleted file mode 100644 index 22569db31..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go +++ /dev/null @@ -1,1532 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zptrace386_linux.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zptrace386_linux.go deleted file mode 100644 index 2d21c49e1..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zptrace386_linux.go +++ /dev/null @@ -1,80 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zptracearm_linux.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zptracearm_linux.go deleted file mode 100644 index faf23bbed..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zptracearm_linux.go +++ /dev/null @@ -1,41 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zptracemips_linux.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zptracemips_linux.go deleted file mode 100644 index c431131e6..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zptracemips_linux.go +++ /dev/null @@ -1,50 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zptracemipsle_linux.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zptracemipsle_linux.go deleted file mode 100644 index dc3d6d373..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zptracemipsle_linux.go +++ /dev/null @@ -1,50 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go deleted file mode 100644 index 4a9e99a0e..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go +++ /dev/null @@ -1,1484 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go deleted file mode 100644 index c3371ddc2..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go +++ /dev/null @@ -1,1442 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go deleted file mode 100644 index 4eda72323..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go +++ /dev/null @@ -1,1192 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go deleted file mode 100644 index e5c4cbdd6..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go +++ /dev/null @@ -1,1070 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go deleted file mode 100644 index c4ec7ff87..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go +++ /dev/null @@ -1,1810 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go deleted file mode 100644 index 23346dc68..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go +++ /dev/null @@ -1,2505 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s deleted file mode 100644 index 37b85b4f6..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s +++ /dev/null @@ -1,284 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go deleted file mode 100644 index 2581e8960..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go +++ /dev/null @@ -1,1810 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go deleted file mode 100644 index c142e33e9..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +++ /dev/null @@ -1,2520 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s deleted file mode 100644 index 1a3915197..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +++ /dev/null @@ -1,286 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go deleted file mode 100644 index f8caecef0..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go +++ /dev/null @@ -1,1793 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go deleted file mode 100644 index 01cffbf46..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go +++ /dev/null @@ -1,2483 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s deleted file mode 100644 index 994056f35..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s +++ /dev/null @@ -1,282 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go deleted file mode 100644 index 3fd0f3c85..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go +++ /dev/null @@ -1,1793 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go deleted file mode 100644 index 8f2691dee..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +++ /dev/null @@ -1,2483 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s deleted file mode 100644 index 61dc0d4c1..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +++ /dev/null @@ -1,282 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go deleted file mode 100644 index ae9f1a21e..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go +++ /dev/null @@ -1,1659 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go deleted file mode 100644 index 80903e47b..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +++ /dev/null @@ -1,2015 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go deleted file mode 100644 index cd250ff0e..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +++ /dev/null @@ -1,2015 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go deleted file mode 100644 index 290a9c2cb..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +++ /dev/null @@ -1,2015 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go deleted file mode 100644 index c6df9d2e8..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go +++ /dev/null @@ -1,2015 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go deleted file mode 100644 index feb3c0393..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go +++ /dev/null @@ -1,2246 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go deleted file mode 100644 index fa0cb252a..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +++ /dev/null @@ -1,2413 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go deleted file mode 100644 index 092a91c71..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +++ /dev/null @@ -1,2383 +0,0 @@ -// 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 -} - -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go deleted file mode 100644 index ad9820b59..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +++ /dev/null @@ -1,2270 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go deleted file mode 100644 index c82ce7d29..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +++ /dev/null @@ -1,2426 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go deleted file mode 100644 index d1b77c193..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +++ /dev/null @@ -1,2397 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go deleted file mode 100644 index b8e45f98c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +++ /dev/null @@ -1,2397 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go deleted file mode 100644 index e26c748d4..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +++ /dev/null @@ -1,2426 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go deleted file mode 100644 index 0a958ca0b..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +++ /dev/null @@ -1,2475 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go deleted file mode 100644 index 658f361e7..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +++ /dev/null @@ -1,2475 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go deleted file mode 100644 index daff30039..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go +++ /dev/null @@ -1,2250 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go deleted file mode 100644 index caf6ea866..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +++ /dev/null @@ -1,2245 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go deleted file mode 100644 index 369a04b57..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go +++ /dev/null @@ -1,2408 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go deleted file mode 100644 index 642db7670..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +++ /dev/null @@ -1,1826 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go deleted file mode 100644 index 59585fee3..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +++ /dev/null @@ -1,1826 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go deleted file mode 100644 index 6ec31434b..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +++ /dev/null @@ -1,1826 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go deleted file mode 100644 index 603d14433..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go +++ /dev/null @@ -1,1826 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go deleted file mode 100644 index 6a489fac0..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +++ /dev/null @@ -1,1692 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go deleted file mode 100644 index 30cba4347..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +++ /dev/null @@ -1,1692 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go deleted file mode 100644 index fa1beda33..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +++ /dev/null @@ -1,1692 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go deleted file mode 100644 index eb5899046..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go +++ /dev/null @@ -1,1692 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go deleted file mode 100644 index 5f614760c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +++ /dev/null @@ -1,1953 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go deleted file mode 100644 index 37dcc74c2..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go +++ /dev/null @@ -1,272 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go deleted file mode 100644 index fe6caa6eb..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go +++ /dev/null @@ -1,270 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go deleted file mode 100644 index 6eb8c0b08..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go +++ /dev/null @@ -1,272 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go deleted file mode 100644 index ba4304fd2..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go +++ /dev/null @@ -1,275 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go deleted file mode 100644 index f33614532..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go +++ /dev/null @@ -1,436 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go deleted file mode 100644 index 654dd3da3..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go +++ /dev/null @@ -1,438 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go deleted file mode 100644 index 103a72ed1..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go +++ /dev/null @@ -1,436 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go deleted file mode 100644 index 7ab2130b9..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go +++ /dev/null @@ -1,436 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go deleted file mode 100644 index 464c9a983..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go +++ /dev/null @@ -1,315 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go deleted file mode 100644 index 55c3a3294..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go +++ /dev/null @@ -1,403 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go deleted file mode 100644 index b39be6cb8..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go +++ /dev/null @@ -1,403 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go deleted file mode 100644 index 44ffd4ce5..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go +++ /dev/null @@ -1,403 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go deleted file mode 100644 index 9f21e9550..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go +++ /dev/null @@ -1,395 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go deleted file mode 100644 index 33b6e4d1a..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +++ /dev/null @@ -1,426 +0,0 @@ -// 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 - SYS_SEMGET = 393 - SYS_SEMCTL = 394 - SYS_SHMGET = 395 - SYS_SHMCTL = 396 - SYS_SHMAT = 397 - SYS_SHMDT = 398 - SYS_MSGGET = 399 - SYS_MSGSND = 400 - SYS_MSGRCV = 401 - SYS_MSGCTL = 402 - SYS_CLOCK_GETTIME64 = 403 - SYS_CLOCK_SETTIME64 = 404 - SYS_CLOCK_ADJTIME64 = 405 - SYS_CLOCK_GETRES_TIME64 = 406 - SYS_CLOCK_NANOSLEEP_TIME64 = 407 - SYS_TIMER_GETTIME64 = 408 - SYS_TIMER_SETTIME64 = 409 - SYS_TIMERFD_GETTIME64 = 410 - SYS_TIMERFD_SETTIME64 = 411 - SYS_UTIMENSAT_TIME64 = 412 - SYS_PSELECT6_TIME64 = 413 - SYS_PPOLL_TIME64 = 414 - SYS_IO_PGETEVENTS_TIME64 = 416 - SYS_RECVMMSG_TIME64 = 417 - SYS_MQ_TIMEDSEND_TIME64 = 418 - SYS_MQ_TIMEDRECEIVE_TIME64 = 419 - SYS_SEMTIMEDOP_TIME64 = 420 - SYS_RT_SIGTIMEDWAIT_TIME64 = 421 - SYS_FUTEX_TIME64 = 422 - SYS_SCHED_RR_GET_INTERVAL_TIME64 = 423 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go deleted file mode 100644 index 9ba207847..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +++ /dev/null @@ -1,348 +0,0 @@ -// 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 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go deleted file mode 100644 index 94f68f101..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +++ /dev/null @@ -1,390 +0,0 @@ -// 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 - SYS_MIGRATE_PAGES = 400 - SYS_KEXEC_FILE_LOAD = 401 - SYS_CLOCK_GETTIME64 = 403 - SYS_CLOCK_SETTIME64 = 404 - SYS_CLOCK_ADJTIME64 = 405 - SYS_CLOCK_GETRES_TIME64 = 406 - SYS_CLOCK_NANOSLEEP_TIME64 = 407 - SYS_TIMER_GETTIME64 = 408 - SYS_TIMER_SETTIME64 = 409 - SYS_TIMERFD_GETTIME64 = 410 - SYS_TIMERFD_SETTIME64 = 411 - SYS_UTIMENSAT_TIME64 = 412 - SYS_PSELECT6_TIME64 = 413 - SYS_PPOLL_TIME64 = 414 - SYS_IO_PGETEVENTS_TIME64 = 416 - SYS_RECVMMSG_TIME64 = 417 - SYS_MQ_TIMEDSEND_TIME64 = 418 - SYS_MQ_TIMEDRECEIVE_TIME64 = 419 - SYS_SEMTIMEDOP_TIME64 = 420 - SYS_RT_SIGTIMEDWAIT_TIME64 = 421 - SYS_FUTEX_TIME64 = 422 - SYS_SCHED_RR_GET_INTERVAL_TIME64 = 423 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go deleted file mode 100644 index 15c413516..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +++ /dev/null @@ -1,293 +0,0 @@ -// 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 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go deleted file mode 100644 index 638465b14..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +++ /dev/null @@ -1,411 +0,0 @@ -// 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 - SYS_SEMGET = 4393 - SYS_SEMCTL = 4394 - SYS_SHMGET = 4395 - SYS_SHMCTL = 4396 - SYS_SHMAT = 4397 - SYS_SHMDT = 4398 - SYS_MSGGET = 4399 - SYS_MSGSND = 4400 - SYS_MSGRCV = 4401 - SYS_MSGCTL = 4402 - SYS_CLOCK_GETTIME64 = 4403 - SYS_CLOCK_SETTIME64 = 4404 - SYS_CLOCK_ADJTIME64 = 4405 - SYS_CLOCK_GETRES_TIME64 = 4406 - SYS_CLOCK_NANOSLEEP_TIME64 = 4407 - SYS_TIMER_GETTIME64 = 4408 - SYS_TIMER_SETTIME64 = 4409 - SYS_TIMERFD_GETTIME64 = 4410 - SYS_TIMERFD_SETTIME64 = 4411 - SYS_UTIMENSAT_TIME64 = 4412 - SYS_PSELECT6_TIME64 = 4413 - SYS_PPOLL_TIME64 = 4414 - SYS_IO_PGETEVENTS_TIME64 = 4416 - SYS_RECVMMSG_TIME64 = 4417 - SYS_MQ_TIMEDSEND_TIME64 = 4418 - SYS_MQ_TIMEDRECEIVE_TIME64 = 4419 - SYS_SEMTIMEDOP_TIME64 = 4420 - SYS_RT_SIGTIMEDWAIT_TIME64 = 4421 - SYS_FUTEX_TIME64 = 4422 - SYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423 - SYS_PIDFD_SEND_SIGNAL = 4424 - SYS_IO_URING_SETUP = 4425 - SYS_IO_URING_ENTER = 4426 - SYS_IO_URING_REGISTER = 4427 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go deleted file mode 100644 index 57ec82aac..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +++ /dev/null @@ -1,341 +0,0 @@ -// 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 - SYS_PIDFD_SEND_SIGNAL = 5424 - SYS_IO_URING_SETUP = 5425 - SYS_IO_URING_ENTER = 5426 - SYS_IO_URING_REGISTER = 5427 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go deleted file mode 100644 index 825a3e3b0..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +++ /dev/null @@ -1,341 +0,0 @@ -// 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 - SYS_PIDFD_SEND_SIGNAL = 5424 - SYS_IO_URING_SETUP = 5425 - SYS_IO_URING_ENTER = 5426 - SYS_IO_URING_REGISTER = 5427 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go deleted file mode 100644 index f152dfdd0..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +++ /dev/null @@ -1,411 +0,0 @@ -// 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 - SYS_SEMGET = 4393 - SYS_SEMCTL = 4394 - SYS_SHMGET = 4395 - SYS_SHMCTL = 4396 - SYS_SHMAT = 4397 - SYS_SHMDT = 4398 - SYS_MSGGET = 4399 - SYS_MSGSND = 4400 - SYS_MSGRCV = 4401 - SYS_MSGCTL = 4402 - SYS_CLOCK_GETTIME64 = 4403 - SYS_CLOCK_SETTIME64 = 4404 - SYS_CLOCK_ADJTIME64 = 4405 - SYS_CLOCK_GETRES_TIME64 = 4406 - SYS_CLOCK_NANOSLEEP_TIME64 = 4407 - SYS_TIMER_GETTIME64 = 4408 - SYS_TIMER_SETTIME64 = 4409 - SYS_TIMERFD_GETTIME64 = 4410 - SYS_TIMERFD_SETTIME64 = 4411 - SYS_UTIMENSAT_TIME64 = 4412 - SYS_PSELECT6_TIME64 = 4413 - SYS_PPOLL_TIME64 = 4414 - SYS_IO_PGETEVENTS_TIME64 = 4416 - SYS_RECVMMSG_TIME64 = 4417 - SYS_MQ_TIMEDSEND_TIME64 = 4418 - SYS_MQ_TIMEDRECEIVE_TIME64 = 4419 - SYS_SEMTIMEDOP_TIME64 = 4420 - SYS_RT_SIGTIMEDWAIT_TIME64 = 4421 - SYS_FUTEX_TIME64 = 4422 - SYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423 - SYS_PIDFD_SEND_SIGNAL = 4424 - SYS_IO_URING_SETUP = 4425 - SYS_IO_URING_ENTER = 4426 - SYS_IO_URING_REGISTER = 4427 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go deleted file mode 100644 index 7cbe78b19..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +++ /dev/null @@ -1,390 +0,0 @@ -// 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 - SYS_SEMTIMEDOP = 392 - SYS_SEMGET = 393 - SYS_SEMCTL = 394 - SYS_SHMGET = 395 - SYS_SHMCTL = 396 - SYS_SHMAT = 397 - SYS_SHMDT = 398 - SYS_MSGGET = 399 - SYS_MSGSND = 400 - SYS_MSGRCV = 401 - SYS_MSGCTL = 402 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go deleted file mode 100644 index 51a2f1236..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +++ /dev/null @@ -1,390 +0,0 @@ -// 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 - SYS_SEMTIMEDOP = 392 - SYS_SEMGET = 393 - SYS_SEMCTL = 394 - SYS_SHMGET = 395 - SYS_SHMCTL = 396 - SYS_SHMAT = 397 - SYS_SHMDT = 398 - SYS_MSGGET = 399 - SYS_MSGSND = 400 - SYS_MSGRCV = 401 - SYS_MSGCTL = 402 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go deleted file mode 100644 index 323432ae3..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +++ /dev/null @@ -1,292 +0,0 @@ -// 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 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go deleted file mode 100644 index 9dca97484..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +++ /dev/null @@ -1,355 +0,0 @@ -// 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 - SYS_PKEY_MPROTECT = 384 - SYS_PKEY_ALLOC = 385 - SYS_PKEY_FREE = 386 - SYS_SEMTIMEDOP = 392 - SYS_SEMGET = 393 - SYS_SEMCTL = 394 - SYS_SHMGET = 395 - SYS_SHMCTL = 396 - SYS_SHMAT = 397 - SYS_SHMDT = 398 - SYS_MSGGET = 399 - SYS_MSGSND = 400 - SYS_MSGRCV = 401 - SYS_MSGCTL = 402 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go deleted file mode 100644 index d3da46f0d..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +++ /dev/null @@ -1,370 +0,0 @@ -// 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 - SYS_PKEY_MPROTECT = 362 - SYS_PKEY_ALLOC = 363 - SYS_PKEY_FREE = 364 - SYS_RSEQ = 365 - SYS_SEMTIMEDOP = 392 - SYS_SEMGET = 393 - SYS_SEMCTL = 394 - SYS_SHMGET = 395 - SYS_SHMCTL = 396 - SYS_SHMAT = 397 - SYS_SHMDT = 398 - SYS_MSGGET = 399 - SYS_MSGSND = 400 - SYS_MSGRCV = 401 - SYS_MSGCTL = 402 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go deleted file mode 100644 index e66a8c9d3..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go +++ /dev/null @@ -1,274 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go deleted file mode 100644 index 42c788f24..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go +++ /dev/null @@ -1,274 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go deleted file mode 100644 index 0a0757179..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go +++ /dev/null @@ -1,274 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go deleted file mode 100644 index 0291c0931..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go +++ /dev/null @@ -1,274 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go deleted file mode 100644 index b0207d1c9..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go +++ /dev/null @@ -1,218 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go deleted file mode 100644 index f0dec6f0b..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go +++ /dev/null @@ -1,218 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go deleted file mode 100644 index 33d1dc540..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go +++ /dev/null @@ -1,218 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go deleted file mode 100644 index fe2b689b6..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go +++ /dev/null @@ -1,217 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go deleted file mode 100644 index cedc9b0f2..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go +++ /dev/null @@ -1,345 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go deleted file mode 100644 index 904359f69..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go +++ /dev/null @@ -1,350 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go deleted file mode 100644 index 9f47b87c5..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go +++ /dev/null @@ -1,499 +0,0 @@ -// 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 - Atim Timespec - Mtim Timespec - Ctim Timespec - Btim 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go deleted file mode 100644 index 966798a87..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +++ /dev/null @@ -1,509 +0,0 @@ -// 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 - Atim Timespec - Mtim Timespec - Ctim Timespec - Btim 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go deleted file mode 100644 index 4fe4c9cd7..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go +++ /dev/null @@ -1,500 +0,0 @@ -// 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 - Atim Timespec - Mtim Timespec - Ctim Timespec - Btim 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go deleted file mode 100644 index 21999e4b0..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +++ /dev/null @@ -1,509 +0,0 @@ -// 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 - Atim Timespec - Mtim Timespec - Ctim Timespec - Btim 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go deleted file mode 100644 index c206f2b05..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +++ /dev/null @@ -1,469 +0,0 @@ -// 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 - _1 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go deleted file mode 100644 index 0edc5409a..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +++ /dev/null @@ -1,603 +0,0 @@ -// 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 - _ int32 - Atim Timespec - _ int32 - Mtim Timespec - _ int32 - Ctim Timespec - _ int32 - Btim 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 - Btim 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go deleted file mode 100644 index 8881ce842..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +++ /dev/null @@ -1,602 +0,0 @@ -// 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 - Btim 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 - Btim 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go deleted file mode 100644 index fc713999c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +++ /dev/null @@ -1,602 +0,0 @@ -// 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 - Btim 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 - Btim 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go deleted file mode 100644 index 5a0753ee4..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +++ /dev/null @@ -1,602 +0,0 @@ -// 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 - Btim 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 - Btim 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_386.go deleted file mode 100644 index b7a8cf380..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +++ /dev/null @@ -1,2467 +0,0 @@ -// 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 -} - -const ( - BPF_REG_0 = 0x0 - BPF_REG_1 = 0x1 - BPF_REG_2 = 0x2 - BPF_REG_3 = 0x3 - BPF_REG_4 = 0x4 - BPF_REG_5 = 0x5 - BPF_REG_6 = 0x6 - BPF_REG_7 = 0x7 - BPF_REG_8 = 0x8 - BPF_REG_9 = 0x9 - BPF_REG_10 = 0xa - BPF_MAP_CREATE = 0x0 - BPF_MAP_LOOKUP_ELEM = 0x1 - BPF_MAP_UPDATE_ELEM = 0x2 - BPF_MAP_DELETE_ELEM = 0x3 - BPF_MAP_GET_NEXT_KEY = 0x4 - BPF_PROG_LOAD = 0x5 - BPF_OBJ_PIN = 0x6 - BPF_OBJ_GET = 0x7 - BPF_PROG_ATTACH = 0x8 - BPF_PROG_DETACH = 0x9 - BPF_PROG_TEST_RUN = 0xa - BPF_PROG_GET_NEXT_ID = 0xb - BPF_MAP_GET_NEXT_ID = 0xc - BPF_PROG_GET_FD_BY_ID = 0xd - BPF_MAP_GET_FD_BY_ID = 0xe - BPF_OBJ_GET_INFO_BY_FD = 0xf - BPF_PROG_QUERY = 0x10 - BPF_RAW_TRACEPOINT_OPEN = 0x11 - BPF_BTF_LOAD = 0x12 - BPF_BTF_GET_FD_BY_ID = 0x13 - BPF_TASK_FD_QUERY = 0x14 - BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 - BPF_MAP_TYPE_UNSPEC = 0x0 - BPF_MAP_TYPE_HASH = 0x1 - BPF_MAP_TYPE_ARRAY = 0x2 - BPF_MAP_TYPE_PROG_ARRAY = 0x3 - BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 - BPF_MAP_TYPE_PERCPU_HASH = 0x5 - BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 - BPF_MAP_TYPE_STACK_TRACE = 0x7 - BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 - BPF_MAP_TYPE_LRU_HASH = 0x9 - BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa - BPF_MAP_TYPE_LPM_TRIE = 0xb - BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc - BPF_MAP_TYPE_HASH_OF_MAPS = 0xd - BPF_MAP_TYPE_DEVMAP = 0xe - BPF_MAP_TYPE_SOCKMAP = 0xf - BPF_MAP_TYPE_CPUMAP = 0x10 - BPF_MAP_TYPE_XSKMAP = 0x11 - BPF_MAP_TYPE_SOCKHASH = 0x12 - BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 - BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 - BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 - BPF_MAP_TYPE_QUEUE = 0x16 - BPF_MAP_TYPE_STACK = 0x17 - BPF_PROG_TYPE_UNSPEC = 0x0 - BPF_PROG_TYPE_SOCKET_FILTER = 0x1 - BPF_PROG_TYPE_KPROBE = 0x2 - BPF_PROG_TYPE_SCHED_CLS = 0x3 - BPF_PROG_TYPE_SCHED_ACT = 0x4 - BPF_PROG_TYPE_TRACEPOINT = 0x5 - BPF_PROG_TYPE_XDP = 0x6 - BPF_PROG_TYPE_PERF_EVENT = 0x7 - BPF_PROG_TYPE_CGROUP_SKB = 0x8 - BPF_PROG_TYPE_CGROUP_SOCK = 0x9 - BPF_PROG_TYPE_LWT_IN = 0xa - BPF_PROG_TYPE_LWT_OUT = 0xb - BPF_PROG_TYPE_LWT_XMIT = 0xc - BPF_PROG_TYPE_SOCK_OPS = 0xd - BPF_PROG_TYPE_SK_SKB = 0xe - BPF_PROG_TYPE_CGROUP_DEVICE = 0xf - BPF_PROG_TYPE_SK_MSG = 0x10 - BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 - BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 - BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 - BPF_PROG_TYPE_LIRC_MODE2 = 0x14 - BPF_PROG_TYPE_SK_REUSEPORT = 0x15 - BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 - BPF_CGROUP_INET_INGRESS = 0x0 - BPF_CGROUP_INET_EGRESS = 0x1 - BPF_CGROUP_INET_SOCK_CREATE = 0x2 - BPF_CGROUP_SOCK_OPS = 0x3 - BPF_SK_SKB_STREAM_PARSER = 0x4 - BPF_SK_SKB_STREAM_VERDICT = 0x5 - BPF_CGROUP_DEVICE = 0x6 - BPF_SK_MSG_VERDICT = 0x7 - BPF_CGROUP_INET4_BIND = 0x8 - BPF_CGROUP_INET6_BIND = 0x9 - BPF_CGROUP_INET4_CONNECT = 0xa - BPF_CGROUP_INET6_CONNECT = 0xb - BPF_CGROUP_INET4_POST_BIND = 0xc - BPF_CGROUP_INET6_POST_BIND = 0xd - BPF_CGROUP_UDP4_SENDMSG = 0xe - BPF_CGROUP_UDP6_SENDMSG = 0xf - BPF_LIRC_MODE2 = 0x10 - BPF_FLOW_DISSECTOR = 0x11 - BPF_STACK_BUILD_ID_EMPTY = 0x0 - BPF_STACK_BUILD_ID_VALID = 0x1 - BPF_STACK_BUILD_ID_IP = 0x2 - BPF_ADJ_ROOM_NET = 0x0 - BPF_HDR_START_MAC = 0x0 - BPF_HDR_START_NET = 0x1 - BPF_LWT_ENCAP_SEG6 = 0x0 - BPF_LWT_ENCAP_SEG6_INLINE = 0x1 - BPF_OK = 0x0 - BPF_DROP = 0x2 - BPF_REDIRECT = 0x7 - BPF_SOCK_OPS_VOID = 0x0 - BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 - BPF_SOCK_OPS_RWND_INIT = 0x2 - BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 - BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 - BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 - BPF_SOCK_OPS_NEEDS_ECN = 0x6 - BPF_SOCK_OPS_BASE_RTT = 0x7 - BPF_SOCK_OPS_RTO_CB = 0x8 - BPF_SOCK_OPS_RETRANS_CB = 0x9 - BPF_SOCK_OPS_STATE_CB = 0xa - BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb - BPF_TCP_ESTABLISHED = 0x1 - BPF_TCP_SYN_SENT = 0x2 - BPF_TCP_SYN_RECV = 0x3 - BPF_TCP_FIN_WAIT1 = 0x4 - BPF_TCP_FIN_WAIT2 = 0x5 - BPF_TCP_TIME_WAIT = 0x6 - BPF_TCP_CLOSE = 0x7 - BPF_TCP_CLOSE_WAIT = 0x8 - BPF_TCP_LAST_ACK = 0x9 - BPF_TCP_LISTEN = 0xa - BPF_TCP_CLOSING = 0xb - BPF_TCP_NEW_SYN_RECV = 0xc - BPF_TCP_MAX_STATES = 0xd - BPF_FIB_LKUP_RET_SUCCESS = 0x0 - BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 - BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 - BPF_FIB_LKUP_RET_PROHIBIT = 0x3 - BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 - BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 - BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 - BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 - BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 - BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 - BPF_FD_TYPE_TRACEPOINT = 0x1 - BPF_FD_TYPE_KPROBE = 0x2 - BPF_FD_TYPE_KRETPROBE = 0x3 - BPF_FD_TYPE_UPROBE = 0x4 - BPF_FD_TYPE_URETPROBE = 0x5 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go deleted file mode 100644 index e41911542..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +++ /dev/null @@ -1,2480 +0,0 @@ -// 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 -} - -const ( - BPF_REG_0 = 0x0 - BPF_REG_1 = 0x1 - BPF_REG_2 = 0x2 - BPF_REG_3 = 0x3 - BPF_REG_4 = 0x4 - BPF_REG_5 = 0x5 - BPF_REG_6 = 0x6 - BPF_REG_7 = 0x7 - BPF_REG_8 = 0x8 - BPF_REG_9 = 0x9 - BPF_REG_10 = 0xa - BPF_MAP_CREATE = 0x0 - BPF_MAP_LOOKUP_ELEM = 0x1 - BPF_MAP_UPDATE_ELEM = 0x2 - BPF_MAP_DELETE_ELEM = 0x3 - BPF_MAP_GET_NEXT_KEY = 0x4 - BPF_PROG_LOAD = 0x5 - BPF_OBJ_PIN = 0x6 - BPF_OBJ_GET = 0x7 - BPF_PROG_ATTACH = 0x8 - BPF_PROG_DETACH = 0x9 - BPF_PROG_TEST_RUN = 0xa - BPF_PROG_GET_NEXT_ID = 0xb - BPF_MAP_GET_NEXT_ID = 0xc - BPF_PROG_GET_FD_BY_ID = 0xd - BPF_MAP_GET_FD_BY_ID = 0xe - BPF_OBJ_GET_INFO_BY_FD = 0xf - BPF_PROG_QUERY = 0x10 - BPF_RAW_TRACEPOINT_OPEN = 0x11 - BPF_BTF_LOAD = 0x12 - BPF_BTF_GET_FD_BY_ID = 0x13 - BPF_TASK_FD_QUERY = 0x14 - BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 - BPF_MAP_TYPE_UNSPEC = 0x0 - BPF_MAP_TYPE_HASH = 0x1 - BPF_MAP_TYPE_ARRAY = 0x2 - BPF_MAP_TYPE_PROG_ARRAY = 0x3 - BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 - BPF_MAP_TYPE_PERCPU_HASH = 0x5 - BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 - BPF_MAP_TYPE_STACK_TRACE = 0x7 - BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 - BPF_MAP_TYPE_LRU_HASH = 0x9 - BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa - BPF_MAP_TYPE_LPM_TRIE = 0xb - BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc - BPF_MAP_TYPE_HASH_OF_MAPS = 0xd - BPF_MAP_TYPE_DEVMAP = 0xe - BPF_MAP_TYPE_SOCKMAP = 0xf - BPF_MAP_TYPE_CPUMAP = 0x10 - BPF_MAP_TYPE_XSKMAP = 0x11 - BPF_MAP_TYPE_SOCKHASH = 0x12 - BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 - BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 - BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 - BPF_MAP_TYPE_QUEUE = 0x16 - BPF_MAP_TYPE_STACK = 0x17 - BPF_PROG_TYPE_UNSPEC = 0x0 - BPF_PROG_TYPE_SOCKET_FILTER = 0x1 - BPF_PROG_TYPE_KPROBE = 0x2 - BPF_PROG_TYPE_SCHED_CLS = 0x3 - BPF_PROG_TYPE_SCHED_ACT = 0x4 - BPF_PROG_TYPE_TRACEPOINT = 0x5 - BPF_PROG_TYPE_XDP = 0x6 - BPF_PROG_TYPE_PERF_EVENT = 0x7 - BPF_PROG_TYPE_CGROUP_SKB = 0x8 - BPF_PROG_TYPE_CGROUP_SOCK = 0x9 - BPF_PROG_TYPE_LWT_IN = 0xa - BPF_PROG_TYPE_LWT_OUT = 0xb - BPF_PROG_TYPE_LWT_XMIT = 0xc - BPF_PROG_TYPE_SOCK_OPS = 0xd - BPF_PROG_TYPE_SK_SKB = 0xe - BPF_PROG_TYPE_CGROUP_DEVICE = 0xf - BPF_PROG_TYPE_SK_MSG = 0x10 - BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 - BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 - BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 - BPF_PROG_TYPE_LIRC_MODE2 = 0x14 - BPF_PROG_TYPE_SK_REUSEPORT = 0x15 - BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 - BPF_CGROUP_INET_INGRESS = 0x0 - BPF_CGROUP_INET_EGRESS = 0x1 - BPF_CGROUP_INET_SOCK_CREATE = 0x2 - BPF_CGROUP_SOCK_OPS = 0x3 - BPF_SK_SKB_STREAM_PARSER = 0x4 - BPF_SK_SKB_STREAM_VERDICT = 0x5 - BPF_CGROUP_DEVICE = 0x6 - BPF_SK_MSG_VERDICT = 0x7 - BPF_CGROUP_INET4_BIND = 0x8 - BPF_CGROUP_INET6_BIND = 0x9 - BPF_CGROUP_INET4_CONNECT = 0xa - BPF_CGROUP_INET6_CONNECT = 0xb - BPF_CGROUP_INET4_POST_BIND = 0xc - BPF_CGROUP_INET6_POST_BIND = 0xd - BPF_CGROUP_UDP4_SENDMSG = 0xe - BPF_CGROUP_UDP6_SENDMSG = 0xf - BPF_LIRC_MODE2 = 0x10 - BPF_FLOW_DISSECTOR = 0x11 - BPF_STACK_BUILD_ID_EMPTY = 0x0 - BPF_STACK_BUILD_ID_VALID = 0x1 - BPF_STACK_BUILD_ID_IP = 0x2 - BPF_ADJ_ROOM_NET = 0x0 - BPF_HDR_START_MAC = 0x0 - BPF_HDR_START_NET = 0x1 - BPF_LWT_ENCAP_SEG6 = 0x0 - BPF_LWT_ENCAP_SEG6_INLINE = 0x1 - BPF_OK = 0x0 - BPF_DROP = 0x2 - BPF_REDIRECT = 0x7 - BPF_SOCK_OPS_VOID = 0x0 - BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 - BPF_SOCK_OPS_RWND_INIT = 0x2 - BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 - BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 - BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 - BPF_SOCK_OPS_NEEDS_ECN = 0x6 - BPF_SOCK_OPS_BASE_RTT = 0x7 - BPF_SOCK_OPS_RTO_CB = 0x8 - BPF_SOCK_OPS_RETRANS_CB = 0x9 - BPF_SOCK_OPS_STATE_CB = 0xa - BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb - BPF_TCP_ESTABLISHED = 0x1 - BPF_TCP_SYN_SENT = 0x2 - BPF_TCP_SYN_RECV = 0x3 - BPF_TCP_FIN_WAIT1 = 0x4 - BPF_TCP_FIN_WAIT2 = 0x5 - BPF_TCP_TIME_WAIT = 0x6 - BPF_TCP_CLOSE = 0x7 - BPF_TCP_CLOSE_WAIT = 0x8 - BPF_TCP_LAST_ACK = 0x9 - BPF_TCP_LISTEN = 0xa - BPF_TCP_CLOSING = 0xb - BPF_TCP_NEW_SYN_RECV = 0xc - BPF_TCP_MAX_STATES = 0xd - BPF_FIB_LKUP_RET_SUCCESS = 0x0 - BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 - BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 - BPF_FIB_LKUP_RET_PROHIBIT = 0x3 - BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 - BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 - BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 - BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 - BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 - BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 - BPF_FD_TYPE_TRACEPOINT = 0x1 - BPF_FD_TYPE_KPROBE = 0x2 - BPF_FD_TYPE_KRETPROBE = 0x3 - BPF_FD_TYPE_UPROBE = 0x4 - BPF_FD_TYPE_URETPROBE = 0x5 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go deleted file mode 100644 index 1ce0dd620..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +++ /dev/null @@ -1,2458 +0,0 @@ -// 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 -} - -const ( - BPF_REG_0 = 0x0 - BPF_REG_1 = 0x1 - BPF_REG_2 = 0x2 - BPF_REG_3 = 0x3 - BPF_REG_4 = 0x4 - BPF_REG_5 = 0x5 - BPF_REG_6 = 0x6 - BPF_REG_7 = 0x7 - BPF_REG_8 = 0x8 - BPF_REG_9 = 0x9 - BPF_REG_10 = 0xa - BPF_MAP_CREATE = 0x0 - BPF_MAP_LOOKUP_ELEM = 0x1 - BPF_MAP_UPDATE_ELEM = 0x2 - BPF_MAP_DELETE_ELEM = 0x3 - BPF_MAP_GET_NEXT_KEY = 0x4 - BPF_PROG_LOAD = 0x5 - BPF_OBJ_PIN = 0x6 - BPF_OBJ_GET = 0x7 - BPF_PROG_ATTACH = 0x8 - BPF_PROG_DETACH = 0x9 - BPF_PROG_TEST_RUN = 0xa - BPF_PROG_GET_NEXT_ID = 0xb - BPF_MAP_GET_NEXT_ID = 0xc - BPF_PROG_GET_FD_BY_ID = 0xd - BPF_MAP_GET_FD_BY_ID = 0xe - BPF_OBJ_GET_INFO_BY_FD = 0xf - BPF_PROG_QUERY = 0x10 - BPF_RAW_TRACEPOINT_OPEN = 0x11 - BPF_BTF_LOAD = 0x12 - BPF_BTF_GET_FD_BY_ID = 0x13 - BPF_TASK_FD_QUERY = 0x14 - BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 - BPF_MAP_TYPE_UNSPEC = 0x0 - BPF_MAP_TYPE_HASH = 0x1 - BPF_MAP_TYPE_ARRAY = 0x2 - BPF_MAP_TYPE_PROG_ARRAY = 0x3 - BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 - BPF_MAP_TYPE_PERCPU_HASH = 0x5 - BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 - BPF_MAP_TYPE_STACK_TRACE = 0x7 - BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 - BPF_MAP_TYPE_LRU_HASH = 0x9 - BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa - BPF_MAP_TYPE_LPM_TRIE = 0xb - BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc - BPF_MAP_TYPE_HASH_OF_MAPS = 0xd - BPF_MAP_TYPE_DEVMAP = 0xe - BPF_MAP_TYPE_SOCKMAP = 0xf - BPF_MAP_TYPE_CPUMAP = 0x10 - BPF_MAP_TYPE_XSKMAP = 0x11 - BPF_MAP_TYPE_SOCKHASH = 0x12 - BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 - BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 - BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 - BPF_MAP_TYPE_QUEUE = 0x16 - BPF_MAP_TYPE_STACK = 0x17 - BPF_PROG_TYPE_UNSPEC = 0x0 - BPF_PROG_TYPE_SOCKET_FILTER = 0x1 - BPF_PROG_TYPE_KPROBE = 0x2 - BPF_PROG_TYPE_SCHED_CLS = 0x3 - BPF_PROG_TYPE_SCHED_ACT = 0x4 - BPF_PROG_TYPE_TRACEPOINT = 0x5 - BPF_PROG_TYPE_XDP = 0x6 - BPF_PROG_TYPE_PERF_EVENT = 0x7 - BPF_PROG_TYPE_CGROUP_SKB = 0x8 - BPF_PROG_TYPE_CGROUP_SOCK = 0x9 - BPF_PROG_TYPE_LWT_IN = 0xa - BPF_PROG_TYPE_LWT_OUT = 0xb - BPF_PROG_TYPE_LWT_XMIT = 0xc - BPF_PROG_TYPE_SOCK_OPS = 0xd - BPF_PROG_TYPE_SK_SKB = 0xe - BPF_PROG_TYPE_CGROUP_DEVICE = 0xf - BPF_PROG_TYPE_SK_MSG = 0x10 - BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 - BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 - BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 - BPF_PROG_TYPE_LIRC_MODE2 = 0x14 - BPF_PROG_TYPE_SK_REUSEPORT = 0x15 - BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 - BPF_CGROUP_INET_INGRESS = 0x0 - BPF_CGROUP_INET_EGRESS = 0x1 - BPF_CGROUP_INET_SOCK_CREATE = 0x2 - BPF_CGROUP_SOCK_OPS = 0x3 - BPF_SK_SKB_STREAM_PARSER = 0x4 - BPF_SK_SKB_STREAM_VERDICT = 0x5 - BPF_CGROUP_DEVICE = 0x6 - BPF_SK_MSG_VERDICT = 0x7 - BPF_CGROUP_INET4_BIND = 0x8 - BPF_CGROUP_INET6_BIND = 0x9 - BPF_CGROUP_INET4_CONNECT = 0xa - BPF_CGROUP_INET6_CONNECT = 0xb - BPF_CGROUP_INET4_POST_BIND = 0xc - BPF_CGROUP_INET6_POST_BIND = 0xd - BPF_CGROUP_UDP4_SENDMSG = 0xe - BPF_CGROUP_UDP6_SENDMSG = 0xf - BPF_LIRC_MODE2 = 0x10 - BPF_FLOW_DISSECTOR = 0x11 - BPF_STACK_BUILD_ID_EMPTY = 0x0 - BPF_STACK_BUILD_ID_VALID = 0x1 - BPF_STACK_BUILD_ID_IP = 0x2 - BPF_ADJ_ROOM_NET = 0x0 - BPF_HDR_START_MAC = 0x0 - BPF_HDR_START_NET = 0x1 - BPF_LWT_ENCAP_SEG6 = 0x0 - BPF_LWT_ENCAP_SEG6_INLINE = 0x1 - BPF_OK = 0x0 - BPF_DROP = 0x2 - BPF_REDIRECT = 0x7 - BPF_SOCK_OPS_VOID = 0x0 - BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 - BPF_SOCK_OPS_RWND_INIT = 0x2 - BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 - BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 - BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 - BPF_SOCK_OPS_NEEDS_ECN = 0x6 - BPF_SOCK_OPS_BASE_RTT = 0x7 - BPF_SOCK_OPS_RTO_CB = 0x8 - BPF_SOCK_OPS_RETRANS_CB = 0x9 - BPF_SOCK_OPS_STATE_CB = 0xa - BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb - BPF_TCP_ESTABLISHED = 0x1 - BPF_TCP_SYN_SENT = 0x2 - BPF_TCP_SYN_RECV = 0x3 - BPF_TCP_FIN_WAIT1 = 0x4 - BPF_TCP_FIN_WAIT2 = 0x5 - BPF_TCP_TIME_WAIT = 0x6 - BPF_TCP_CLOSE = 0x7 - BPF_TCP_CLOSE_WAIT = 0x8 - BPF_TCP_LAST_ACK = 0x9 - BPF_TCP_LISTEN = 0xa - BPF_TCP_CLOSING = 0xb - BPF_TCP_NEW_SYN_RECV = 0xc - BPF_TCP_MAX_STATES = 0xd - BPF_FIB_LKUP_RET_SUCCESS = 0x0 - BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 - BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 - BPF_FIB_LKUP_RET_PROHIBIT = 0x3 - BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 - BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 - BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 - BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 - BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 - BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 - BPF_FD_TYPE_TRACEPOINT = 0x1 - BPF_FD_TYPE_KPROBE = 0x2 - BPF_FD_TYPE_KRETPROBE = 0x3 - BPF_FD_TYPE_UPROBE = 0x4 - BPF_FD_TYPE_URETPROBE = 0x5 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go deleted file mode 100644 index 9469b157b..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +++ /dev/null @@ -1,2459 +0,0 @@ -// 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 -} - -const ( - BPF_REG_0 = 0x0 - BPF_REG_1 = 0x1 - BPF_REG_2 = 0x2 - BPF_REG_3 = 0x3 - BPF_REG_4 = 0x4 - BPF_REG_5 = 0x5 - BPF_REG_6 = 0x6 - BPF_REG_7 = 0x7 - BPF_REG_8 = 0x8 - BPF_REG_9 = 0x9 - BPF_REG_10 = 0xa - BPF_MAP_CREATE = 0x0 - BPF_MAP_LOOKUP_ELEM = 0x1 - BPF_MAP_UPDATE_ELEM = 0x2 - BPF_MAP_DELETE_ELEM = 0x3 - BPF_MAP_GET_NEXT_KEY = 0x4 - BPF_PROG_LOAD = 0x5 - BPF_OBJ_PIN = 0x6 - BPF_OBJ_GET = 0x7 - BPF_PROG_ATTACH = 0x8 - BPF_PROG_DETACH = 0x9 - BPF_PROG_TEST_RUN = 0xa - BPF_PROG_GET_NEXT_ID = 0xb - BPF_MAP_GET_NEXT_ID = 0xc - BPF_PROG_GET_FD_BY_ID = 0xd - BPF_MAP_GET_FD_BY_ID = 0xe - BPF_OBJ_GET_INFO_BY_FD = 0xf - BPF_PROG_QUERY = 0x10 - BPF_RAW_TRACEPOINT_OPEN = 0x11 - BPF_BTF_LOAD = 0x12 - BPF_BTF_GET_FD_BY_ID = 0x13 - BPF_TASK_FD_QUERY = 0x14 - BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 - BPF_MAP_TYPE_UNSPEC = 0x0 - BPF_MAP_TYPE_HASH = 0x1 - BPF_MAP_TYPE_ARRAY = 0x2 - BPF_MAP_TYPE_PROG_ARRAY = 0x3 - BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 - BPF_MAP_TYPE_PERCPU_HASH = 0x5 - BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 - BPF_MAP_TYPE_STACK_TRACE = 0x7 - BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 - BPF_MAP_TYPE_LRU_HASH = 0x9 - BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa - BPF_MAP_TYPE_LPM_TRIE = 0xb - BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc - BPF_MAP_TYPE_HASH_OF_MAPS = 0xd - BPF_MAP_TYPE_DEVMAP = 0xe - BPF_MAP_TYPE_SOCKMAP = 0xf - BPF_MAP_TYPE_CPUMAP = 0x10 - BPF_MAP_TYPE_XSKMAP = 0x11 - BPF_MAP_TYPE_SOCKHASH = 0x12 - BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 - BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 - BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 - BPF_MAP_TYPE_QUEUE = 0x16 - BPF_MAP_TYPE_STACK = 0x17 - BPF_PROG_TYPE_UNSPEC = 0x0 - BPF_PROG_TYPE_SOCKET_FILTER = 0x1 - BPF_PROG_TYPE_KPROBE = 0x2 - BPF_PROG_TYPE_SCHED_CLS = 0x3 - BPF_PROG_TYPE_SCHED_ACT = 0x4 - BPF_PROG_TYPE_TRACEPOINT = 0x5 - BPF_PROG_TYPE_XDP = 0x6 - BPF_PROG_TYPE_PERF_EVENT = 0x7 - BPF_PROG_TYPE_CGROUP_SKB = 0x8 - BPF_PROG_TYPE_CGROUP_SOCK = 0x9 - BPF_PROG_TYPE_LWT_IN = 0xa - BPF_PROG_TYPE_LWT_OUT = 0xb - BPF_PROG_TYPE_LWT_XMIT = 0xc - BPF_PROG_TYPE_SOCK_OPS = 0xd - BPF_PROG_TYPE_SK_SKB = 0xe - BPF_PROG_TYPE_CGROUP_DEVICE = 0xf - BPF_PROG_TYPE_SK_MSG = 0x10 - BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 - BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 - BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 - BPF_PROG_TYPE_LIRC_MODE2 = 0x14 - BPF_PROG_TYPE_SK_REUSEPORT = 0x15 - BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 - BPF_CGROUP_INET_INGRESS = 0x0 - BPF_CGROUP_INET_EGRESS = 0x1 - BPF_CGROUP_INET_SOCK_CREATE = 0x2 - BPF_CGROUP_SOCK_OPS = 0x3 - BPF_SK_SKB_STREAM_PARSER = 0x4 - BPF_SK_SKB_STREAM_VERDICT = 0x5 - BPF_CGROUP_DEVICE = 0x6 - BPF_SK_MSG_VERDICT = 0x7 - BPF_CGROUP_INET4_BIND = 0x8 - BPF_CGROUP_INET6_BIND = 0x9 - BPF_CGROUP_INET4_CONNECT = 0xa - BPF_CGROUP_INET6_CONNECT = 0xb - BPF_CGROUP_INET4_POST_BIND = 0xc - BPF_CGROUP_INET6_POST_BIND = 0xd - BPF_CGROUP_UDP4_SENDMSG = 0xe - BPF_CGROUP_UDP6_SENDMSG = 0xf - BPF_LIRC_MODE2 = 0x10 - BPF_FLOW_DISSECTOR = 0x11 - BPF_STACK_BUILD_ID_EMPTY = 0x0 - BPF_STACK_BUILD_ID_VALID = 0x1 - BPF_STACK_BUILD_ID_IP = 0x2 - BPF_ADJ_ROOM_NET = 0x0 - BPF_HDR_START_MAC = 0x0 - BPF_HDR_START_NET = 0x1 - BPF_LWT_ENCAP_SEG6 = 0x0 - BPF_LWT_ENCAP_SEG6_INLINE = 0x1 - BPF_OK = 0x0 - BPF_DROP = 0x2 - BPF_REDIRECT = 0x7 - BPF_SOCK_OPS_VOID = 0x0 - BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 - BPF_SOCK_OPS_RWND_INIT = 0x2 - BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 - BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 - BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 - BPF_SOCK_OPS_NEEDS_ECN = 0x6 - BPF_SOCK_OPS_BASE_RTT = 0x7 - BPF_SOCK_OPS_RTO_CB = 0x8 - BPF_SOCK_OPS_RETRANS_CB = 0x9 - BPF_SOCK_OPS_STATE_CB = 0xa - BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb - BPF_TCP_ESTABLISHED = 0x1 - BPF_TCP_SYN_SENT = 0x2 - BPF_TCP_SYN_RECV = 0x3 - BPF_TCP_FIN_WAIT1 = 0x4 - BPF_TCP_FIN_WAIT2 = 0x5 - BPF_TCP_TIME_WAIT = 0x6 - BPF_TCP_CLOSE = 0x7 - BPF_TCP_CLOSE_WAIT = 0x8 - BPF_TCP_LAST_ACK = 0x9 - BPF_TCP_LISTEN = 0xa - BPF_TCP_CLOSING = 0xb - BPF_TCP_NEW_SYN_RECV = 0xc - BPF_TCP_MAX_STATES = 0xd - BPF_FIB_LKUP_RET_SUCCESS = 0x0 - BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 - BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 - BPF_FIB_LKUP_RET_PROHIBIT = 0x3 - BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 - BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 - BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 - BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 - BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 - BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 - BPF_FD_TYPE_TRACEPOINT = 0x1 - BPF_FD_TYPE_KPROBE = 0x2 - BPF_FD_TYPE_KRETPROBE = 0x3 - BPF_FD_TYPE_UPROBE = 0x4 - BPF_FD_TYPE_URETPROBE = 0x5 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go deleted file mode 100644 index 13386ca23..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +++ /dev/null @@ -1,2464 +0,0 @@ -// 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 -} - -const ( - BPF_REG_0 = 0x0 - BPF_REG_1 = 0x1 - BPF_REG_2 = 0x2 - BPF_REG_3 = 0x3 - BPF_REG_4 = 0x4 - BPF_REG_5 = 0x5 - BPF_REG_6 = 0x6 - BPF_REG_7 = 0x7 - BPF_REG_8 = 0x8 - BPF_REG_9 = 0x9 - BPF_REG_10 = 0xa - BPF_MAP_CREATE = 0x0 - BPF_MAP_LOOKUP_ELEM = 0x1 - BPF_MAP_UPDATE_ELEM = 0x2 - BPF_MAP_DELETE_ELEM = 0x3 - BPF_MAP_GET_NEXT_KEY = 0x4 - BPF_PROG_LOAD = 0x5 - BPF_OBJ_PIN = 0x6 - BPF_OBJ_GET = 0x7 - BPF_PROG_ATTACH = 0x8 - BPF_PROG_DETACH = 0x9 - BPF_PROG_TEST_RUN = 0xa - BPF_PROG_GET_NEXT_ID = 0xb - BPF_MAP_GET_NEXT_ID = 0xc - BPF_PROG_GET_FD_BY_ID = 0xd - BPF_MAP_GET_FD_BY_ID = 0xe - BPF_OBJ_GET_INFO_BY_FD = 0xf - BPF_PROG_QUERY = 0x10 - BPF_RAW_TRACEPOINT_OPEN = 0x11 - BPF_BTF_LOAD = 0x12 - BPF_BTF_GET_FD_BY_ID = 0x13 - BPF_TASK_FD_QUERY = 0x14 - BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 - BPF_MAP_TYPE_UNSPEC = 0x0 - BPF_MAP_TYPE_HASH = 0x1 - BPF_MAP_TYPE_ARRAY = 0x2 - BPF_MAP_TYPE_PROG_ARRAY = 0x3 - BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 - BPF_MAP_TYPE_PERCPU_HASH = 0x5 - BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 - BPF_MAP_TYPE_STACK_TRACE = 0x7 - BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 - BPF_MAP_TYPE_LRU_HASH = 0x9 - BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa - BPF_MAP_TYPE_LPM_TRIE = 0xb - BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc - BPF_MAP_TYPE_HASH_OF_MAPS = 0xd - BPF_MAP_TYPE_DEVMAP = 0xe - BPF_MAP_TYPE_SOCKMAP = 0xf - BPF_MAP_TYPE_CPUMAP = 0x10 - BPF_MAP_TYPE_XSKMAP = 0x11 - BPF_MAP_TYPE_SOCKHASH = 0x12 - BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 - BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 - BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 - BPF_MAP_TYPE_QUEUE = 0x16 - BPF_MAP_TYPE_STACK = 0x17 - BPF_PROG_TYPE_UNSPEC = 0x0 - BPF_PROG_TYPE_SOCKET_FILTER = 0x1 - BPF_PROG_TYPE_KPROBE = 0x2 - BPF_PROG_TYPE_SCHED_CLS = 0x3 - BPF_PROG_TYPE_SCHED_ACT = 0x4 - BPF_PROG_TYPE_TRACEPOINT = 0x5 - BPF_PROG_TYPE_XDP = 0x6 - BPF_PROG_TYPE_PERF_EVENT = 0x7 - BPF_PROG_TYPE_CGROUP_SKB = 0x8 - BPF_PROG_TYPE_CGROUP_SOCK = 0x9 - BPF_PROG_TYPE_LWT_IN = 0xa - BPF_PROG_TYPE_LWT_OUT = 0xb - BPF_PROG_TYPE_LWT_XMIT = 0xc - BPF_PROG_TYPE_SOCK_OPS = 0xd - BPF_PROG_TYPE_SK_SKB = 0xe - BPF_PROG_TYPE_CGROUP_DEVICE = 0xf - BPF_PROG_TYPE_SK_MSG = 0x10 - BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 - BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 - BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 - BPF_PROG_TYPE_LIRC_MODE2 = 0x14 - BPF_PROG_TYPE_SK_REUSEPORT = 0x15 - BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 - BPF_CGROUP_INET_INGRESS = 0x0 - BPF_CGROUP_INET_EGRESS = 0x1 - BPF_CGROUP_INET_SOCK_CREATE = 0x2 - BPF_CGROUP_SOCK_OPS = 0x3 - BPF_SK_SKB_STREAM_PARSER = 0x4 - BPF_SK_SKB_STREAM_VERDICT = 0x5 - BPF_CGROUP_DEVICE = 0x6 - BPF_SK_MSG_VERDICT = 0x7 - BPF_CGROUP_INET4_BIND = 0x8 - BPF_CGROUP_INET6_BIND = 0x9 - BPF_CGROUP_INET4_CONNECT = 0xa - BPF_CGROUP_INET6_CONNECT = 0xb - BPF_CGROUP_INET4_POST_BIND = 0xc - BPF_CGROUP_INET6_POST_BIND = 0xd - BPF_CGROUP_UDP4_SENDMSG = 0xe - BPF_CGROUP_UDP6_SENDMSG = 0xf - BPF_LIRC_MODE2 = 0x10 - BPF_FLOW_DISSECTOR = 0x11 - BPF_STACK_BUILD_ID_EMPTY = 0x0 - BPF_STACK_BUILD_ID_VALID = 0x1 - BPF_STACK_BUILD_ID_IP = 0x2 - BPF_ADJ_ROOM_NET = 0x0 - BPF_HDR_START_MAC = 0x0 - BPF_HDR_START_NET = 0x1 - BPF_LWT_ENCAP_SEG6 = 0x0 - BPF_LWT_ENCAP_SEG6_INLINE = 0x1 - BPF_OK = 0x0 - BPF_DROP = 0x2 - BPF_REDIRECT = 0x7 - BPF_SOCK_OPS_VOID = 0x0 - BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 - BPF_SOCK_OPS_RWND_INIT = 0x2 - BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 - BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 - BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 - BPF_SOCK_OPS_NEEDS_ECN = 0x6 - BPF_SOCK_OPS_BASE_RTT = 0x7 - BPF_SOCK_OPS_RTO_CB = 0x8 - BPF_SOCK_OPS_RETRANS_CB = 0x9 - BPF_SOCK_OPS_STATE_CB = 0xa - BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb - BPF_TCP_ESTABLISHED = 0x1 - BPF_TCP_SYN_SENT = 0x2 - BPF_TCP_SYN_RECV = 0x3 - BPF_TCP_FIN_WAIT1 = 0x4 - BPF_TCP_FIN_WAIT2 = 0x5 - BPF_TCP_TIME_WAIT = 0x6 - BPF_TCP_CLOSE = 0x7 - BPF_TCP_CLOSE_WAIT = 0x8 - BPF_TCP_LAST_ACK = 0x9 - BPF_TCP_LISTEN = 0xa - BPF_TCP_CLOSING = 0xb - BPF_TCP_NEW_SYN_RECV = 0xc - BPF_TCP_MAX_STATES = 0xd - BPF_FIB_LKUP_RET_SUCCESS = 0x0 - BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 - BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 - BPF_FIB_LKUP_RET_PROHIBIT = 0x3 - BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 - BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 - BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 - BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 - BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 - BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 - BPF_FD_TYPE_TRACEPOINT = 0x1 - BPF_FD_TYPE_KPROBE = 0x2 - BPF_FD_TYPE_KRETPROBE = 0x3 - BPF_FD_TYPE_UPROBE = 0x4 - BPF_FD_TYPE_URETPROBE = 0x5 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go deleted file mode 100644 index e62ec4e40..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +++ /dev/null @@ -1,2461 +0,0 @@ -// 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 -} - -const ( - BPF_REG_0 = 0x0 - BPF_REG_1 = 0x1 - BPF_REG_2 = 0x2 - BPF_REG_3 = 0x3 - BPF_REG_4 = 0x4 - BPF_REG_5 = 0x5 - BPF_REG_6 = 0x6 - BPF_REG_7 = 0x7 - BPF_REG_8 = 0x8 - BPF_REG_9 = 0x9 - BPF_REG_10 = 0xa - BPF_MAP_CREATE = 0x0 - BPF_MAP_LOOKUP_ELEM = 0x1 - BPF_MAP_UPDATE_ELEM = 0x2 - BPF_MAP_DELETE_ELEM = 0x3 - BPF_MAP_GET_NEXT_KEY = 0x4 - BPF_PROG_LOAD = 0x5 - BPF_OBJ_PIN = 0x6 - BPF_OBJ_GET = 0x7 - BPF_PROG_ATTACH = 0x8 - BPF_PROG_DETACH = 0x9 - BPF_PROG_TEST_RUN = 0xa - BPF_PROG_GET_NEXT_ID = 0xb - BPF_MAP_GET_NEXT_ID = 0xc - BPF_PROG_GET_FD_BY_ID = 0xd - BPF_MAP_GET_FD_BY_ID = 0xe - BPF_OBJ_GET_INFO_BY_FD = 0xf - BPF_PROG_QUERY = 0x10 - BPF_RAW_TRACEPOINT_OPEN = 0x11 - BPF_BTF_LOAD = 0x12 - BPF_BTF_GET_FD_BY_ID = 0x13 - BPF_TASK_FD_QUERY = 0x14 - BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 - BPF_MAP_TYPE_UNSPEC = 0x0 - BPF_MAP_TYPE_HASH = 0x1 - BPF_MAP_TYPE_ARRAY = 0x2 - BPF_MAP_TYPE_PROG_ARRAY = 0x3 - BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 - BPF_MAP_TYPE_PERCPU_HASH = 0x5 - BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 - BPF_MAP_TYPE_STACK_TRACE = 0x7 - BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 - BPF_MAP_TYPE_LRU_HASH = 0x9 - BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa - BPF_MAP_TYPE_LPM_TRIE = 0xb - BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc - BPF_MAP_TYPE_HASH_OF_MAPS = 0xd - BPF_MAP_TYPE_DEVMAP = 0xe - BPF_MAP_TYPE_SOCKMAP = 0xf - BPF_MAP_TYPE_CPUMAP = 0x10 - BPF_MAP_TYPE_XSKMAP = 0x11 - BPF_MAP_TYPE_SOCKHASH = 0x12 - BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 - BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 - BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 - BPF_MAP_TYPE_QUEUE = 0x16 - BPF_MAP_TYPE_STACK = 0x17 - BPF_PROG_TYPE_UNSPEC = 0x0 - BPF_PROG_TYPE_SOCKET_FILTER = 0x1 - BPF_PROG_TYPE_KPROBE = 0x2 - BPF_PROG_TYPE_SCHED_CLS = 0x3 - BPF_PROG_TYPE_SCHED_ACT = 0x4 - BPF_PROG_TYPE_TRACEPOINT = 0x5 - BPF_PROG_TYPE_XDP = 0x6 - BPF_PROG_TYPE_PERF_EVENT = 0x7 - BPF_PROG_TYPE_CGROUP_SKB = 0x8 - BPF_PROG_TYPE_CGROUP_SOCK = 0x9 - BPF_PROG_TYPE_LWT_IN = 0xa - BPF_PROG_TYPE_LWT_OUT = 0xb - BPF_PROG_TYPE_LWT_XMIT = 0xc - BPF_PROG_TYPE_SOCK_OPS = 0xd - BPF_PROG_TYPE_SK_SKB = 0xe - BPF_PROG_TYPE_CGROUP_DEVICE = 0xf - BPF_PROG_TYPE_SK_MSG = 0x10 - BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 - BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 - BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 - BPF_PROG_TYPE_LIRC_MODE2 = 0x14 - BPF_PROG_TYPE_SK_REUSEPORT = 0x15 - BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 - BPF_CGROUP_INET_INGRESS = 0x0 - BPF_CGROUP_INET_EGRESS = 0x1 - BPF_CGROUP_INET_SOCK_CREATE = 0x2 - BPF_CGROUP_SOCK_OPS = 0x3 - BPF_SK_SKB_STREAM_PARSER = 0x4 - BPF_SK_SKB_STREAM_VERDICT = 0x5 - BPF_CGROUP_DEVICE = 0x6 - BPF_SK_MSG_VERDICT = 0x7 - BPF_CGROUP_INET4_BIND = 0x8 - BPF_CGROUP_INET6_BIND = 0x9 - BPF_CGROUP_INET4_CONNECT = 0xa - BPF_CGROUP_INET6_CONNECT = 0xb - BPF_CGROUP_INET4_POST_BIND = 0xc - BPF_CGROUP_INET6_POST_BIND = 0xd - BPF_CGROUP_UDP4_SENDMSG = 0xe - BPF_CGROUP_UDP6_SENDMSG = 0xf - BPF_LIRC_MODE2 = 0x10 - BPF_FLOW_DISSECTOR = 0x11 - BPF_STACK_BUILD_ID_EMPTY = 0x0 - BPF_STACK_BUILD_ID_VALID = 0x1 - BPF_STACK_BUILD_ID_IP = 0x2 - BPF_ADJ_ROOM_NET = 0x0 - BPF_HDR_START_MAC = 0x0 - BPF_HDR_START_NET = 0x1 - BPF_LWT_ENCAP_SEG6 = 0x0 - BPF_LWT_ENCAP_SEG6_INLINE = 0x1 - BPF_OK = 0x0 - BPF_DROP = 0x2 - BPF_REDIRECT = 0x7 - BPF_SOCK_OPS_VOID = 0x0 - BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 - BPF_SOCK_OPS_RWND_INIT = 0x2 - BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 - BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 - BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 - BPF_SOCK_OPS_NEEDS_ECN = 0x6 - BPF_SOCK_OPS_BASE_RTT = 0x7 - BPF_SOCK_OPS_RTO_CB = 0x8 - BPF_SOCK_OPS_RETRANS_CB = 0x9 - BPF_SOCK_OPS_STATE_CB = 0xa - BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb - BPF_TCP_ESTABLISHED = 0x1 - BPF_TCP_SYN_SENT = 0x2 - BPF_TCP_SYN_RECV = 0x3 - BPF_TCP_FIN_WAIT1 = 0x4 - BPF_TCP_FIN_WAIT2 = 0x5 - BPF_TCP_TIME_WAIT = 0x6 - BPF_TCP_CLOSE = 0x7 - BPF_TCP_CLOSE_WAIT = 0x8 - BPF_TCP_LAST_ACK = 0x9 - BPF_TCP_LISTEN = 0xa - BPF_TCP_CLOSING = 0xb - BPF_TCP_NEW_SYN_RECV = 0xc - BPF_TCP_MAX_STATES = 0xd - BPF_FIB_LKUP_RET_SUCCESS = 0x0 - BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 - BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 - BPF_FIB_LKUP_RET_PROHIBIT = 0x3 - BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 - BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 - BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 - BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 - BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 - BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 - BPF_FD_TYPE_TRACEPOINT = 0x1 - BPF_FD_TYPE_KPROBE = 0x2 - BPF_FD_TYPE_KRETPROBE = 0x3 - BPF_FD_TYPE_UPROBE = 0x4 - BPF_FD_TYPE_URETPROBE = 0x5 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go deleted file mode 100644 index 79953b3f0..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +++ /dev/null @@ -1,2461 +0,0 @@ -// 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 -} - -const ( - BPF_REG_0 = 0x0 - BPF_REG_1 = 0x1 - BPF_REG_2 = 0x2 - BPF_REG_3 = 0x3 - BPF_REG_4 = 0x4 - BPF_REG_5 = 0x5 - BPF_REG_6 = 0x6 - BPF_REG_7 = 0x7 - BPF_REG_8 = 0x8 - BPF_REG_9 = 0x9 - BPF_REG_10 = 0xa - BPF_MAP_CREATE = 0x0 - BPF_MAP_LOOKUP_ELEM = 0x1 - BPF_MAP_UPDATE_ELEM = 0x2 - BPF_MAP_DELETE_ELEM = 0x3 - BPF_MAP_GET_NEXT_KEY = 0x4 - BPF_PROG_LOAD = 0x5 - BPF_OBJ_PIN = 0x6 - BPF_OBJ_GET = 0x7 - BPF_PROG_ATTACH = 0x8 - BPF_PROG_DETACH = 0x9 - BPF_PROG_TEST_RUN = 0xa - BPF_PROG_GET_NEXT_ID = 0xb - BPF_MAP_GET_NEXT_ID = 0xc - BPF_PROG_GET_FD_BY_ID = 0xd - BPF_MAP_GET_FD_BY_ID = 0xe - BPF_OBJ_GET_INFO_BY_FD = 0xf - BPF_PROG_QUERY = 0x10 - BPF_RAW_TRACEPOINT_OPEN = 0x11 - BPF_BTF_LOAD = 0x12 - BPF_BTF_GET_FD_BY_ID = 0x13 - BPF_TASK_FD_QUERY = 0x14 - BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 - BPF_MAP_TYPE_UNSPEC = 0x0 - BPF_MAP_TYPE_HASH = 0x1 - BPF_MAP_TYPE_ARRAY = 0x2 - BPF_MAP_TYPE_PROG_ARRAY = 0x3 - BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 - BPF_MAP_TYPE_PERCPU_HASH = 0x5 - BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 - BPF_MAP_TYPE_STACK_TRACE = 0x7 - BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 - BPF_MAP_TYPE_LRU_HASH = 0x9 - BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa - BPF_MAP_TYPE_LPM_TRIE = 0xb - BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc - BPF_MAP_TYPE_HASH_OF_MAPS = 0xd - BPF_MAP_TYPE_DEVMAP = 0xe - BPF_MAP_TYPE_SOCKMAP = 0xf - BPF_MAP_TYPE_CPUMAP = 0x10 - BPF_MAP_TYPE_XSKMAP = 0x11 - BPF_MAP_TYPE_SOCKHASH = 0x12 - BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 - BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 - BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 - BPF_MAP_TYPE_QUEUE = 0x16 - BPF_MAP_TYPE_STACK = 0x17 - BPF_PROG_TYPE_UNSPEC = 0x0 - BPF_PROG_TYPE_SOCKET_FILTER = 0x1 - BPF_PROG_TYPE_KPROBE = 0x2 - BPF_PROG_TYPE_SCHED_CLS = 0x3 - BPF_PROG_TYPE_SCHED_ACT = 0x4 - BPF_PROG_TYPE_TRACEPOINT = 0x5 - BPF_PROG_TYPE_XDP = 0x6 - BPF_PROG_TYPE_PERF_EVENT = 0x7 - BPF_PROG_TYPE_CGROUP_SKB = 0x8 - BPF_PROG_TYPE_CGROUP_SOCK = 0x9 - BPF_PROG_TYPE_LWT_IN = 0xa - BPF_PROG_TYPE_LWT_OUT = 0xb - BPF_PROG_TYPE_LWT_XMIT = 0xc - BPF_PROG_TYPE_SOCK_OPS = 0xd - BPF_PROG_TYPE_SK_SKB = 0xe - BPF_PROG_TYPE_CGROUP_DEVICE = 0xf - BPF_PROG_TYPE_SK_MSG = 0x10 - BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 - BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 - BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 - BPF_PROG_TYPE_LIRC_MODE2 = 0x14 - BPF_PROG_TYPE_SK_REUSEPORT = 0x15 - BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 - BPF_CGROUP_INET_INGRESS = 0x0 - BPF_CGROUP_INET_EGRESS = 0x1 - BPF_CGROUP_INET_SOCK_CREATE = 0x2 - BPF_CGROUP_SOCK_OPS = 0x3 - BPF_SK_SKB_STREAM_PARSER = 0x4 - BPF_SK_SKB_STREAM_VERDICT = 0x5 - BPF_CGROUP_DEVICE = 0x6 - BPF_SK_MSG_VERDICT = 0x7 - BPF_CGROUP_INET4_BIND = 0x8 - BPF_CGROUP_INET6_BIND = 0x9 - BPF_CGROUP_INET4_CONNECT = 0xa - BPF_CGROUP_INET6_CONNECT = 0xb - BPF_CGROUP_INET4_POST_BIND = 0xc - BPF_CGROUP_INET6_POST_BIND = 0xd - BPF_CGROUP_UDP4_SENDMSG = 0xe - BPF_CGROUP_UDP6_SENDMSG = 0xf - BPF_LIRC_MODE2 = 0x10 - BPF_FLOW_DISSECTOR = 0x11 - BPF_STACK_BUILD_ID_EMPTY = 0x0 - BPF_STACK_BUILD_ID_VALID = 0x1 - BPF_STACK_BUILD_ID_IP = 0x2 - BPF_ADJ_ROOM_NET = 0x0 - BPF_HDR_START_MAC = 0x0 - BPF_HDR_START_NET = 0x1 - BPF_LWT_ENCAP_SEG6 = 0x0 - BPF_LWT_ENCAP_SEG6_INLINE = 0x1 - BPF_OK = 0x0 - BPF_DROP = 0x2 - BPF_REDIRECT = 0x7 - BPF_SOCK_OPS_VOID = 0x0 - BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 - BPF_SOCK_OPS_RWND_INIT = 0x2 - BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 - BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 - BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 - BPF_SOCK_OPS_NEEDS_ECN = 0x6 - BPF_SOCK_OPS_BASE_RTT = 0x7 - BPF_SOCK_OPS_RTO_CB = 0x8 - BPF_SOCK_OPS_RETRANS_CB = 0x9 - BPF_SOCK_OPS_STATE_CB = 0xa - BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb - BPF_TCP_ESTABLISHED = 0x1 - BPF_TCP_SYN_SENT = 0x2 - BPF_TCP_SYN_RECV = 0x3 - BPF_TCP_FIN_WAIT1 = 0x4 - BPF_TCP_FIN_WAIT2 = 0x5 - BPF_TCP_TIME_WAIT = 0x6 - BPF_TCP_CLOSE = 0x7 - BPF_TCP_CLOSE_WAIT = 0x8 - BPF_TCP_LAST_ACK = 0x9 - BPF_TCP_LISTEN = 0xa - BPF_TCP_CLOSING = 0xb - BPF_TCP_NEW_SYN_RECV = 0xc - BPF_TCP_MAX_STATES = 0xd - BPF_FIB_LKUP_RET_SUCCESS = 0x0 - BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 - BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 - BPF_FIB_LKUP_RET_PROHIBIT = 0x3 - BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 - BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 - BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 - BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 - BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 - BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 - BPF_FD_TYPE_TRACEPOINT = 0x1 - BPF_FD_TYPE_KPROBE = 0x2 - BPF_FD_TYPE_KRETPROBE = 0x3 - BPF_FD_TYPE_UPROBE = 0x4 - BPF_FD_TYPE_URETPROBE = 0x5 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go deleted file mode 100644 index 48b3b5c34..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +++ /dev/null @@ -1,2464 +0,0 @@ -// 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 -} - -const ( - BPF_REG_0 = 0x0 - BPF_REG_1 = 0x1 - BPF_REG_2 = 0x2 - BPF_REG_3 = 0x3 - BPF_REG_4 = 0x4 - BPF_REG_5 = 0x5 - BPF_REG_6 = 0x6 - BPF_REG_7 = 0x7 - BPF_REG_8 = 0x8 - BPF_REG_9 = 0x9 - BPF_REG_10 = 0xa - BPF_MAP_CREATE = 0x0 - BPF_MAP_LOOKUP_ELEM = 0x1 - BPF_MAP_UPDATE_ELEM = 0x2 - BPF_MAP_DELETE_ELEM = 0x3 - BPF_MAP_GET_NEXT_KEY = 0x4 - BPF_PROG_LOAD = 0x5 - BPF_OBJ_PIN = 0x6 - BPF_OBJ_GET = 0x7 - BPF_PROG_ATTACH = 0x8 - BPF_PROG_DETACH = 0x9 - BPF_PROG_TEST_RUN = 0xa - BPF_PROG_GET_NEXT_ID = 0xb - BPF_MAP_GET_NEXT_ID = 0xc - BPF_PROG_GET_FD_BY_ID = 0xd - BPF_MAP_GET_FD_BY_ID = 0xe - BPF_OBJ_GET_INFO_BY_FD = 0xf - BPF_PROG_QUERY = 0x10 - BPF_RAW_TRACEPOINT_OPEN = 0x11 - BPF_BTF_LOAD = 0x12 - BPF_BTF_GET_FD_BY_ID = 0x13 - BPF_TASK_FD_QUERY = 0x14 - BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 - BPF_MAP_TYPE_UNSPEC = 0x0 - BPF_MAP_TYPE_HASH = 0x1 - BPF_MAP_TYPE_ARRAY = 0x2 - BPF_MAP_TYPE_PROG_ARRAY = 0x3 - BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 - BPF_MAP_TYPE_PERCPU_HASH = 0x5 - BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 - BPF_MAP_TYPE_STACK_TRACE = 0x7 - BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 - BPF_MAP_TYPE_LRU_HASH = 0x9 - BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa - BPF_MAP_TYPE_LPM_TRIE = 0xb - BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc - BPF_MAP_TYPE_HASH_OF_MAPS = 0xd - BPF_MAP_TYPE_DEVMAP = 0xe - BPF_MAP_TYPE_SOCKMAP = 0xf - BPF_MAP_TYPE_CPUMAP = 0x10 - BPF_MAP_TYPE_XSKMAP = 0x11 - BPF_MAP_TYPE_SOCKHASH = 0x12 - BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 - BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 - BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 - BPF_MAP_TYPE_QUEUE = 0x16 - BPF_MAP_TYPE_STACK = 0x17 - BPF_PROG_TYPE_UNSPEC = 0x0 - BPF_PROG_TYPE_SOCKET_FILTER = 0x1 - BPF_PROG_TYPE_KPROBE = 0x2 - BPF_PROG_TYPE_SCHED_CLS = 0x3 - BPF_PROG_TYPE_SCHED_ACT = 0x4 - BPF_PROG_TYPE_TRACEPOINT = 0x5 - BPF_PROG_TYPE_XDP = 0x6 - BPF_PROG_TYPE_PERF_EVENT = 0x7 - BPF_PROG_TYPE_CGROUP_SKB = 0x8 - BPF_PROG_TYPE_CGROUP_SOCK = 0x9 - BPF_PROG_TYPE_LWT_IN = 0xa - BPF_PROG_TYPE_LWT_OUT = 0xb - BPF_PROG_TYPE_LWT_XMIT = 0xc - BPF_PROG_TYPE_SOCK_OPS = 0xd - BPF_PROG_TYPE_SK_SKB = 0xe - BPF_PROG_TYPE_CGROUP_DEVICE = 0xf - BPF_PROG_TYPE_SK_MSG = 0x10 - BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 - BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 - BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 - BPF_PROG_TYPE_LIRC_MODE2 = 0x14 - BPF_PROG_TYPE_SK_REUSEPORT = 0x15 - BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 - BPF_CGROUP_INET_INGRESS = 0x0 - BPF_CGROUP_INET_EGRESS = 0x1 - BPF_CGROUP_INET_SOCK_CREATE = 0x2 - BPF_CGROUP_SOCK_OPS = 0x3 - BPF_SK_SKB_STREAM_PARSER = 0x4 - BPF_SK_SKB_STREAM_VERDICT = 0x5 - BPF_CGROUP_DEVICE = 0x6 - BPF_SK_MSG_VERDICT = 0x7 - BPF_CGROUP_INET4_BIND = 0x8 - BPF_CGROUP_INET6_BIND = 0x9 - BPF_CGROUP_INET4_CONNECT = 0xa - BPF_CGROUP_INET6_CONNECT = 0xb - BPF_CGROUP_INET4_POST_BIND = 0xc - BPF_CGROUP_INET6_POST_BIND = 0xd - BPF_CGROUP_UDP4_SENDMSG = 0xe - BPF_CGROUP_UDP6_SENDMSG = 0xf - BPF_LIRC_MODE2 = 0x10 - BPF_FLOW_DISSECTOR = 0x11 - BPF_STACK_BUILD_ID_EMPTY = 0x0 - BPF_STACK_BUILD_ID_VALID = 0x1 - BPF_STACK_BUILD_ID_IP = 0x2 - BPF_ADJ_ROOM_NET = 0x0 - BPF_HDR_START_MAC = 0x0 - BPF_HDR_START_NET = 0x1 - BPF_LWT_ENCAP_SEG6 = 0x0 - BPF_LWT_ENCAP_SEG6_INLINE = 0x1 - BPF_OK = 0x0 - BPF_DROP = 0x2 - BPF_REDIRECT = 0x7 - BPF_SOCK_OPS_VOID = 0x0 - BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 - BPF_SOCK_OPS_RWND_INIT = 0x2 - BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 - BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 - BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 - BPF_SOCK_OPS_NEEDS_ECN = 0x6 - BPF_SOCK_OPS_BASE_RTT = 0x7 - BPF_SOCK_OPS_RTO_CB = 0x8 - BPF_SOCK_OPS_RETRANS_CB = 0x9 - BPF_SOCK_OPS_STATE_CB = 0xa - BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb - BPF_TCP_ESTABLISHED = 0x1 - BPF_TCP_SYN_SENT = 0x2 - BPF_TCP_SYN_RECV = 0x3 - BPF_TCP_FIN_WAIT1 = 0x4 - BPF_TCP_FIN_WAIT2 = 0x5 - BPF_TCP_TIME_WAIT = 0x6 - BPF_TCP_CLOSE = 0x7 - BPF_TCP_CLOSE_WAIT = 0x8 - BPF_TCP_LAST_ACK = 0x9 - BPF_TCP_LISTEN = 0xa - BPF_TCP_CLOSING = 0xb - BPF_TCP_NEW_SYN_RECV = 0xc - BPF_TCP_MAX_STATES = 0xd - BPF_FIB_LKUP_RET_SUCCESS = 0x0 - BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 - BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 - BPF_FIB_LKUP_RET_PROHIBIT = 0x3 - BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 - BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 - BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 - BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 - BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 - BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 - BPF_FD_TYPE_TRACEPOINT = 0x1 - BPF_FD_TYPE_KPROBE = 0x2 - BPF_FD_TYPE_KRETPROBE = 0x3 - BPF_FD_TYPE_UPROBE = 0x4 - BPF_FD_TYPE_URETPROBE = 0x5 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go deleted file mode 100644 index 020f16c02..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +++ /dev/null @@ -1,2469 +0,0 @@ -// 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 -} - -const ( - BPF_REG_0 = 0x0 - BPF_REG_1 = 0x1 - BPF_REG_2 = 0x2 - BPF_REG_3 = 0x3 - BPF_REG_4 = 0x4 - BPF_REG_5 = 0x5 - BPF_REG_6 = 0x6 - BPF_REG_7 = 0x7 - BPF_REG_8 = 0x8 - BPF_REG_9 = 0x9 - BPF_REG_10 = 0xa - BPF_MAP_CREATE = 0x0 - BPF_MAP_LOOKUP_ELEM = 0x1 - BPF_MAP_UPDATE_ELEM = 0x2 - BPF_MAP_DELETE_ELEM = 0x3 - BPF_MAP_GET_NEXT_KEY = 0x4 - BPF_PROG_LOAD = 0x5 - BPF_OBJ_PIN = 0x6 - BPF_OBJ_GET = 0x7 - BPF_PROG_ATTACH = 0x8 - BPF_PROG_DETACH = 0x9 - BPF_PROG_TEST_RUN = 0xa - BPF_PROG_GET_NEXT_ID = 0xb - BPF_MAP_GET_NEXT_ID = 0xc - BPF_PROG_GET_FD_BY_ID = 0xd - BPF_MAP_GET_FD_BY_ID = 0xe - BPF_OBJ_GET_INFO_BY_FD = 0xf - BPF_PROG_QUERY = 0x10 - BPF_RAW_TRACEPOINT_OPEN = 0x11 - BPF_BTF_LOAD = 0x12 - BPF_BTF_GET_FD_BY_ID = 0x13 - BPF_TASK_FD_QUERY = 0x14 - BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 - BPF_MAP_TYPE_UNSPEC = 0x0 - BPF_MAP_TYPE_HASH = 0x1 - BPF_MAP_TYPE_ARRAY = 0x2 - BPF_MAP_TYPE_PROG_ARRAY = 0x3 - BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 - BPF_MAP_TYPE_PERCPU_HASH = 0x5 - BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 - BPF_MAP_TYPE_STACK_TRACE = 0x7 - BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 - BPF_MAP_TYPE_LRU_HASH = 0x9 - BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa - BPF_MAP_TYPE_LPM_TRIE = 0xb - BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc - BPF_MAP_TYPE_HASH_OF_MAPS = 0xd - BPF_MAP_TYPE_DEVMAP = 0xe - BPF_MAP_TYPE_SOCKMAP = 0xf - BPF_MAP_TYPE_CPUMAP = 0x10 - BPF_MAP_TYPE_XSKMAP = 0x11 - BPF_MAP_TYPE_SOCKHASH = 0x12 - BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 - BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 - BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 - BPF_MAP_TYPE_QUEUE = 0x16 - BPF_MAP_TYPE_STACK = 0x17 - BPF_PROG_TYPE_UNSPEC = 0x0 - BPF_PROG_TYPE_SOCKET_FILTER = 0x1 - BPF_PROG_TYPE_KPROBE = 0x2 - BPF_PROG_TYPE_SCHED_CLS = 0x3 - BPF_PROG_TYPE_SCHED_ACT = 0x4 - BPF_PROG_TYPE_TRACEPOINT = 0x5 - BPF_PROG_TYPE_XDP = 0x6 - BPF_PROG_TYPE_PERF_EVENT = 0x7 - BPF_PROG_TYPE_CGROUP_SKB = 0x8 - BPF_PROG_TYPE_CGROUP_SOCK = 0x9 - BPF_PROG_TYPE_LWT_IN = 0xa - BPF_PROG_TYPE_LWT_OUT = 0xb - BPF_PROG_TYPE_LWT_XMIT = 0xc - BPF_PROG_TYPE_SOCK_OPS = 0xd - BPF_PROG_TYPE_SK_SKB = 0xe - BPF_PROG_TYPE_CGROUP_DEVICE = 0xf - BPF_PROG_TYPE_SK_MSG = 0x10 - BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 - BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 - BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 - BPF_PROG_TYPE_LIRC_MODE2 = 0x14 - BPF_PROG_TYPE_SK_REUSEPORT = 0x15 - BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 - BPF_CGROUP_INET_INGRESS = 0x0 - BPF_CGROUP_INET_EGRESS = 0x1 - BPF_CGROUP_INET_SOCK_CREATE = 0x2 - BPF_CGROUP_SOCK_OPS = 0x3 - BPF_SK_SKB_STREAM_PARSER = 0x4 - BPF_SK_SKB_STREAM_VERDICT = 0x5 - BPF_CGROUP_DEVICE = 0x6 - BPF_SK_MSG_VERDICT = 0x7 - BPF_CGROUP_INET4_BIND = 0x8 - BPF_CGROUP_INET6_BIND = 0x9 - BPF_CGROUP_INET4_CONNECT = 0xa - BPF_CGROUP_INET6_CONNECT = 0xb - BPF_CGROUP_INET4_POST_BIND = 0xc - BPF_CGROUP_INET6_POST_BIND = 0xd - BPF_CGROUP_UDP4_SENDMSG = 0xe - BPF_CGROUP_UDP6_SENDMSG = 0xf - BPF_LIRC_MODE2 = 0x10 - BPF_FLOW_DISSECTOR = 0x11 - BPF_STACK_BUILD_ID_EMPTY = 0x0 - BPF_STACK_BUILD_ID_VALID = 0x1 - BPF_STACK_BUILD_ID_IP = 0x2 - BPF_ADJ_ROOM_NET = 0x0 - BPF_HDR_START_MAC = 0x0 - BPF_HDR_START_NET = 0x1 - BPF_LWT_ENCAP_SEG6 = 0x0 - BPF_LWT_ENCAP_SEG6_INLINE = 0x1 - BPF_OK = 0x0 - BPF_DROP = 0x2 - BPF_REDIRECT = 0x7 - BPF_SOCK_OPS_VOID = 0x0 - BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 - BPF_SOCK_OPS_RWND_INIT = 0x2 - BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 - BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 - BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 - BPF_SOCK_OPS_NEEDS_ECN = 0x6 - BPF_SOCK_OPS_BASE_RTT = 0x7 - BPF_SOCK_OPS_RTO_CB = 0x8 - BPF_SOCK_OPS_RETRANS_CB = 0x9 - BPF_SOCK_OPS_STATE_CB = 0xa - BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb - BPF_TCP_ESTABLISHED = 0x1 - BPF_TCP_SYN_SENT = 0x2 - BPF_TCP_SYN_RECV = 0x3 - BPF_TCP_FIN_WAIT1 = 0x4 - BPF_TCP_FIN_WAIT2 = 0x5 - BPF_TCP_TIME_WAIT = 0x6 - BPF_TCP_CLOSE = 0x7 - BPF_TCP_CLOSE_WAIT = 0x8 - BPF_TCP_LAST_ACK = 0x9 - BPF_TCP_LISTEN = 0xa - BPF_TCP_CLOSING = 0xb - BPF_TCP_NEW_SYN_RECV = 0xc - BPF_TCP_MAX_STATES = 0xd - BPF_FIB_LKUP_RET_SUCCESS = 0x0 - BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 - BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 - BPF_FIB_LKUP_RET_PROHIBIT = 0x3 - BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 - BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 - BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 - BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 - BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 - BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 - BPF_FD_TYPE_TRACEPOINT = 0x1 - BPF_FD_TYPE_KPROBE = 0x2 - BPF_FD_TYPE_KRETPROBE = 0x3 - BPF_FD_TYPE_UPROBE = 0x4 - BPF_FD_TYPE_URETPROBE = 0x5 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go deleted file mode 100644 index 92a9a8477..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +++ /dev/null @@ -1,2469 +0,0 @@ -// 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 -} - -const ( - BPF_REG_0 = 0x0 - BPF_REG_1 = 0x1 - BPF_REG_2 = 0x2 - BPF_REG_3 = 0x3 - BPF_REG_4 = 0x4 - BPF_REG_5 = 0x5 - BPF_REG_6 = 0x6 - BPF_REG_7 = 0x7 - BPF_REG_8 = 0x8 - BPF_REG_9 = 0x9 - BPF_REG_10 = 0xa - BPF_MAP_CREATE = 0x0 - BPF_MAP_LOOKUP_ELEM = 0x1 - BPF_MAP_UPDATE_ELEM = 0x2 - BPF_MAP_DELETE_ELEM = 0x3 - BPF_MAP_GET_NEXT_KEY = 0x4 - BPF_PROG_LOAD = 0x5 - BPF_OBJ_PIN = 0x6 - BPF_OBJ_GET = 0x7 - BPF_PROG_ATTACH = 0x8 - BPF_PROG_DETACH = 0x9 - BPF_PROG_TEST_RUN = 0xa - BPF_PROG_GET_NEXT_ID = 0xb - BPF_MAP_GET_NEXT_ID = 0xc - BPF_PROG_GET_FD_BY_ID = 0xd - BPF_MAP_GET_FD_BY_ID = 0xe - BPF_OBJ_GET_INFO_BY_FD = 0xf - BPF_PROG_QUERY = 0x10 - BPF_RAW_TRACEPOINT_OPEN = 0x11 - BPF_BTF_LOAD = 0x12 - BPF_BTF_GET_FD_BY_ID = 0x13 - BPF_TASK_FD_QUERY = 0x14 - BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 - BPF_MAP_TYPE_UNSPEC = 0x0 - BPF_MAP_TYPE_HASH = 0x1 - BPF_MAP_TYPE_ARRAY = 0x2 - BPF_MAP_TYPE_PROG_ARRAY = 0x3 - BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 - BPF_MAP_TYPE_PERCPU_HASH = 0x5 - BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 - BPF_MAP_TYPE_STACK_TRACE = 0x7 - BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 - BPF_MAP_TYPE_LRU_HASH = 0x9 - BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa - BPF_MAP_TYPE_LPM_TRIE = 0xb - BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc - BPF_MAP_TYPE_HASH_OF_MAPS = 0xd - BPF_MAP_TYPE_DEVMAP = 0xe - BPF_MAP_TYPE_SOCKMAP = 0xf - BPF_MAP_TYPE_CPUMAP = 0x10 - BPF_MAP_TYPE_XSKMAP = 0x11 - BPF_MAP_TYPE_SOCKHASH = 0x12 - BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 - BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 - BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 - BPF_MAP_TYPE_QUEUE = 0x16 - BPF_MAP_TYPE_STACK = 0x17 - BPF_PROG_TYPE_UNSPEC = 0x0 - BPF_PROG_TYPE_SOCKET_FILTER = 0x1 - BPF_PROG_TYPE_KPROBE = 0x2 - BPF_PROG_TYPE_SCHED_CLS = 0x3 - BPF_PROG_TYPE_SCHED_ACT = 0x4 - BPF_PROG_TYPE_TRACEPOINT = 0x5 - BPF_PROG_TYPE_XDP = 0x6 - BPF_PROG_TYPE_PERF_EVENT = 0x7 - BPF_PROG_TYPE_CGROUP_SKB = 0x8 - BPF_PROG_TYPE_CGROUP_SOCK = 0x9 - BPF_PROG_TYPE_LWT_IN = 0xa - BPF_PROG_TYPE_LWT_OUT = 0xb - BPF_PROG_TYPE_LWT_XMIT = 0xc - BPF_PROG_TYPE_SOCK_OPS = 0xd - BPF_PROG_TYPE_SK_SKB = 0xe - BPF_PROG_TYPE_CGROUP_DEVICE = 0xf - BPF_PROG_TYPE_SK_MSG = 0x10 - BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 - BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 - BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 - BPF_PROG_TYPE_LIRC_MODE2 = 0x14 - BPF_PROG_TYPE_SK_REUSEPORT = 0x15 - BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 - BPF_CGROUP_INET_INGRESS = 0x0 - BPF_CGROUP_INET_EGRESS = 0x1 - BPF_CGROUP_INET_SOCK_CREATE = 0x2 - BPF_CGROUP_SOCK_OPS = 0x3 - BPF_SK_SKB_STREAM_PARSER = 0x4 - BPF_SK_SKB_STREAM_VERDICT = 0x5 - BPF_CGROUP_DEVICE = 0x6 - BPF_SK_MSG_VERDICT = 0x7 - BPF_CGROUP_INET4_BIND = 0x8 - BPF_CGROUP_INET6_BIND = 0x9 - BPF_CGROUP_INET4_CONNECT = 0xa - BPF_CGROUP_INET6_CONNECT = 0xb - BPF_CGROUP_INET4_POST_BIND = 0xc - BPF_CGROUP_INET6_POST_BIND = 0xd - BPF_CGROUP_UDP4_SENDMSG = 0xe - BPF_CGROUP_UDP6_SENDMSG = 0xf - BPF_LIRC_MODE2 = 0x10 - BPF_FLOW_DISSECTOR = 0x11 - BPF_STACK_BUILD_ID_EMPTY = 0x0 - BPF_STACK_BUILD_ID_VALID = 0x1 - BPF_STACK_BUILD_ID_IP = 0x2 - BPF_ADJ_ROOM_NET = 0x0 - BPF_HDR_START_MAC = 0x0 - BPF_HDR_START_NET = 0x1 - BPF_LWT_ENCAP_SEG6 = 0x0 - BPF_LWT_ENCAP_SEG6_INLINE = 0x1 - BPF_OK = 0x0 - BPF_DROP = 0x2 - BPF_REDIRECT = 0x7 - BPF_SOCK_OPS_VOID = 0x0 - BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 - BPF_SOCK_OPS_RWND_INIT = 0x2 - BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 - BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 - BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 - BPF_SOCK_OPS_NEEDS_ECN = 0x6 - BPF_SOCK_OPS_BASE_RTT = 0x7 - BPF_SOCK_OPS_RTO_CB = 0x8 - BPF_SOCK_OPS_RETRANS_CB = 0x9 - BPF_SOCK_OPS_STATE_CB = 0xa - BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb - BPF_TCP_ESTABLISHED = 0x1 - BPF_TCP_SYN_SENT = 0x2 - BPF_TCP_SYN_RECV = 0x3 - BPF_TCP_FIN_WAIT1 = 0x4 - BPF_TCP_FIN_WAIT2 = 0x5 - BPF_TCP_TIME_WAIT = 0x6 - BPF_TCP_CLOSE = 0x7 - BPF_TCP_CLOSE_WAIT = 0x8 - BPF_TCP_LAST_ACK = 0x9 - BPF_TCP_LISTEN = 0xa - BPF_TCP_CLOSING = 0xb - BPF_TCP_NEW_SYN_RECV = 0xc - BPF_TCP_MAX_STATES = 0xd - BPF_FIB_LKUP_RET_SUCCESS = 0x0 - BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 - BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 - BPF_FIB_LKUP_RET_PROHIBIT = 0x3 - BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 - BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 - BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 - BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 - BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 - BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 - BPF_FD_TYPE_TRACEPOINT = 0x1 - BPF_FD_TYPE_KPROBE = 0x2 - BPF_FD_TYPE_KRETPROBE = 0x3 - BPF_FD_TYPE_UPROBE = 0x4 - BPF_FD_TYPE_URETPROBE = 0x5 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go deleted file mode 100644 index 4b82eeb84..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +++ /dev/null @@ -1,2486 +0,0 @@ -// 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 -} - -const ( - BPF_REG_0 = 0x0 - BPF_REG_1 = 0x1 - BPF_REG_2 = 0x2 - BPF_REG_3 = 0x3 - BPF_REG_4 = 0x4 - BPF_REG_5 = 0x5 - BPF_REG_6 = 0x6 - BPF_REG_7 = 0x7 - BPF_REG_8 = 0x8 - BPF_REG_9 = 0x9 - BPF_REG_10 = 0xa - BPF_MAP_CREATE = 0x0 - BPF_MAP_LOOKUP_ELEM = 0x1 - BPF_MAP_UPDATE_ELEM = 0x2 - BPF_MAP_DELETE_ELEM = 0x3 - BPF_MAP_GET_NEXT_KEY = 0x4 - BPF_PROG_LOAD = 0x5 - BPF_OBJ_PIN = 0x6 - BPF_OBJ_GET = 0x7 - BPF_PROG_ATTACH = 0x8 - BPF_PROG_DETACH = 0x9 - BPF_PROG_TEST_RUN = 0xa - BPF_PROG_GET_NEXT_ID = 0xb - BPF_MAP_GET_NEXT_ID = 0xc - BPF_PROG_GET_FD_BY_ID = 0xd - BPF_MAP_GET_FD_BY_ID = 0xe - BPF_OBJ_GET_INFO_BY_FD = 0xf - BPF_PROG_QUERY = 0x10 - BPF_RAW_TRACEPOINT_OPEN = 0x11 - BPF_BTF_LOAD = 0x12 - BPF_BTF_GET_FD_BY_ID = 0x13 - BPF_TASK_FD_QUERY = 0x14 - BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 - BPF_MAP_TYPE_UNSPEC = 0x0 - BPF_MAP_TYPE_HASH = 0x1 - BPF_MAP_TYPE_ARRAY = 0x2 - BPF_MAP_TYPE_PROG_ARRAY = 0x3 - BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 - BPF_MAP_TYPE_PERCPU_HASH = 0x5 - BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 - BPF_MAP_TYPE_STACK_TRACE = 0x7 - BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 - BPF_MAP_TYPE_LRU_HASH = 0x9 - BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa - BPF_MAP_TYPE_LPM_TRIE = 0xb - BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc - BPF_MAP_TYPE_HASH_OF_MAPS = 0xd - BPF_MAP_TYPE_DEVMAP = 0xe - BPF_MAP_TYPE_SOCKMAP = 0xf - BPF_MAP_TYPE_CPUMAP = 0x10 - BPF_MAP_TYPE_XSKMAP = 0x11 - BPF_MAP_TYPE_SOCKHASH = 0x12 - BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 - BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 - BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 - BPF_MAP_TYPE_QUEUE = 0x16 - BPF_MAP_TYPE_STACK = 0x17 - BPF_PROG_TYPE_UNSPEC = 0x0 - BPF_PROG_TYPE_SOCKET_FILTER = 0x1 - BPF_PROG_TYPE_KPROBE = 0x2 - BPF_PROG_TYPE_SCHED_CLS = 0x3 - BPF_PROG_TYPE_SCHED_ACT = 0x4 - BPF_PROG_TYPE_TRACEPOINT = 0x5 - BPF_PROG_TYPE_XDP = 0x6 - BPF_PROG_TYPE_PERF_EVENT = 0x7 - BPF_PROG_TYPE_CGROUP_SKB = 0x8 - BPF_PROG_TYPE_CGROUP_SOCK = 0x9 - BPF_PROG_TYPE_LWT_IN = 0xa - BPF_PROG_TYPE_LWT_OUT = 0xb - BPF_PROG_TYPE_LWT_XMIT = 0xc - BPF_PROG_TYPE_SOCK_OPS = 0xd - BPF_PROG_TYPE_SK_SKB = 0xe - BPF_PROG_TYPE_CGROUP_DEVICE = 0xf - BPF_PROG_TYPE_SK_MSG = 0x10 - BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 - BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 - BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 - BPF_PROG_TYPE_LIRC_MODE2 = 0x14 - BPF_PROG_TYPE_SK_REUSEPORT = 0x15 - BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 - BPF_CGROUP_INET_INGRESS = 0x0 - BPF_CGROUP_INET_EGRESS = 0x1 - BPF_CGROUP_INET_SOCK_CREATE = 0x2 - BPF_CGROUP_SOCK_OPS = 0x3 - BPF_SK_SKB_STREAM_PARSER = 0x4 - BPF_SK_SKB_STREAM_VERDICT = 0x5 - BPF_CGROUP_DEVICE = 0x6 - BPF_SK_MSG_VERDICT = 0x7 - BPF_CGROUP_INET4_BIND = 0x8 - BPF_CGROUP_INET6_BIND = 0x9 - BPF_CGROUP_INET4_CONNECT = 0xa - BPF_CGROUP_INET6_CONNECT = 0xb - BPF_CGROUP_INET4_POST_BIND = 0xc - BPF_CGROUP_INET6_POST_BIND = 0xd - BPF_CGROUP_UDP4_SENDMSG = 0xe - BPF_CGROUP_UDP6_SENDMSG = 0xf - BPF_LIRC_MODE2 = 0x10 - BPF_FLOW_DISSECTOR = 0x11 - BPF_STACK_BUILD_ID_EMPTY = 0x0 - BPF_STACK_BUILD_ID_VALID = 0x1 - BPF_STACK_BUILD_ID_IP = 0x2 - BPF_ADJ_ROOM_NET = 0x0 - BPF_HDR_START_MAC = 0x0 - BPF_HDR_START_NET = 0x1 - BPF_LWT_ENCAP_SEG6 = 0x0 - BPF_LWT_ENCAP_SEG6_INLINE = 0x1 - BPF_OK = 0x0 - BPF_DROP = 0x2 - BPF_REDIRECT = 0x7 - BPF_SOCK_OPS_VOID = 0x0 - BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 - BPF_SOCK_OPS_RWND_INIT = 0x2 - BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 - BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 - BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 - BPF_SOCK_OPS_NEEDS_ECN = 0x6 - BPF_SOCK_OPS_BASE_RTT = 0x7 - BPF_SOCK_OPS_RTO_CB = 0x8 - BPF_SOCK_OPS_RETRANS_CB = 0x9 - BPF_SOCK_OPS_STATE_CB = 0xa - BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb - BPF_TCP_ESTABLISHED = 0x1 - BPF_TCP_SYN_SENT = 0x2 - BPF_TCP_SYN_RECV = 0x3 - BPF_TCP_FIN_WAIT1 = 0x4 - BPF_TCP_FIN_WAIT2 = 0x5 - BPF_TCP_TIME_WAIT = 0x6 - BPF_TCP_CLOSE = 0x7 - BPF_TCP_CLOSE_WAIT = 0x8 - BPF_TCP_LAST_ACK = 0x9 - BPF_TCP_LISTEN = 0xa - BPF_TCP_CLOSING = 0xb - BPF_TCP_NEW_SYN_RECV = 0xc - BPF_TCP_MAX_STATES = 0xd - BPF_FIB_LKUP_RET_SUCCESS = 0x0 - BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 - BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 - BPF_FIB_LKUP_RET_PROHIBIT = 0x3 - BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 - BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 - BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 - BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 - BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 - BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 - BPF_FD_TYPE_TRACEPOINT = 0x1 - BPF_FD_TYPE_KPROBE = 0x2 - BPF_FD_TYPE_KRETPROBE = 0x3 - BPF_FD_TYPE_UPROBE = 0x4 - BPF_FD_TYPE_URETPROBE = 0x5 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go deleted file mode 100644 index 6cf3031ef..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +++ /dev/null @@ -1,2483 +0,0 @@ -// 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 -} - -const ( - BPF_REG_0 = 0x0 - BPF_REG_1 = 0x1 - BPF_REG_2 = 0x2 - BPF_REG_3 = 0x3 - BPF_REG_4 = 0x4 - BPF_REG_5 = 0x5 - BPF_REG_6 = 0x6 - BPF_REG_7 = 0x7 - BPF_REG_8 = 0x8 - BPF_REG_9 = 0x9 - BPF_REG_10 = 0xa - BPF_MAP_CREATE = 0x0 - BPF_MAP_LOOKUP_ELEM = 0x1 - BPF_MAP_UPDATE_ELEM = 0x2 - BPF_MAP_DELETE_ELEM = 0x3 - BPF_MAP_GET_NEXT_KEY = 0x4 - BPF_PROG_LOAD = 0x5 - BPF_OBJ_PIN = 0x6 - BPF_OBJ_GET = 0x7 - BPF_PROG_ATTACH = 0x8 - BPF_PROG_DETACH = 0x9 - BPF_PROG_TEST_RUN = 0xa - BPF_PROG_GET_NEXT_ID = 0xb - BPF_MAP_GET_NEXT_ID = 0xc - BPF_PROG_GET_FD_BY_ID = 0xd - BPF_MAP_GET_FD_BY_ID = 0xe - BPF_OBJ_GET_INFO_BY_FD = 0xf - BPF_PROG_QUERY = 0x10 - BPF_RAW_TRACEPOINT_OPEN = 0x11 - BPF_BTF_LOAD = 0x12 - BPF_BTF_GET_FD_BY_ID = 0x13 - BPF_TASK_FD_QUERY = 0x14 - BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 - BPF_MAP_TYPE_UNSPEC = 0x0 - BPF_MAP_TYPE_HASH = 0x1 - BPF_MAP_TYPE_ARRAY = 0x2 - BPF_MAP_TYPE_PROG_ARRAY = 0x3 - BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 - BPF_MAP_TYPE_PERCPU_HASH = 0x5 - BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 - BPF_MAP_TYPE_STACK_TRACE = 0x7 - BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 - BPF_MAP_TYPE_LRU_HASH = 0x9 - BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa - BPF_MAP_TYPE_LPM_TRIE = 0xb - BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc - BPF_MAP_TYPE_HASH_OF_MAPS = 0xd - BPF_MAP_TYPE_DEVMAP = 0xe - BPF_MAP_TYPE_SOCKMAP = 0xf - BPF_MAP_TYPE_CPUMAP = 0x10 - BPF_MAP_TYPE_XSKMAP = 0x11 - BPF_MAP_TYPE_SOCKHASH = 0x12 - BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 - BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 - BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 - BPF_MAP_TYPE_QUEUE = 0x16 - BPF_MAP_TYPE_STACK = 0x17 - BPF_PROG_TYPE_UNSPEC = 0x0 - BPF_PROG_TYPE_SOCKET_FILTER = 0x1 - BPF_PROG_TYPE_KPROBE = 0x2 - BPF_PROG_TYPE_SCHED_CLS = 0x3 - BPF_PROG_TYPE_SCHED_ACT = 0x4 - BPF_PROG_TYPE_TRACEPOINT = 0x5 - BPF_PROG_TYPE_XDP = 0x6 - BPF_PROG_TYPE_PERF_EVENT = 0x7 - BPF_PROG_TYPE_CGROUP_SKB = 0x8 - BPF_PROG_TYPE_CGROUP_SOCK = 0x9 - BPF_PROG_TYPE_LWT_IN = 0xa - BPF_PROG_TYPE_LWT_OUT = 0xb - BPF_PROG_TYPE_LWT_XMIT = 0xc - BPF_PROG_TYPE_SOCK_OPS = 0xd - BPF_PROG_TYPE_SK_SKB = 0xe - BPF_PROG_TYPE_CGROUP_DEVICE = 0xf - BPF_PROG_TYPE_SK_MSG = 0x10 - BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 - BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 - BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 - BPF_PROG_TYPE_LIRC_MODE2 = 0x14 - BPF_PROG_TYPE_SK_REUSEPORT = 0x15 - BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 - BPF_CGROUP_INET_INGRESS = 0x0 - BPF_CGROUP_INET_EGRESS = 0x1 - BPF_CGROUP_INET_SOCK_CREATE = 0x2 - BPF_CGROUP_SOCK_OPS = 0x3 - BPF_SK_SKB_STREAM_PARSER = 0x4 - BPF_SK_SKB_STREAM_VERDICT = 0x5 - BPF_CGROUP_DEVICE = 0x6 - BPF_SK_MSG_VERDICT = 0x7 - BPF_CGROUP_INET4_BIND = 0x8 - BPF_CGROUP_INET6_BIND = 0x9 - BPF_CGROUP_INET4_CONNECT = 0xa - BPF_CGROUP_INET6_CONNECT = 0xb - BPF_CGROUP_INET4_POST_BIND = 0xc - BPF_CGROUP_INET6_POST_BIND = 0xd - BPF_CGROUP_UDP4_SENDMSG = 0xe - BPF_CGROUP_UDP6_SENDMSG = 0xf - BPF_LIRC_MODE2 = 0x10 - BPF_FLOW_DISSECTOR = 0x11 - BPF_STACK_BUILD_ID_EMPTY = 0x0 - BPF_STACK_BUILD_ID_VALID = 0x1 - BPF_STACK_BUILD_ID_IP = 0x2 - BPF_ADJ_ROOM_NET = 0x0 - BPF_HDR_START_MAC = 0x0 - BPF_HDR_START_NET = 0x1 - BPF_LWT_ENCAP_SEG6 = 0x0 - BPF_LWT_ENCAP_SEG6_INLINE = 0x1 - BPF_OK = 0x0 - BPF_DROP = 0x2 - BPF_REDIRECT = 0x7 - BPF_SOCK_OPS_VOID = 0x0 - BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 - BPF_SOCK_OPS_RWND_INIT = 0x2 - BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 - BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 - BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 - BPF_SOCK_OPS_NEEDS_ECN = 0x6 - BPF_SOCK_OPS_BASE_RTT = 0x7 - BPF_SOCK_OPS_RTO_CB = 0x8 - BPF_SOCK_OPS_RETRANS_CB = 0x9 - BPF_SOCK_OPS_STATE_CB = 0xa - BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb - BPF_TCP_ESTABLISHED = 0x1 - BPF_TCP_SYN_SENT = 0x2 - BPF_TCP_SYN_RECV = 0x3 - BPF_TCP_FIN_WAIT1 = 0x4 - BPF_TCP_FIN_WAIT2 = 0x5 - BPF_TCP_TIME_WAIT = 0x6 - BPF_TCP_CLOSE = 0x7 - BPF_TCP_CLOSE_WAIT = 0x8 - BPF_TCP_LAST_ACK = 0x9 - BPF_TCP_LISTEN = 0xa - BPF_TCP_CLOSING = 0xb - BPF_TCP_NEW_SYN_RECV = 0xc - BPF_TCP_MAX_STATES = 0xd - BPF_FIB_LKUP_RET_SUCCESS = 0x0 - BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 - BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 - BPF_FIB_LKUP_RET_PROHIBIT = 0x3 - BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 - BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 - BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 - BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 - BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 - BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 - BPF_FD_TYPE_TRACEPOINT = 0x1 - BPF_FD_TYPE_KPROBE = 0x2 - BPF_FD_TYPE_KRETPROBE = 0x3 - BPF_FD_TYPE_UPROBE = 0x4 - BPF_FD_TYPE_URETPROBE = 0x5 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go deleted file mode 100644 index 44b5c8edf..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +++ /dev/null @@ -1,2464 +0,0 @@ -// 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 -} - -const ( - BPF_REG_0 = 0x0 - BPF_REG_1 = 0x1 - BPF_REG_2 = 0x2 - BPF_REG_3 = 0x3 - BPF_REG_4 = 0x4 - BPF_REG_5 = 0x5 - BPF_REG_6 = 0x6 - BPF_REG_7 = 0x7 - BPF_REG_8 = 0x8 - BPF_REG_9 = 0x9 - BPF_REG_10 = 0xa - BPF_MAP_CREATE = 0x0 - BPF_MAP_LOOKUP_ELEM = 0x1 - BPF_MAP_UPDATE_ELEM = 0x2 - BPF_MAP_DELETE_ELEM = 0x3 - BPF_MAP_GET_NEXT_KEY = 0x4 - BPF_PROG_LOAD = 0x5 - BPF_OBJ_PIN = 0x6 - BPF_OBJ_GET = 0x7 - BPF_PROG_ATTACH = 0x8 - BPF_PROG_DETACH = 0x9 - BPF_PROG_TEST_RUN = 0xa - BPF_PROG_GET_NEXT_ID = 0xb - BPF_MAP_GET_NEXT_ID = 0xc - BPF_PROG_GET_FD_BY_ID = 0xd - BPF_MAP_GET_FD_BY_ID = 0xe - BPF_OBJ_GET_INFO_BY_FD = 0xf - BPF_PROG_QUERY = 0x10 - BPF_RAW_TRACEPOINT_OPEN = 0x11 - BPF_BTF_LOAD = 0x12 - BPF_BTF_GET_FD_BY_ID = 0x13 - BPF_TASK_FD_QUERY = 0x14 - BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 - BPF_MAP_TYPE_UNSPEC = 0x0 - BPF_MAP_TYPE_HASH = 0x1 - BPF_MAP_TYPE_ARRAY = 0x2 - BPF_MAP_TYPE_PROG_ARRAY = 0x3 - BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 - BPF_MAP_TYPE_PERCPU_HASH = 0x5 - BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 - BPF_MAP_TYPE_STACK_TRACE = 0x7 - BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 - BPF_MAP_TYPE_LRU_HASH = 0x9 - BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa - BPF_MAP_TYPE_LPM_TRIE = 0xb - BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc - BPF_MAP_TYPE_HASH_OF_MAPS = 0xd - BPF_MAP_TYPE_DEVMAP = 0xe - BPF_MAP_TYPE_SOCKMAP = 0xf - BPF_MAP_TYPE_CPUMAP = 0x10 - BPF_MAP_TYPE_XSKMAP = 0x11 - BPF_MAP_TYPE_SOCKHASH = 0x12 - BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 - BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 - BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 - BPF_MAP_TYPE_QUEUE = 0x16 - BPF_MAP_TYPE_STACK = 0x17 - BPF_PROG_TYPE_UNSPEC = 0x0 - BPF_PROG_TYPE_SOCKET_FILTER = 0x1 - BPF_PROG_TYPE_KPROBE = 0x2 - BPF_PROG_TYPE_SCHED_CLS = 0x3 - BPF_PROG_TYPE_SCHED_ACT = 0x4 - BPF_PROG_TYPE_TRACEPOINT = 0x5 - BPF_PROG_TYPE_XDP = 0x6 - BPF_PROG_TYPE_PERF_EVENT = 0x7 - BPF_PROG_TYPE_CGROUP_SKB = 0x8 - BPF_PROG_TYPE_CGROUP_SOCK = 0x9 - BPF_PROG_TYPE_LWT_IN = 0xa - BPF_PROG_TYPE_LWT_OUT = 0xb - BPF_PROG_TYPE_LWT_XMIT = 0xc - BPF_PROG_TYPE_SOCK_OPS = 0xd - BPF_PROG_TYPE_SK_SKB = 0xe - BPF_PROG_TYPE_CGROUP_DEVICE = 0xf - BPF_PROG_TYPE_SK_MSG = 0x10 - BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 - BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 - BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 - BPF_PROG_TYPE_LIRC_MODE2 = 0x14 - BPF_PROG_TYPE_SK_REUSEPORT = 0x15 - BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 - BPF_CGROUP_INET_INGRESS = 0x0 - BPF_CGROUP_INET_EGRESS = 0x1 - BPF_CGROUP_INET_SOCK_CREATE = 0x2 - BPF_CGROUP_SOCK_OPS = 0x3 - BPF_SK_SKB_STREAM_PARSER = 0x4 - BPF_SK_SKB_STREAM_VERDICT = 0x5 - BPF_CGROUP_DEVICE = 0x6 - BPF_SK_MSG_VERDICT = 0x7 - BPF_CGROUP_INET4_BIND = 0x8 - BPF_CGROUP_INET6_BIND = 0x9 - BPF_CGROUP_INET4_CONNECT = 0xa - BPF_CGROUP_INET6_CONNECT = 0xb - BPF_CGROUP_INET4_POST_BIND = 0xc - BPF_CGROUP_INET6_POST_BIND = 0xd - BPF_CGROUP_UDP4_SENDMSG = 0xe - BPF_CGROUP_UDP6_SENDMSG = 0xf - BPF_LIRC_MODE2 = 0x10 - BPF_FLOW_DISSECTOR = 0x11 - BPF_STACK_BUILD_ID_EMPTY = 0x0 - BPF_STACK_BUILD_ID_VALID = 0x1 - BPF_STACK_BUILD_ID_IP = 0x2 - BPF_ADJ_ROOM_NET = 0x0 - BPF_HDR_START_MAC = 0x0 - BPF_HDR_START_NET = 0x1 - BPF_LWT_ENCAP_SEG6 = 0x0 - BPF_LWT_ENCAP_SEG6_INLINE = 0x1 - BPF_OK = 0x0 - BPF_DROP = 0x2 - BPF_REDIRECT = 0x7 - BPF_SOCK_OPS_VOID = 0x0 - BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 - BPF_SOCK_OPS_RWND_INIT = 0x2 - BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 - BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 - BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 - BPF_SOCK_OPS_NEEDS_ECN = 0x6 - BPF_SOCK_OPS_BASE_RTT = 0x7 - BPF_SOCK_OPS_RTO_CB = 0x8 - BPF_SOCK_OPS_RETRANS_CB = 0x9 - BPF_SOCK_OPS_STATE_CB = 0xa - BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb - BPF_TCP_ESTABLISHED = 0x1 - BPF_TCP_SYN_SENT = 0x2 - BPF_TCP_SYN_RECV = 0x3 - BPF_TCP_FIN_WAIT1 = 0x4 - BPF_TCP_FIN_WAIT2 = 0x5 - BPF_TCP_TIME_WAIT = 0x6 - BPF_TCP_CLOSE = 0x7 - BPF_TCP_CLOSE_WAIT = 0x8 - BPF_TCP_LAST_ACK = 0x9 - BPF_TCP_LISTEN = 0xa - BPF_TCP_CLOSING = 0xb - BPF_TCP_NEW_SYN_RECV = 0xc - BPF_TCP_MAX_STATES = 0xd - BPF_FIB_LKUP_RET_SUCCESS = 0x0 - BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 - BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 - BPF_FIB_LKUP_RET_PROHIBIT = 0x3 - BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 - BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 - BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 - BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 - BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 - BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 - BPF_FD_TYPE_TRACEPOINT = 0x1 - BPF_FD_TYPE_KPROBE = 0x2 - BPF_FD_TYPE_KRETPROBE = 0x3 - BPF_FD_TYPE_UPROBE = 0x4 - BPF_FD_TYPE_URETPROBE = 0x5 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go deleted file mode 100644 index a2268b4f6..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go +++ /dev/null @@ -1,465 +0,0 @@ -// 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 - Atim Timespec - Mtim Timespec - Ctim Timespec - Btim 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go deleted file mode 100644 index 59e1da0a6..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go +++ /dev/null @@ -1,472 +0,0 @@ -// 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 - _ [4]byte - Ino uint64 - Nlink uint32 - Uid uint32 - Gid uint32 - _ [4]byte - Rdev uint64 - Atim Timespec - Mtim Timespec - Ctim Timespec - Btim Timespec - Size int64 - Blocks int64 - Blksize uint32 - Flags uint32 - Gen uint32 - Spare [2]uint32 - _ [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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go deleted file mode 100644 index 1f1f0f381..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go +++ /dev/null @@ -1,470 +0,0 @@ -// 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 - _ [4]byte - Ino uint64 - Nlink uint32 - Uid uint32 - Gid uint32 - _ [4]byte - Rdev uint64 - Atim Timespec - Mtim Timespec - Ctim Timespec - Btim Timespec - Size int64 - Blocks int64 - Blksize uint32 - Flags uint32 - Gen uint32 - Spare [2]uint32 - _ [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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go deleted file mode 100644 index 8dca204a9..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go +++ /dev/null @@ -1,472 +0,0 @@ -// 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 - _ [4]byte - Ino uint64 - Nlink uint32 - Uid uint32 - Gid uint32 - _ [4]byte - Rdev uint64 - Atim Timespec - Mtim Timespec - Ctim Timespec - Btim Timespec - Size int64 - Blocks int64 - Blksize uint32 - Flags uint32 - Gen uint32 - Spare [2]uint32 - _ [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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go deleted file mode 100644 index 900fb4462..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +++ /dev/null @@ -1,570 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go deleted file mode 100644 index 028fa78d7..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +++ /dev/null @@ -1,570 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go deleted file mode 100644 index b45d5eedf..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +++ /dev/null @@ -1,571 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go deleted file mode 100644 index fa369a32a..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go +++ /dev/null @@ -1,564 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go deleted file mode 100644 index 8531a190f..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +++ /dev/null @@ -1,442 +0,0 @@ -// 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/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/.travis.yml b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/.travis.yml deleted file mode 100644 index f5bd256c1..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -language: go -go: -- 1.7.x -- 1.10.x -- master -sudo: false -os: -- linux -- osx diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/LICENSE b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/LICENSE deleted file mode 100644 index 511970333..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/LICENSE +++ /dev/null @@ -1,12 +0,0 @@ -Copyright (c) 2012-2015, Sergey Cherepanov -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 the author 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 HOLDER 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. \ No newline at end of file diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/README.md b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/README.md deleted file mode 100644 index 1295df70e..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/README.md +++ /dev/null @@ -1,177 +0,0 @@ -# Terminal progress bar for Go - -Simple progress bar for console programs. - -Please check the new version https://github.com/cheggaaa/pb/tree/v2 (currently, it's beta) - -## Installation - -``` -go get gopkg.in/cheggaaa/pb.v1 -``` - -## Usage - -```Go -package main - -import ( - "gopkg.in/cheggaaa/pb.v1" - "time" -) - -func main() { - count := 100000 - bar := pb.StartNew(count) - for i := 0; i < count; i++ { - bar.Increment() - time.Sleep(time.Millisecond) - } - bar.FinishPrint("The End!") -} - -``` - -Result will be like this: - -``` -> go run test.go -37158 / 100000 [================>_______________________________] 37.16% 1m11s -``` - -## Customization - -```Go -// create bar -bar := pb.New(count) - -// refresh info every second (default 200ms) -bar.SetRefreshRate(time.Second) - -// show percents (by default already true) -bar.ShowPercent = true - -// show bar (by default already true) -bar.ShowBar = true - -// no counters -bar.ShowCounters = false - -// show "time left" -bar.ShowTimeLeft = true - -// show average speed -bar.ShowSpeed = true - -// sets the width of the progress bar -bar.SetWidth(80) - -// sets the width of the progress bar, but if terminal size smaller will be ignored -bar.SetMaxWidth(80) - -// convert output to readable format (like KB, MB) -bar.SetUnits(pb.U_BYTES) - -// and start -bar.Start() -``` - -## Progress bar for IO Operations - -```go -// create and start bar -bar := pb.New(myDataLen).SetUnits(pb.U_BYTES) -bar.Start() - -// my io.Reader -r := myReader - -// my io.Writer -w := myWriter - -// create proxy reader -reader := bar.NewProxyReader(r) - -// and copy from pb reader -io.Copy(w, reader) - -``` - -```go -// create and start bar -bar := pb.New(myDataLen).SetUnits(pb.U_BYTES) -bar.Start() - -// my io.Reader -r := myReader - -// my io.Writer -w := myWriter - -// create multi writer -writer := io.MultiWriter(w, bar) - -// and copy -io.Copy(writer, r) - -bar.Finish() -``` - -## Custom Progress Bar Look-and-feel - -```go -bar.Format("<.- >") -``` - -## Multiple Progress Bars (experimental and unstable) - -Do not print to terminal while pool is active. - -```go -package main - -import ( - "math/rand" - "sync" - "time" - - "gopkg.in/cheggaaa/pb.v1" -) - -func main() { - // create bars - first := pb.New(200).Prefix("First ") - second := pb.New(200).Prefix("Second ") - third := pb.New(200).Prefix("Third ") - // start pool - pool, err := pb.StartPool(first, second, third) - if err != nil { - panic(err) - } - // update bars - wg := new(sync.WaitGroup) - for _, bar := range []*pb.ProgressBar{first, second, third} { - wg.Add(1) - go func(cb *pb.ProgressBar) { - for n := 0; n < 200; n++ { - cb.Increment() - time.Sleep(time.Millisecond * time.Duration(rand.Intn(100))) - } - cb.Finish() - wg.Done() - }(bar) - } - wg.Wait() - // close pool - pool.Stop() -} -``` - -The result will be as follows: - -``` -$ go run example/multiple.go -First 34 / 200 [=========>---------------------------------------------] 17.00% 00m08s -Second 42 / 200 [===========>------------------------------------------] 21.00% 00m06s -Third 36 / 200 [=========>---------------------------------------------] 18.00% 00m08s -``` diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/format.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/format.go deleted file mode 100644 index 8bb8a7a1d..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/format.go +++ /dev/null @@ -1,125 +0,0 @@ -package pb - -import ( - "fmt" - "time" -) - -type Units int - -const ( - // U_NO are default units, they represent a simple value and are not formatted at all. - U_NO Units = iota - // U_BYTES units are formatted in a human readable way (B, KiB, MiB, ...) - U_BYTES - // U_BYTES_DEC units are like U_BYTES, but base 10 (B, KB, MB, ...) - U_BYTES_DEC - // U_DURATION units are formatted in a human readable way (3h14m15s) - U_DURATION -) - -const ( - KiB = 1024 - MiB = 1048576 - GiB = 1073741824 - TiB = 1099511627776 - - KB = 1e3 - MB = 1e6 - GB = 1e9 - TB = 1e12 -) - -func Format(i int64) *formatter { - return &formatter{n: i} -} - -type formatter struct { - n int64 - unit Units - width int - perSec bool -} - -func (f *formatter) To(unit Units) *formatter { - f.unit = unit - return f -} - -func (f *formatter) Width(width int) *formatter { - f.width = width - return f -} - -func (f *formatter) PerSec() *formatter { - f.perSec = true - return f -} - -func (f *formatter) String() (out string) { - switch f.unit { - case U_BYTES: - out = formatBytes(f.n) - case U_BYTES_DEC: - out = formatBytesDec(f.n) - case U_DURATION: - out = formatDuration(f.n) - default: - out = fmt.Sprintf(fmt.Sprintf("%%%dd", f.width), f.n) - } - if f.perSec { - out += "/s" - } - return -} - -// Convert bytes to human readable string. Like 2 MiB, 64.2 KiB, 52 B -func formatBytes(i int64) (result string) { - switch { - case i >= TiB: - result = fmt.Sprintf("%.02f TiB", float64(i)/TiB) - case i >= GiB: - result = fmt.Sprintf("%.02f GiB", float64(i)/GiB) - case i >= MiB: - result = fmt.Sprintf("%.02f MiB", float64(i)/MiB) - case i >= KiB: - result = fmt.Sprintf("%.02f KiB", float64(i)/KiB) - default: - result = fmt.Sprintf("%d B", i) - } - return -} - -// Convert bytes to base-10 human readable string. Like 2 MB, 64.2 KB, 52 B -func formatBytesDec(i int64) (result string) { - switch { - case i >= TB: - result = fmt.Sprintf("%.02f TB", float64(i)/TB) - case i >= GB: - result = fmt.Sprintf("%.02f GB", float64(i)/GB) - case i >= MB: - result = fmt.Sprintf("%.02f MB", float64(i)/MB) - case i >= KB: - result = fmt.Sprintf("%.02f KB", float64(i)/KB) - default: - result = fmt.Sprintf("%d B", i) - } - return -} - -func formatDuration(n int64) (result string) { - d := time.Duration(n) - if d > time.Hour*24 { - result = fmt.Sprintf("%dd", d/24/time.Hour) - d -= (d / time.Hour / 24) * (time.Hour * 24) - } - if d > time.Hour { - result = fmt.Sprintf("%s%dh", result, d/time.Hour) - d -= d / time.Hour * time.Hour - } - m := d / time.Minute - d -= m * time.Minute - s := d / time.Second - result = fmt.Sprintf("%s%02dm%02ds", result, m, s) - return -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pb.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pb.go deleted file mode 100644 index 6d333074a..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pb.go +++ /dev/null @@ -1,500 +0,0 @@ -// Simple console progress bars -package pb - -import ( - "fmt" - "io" - "math" - "strings" - "sync" - "sync/atomic" - "time" - "unicode/utf8" -) - -// Current version -const Version = "1.0.28" - -const ( - // Default refresh rate - 200ms - DEFAULT_REFRESH_RATE = time.Millisecond * 200 - FORMAT = "[=>-]" -) - -// DEPRECATED -// variables for backward compatibility, from now do not work -// use pb.Format and pb.SetRefreshRate -var ( - DefaultRefreshRate = DEFAULT_REFRESH_RATE - BarStart, BarEnd, Empty, Current, CurrentN string -) - -// Create new progress bar object -func New(total int) *ProgressBar { - return New64(int64(total)) -} - -// Create new progress bar object using int64 as total -func New64(total int64) *ProgressBar { - pb := &ProgressBar{ - Total: total, - RefreshRate: DEFAULT_REFRESH_RATE, - ShowPercent: true, - ShowCounters: true, - ShowBar: true, - ShowTimeLeft: true, - ShowElapsedTime: false, - ShowFinalTime: true, - Units: U_NO, - ManualUpdate: false, - finish: make(chan struct{}), - } - return pb.Format(FORMAT) -} - -// Create new object and start -func StartNew(total int) *ProgressBar { - return New(total).Start() -} - -// Callback for custom output -// For example: -// bar.Callback = func(s string) { -// mySuperPrint(s) -// } -// -type Callback func(out string) - -type ProgressBar struct { - current int64 // current must be first member of struct (https://code.google.com/p/go/issues/detail?id=5278) - previous int64 - - Total int64 - RefreshRate time.Duration - ShowPercent, ShowCounters bool - ShowSpeed, ShowTimeLeft, ShowBar bool - ShowFinalTime, ShowElapsedTime bool - Output io.Writer - Callback Callback - NotPrint bool - Units Units - Width int - ForceWidth bool - ManualUpdate bool - AutoStat bool - - // Default width for the time box. - UnitsWidth int - TimeBoxWidth int - - finishOnce sync.Once //Guards isFinish - finish chan struct{} - isFinish bool - - startTime time.Time - startValue int64 - - changeTime time.Time - - prefix, postfix string - - mu sync.Mutex - lastPrint string - - BarStart string - BarEnd string - Empty string - Current string - CurrentN string - - AlwaysUpdate bool -} - -// Start print -func (pb *ProgressBar) Start() *ProgressBar { - pb.startTime = time.Now() - pb.startValue = atomic.LoadInt64(&pb.current) - if atomic.LoadInt64(&pb.Total) == 0 { - pb.ShowTimeLeft = false - pb.ShowPercent = false - pb.AutoStat = false - } - if !pb.ManualUpdate { - pb.Update() // Initial printing of the bar before running the bar refresher. - go pb.refresher() - } - return pb -} - -// Increment current value -func (pb *ProgressBar) Increment() int { - return pb.Add(1) -} - -// Get current value -func (pb *ProgressBar) Get() int64 { - c := atomic.LoadInt64(&pb.current) - return c -} - -// Set current value -func (pb *ProgressBar) Set(current int) *ProgressBar { - return pb.Set64(int64(current)) -} - -// Set64 sets the current value as int64 -func (pb *ProgressBar) Set64(current int64) *ProgressBar { - atomic.StoreInt64(&pb.current, current) - return pb -} - -// Add to current value -func (pb *ProgressBar) Add(add int) int { - return int(pb.Add64(int64(add))) -} - -func (pb *ProgressBar) Add64(add int64) int64 { - return atomic.AddInt64(&pb.current, add) -} - -// Set prefix string -func (pb *ProgressBar) Prefix(prefix string) *ProgressBar { - pb.mu.Lock() - defer pb.mu.Unlock() - pb.prefix = prefix - return pb -} - -// Set postfix string -func (pb *ProgressBar) Postfix(postfix string) *ProgressBar { - pb.mu.Lock() - defer pb.mu.Unlock() - pb.postfix = postfix - return pb -} - -// Set custom format for bar -// Example: bar.Format("[=>_]") -// Example: bar.Format("[\x00=\x00>\x00-\x00]") // \x00 is the delimiter -func (pb *ProgressBar) Format(format string) *ProgressBar { - var formatEntries []string - if utf8.RuneCountInString(format) == 5 { - formatEntries = strings.Split(format, "") - } else { - formatEntries = strings.Split(format, "\x00") - } - if len(formatEntries) == 5 { - pb.BarStart = formatEntries[0] - pb.BarEnd = formatEntries[4] - pb.Empty = formatEntries[3] - pb.Current = formatEntries[1] - pb.CurrentN = formatEntries[2] - } - return pb -} - -// Set bar refresh rate -func (pb *ProgressBar) SetRefreshRate(rate time.Duration) *ProgressBar { - pb.RefreshRate = rate - return pb -} - -// Set units -// bar.SetUnits(U_NO) - by default -// bar.SetUnits(U_BYTES) - for Mb, Kb, etc -func (pb *ProgressBar) SetUnits(units Units) *ProgressBar { - pb.Units = units - return pb -} - -// Set max width, if width is bigger than terminal width, will be ignored -func (pb *ProgressBar) SetMaxWidth(width int) *ProgressBar { - pb.Width = width - pb.ForceWidth = false - return pb -} - -// Set bar width -func (pb *ProgressBar) SetWidth(width int) *ProgressBar { - pb.Width = width - pb.ForceWidth = true - return pb -} - -// End print -func (pb *ProgressBar) Finish() { - //Protect multiple calls - pb.finishOnce.Do(func() { - close(pb.finish) - pb.write(atomic.LoadInt64(&pb.Total), atomic.LoadInt64(&pb.current)) - pb.mu.Lock() - defer pb.mu.Unlock() - switch { - case pb.Output != nil: - fmt.Fprintln(pb.Output) - case !pb.NotPrint: - fmt.Println() - } - pb.isFinish = true - }) -} - -// IsFinished return boolean -func (pb *ProgressBar) IsFinished() bool { - pb.mu.Lock() - defer pb.mu.Unlock() - return pb.isFinish -} - -// End print and write string 'str' -func (pb *ProgressBar) FinishPrint(str string) { - pb.Finish() - if pb.Output != nil { - fmt.Fprintln(pb.Output, str) - } else { - fmt.Println(str) - } -} - -// implement io.Writer -func (pb *ProgressBar) Write(p []byte) (n int, err error) { - n = len(p) - pb.Add(n) - return -} - -// implement io.Reader -func (pb *ProgressBar) Read(p []byte) (n int, err error) { - n = len(p) - pb.Add(n) - return -} - -// Create new proxy reader over bar -// Takes io.Reader or io.ReadCloser -func (pb *ProgressBar) NewProxyReader(r io.Reader) *Reader { - return &Reader{r, pb} -} - -func (pb *ProgressBar) write(total, current int64) { - pb.mu.Lock() - defer pb.mu.Unlock() - width := pb.GetWidth() - - var percentBox, countersBox, timeLeftBox, timeSpentBox, speedBox, barBox, end, out string - - // percents - if pb.ShowPercent { - var percent float64 - if total > 0 { - percent = float64(current) / (float64(total) / float64(100)) - } else { - percent = float64(current) / float64(100) - } - percentBox = fmt.Sprintf(" %6.02f%%", percent) - } - - // counters - if pb.ShowCounters { - current := Format(current).To(pb.Units).Width(pb.UnitsWidth) - if total > 0 { - totalS := Format(total).To(pb.Units).Width(pb.UnitsWidth) - countersBox = fmt.Sprintf(" %s / %s ", current, totalS) - } else { - countersBox = fmt.Sprintf(" %s / ? ", current) - } - } - - // time left - currentFromStart := current - pb.startValue - fromStart := time.Now().Sub(pb.startTime) - lastChangeTime := pb.changeTime - fromChange := lastChangeTime.Sub(pb.startTime) - - if pb.ShowElapsedTime { - timeSpentBox = fmt.Sprintf(" %s ", (fromStart/time.Second)*time.Second) - } - - select { - case <-pb.finish: - if pb.ShowFinalTime { - var left time.Duration - left = (fromStart / time.Second) * time.Second - timeLeftBox = fmt.Sprintf(" %s", left.String()) - } - default: - if pb.ShowTimeLeft && currentFromStart > 0 { - perEntry := fromChange / time.Duration(currentFromStart) - var left time.Duration - if total > 0 { - left = time.Duration(total-current) * perEntry - left -= time.Since(lastChangeTime) - left = (left / time.Second) * time.Second - } - if left > 0 { - timeLeft := Format(int64(left)).To(U_DURATION).String() - timeLeftBox = fmt.Sprintf(" %s", timeLeft) - } - } - } - - if len(timeLeftBox) < pb.TimeBoxWidth { - timeLeftBox = fmt.Sprintf("%s%s", strings.Repeat(" ", pb.TimeBoxWidth-len(timeLeftBox)), timeLeftBox) - } - - // speed - if pb.ShowSpeed && currentFromStart > 0 { - fromStart := time.Now().Sub(pb.startTime) - speed := float64(currentFromStart) / (float64(fromStart) / float64(time.Second)) - speedBox = " " + Format(int64(speed)).To(pb.Units).Width(pb.UnitsWidth).PerSec().String() - } - - barWidth := escapeAwareRuneCountInString(countersBox + pb.BarStart + pb.BarEnd + percentBox + timeSpentBox + timeLeftBox + speedBox + pb.prefix + pb.postfix) - // bar - if pb.ShowBar { - size := width - barWidth - if size > 0 { - if total > 0 { - curSize := int(math.Ceil((float64(current) / float64(total)) * float64(size))) - emptySize := size - curSize - barBox = pb.BarStart - if emptySize < 0 { - emptySize = 0 - } - if curSize > size { - curSize = size - } - - cursorLen := escapeAwareRuneCountInString(pb.Current) - if emptySize <= 0 { - barBox += strings.Repeat(pb.Current, curSize/cursorLen) - } else if curSize > 0 { - cursorEndLen := escapeAwareRuneCountInString(pb.CurrentN) - cursorRepetitions := (curSize - cursorEndLen) / cursorLen - barBox += strings.Repeat(pb.Current, cursorRepetitions) - barBox += pb.CurrentN - } - - emptyLen := escapeAwareRuneCountInString(pb.Empty) - barBox += strings.Repeat(pb.Empty, emptySize/emptyLen) - barBox += pb.BarEnd - } else { - pos := size - int(current)%int(size) - barBox = pb.BarStart - if pos-1 > 0 { - barBox += strings.Repeat(pb.Empty, pos-1) - } - barBox += pb.Current - if size-pos-1 > 0 { - barBox += strings.Repeat(pb.Empty, size-pos-1) - } - barBox += pb.BarEnd - } - } - } - - // check len - out = pb.prefix + timeSpentBox + countersBox + barBox + percentBox + speedBox + timeLeftBox + pb.postfix - - if cl := escapeAwareRuneCountInString(out); cl < width { - end = strings.Repeat(" ", width-cl) - } - - // and print! - pb.lastPrint = out + end - isFinish := pb.isFinish - - switch { - case isFinish: - return - case pb.Output != nil: - fmt.Fprint(pb.Output, "\r"+out+end) - case pb.Callback != nil: - pb.Callback(out + end) - case !pb.NotPrint: - fmt.Print("\r" + out + end) - } -} - -// GetTerminalWidth - returns terminal width for all platforms. -func GetTerminalWidth() (int, error) { - return terminalWidth() -} - -func (pb *ProgressBar) GetWidth() int { - if pb.ForceWidth { - return pb.Width - } - - width := pb.Width - termWidth, _ := terminalWidth() - if width == 0 || termWidth <= width { - width = termWidth - } - - return width -} - -// Write the current state of the progressbar -func (pb *ProgressBar) Update() { - c := atomic.LoadInt64(&pb.current) - p := atomic.LoadInt64(&pb.previous) - t := atomic.LoadInt64(&pb.Total) - if p != c { - pb.mu.Lock() - pb.changeTime = time.Now() - pb.mu.Unlock() - atomic.StoreInt64(&pb.previous, c) - } - pb.write(t, c) - if pb.AutoStat { - if c == 0 { - pb.startTime = time.Now() - pb.startValue = 0 - } else if c >= t && pb.isFinish != true { - pb.Finish() - } - } -} - -// String return the last bar print -func (pb *ProgressBar) String() string { - pb.mu.Lock() - defer pb.mu.Unlock() - return pb.lastPrint -} - -// SetTotal atomically sets new total count -func (pb *ProgressBar) SetTotal(total int) *ProgressBar { - return pb.SetTotal64(int64(total)) -} - -// SetTotal64 atomically sets new total count -func (pb *ProgressBar) SetTotal64(total int64) *ProgressBar { - atomic.StoreInt64(&pb.Total, total) - return pb -} - -// Reset bar and set new total count -// Does effect only on finished bar -func (pb *ProgressBar) Reset(total int) *ProgressBar { - pb.mu.Lock() - defer pb.mu.Unlock() - if pb.isFinish { - pb.SetTotal(total).Set(0) - atomic.StoreInt64(&pb.previous, 0) - } - return pb -} - -// Internal loop for refreshing the progressbar -func (pb *ProgressBar) refresher() { - for { - select { - case <-pb.finish: - return - case <-time.After(pb.RefreshRate): - pb.Update() - } - } -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pb_appengine.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pb_appengine.go deleted file mode 100644 index 17168f39a..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pb_appengine.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build appengine js - -package pb - -import "errors" - -// terminalWidth returns width of the terminal, which is not supported -// and should always failed on appengine classic which is a sandboxed PaaS. -func terminalWidth() (int, error) { - return 0, errors.New("Not supported") -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pb_win.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pb_win.go deleted file mode 100644 index 9595e8236..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pb_win.go +++ /dev/null @@ -1,143 +0,0 @@ -// +build windows - -package pb - -import ( - "errors" - "fmt" - "os" - "sync" - "syscall" - "unsafe" -) - -var tty = os.Stdin - -var ( - kernel32 = syscall.NewLazyDLL("kernel32.dll") - - // GetConsoleScreenBufferInfo retrieves information about the - // specified console screen buffer. - // http://msdn.microsoft.com/en-us/library/windows/desktop/ms683171(v=vs.85).aspx - procGetConsoleScreenBufferInfo = kernel32.NewProc("GetConsoleScreenBufferInfo") - - // GetConsoleMode retrieves the current input mode of a console's - // input buffer or the current output mode of a console screen buffer. - // https://msdn.microsoft.com/en-us/library/windows/desktop/ms683167(v=vs.85).aspx - getConsoleMode = kernel32.NewProc("GetConsoleMode") - - // SetConsoleMode sets the input mode of a console's input buffer - // or the output mode of a console screen buffer. - // https://msdn.microsoft.com/en-us/library/windows/desktop/ms686033(v=vs.85).aspx - setConsoleMode = kernel32.NewProc("SetConsoleMode") - - // SetConsoleCursorPosition sets the cursor position in the - // specified console screen buffer. - // https://msdn.microsoft.com/en-us/library/windows/desktop/ms686025(v=vs.85).aspx - setConsoleCursorPosition = kernel32.NewProc("SetConsoleCursorPosition") -) - -type ( - // Defines the coordinates of the upper left and lower right corners - // of a rectangle. - // See - // http://msdn.microsoft.com/en-us/library/windows/desktop/ms686311(v=vs.85).aspx - smallRect struct { - Left, Top, Right, Bottom int16 - } - - // Defines the coordinates of a character cell in a console screen - // buffer. The origin of the coordinate system (0,0) is at the top, left cell - // of the buffer. - // See - // http://msdn.microsoft.com/en-us/library/windows/desktop/ms682119(v=vs.85).aspx - coordinates struct { - X, Y int16 - } - - word int16 - - // Contains information about a console screen buffer. - // http://msdn.microsoft.com/en-us/library/windows/desktop/ms682093(v=vs.85).aspx - consoleScreenBufferInfo struct { - dwSize coordinates - dwCursorPosition coordinates - wAttributes word - srWindow smallRect - dwMaximumWindowSize coordinates - } -) - -// terminalWidth returns width of the terminal. -func terminalWidth() (width int, err error) { - var info consoleScreenBufferInfo - _, _, e := syscall.Syscall(procGetConsoleScreenBufferInfo.Addr(), 2, uintptr(syscall.Stdout), uintptr(unsafe.Pointer(&info)), 0) - if e != 0 { - return 0, error(e) - } - return int(info.dwSize.X) - 1, nil -} - -func getCursorPos() (pos coordinates, err error) { - var info consoleScreenBufferInfo - _, _, e := syscall.Syscall(procGetConsoleScreenBufferInfo.Addr(), 2, uintptr(syscall.Stdout), uintptr(unsafe.Pointer(&info)), 0) - if e != 0 { - return info.dwCursorPosition, error(e) - } - return info.dwCursorPosition, nil -} - -func setCursorPos(pos coordinates) error { - _, _, e := syscall.Syscall(setConsoleCursorPosition.Addr(), 2, uintptr(syscall.Stdout), uintptr(uint32(uint16(pos.Y))<<16|uint32(uint16(pos.X))), 0) - if e != 0 { - return error(e) - } - return nil -} - -var ErrPoolWasStarted = errors.New("Bar pool was started") - -var echoLocked bool -var echoLockMutex sync.Mutex - -var oldState word - -func lockEcho() (shutdownCh chan struct{}, err error) { - echoLockMutex.Lock() - defer echoLockMutex.Unlock() - if echoLocked { - err = ErrPoolWasStarted - return - } - echoLocked = true - - if _, _, e := syscall.Syscall(getConsoleMode.Addr(), 2, uintptr(syscall.Stdout), uintptr(unsafe.Pointer(&oldState)), 0); e != 0 { - err = fmt.Errorf("Can't get terminal settings: %v", e) - return - } - - newState := oldState - const ENABLE_ECHO_INPUT = 0x0004 - const ENABLE_LINE_INPUT = 0x0002 - newState = newState & (^(ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT)) - if _, _, e := syscall.Syscall(setConsoleMode.Addr(), 2, uintptr(syscall.Stdout), uintptr(newState), 0); e != 0 { - err = fmt.Errorf("Can't set terminal settings: %v", e) - return - } - - shutdownCh = make(chan struct{}) - return -} - -func unlockEcho() (err error) { - echoLockMutex.Lock() - defer echoLockMutex.Unlock() - if !echoLocked { - return - } - echoLocked = false - if _, _, e := syscall.Syscall(setConsoleMode.Addr(), 2, uintptr(syscall.Stdout), uintptr(oldState), 0); e != 0 { - err = fmt.Errorf("Can't set terminal settings") - } - return -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pb_x.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pb_x.go deleted file mode 100644 index af4251760..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pb_x.go +++ /dev/null @@ -1,118 +0,0 @@ -// +build linux darwin freebsd netbsd openbsd solaris dragonfly -// +build !appengine !js - -package pb - -import ( - "errors" - "fmt" - "os" - "os/signal" - "sync" - "syscall" - - "golang.org/x/sys/unix" -) - -var ErrPoolWasStarted = errors.New("Bar pool was started") - -var ( - echoLockMutex sync.Mutex - origTermStatePtr *unix.Termios - tty *os.File - istty bool -) - -func init() { - echoLockMutex.Lock() - defer echoLockMutex.Unlock() - - var err error - tty, err = os.Open("/dev/tty") - istty = true - if err != nil { - tty = os.Stdin - istty = false - } -} - -// terminalWidth returns width of the terminal. -func terminalWidth() (int, error) { - if !istty { - return 0, errors.New("Not Supported") - } - echoLockMutex.Lock() - defer echoLockMutex.Unlock() - - fd := int(tty.Fd()) - - ws, err := unix.IoctlGetWinsize(fd, unix.TIOCGWINSZ) - if err != nil { - return 0, err - } - - return int(ws.Col), nil -} - -func lockEcho() (shutdownCh chan struct{}, err error) { - echoLockMutex.Lock() - defer echoLockMutex.Unlock() - if istty { - if origTermStatePtr != nil { - return shutdownCh, ErrPoolWasStarted - } - - fd := int(tty.Fd()) - - origTermStatePtr, err = unix.IoctlGetTermios(fd, ioctlReadTermios) - if err != nil { - return nil, fmt.Errorf("Can't get terminal settings: %v", err) - } - - oldTermios := *origTermStatePtr - newTermios := oldTermios - newTermios.Lflag &^= syscall.ECHO - newTermios.Lflag |= syscall.ICANON | syscall.ISIG - newTermios.Iflag |= syscall.ICRNL - if err := unix.IoctlSetTermios(fd, ioctlWriteTermios, &newTermios); err != nil { - return nil, fmt.Errorf("Can't set terminal settings: %v", err) - } - - } - shutdownCh = make(chan struct{}) - go catchTerminate(shutdownCh) - return -} - -func unlockEcho() error { - echoLockMutex.Lock() - defer echoLockMutex.Unlock() - if istty { - if origTermStatePtr == nil { - return nil - } - - fd := int(tty.Fd()) - - if err := unix.IoctlSetTermios(fd, ioctlWriteTermios, origTermStatePtr); err != nil { - return fmt.Errorf("Can't set terminal settings: %v", err) - } - - } - origTermStatePtr = nil - - return nil -} - -// listen exit signals and restore terminal state -func catchTerminate(shutdownCh chan struct{}) { - sig := make(chan os.Signal, 1) - signal.Notify(sig, os.Interrupt, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGKILL) - defer signal.Stop(sig) - select { - case <-shutdownCh: - unlockEcho() - case <-sig: - unlockEcho() - } -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pool.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pool.go deleted file mode 100644 index 392e7599c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pool.go +++ /dev/null @@ -1,104 +0,0 @@ -// +build linux darwin freebsd netbsd openbsd solaris dragonfly windows - -package pb - -import ( - "io" - "sync" - "time" -) - -// Create and start new pool with given bars -// You need call pool.Stop() after work -func StartPool(pbs ...*ProgressBar) (pool *Pool, err error) { - pool = new(Pool) - if err = pool.Start(); err != nil { - return - } - pool.Add(pbs...) - return -} - -// NewPool initialises a pool with progress bars, but -// doesn't start it. You need to call Start manually -func NewPool(pbs ...*ProgressBar) (pool *Pool) { - pool = new(Pool) - pool.Add(pbs...) - return -} - -type Pool struct { - Output io.Writer - RefreshRate time.Duration - bars []*ProgressBar - lastBarsCount int - shutdownCh chan struct{} - workerCh chan struct{} - m sync.Mutex - finishOnce sync.Once -} - -// Add progress bars. -func (p *Pool) Add(pbs ...*ProgressBar) { - p.m.Lock() - defer p.m.Unlock() - for _, bar := range pbs { - bar.ManualUpdate = true - bar.NotPrint = true - bar.Start() - p.bars = append(p.bars, bar) - } -} - -func (p *Pool) Start() (err error) { - p.RefreshRate = DefaultRefreshRate - p.shutdownCh, err = lockEcho() - if err != nil { - return - } - p.workerCh = make(chan struct{}) - go p.writer() - return -} - -func (p *Pool) writer() { - var first = true - defer func() { - if first == false { - p.print(false) - } else { - p.print(true) - p.print(false) - } - close(p.workerCh) - }() - - for { - select { - case <-time.After(p.RefreshRate): - if p.print(first) { - p.print(false) - return - } - first = false - case <-p.shutdownCh: - return - } - } -} - -// Restore terminal state and close pool -func (p *Pool) Stop() error { - p.finishOnce.Do(func() { - if p.shutdownCh != nil { - close(p.shutdownCh) - } - }) - - // Wait for the worker to complete - select { - case <-p.workerCh: - } - - return unlockEcho() -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pool_win.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pool_win.go deleted file mode 100644 index 63598d378..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pool_win.go +++ /dev/null @@ -1,45 +0,0 @@ -// +build windows - -package pb - -import ( - "fmt" - "log" -) - -func (p *Pool) print(first bool) bool { - p.m.Lock() - defer p.m.Unlock() - var out string - if !first { - coords, err := getCursorPos() - if err != nil { - log.Panic(err) - } - coords.Y -= int16(p.lastBarsCount) - if coords.Y < 0 { - coords.Y = 0 - } - coords.X = 0 - - err = setCursorPos(coords) - if err != nil { - log.Panic(err) - } - } - isFinished := true - for _, bar := range p.bars { - if !bar.IsFinished() { - isFinished = false - } - bar.Update() - out += fmt.Sprintf("\r%s\n", bar.String()) - } - if p.Output != nil { - fmt.Fprint(p.Output, out) - } else { - fmt.Print(out) - } - p.lastBarsCount = len(p.bars) - return isFinished -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pool_x.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pool_x.go deleted file mode 100644 index a8ae14d2f..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/pool_x.go +++ /dev/null @@ -1,29 +0,0 @@ -// +build linux darwin freebsd netbsd openbsd solaris dragonfly - -package pb - -import "fmt" - -func (p *Pool) print(first bool) bool { - p.m.Lock() - defer p.m.Unlock() - var out string - if !first { - out = fmt.Sprintf("\033[%dA", p.lastBarsCount) - } - isFinished := true - for _, bar := range p.bars { - if !bar.IsFinished() { - isFinished = false - } - bar.Update() - out += fmt.Sprintf("\r%s\n", bar.String()) - } - if p.Output != nil { - fmt.Fprint(p.Output, out) - } else { - fmt.Print(out) - } - p.lastBarsCount = len(p.bars) - return isFinished -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/reader.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/reader.go deleted file mode 100644 index 9f3148b54..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/reader.go +++ /dev/null @@ -1,25 +0,0 @@ -package pb - -import ( - "io" -) - -// It's proxy reader, implement io.Reader -type Reader struct { - io.Reader - bar *ProgressBar -} - -func (r *Reader) Read(p []byte) (n int, err error) { - n, err = r.Reader.Read(p) - r.bar.Add(n) - return -} - -// Close the reader when it implements io.Closer -func (r *Reader) Close() (err error) { - if closer, ok := r.Reader.(io.Closer); ok { - return closer.Close() - } - return -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/runecount.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/runecount.go deleted file mode 100644 index c617c55ec..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/runecount.go +++ /dev/null @@ -1,17 +0,0 @@ -package pb - -import ( - "github.com/mattn/go-runewidth" - "regexp" -) - -// Finds the control character sequences (like colors) -var ctrlFinder = regexp.MustCompile("\x1b\x5b[0-9]+\x6d") - -func escapeAwareRuneCountInString(s string) int { - n := runewidth.StringWidth(s) - for _, sm := range ctrlFinder.FindAllString(s, -1) { - n -= runewidth.StringWidth(sm) - } - return n -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/termios_bsd.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/termios_bsd.go deleted file mode 100644 index 517ea8ed7..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/termios_bsd.go +++ /dev/null @@ -1,9 +0,0 @@ -// +build darwin freebsd netbsd openbsd dragonfly -// +build !appengine - -package pb - -import "syscall" - -const ioctlReadTermios = syscall.TIOCGETA -const ioctlWriteTermios = syscall.TIOCSETA diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/termios_sysv.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/termios_sysv.go deleted file mode 100644 index b10f61859..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/cheggaaa/pb.v1/termios_sysv.go +++ /dev/null @@ -1,13 +0,0 @@ -// 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 linux solaris -// +build !appengine - -package pb - -import "golang.org/x/sys/unix" - -const ioctlReadTermios = unix.TCGETS -const ioctlWriteTermios = unix.TCSETS diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/.travis.yml b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/.travis.yml deleted file mode 100644 index 9f556934d..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -language: go - -go: - - 1.4 - - 1.5 - - 1.6 - - 1.7 - - 1.8 - - 1.9 - - tip - -go_import_path: gopkg.in/yaml.v2 diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/LICENSE b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/LICENSE deleted file mode 100644 index 8dada3eda..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - 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 - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - 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/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/LICENSE.libyaml b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/LICENSE.libyaml deleted file mode 100644 index 8da58fbf6..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/LICENSE.libyaml +++ /dev/null @@ -1,31 +0,0 @@ -The following files were ported to Go from C files of libyaml, and thus -are still covered by their original copyright and license: - - apic.go - emitterc.go - parserc.go - readerc.go - scannerc.go - writerc.go - yamlh.go - yamlprivateh.go - -Copyright (c) 2006 Kirill Simonov - -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/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/NOTICE b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/NOTICE deleted file mode 100644 index 866d74a7a..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/NOTICE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright 2011-2016 Canonical Ltd. - -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/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/README.md b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/README.md deleted file mode 100644 index b50c6e877..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/README.md +++ /dev/null @@ -1,133 +0,0 @@ -# YAML support for the Go language - -Introduction ------------- - -The yaml package enables Go programs to comfortably encode and decode YAML -values. It was developed within [Canonical](https://www.canonical.com) as -part of the [juju](https://juju.ubuntu.com) project, and is based on a -pure Go port of the well-known [libyaml](http://pyyaml.org/wiki/LibYAML) -C library to parse and generate YAML data quickly and reliably. - -Compatibility -------------- - -The yaml package supports most of YAML 1.1 and 1.2, including support for -anchors, tags, map merging, etc. Multi-document unmarshalling is not yet -implemented, and base-60 floats from YAML 1.1 are purposefully not -supported since they're a poor design and are gone in YAML 1.2. - -Installation and usage ----------------------- - -The import path for the package is *gopkg.in/yaml.v2*. - -To install it, run: - - go get gopkg.in/yaml.v2 - -API documentation ------------------ - -If opened in a browser, the import path itself leads to the API documentation: - - * [https://gopkg.in/yaml.v2](https://gopkg.in/yaml.v2) - -API stability -------------- - -The package API for yaml v2 will remain stable as described in [gopkg.in](https://gopkg.in). - - -License -------- - -The yaml package is licensed under the Apache License 2.0. Please see the LICENSE file for details. - - -Example -------- - -```Go -package main - -import ( - "fmt" - "log" - - "gopkg.in/yaml.v2" -) - -var data = ` -a: Easy! -b: - c: 2 - d: [3, 4] -` - -// Note: struct fields must be public in order for unmarshal to -// correctly populate the data. -type T struct { - A string - B struct { - RenamedC int `yaml:"c"` - D []int `yaml:",flow"` - } -} - -func main() { - t := T{} - - err := yaml.Unmarshal([]byte(data), &t) - if err != nil { - log.Fatalf("error: %v", err) - } - fmt.Printf("--- t:\n%v\n\n", t) - - d, err := yaml.Marshal(&t) - if err != nil { - log.Fatalf("error: %v", err) - } - fmt.Printf("--- t dump:\n%s\n\n", string(d)) - - m := make(map[interface{}]interface{}) - - err = yaml.Unmarshal([]byte(data), &m) - if err != nil { - log.Fatalf("error: %v", err) - } - fmt.Printf("--- m:\n%v\n\n", m) - - d, err = yaml.Marshal(&m) - if err != nil { - log.Fatalf("error: %v", err) - } - fmt.Printf("--- m dump:\n%s\n\n", string(d)) -} -``` - -This example will generate the following output: - -``` ---- t: -{Easy! {2 [3 4]}} - ---- t dump: -a: Easy! -b: - c: 2 - d: [3, 4] - - ---- m: -map[a:Easy! b:map[c:2 d:[3 4]]] - ---- m dump: -a: Easy! -b: - c: 2 - d: - - 3 - - 4 -``` - diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/apic.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/apic.go deleted file mode 100644 index 1f7e87e67..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/apic.go +++ /dev/null @@ -1,739 +0,0 @@ -package yaml - -import ( - "io" -) - -func yaml_insert_token(parser *yaml_parser_t, pos int, token *yaml_token_t) { - //fmt.Println("yaml_insert_token", "pos:", pos, "typ:", token.typ, "head:", parser.tokens_head, "len:", len(parser.tokens)) - - // Check if we can move the queue at the beginning of the buffer. - if parser.tokens_head > 0 && len(parser.tokens) == cap(parser.tokens) { - if parser.tokens_head != len(parser.tokens) { - copy(parser.tokens, parser.tokens[parser.tokens_head:]) - } - parser.tokens = parser.tokens[:len(parser.tokens)-parser.tokens_head] - parser.tokens_head = 0 - } - parser.tokens = append(parser.tokens, *token) - if pos < 0 { - return - } - copy(parser.tokens[parser.tokens_head+pos+1:], parser.tokens[parser.tokens_head+pos:]) - parser.tokens[parser.tokens_head+pos] = *token -} - -// Create a new parser object. -func yaml_parser_initialize(parser *yaml_parser_t) bool { - *parser = yaml_parser_t{ - raw_buffer: make([]byte, 0, input_raw_buffer_size), - buffer: make([]byte, 0, input_buffer_size), - } - return true -} - -// Destroy a parser object. -func yaml_parser_delete(parser *yaml_parser_t) { - *parser = yaml_parser_t{} -} - -// String read handler. -func yaml_string_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) { - if parser.input_pos == len(parser.input) { - return 0, io.EOF - } - n = copy(buffer, parser.input[parser.input_pos:]) - parser.input_pos += n - return n, nil -} - -// Reader read handler. -func yaml_reader_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) { - return parser.input_reader.Read(buffer) -} - -// Set a string input. -func yaml_parser_set_input_string(parser *yaml_parser_t, input []byte) { - if parser.read_handler != nil { - panic("must set the input source only once") - } - parser.read_handler = yaml_string_read_handler - parser.input = input - parser.input_pos = 0 -} - -// Set a file input. -func yaml_parser_set_input_reader(parser *yaml_parser_t, r io.Reader) { - if parser.read_handler != nil { - panic("must set the input source only once") - } - parser.read_handler = yaml_reader_read_handler - parser.input_reader = r -} - -// Set the source encoding. -func yaml_parser_set_encoding(parser *yaml_parser_t, encoding yaml_encoding_t) { - if parser.encoding != yaml_ANY_ENCODING { - panic("must set the encoding only once") - } - parser.encoding = encoding -} - -// Create a new emitter object. -func yaml_emitter_initialize(emitter *yaml_emitter_t) { - *emitter = yaml_emitter_t{ - buffer: make([]byte, output_buffer_size), - raw_buffer: make([]byte, 0, output_raw_buffer_size), - states: make([]yaml_emitter_state_t, 0, initial_stack_size), - events: make([]yaml_event_t, 0, initial_queue_size), - } -} - -// Destroy an emitter object. -func yaml_emitter_delete(emitter *yaml_emitter_t) { - *emitter = yaml_emitter_t{} -} - -// String write handler. -func yaml_string_write_handler(emitter *yaml_emitter_t, buffer []byte) error { - *emitter.output_buffer = append(*emitter.output_buffer, buffer...) - return nil -} - -// yaml_writer_write_handler uses emitter.output_writer to write the -// emitted text. -func yaml_writer_write_handler(emitter *yaml_emitter_t, buffer []byte) error { - _, err := emitter.output_writer.Write(buffer) - return err -} - -// Set a string output. -func yaml_emitter_set_output_string(emitter *yaml_emitter_t, output_buffer *[]byte) { - if emitter.write_handler != nil { - panic("must set the output target only once") - } - emitter.write_handler = yaml_string_write_handler - emitter.output_buffer = output_buffer -} - -// Set a file output. -func yaml_emitter_set_output_writer(emitter *yaml_emitter_t, w io.Writer) { - if emitter.write_handler != nil { - panic("must set the output target only once") - } - emitter.write_handler = yaml_writer_write_handler - emitter.output_writer = w -} - -// Set the output encoding. -func yaml_emitter_set_encoding(emitter *yaml_emitter_t, encoding yaml_encoding_t) { - if emitter.encoding != yaml_ANY_ENCODING { - panic("must set the output encoding only once") - } - emitter.encoding = encoding -} - -// Set the canonical output style. -func yaml_emitter_set_canonical(emitter *yaml_emitter_t, canonical bool) { - emitter.canonical = canonical -} - -//// Set the indentation increment. -func yaml_emitter_set_indent(emitter *yaml_emitter_t, indent int) { - if indent < 2 || indent > 9 { - indent = 2 - } - emitter.best_indent = indent -} - -// Set the preferred line width. -func yaml_emitter_set_width(emitter *yaml_emitter_t, width int) { - if width < 0 { - width = -1 - } - emitter.best_width = width -} - -// Set if unescaped non-ASCII characters are allowed. -func yaml_emitter_set_unicode(emitter *yaml_emitter_t, unicode bool) { - emitter.unicode = unicode -} - -// Set the preferred line break character. -func yaml_emitter_set_break(emitter *yaml_emitter_t, line_break yaml_break_t) { - emitter.line_break = line_break -} - -///* -// * Destroy a token object. -// */ -// -//YAML_DECLARE(void) -//yaml_token_delete(yaml_token_t *token) -//{ -// assert(token); // Non-NULL token object expected. -// -// switch (token.type) -// { -// case YAML_TAG_DIRECTIVE_TOKEN: -// yaml_free(token.data.tag_directive.handle); -// yaml_free(token.data.tag_directive.prefix); -// break; -// -// case YAML_ALIAS_TOKEN: -// yaml_free(token.data.alias.value); -// break; -// -// case YAML_ANCHOR_TOKEN: -// yaml_free(token.data.anchor.value); -// break; -// -// case YAML_TAG_TOKEN: -// yaml_free(token.data.tag.handle); -// yaml_free(token.data.tag.suffix); -// break; -// -// case YAML_SCALAR_TOKEN: -// yaml_free(token.data.scalar.value); -// break; -// -// default: -// break; -// } -// -// memset(token, 0, sizeof(yaml_token_t)); -//} -// -///* -// * Check if a string is a valid UTF-8 sequence. -// * -// * Check 'reader.c' for more details on UTF-8 encoding. -// */ -// -//static int -//yaml_check_utf8(yaml_char_t *start, size_t length) -//{ -// yaml_char_t *end = start+length; -// yaml_char_t *pointer = start; -// -// while (pointer < end) { -// unsigned char octet; -// unsigned int width; -// unsigned int value; -// size_t k; -// -// octet = pointer[0]; -// width = (octet & 0x80) == 0x00 ? 1 : -// (octet & 0xE0) == 0xC0 ? 2 : -// (octet & 0xF0) == 0xE0 ? 3 : -// (octet & 0xF8) == 0xF0 ? 4 : 0; -// value = (octet & 0x80) == 0x00 ? octet & 0x7F : -// (octet & 0xE0) == 0xC0 ? octet & 0x1F : -// (octet & 0xF0) == 0xE0 ? octet & 0x0F : -// (octet & 0xF8) == 0xF0 ? octet & 0x07 : 0; -// if (!width) return 0; -// if (pointer+width > end) return 0; -// for (k = 1; k < width; k ++) { -// octet = pointer[k]; -// if ((octet & 0xC0) != 0x80) return 0; -// value = (value << 6) + (octet & 0x3F); -// } -// if (!((width == 1) || -// (width == 2 && value >= 0x80) || -// (width == 3 && value >= 0x800) || -// (width == 4 && value >= 0x10000))) return 0; -// -// pointer += width; -// } -// -// return 1; -//} -// - -// Create STREAM-START. -func yaml_stream_start_event_initialize(event *yaml_event_t, encoding yaml_encoding_t) { - *event = yaml_event_t{ - typ: yaml_STREAM_START_EVENT, - encoding: encoding, - } -} - -// Create STREAM-END. -func yaml_stream_end_event_initialize(event *yaml_event_t) { - *event = yaml_event_t{ - typ: yaml_STREAM_END_EVENT, - } -} - -// Create DOCUMENT-START. -func yaml_document_start_event_initialize( - event *yaml_event_t, - version_directive *yaml_version_directive_t, - tag_directives []yaml_tag_directive_t, - implicit bool, -) { - *event = yaml_event_t{ - typ: yaml_DOCUMENT_START_EVENT, - version_directive: version_directive, - tag_directives: tag_directives, - implicit: implicit, - } -} - -// Create DOCUMENT-END. -func yaml_document_end_event_initialize(event *yaml_event_t, implicit bool) { - *event = yaml_event_t{ - typ: yaml_DOCUMENT_END_EVENT, - implicit: implicit, - } -} - -///* -// * Create ALIAS. -// */ -// -//YAML_DECLARE(int) -//yaml_alias_event_initialize(event *yaml_event_t, anchor *yaml_char_t) -//{ -// mark yaml_mark_t = { 0, 0, 0 } -// anchor_copy *yaml_char_t = NULL -// -// assert(event) // Non-NULL event object is expected. -// assert(anchor) // Non-NULL anchor is expected. -// -// if (!yaml_check_utf8(anchor, strlen((char *)anchor))) return 0 -// -// anchor_copy = yaml_strdup(anchor) -// if (!anchor_copy) -// return 0 -// -// ALIAS_EVENT_INIT(*event, anchor_copy, mark, mark) -// -// return 1 -//} - -// Create SCALAR. -func yaml_scalar_event_initialize(event *yaml_event_t, anchor, tag, value []byte, plain_implicit, quoted_implicit bool, style yaml_scalar_style_t) bool { - *event = yaml_event_t{ - typ: yaml_SCALAR_EVENT, - anchor: anchor, - tag: tag, - value: value, - implicit: plain_implicit, - quoted_implicit: quoted_implicit, - style: yaml_style_t(style), - } - return true -} - -// Create SEQUENCE-START. -func yaml_sequence_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_sequence_style_t) bool { - *event = yaml_event_t{ - typ: yaml_SEQUENCE_START_EVENT, - anchor: anchor, - tag: tag, - implicit: implicit, - style: yaml_style_t(style), - } - return true -} - -// Create SEQUENCE-END. -func yaml_sequence_end_event_initialize(event *yaml_event_t) bool { - *event = yaml_event_t{ - typ: yaml_SEQUENCE_END_EVENT, - } - return true -} - -// Create MAPPING-START. -func yaml_mapping_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_mapping_style_t) { - *event = yaml_event_t{ - typ: yaml_MAPPING_START_EVENT, - anchor: anchor, - tag: tag, - implicit: implicit, - style: yaml_style_t(style), - } -} - -// Create MAPPING-END. -func yaml_mapping_end_event_initialize(event *yaml_event_t) { - *event = yaml_event_t{ - typ: yaml_MAPPING_END_EVENT, - } -} - -// Destroy an event object. -func yaml_event_delete(event *yaml_event_t) { - *event = yaml_event_t{} -} - -///* -// * Create a document object. -// */ -// -//YAML_DECLARE(int) -//yaml_document_initialize(document *yaml_document_t, -// version_directive *yaml_version_directive_t, -// tag_directives_start *yaml_tag_directive_t, -// tag_directives_end *yaml_tag_directive_t, -// start_implicit int, end_implicit int) -//{ -// struct { -// error yaml_error_type_t -// } context -// struct { -// start *yaml_node_t -// end *yaml_node_t -// top *yaml_node_t -// } nodes = { NULL, NULL, NULL } -// version_directive_copy *yaml_version_directive_t = NULL -// struct { -// start *yaml_tag_directive_t -// end *yaml_tag_directive_t -// top *yaml_tag_directive_t -// } tag_directives_copy = { NULL, NULL, NULL } -// value yaml_tag_directive_t = { NULL, NULL } -// mark yaml_mark_t = { 0, 0, 0 } -// -// assert(document) // Non-NULL document object is expected. -// assert((tag_directives_start && tag_directives_end) || -// (tag_directives_start == tag_directives_end)) -// // Valid tag directives are expected. -// -// if (!STACK_INIT(&context, nodes, INITIAL_STACK_SIZE)) goto error -// -// if (version_directive) { -// version_directive_copy = yaml_malloc(sizeof(yaml_version_directive_t)) -// if (!version_directive_copy) goto error -// version_directive_copy.major = version_directive.major -// version_directive_copy.minor = version_directive.minor -// } -// -// if (tag_directives_start != tag_directives_end) { -// tag_directive *yaml_tag_directive_t -// if (!STACK_INIT(&context, tag_directives_copy, INITIAL_STACK_SIZE)) -// goto error -// for (tag_directive = tag_directives_start -// tag_directive != tag_directives_end; tag_directive ++) { -// assert(tag_directive.handle) -// assert(tag_directive.prefix) -// if (!yaml_check_utf8(tag_directive.handle, -// strlen((char *)tag_directive.handle))) -// goto error -// if (!yaml_check_utf8(tag_directive.prefix, -// strlen((char *)tag_directive.prefix))) -// goto error -// value.handle = yaml_strdup(tag_directive.handle) -// value.prefix = yaml_strdup(tag_directive.prefix) -// if (!value.handle || !value.prefix) goto error -// if (!PUSH(&context, tag_directives_copy, value)) -// goto error -// value.handle = NULL -// value.prefix = NULL -// } -// } -// -// DOCUMENT_INIT(*document, nodes.start, nodes.end, version_directive_copy, -// tag_directives_copy.start, tag_directives_copy.top, -// start_implicit, end_implicit, mark, mark) -// -// return 1 -// -//error: -// STACK_DEL(&context, nodes) -// yaml_free(version_directive_copy) -// while (!STACK_EMPTY(&context, tag_directives_copy)) { -// value yaml_tag_directive_t = POP(&context, tag_directives_copy) -// yaml_free(value.handle) -// yaml_free(value.prefix) -// } -// STACK_DEL(&context, tag_directives_copy) -// yaml_free(value.handle) -// yaml_free(value.prefix) -// -// return 0 -//} -// -///* -// * Destroy a document object. -// */ -// -//YAML_DECLARE(void) -//yaml_document_delete(document *yaml_document_t) -//{ -// struct { -// error yaml_error_type_t -// } context -// tag_directive *yaml_tag_directive_t -// -// context.error = YAML_NO_ERROR // Eliminate a compiler warning. -// -// assert(document) // Non-NULL document object is expected. -// -// while (!STACK_EMPTY(&context, document.nodes)) { -// node yaml_node_t = POP(&context, document.nodes) -// yaml_free(node.tag) -// switch (node.type) { -// case YAML_SCALAR_NODE: -// yaml_free(node.data.scalar.value) -// break -// case YAML_SEQUENCE_NODE: -// STACK_DEL(&context, node.data.sequence.items) -// break -// case YAML_MAPPING_NODE: -// STACK_DEL(&context, node.data.mapping.pairs) -// break -// default: -// assert(0) // Should not happen. -// } -// } -// STACK_DEL(&context, document.nodes) -// -// yaml_free(document.version_directive) -// for (tag_directive = document.tag_directives.start -// tag_directive != document.tag_directives.end -// tag_directive++) { -// yaml_free(tag_directive.handle) -// yaml_free(tag_directive.prefix) -// } -// yaml_free(document.tag_directives.start) -// -// memset(document, 0, sizeof(yaml_document_t)) -//} -// -///** -// * Get a document node. -// */ -// -//YAML_DECLARE(yaml_node_t *) -//yaml_document_get_node(document *yaml_document_t, index int) -//{ -// assert(document) // Non-NULL document object is expected. -// -// if (index > 0 && document.nodes.start + index <= document.nodes.top) { -// return document.nodes.start + index - 1 -// } -// return NULL -//} -// -///** -// * Get the root object. -// */ -// -//YAML_DECLARE(yaml_node_t *) -//yaml_document_get_root_node(document *yaml_document_t) -//{ -// assert(document) // Non-NULL document object is expected. -// -// if (document.nodes.top != document.nodes.start) { -// return document.nodes.start -// } -// return NULL -//} -// -///* -// * Add a scalar node to a document. -// */ -// -//YAML_DECLARE(int) -//yaml_document_add_scalar(document *yaml_document_t, -// tag *yaml_char_t, value *yaml_char_t, length int, -// style yaml_scalar_style_t) -//{ -// struct { -// error yaml_error_type_t -// } context -// mark yaml_mark_t = { 0, 0, 0 } -// tag_copy *yaml_char_t = NULL -// value_copy *yaml_char_t = NULL -// node yaml_node_t -// -// assert(document) // Non-NULL document object is expected. -// assert(value) // Non-NULL value is expected. -// -// if (!tag) { -// tag = (yaml_char_t *)YAML_DEFAULT_SCALAR_TAG -// } -// -// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error -// tag_copy = yaml_strdup(tag) -// if (!tag_copy) goto error -// -// if (length < 0) { -// length = strlen((char *)value) -// } -// -// if (!yaml_check_utf8(value, length)) goto error -// value_copy = yaml_malloc(length+1) -// if (!value_copy) goto error -// memcpy(value_copy, value, length) -// value_copy[length] = '\0' -// -// SCALAR_NODE_INIT(node, tag_copy, value_copy, length, style, mark, mark) -// if (!PUSH(&context, document.nodes, node)) goto error -// -// return document.nodes.top - document.nodes.start -// -//error: -// yaml_free(tag_copy) -// yaml_free(value_copy) -// -// return 0 -//} -// -///* -// * Add a sequence node to a document. -// */ -// -//YAML_DECLARE(int) -//yaml_document_add_sequence(document *yaml_document_t, -// tag *yaml_char_t, style yaml_sequence_style_t) -//{ -// struct { -// error yaml_error_type_t -// } context -// mark yaml_mark_t = { 0, 0, 0 } -// tag_copy *yaml_char_t = NULL -// struct { -// start *yaml_node_item_t -// end *yaml_node_item_t -// top *yaml_node_item_t -// } items = { NULL, NULL, NULL } -// node yaml_node_t -// -// assert(document) // Non-NULL document object is expected. -// -// if (!tag) { -// tag = (yaml_char_t *)YAML_DEFAULT_SEQUENCE_TAG -// } -// -// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error -// tag_copy = yaml_strdup(tag) -// if (!tag_copy) goto error -// -// if (!STACK_INIT(&context, items, INITIAL_STACK_SIZE)) goto error -// -// SEQUENCE_NODE_INIT(node, tag_copy, items.start, items.end, -// style, mark, mark) -// if (!PUSH(&context, document.nodes, node)) goto error -// -// return document.nodes.top - document.nodes.start -// -//error: -// STACK_DEL(&context, items) -// yaml_free(tag_copy) -// -// return 0 -//} -// -///* -// * Add a mapping node to a document. -// */ -// -//YAML_DECLARE(int) -//yaml_document_add_mapping(document *yaml_document_t, -// tag *yaml_char_t, style yaml_mapping_style_t) -//{ -// struct { -// error yaml_error_type_t -// } context -// mark yaml_mark_t = { 0, 0, 0 } -// tag_copy *yaml_char_t = NULL -// struct { -// start *yaml_node_pair_t -// end *yaml_node_pair_t -// top *yaml_node_pair_t -// } pairs = { NULL, NULL, NULL } -// node yaml_node_t -// -// assert(document) // Non-NULL document object is expected. -// -// if (!tag) { -// tag = (yaml_char_t *)YAML_DEFAULT_MAPPING_TAG -// } -// -// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error -// tag_copy = yaml_strdup(tag) -// if (!tag_copy) goto error -// -// if (!STACK_INIT(&context, pairs, INITIAL_STACK_SIZE)) goto error -// -// MAPPING_NODE_INIT(node, tag_copy, pairs.start, pairs.end, -// style, mark, mark) -// if (!PUSH(&context, document.nodes, node)) goto error -// -// return document.nodes.top - document.nodes.start -// -//error: -// STACK_DEL(&context, pairs) -// yaml_free(tag_copy) -// -// return 0 -//} -// -///* -// * Append an item to a sequence node. -// */ -// -//YAML_DECLARE(int) -//yaml_document_append_sequence_item(document *yaml_document_t, -// sequence int, item int) -//{ -// struct { -// error yaml_error_type_t -// } context -// -// assert(document) // Non-NULL document is required. -// assert(sequence > 0 -// && document.nodes.start + sequence <= document.nodes.top) -// // Valid sequence id is required. -// assert(document.nodes.start[sequence-1].type == YAML_SEQUENCE_NODE) -// // A sequence node is required. -// assert(item > 0 && document.nodes.start + item <= document.nodes.top) -// // Valid item id is required. -// -// if (!PUSH(&context, -// document.nodes.start[sequence-1].data.sequence.items, item)) -// return 0 -// -// return 1 -//} -// -///* -// * Append a pair of a key and a value to a mapping node. -// */ -// -//YAML_DECLARE(int) -//yaml_document_append_mapping_pair(document *yaml_document_t, -// mapping int, key int, value int) -//{ -// struct { -// error yaml_error_type_t -// } context -// -// pair yaml_node_pair_t -// -// assert(document) // Non-NULL document is required. -// assert(mapping > 0 -// && document.nodes.start + mapping <= document.nodes.top) -// // Valid mapping id is required. -// assert(document.nodes.start[mapping-1].type == YAML_MAPPING_NODE) -// // A mapping node is required. -// assert(key > 0 && document.nodes.start + key <= document.nodes.top) -// // Valid key id is required. -// assert(value > 0 && document.nodes.start + value <= document.nodes.top) -// // Valid value id is required. -// -// pair.key = key -// pair.value = value -// -// if (!PUSH(&context, -// document.nodes.start[mapping-1].data.mapping.pairs, pair)) -// return 0 -// -// return 1 -//} -// -// diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/decode.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/decode.go deleted file mode 100644 index e4e56e28e..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/decode.go +++ /dev/null @@ -1,775 +0,0 @@ -package yaml - -import ( - "encoding" - "encoding/base64" - "fmt" - "io" - "math" - "reflect" - "strconv" - "time" -) - -const ( - documentNode = 1 << iota - mappingNode - sequenceNode - scalarNode - aliasNode -) - -type node struct { - kind int - line, column int - tag string - // For an alias node, alias holds the resolved alias. - alias *node - value string - implicit bool - children []*node - anchors map[string]*node -} - -// ---------------------------------------------------------------------------- -// Parser, produces a node tree out of a libyaml event stream. - -type parser struct { - parser yaml_parser_t - event yaml_event_t - doc *node - doneInit bool -} - -func newParser(b []byte) *parser { - p := parser{} - if !yaml_parser_initialize(&p.parser) { - panic("failed to initialize YAML emitter") - } - if len(b) == 0 { - b = []byte{'\n'} - } - yaml_parser_set_input_string(&p.parser, b) - return &p -} - -func newParserFromReader(r io.Reader) *parser { - p := parser{} - if !yaml_parser_initialize(&p.parser) { - panic("failed to initialize YAML emitter") - } - yaml_parser_set_input_reader(&p.parser, r) - return &p -} - -func (p *parser) init() { - if p.doneInit { - return - } - p.expect(yaml_STREAM_START_EVENT) - p.doneInit = true -} - -func (p *parser) destroy() { - if p.event.typ != yaml_NO_EVENT { - yaml_event_delete(&p.event) - } - yaml_parser_delete(&p.parser) -} - -// expect consumes an event from the event stream and -// checks that it's of the expected type. -func (p *parser) expect(e yaml_event_type_t) { - if p.event.typ == yaml_NO_EVENT { - if !yaml_parser_parse(&p.parser, &p.event) { - p.fail() - } - } - if p.event.typ == yaml_STREAM_END_EVENT { - failf("attempted to go past the end of stream; corrupted value?") - } - if p.event.typ != e { - p.parser.problem = fmt.Sprintf("expected %s event but got %s", e, p.event.typ) - p.fail() - } - yaml_event_delete(&p.event) - p.event.typ = yaml_NO_EVENT -} - -// peek peeks at the next event in the event stream, -// puts the results into p.event and returns the event type. -func (p *parser) peek() yaml_event_type_t { - if p.event.typ != yaml_NO_EVENT { - return p.event.typ - } - if !yaml_parser_parse(&p.parser, &p.event) { - p.fail() - } - return p.event.typ -} - -func (p *parser) fail() { - var where string - var line int - if p.parser.problem_mark.line != 0 { - line = p.parser.problem_mark.line - // Scanner errors don't iterate line before returning error - if p.parser.error == yaml_SCANNER_ERROR { - line++ - } - } else if p.parser.context_mark.line != 0 { - line = p.parser.context_mark.line - } - if line != 0 { - where = "line " + strconv.Itoa(line) + ": " - } - var msg string - if len(p.parser.problem) > 0 { - msg = p.parser.problem - } else { - msg = "unknown problem parsing YAML content" - } - failf("%s%s", where, msg) -} - -func (p *parser) anchor(n *node, anchor []byte) { - if anchor != nil { - p.doc.anchors[string(anchor)] = n - } -} - -func (p *parser) parse() *node { - p.init() - switch p.peek() { - case yaml_SCALAR_EVENT: - return p.scalar() - case yaml_ALIAS_EVENT: - return p.alias() - case yaml_MAPPING_START_EVENT: - return p.mapping() - case yaml_SEQUENCE_START_EVENT: - return p.sequence() - case yaml_DOCUMENT_START_EVENT: - return p.document() - case yaml_STREAM_END_EVENT: - // Happens when attempting to decode an empty buffer. - return nil - default: - panic("attempted to parse unknown event: " + p.event.typ.String()) - } -} - -func (p *parser) node(kind int) *node { - return &node{ - kind: kind, - line: p.event.start_mark.line, - column: p.event.start_mark.column, - } -} - -func (p *parser) document() *node { - n := p.node(documentNode) - n.anchors = make(map[string]*node) - p.doc = n - p.expect(yaml_DOCUMENT_START_EVENT) - n.children = append(n.children, p.parse()) - p.expect(yaml_DOCUMENT_END_EVENT) - return n -} - -func (p *parser) alias() *node { - n := p.node(aliasNode) - n.value = string(p.event.anchor) - n.alias = p.doc.anchors[n.value] - if n.alias == nil { - failf("unknown anchor '%s' referenced", n.value) - } - p.expect(yaml_ALIAS_EVENT) - return n -} - -func (p *parser) scalar() *node { - n := p.node(scalarNode) - n.value = string(p.event.value) - n.tag = string(p.event.tag) - n.implicit = p.event.implicit - p.anchor(n, p.event.anchor) - p.expect(yaml_SCALAR_EVENT) - return n -} - -func (p *parser) sequence() *node { - n := p.node(sequenceNode) - p.anchor(n, p.event.anchor) - p.expect(yaml_SEQUENCE_START_EVENT) - for p.peek() != yaml_SEQUENCE_END_EVENT { - n.children = append(n.children, p.parse()) - } - p.expect(yaml_SEQUENCE_END_EVENT) - return n -} - -func (p *parser) mapping() *node { - n := p.node(mappingNode) - p.anchor(n, p.event.anchor) - p.expect(yaml_MAPPING_START_EVENT) - for p.peek() != yaml_MAPPING_END_EVENT { - n.children = append(n.children, p.parse(), p.parse()) - } - p.expect(yaml_MAPPING_END_EVENT) - return n -} - -// ---------------------------------------------------------------------------- -// Decoder, unmarshals a node into a provided value. - -type decoder struct { - doc *node - aliases map[*node]bool - mapType reflect.Type - terrors []string - strict bool -} - -var ( - mapItemType = reflect.TypeOf(MapItem{}) - durationType = reflect.TypeOf(time.Duration(0)) - defaultMapType = reflect.TypeOf(map[interface{}]interface{}{}) - ifaceType = defaultMapType.Elem() - timeType = reflect.TypeOf(time.Time{}) - ptrTimeType = reflect.TypeOf(&time.Time{}) -) - -func newDecoder(strict bool) *decoder { - d := &decoder{mapType: defaultMapType, strict: strict} - d.aliases = make(map[*node]bool) - return d -} - -func (d *decoder) terror(n *node, tag string, out reflect.Value) { - if n.tag != "" { - tag = n.tag - } - value := n.value - if tag != yaml_SEQ_TAG && tag != yaml_MAP_TAG { - if len(value) > 10 { - value = " `" + value[:7] + "...`" - } else { - value = " `" + value + "`" - } - } - d.terrors = append(d.terrors, fmt.Sprintf("line %d: cannot unmarshal %s%s into %s", n.line+1, shortTag(tag), value, out.Type())) -} - -func (d *decoder) callUnmarshaler(n *node, u Unmarshaler) (good bool) { - terrlen := len(d.terrors) - err := u.UnmarshalYAML(func(v interface{}) (err error) { - defer handleErr(&err) - d.unmarshal(n, reflect.ValueOf(v)) - if len(d.terrors) > terrlen { - issues := d.terrors[terrlen:] - d.terrors = d.terrors[:terrlen] - return &TypeError{issues} - } - return nil - }) - if e, ok := err.(*TypeError); ok { - d.terrors = append(d.terrors, e.Errors...) - return false - } - if err != nil { - fail(err) - } - return true -} - -// d.prepare initializes and dereferences pointers and calls UnmarshalYAML -// if a value is found to implement it. -// It returns the initialized and dereferenced out value, whether -// unmarshalling was already done by UnmarshalYAML, and if so whether -// its types unmarshalled appropriately. -// -// If n holds a null value, prepare returns before doing anything. -func (d *decoder) prepare(n *node, out reflect.Value) (newout reflect.Value, unmarshaled, good bool) { - if n.tag == yaml_NULL_TAG || n.kind == scalarNode && n.tag == "" && (n.value == "null" || n.value == "~" || n.value == "" && n.implicit) { - return out, false, false - } - again := true - for again { - again = false - if out.Kind() == reflect.Ptr { - if out.IsNil() { - out.Set(reflect.New(out.Type().Elem())) - } - out = out.Elem() - again = true - } - if out.CanAddr() { - if u, ok := out.Addr().Interface().(Unmarshaler); ok { - good = d.callUnmarshaler(n, u) - return out, true, good - } - } - } - return out, false, false -} - -func (d *decoder) unmarshal(n *node, out reflect.Value) (good bool) { - switch n.kind { - case documentNode: - return d.document(n, out) - case aliasNode: - return d.alias(n, out) - } - out, unmarshaled, good := d.prepare(n, out) - if unmarshaled { - return good - } - switch n.kind { - case scalarNode: - good = d.scalar(n, out) - case mappingNode: - good = d.mapping(n, out) - case sequenceNode: - good = d.sequence(n, out) - default: - panic("internal error: unknown node kind: " + strconv.Itoa(n.kind)) - } - return good -} - -func (d *decoder) document(n *node, out reflect.Value) (good bool) { - if len(n.children) == 1 { - d.doc = n - d.unmarshal(n.children[0], out) - return true - } - return false -} - -func (d *decoder) alias(n *node, out reflect.Value) (good bool) { - if d.aliases[n] { - // TODO this could actually be allowed in some circumstances. - failf("anchor '%s' value contains itself", n.value) - } - d.aliases[n] = true - good = d.unmarshal(n.alias, out) - delete(d.aliases, n) - return good -} - -var zeroValue reflect.Value - -func resetMap(out reflect.Value) { - for _, k := range out.MapKeys() { - out.SetMapIndex(k, zeroValue) - } -} - -func (d *decoder) scalar(n *node, out reflect.Value) bool { - var tag string - var resolved interface{} - if n.tag == "" && !n.implicit { - tag = yaml_STR_TAG - resolved = n.value - } else { - tag, resolved = resolve(n.tag, n.value) - if tag == yaml_BINARY_TAG { - data, err := base64.StdEncoding.DecodeString(resolved.(string)) - if err != nil { - failf("!!binary value contains invalid base64 data") - } - resolved = string(data) - } - } - if resolved == nil { - if out.Kind() == reflect.Map && !out.CanAddr() { - resetMap(out) - } else { - out.Set(reflect.Zero(out.Type())) - } - return true - } - if resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() { - // We've resolved to exactly the type we want, so use that. - out.Set(resolvedv) - return true - } - // Perhaps we can use the value as a TextUnmarshaler to - // set its value. - if out.CanAddr() { - u, ok := out.Addr().Interface().(encoding.TextUnmarshaler) - if ok { - var text []byte - if tag == yaml_BINARY_TAG { - text = []byte(resolved.(string)) - } else { - // We let any value be unmarshaled into TextUnmarshaler. - // That might be more lax than we'd like, but the - // TextUnmarshaler itself should bowl out any dubious values. - text = []byte(n.value) - } - err := u.UnmarshalText(text) - if err != nil { - fail(err) - } - return true - } - } - switch out.Kind() { - case reflect.String: - if tag == yaml_BINARY_TAG { - out.SetString(resolved.(string)) - return true - } - if resolved != nil { - out.SetString(n.value) - return true - } - case reflect.Interface: - if resolved == nil { - out.Set(reflect.Zero(out.Type())) - } else if tag == yaml_TIMESTAMP_TAG { - // It looks like a timestamp but for backward compatibility - // reasons we set it as a string, so that code that unmarshals - // timestamp-like values into interface{} will continue to - // see a string and not a time.Time. - // TODO(v3) Drop this. - out.Set(reflect.ValueOf(n.value)) - } else { - out.Set(reflect.ValueOf(resolved)) - } - return true - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - switch resolved := resolved.(type) { - case int: - if !out.OverflowInt(int64(resolved)) { - out.SetInt(int64(resolved)) - return true - } - case int64: - if !out.OverflowInt(resolved) { - out.SetInt(resolved) - return true - } - case uint64: - if resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) { - out.SetInt(int64(resolved)) - return true - } - case float64: - if resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) { - out.SetInt(int64(resolved)) - return true - } - case string: - if out.Type() == durationType { - d, err := time.ParseDuration(resolved) - if err == nil { - out.SetInt(int64(d)) - return true - } - } - } - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - switch resolved := resolved.(type) { - case int: - if resolved >= 0 && !out.OverflowUint(uint64(resolved)) { - out.SetUint(uint64(resolved)) - return true - } - case int64: - if resolved >= 0 && !out.OverflowUint(uint64(resolved)) { - out.SetUint(uint64(resolved)) - return true - } - case uint64: - if !out.OverflowUint(uint64(resolved)) { - out.SetUint(uint64(resolved)) - return true - } - case float64: - if resolved <= math.MaxUint64 && !out.OverflowUint(uint64(resolved)) { - out.SetUint(uint64(resolved)) - return true - } - } - case reflect.Bool: - switch resolved := resolved.(type) { - case bool: - out.SetBool(resolved) - return true - } - case reflect.Float32, reflect.Float64: - switch resolved := resolved.(type) { - case int: - out.SetFloat(float64(resolved)) - return true - case int64: - out.SetFloat(float64(resolved)) - return true - case uint64: - out.SetFloat(float64(resolved)) - return true - case float64: - out.SetFloat(resolved) - return true - } - case reflect.Struct: - if resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() { - out.Set(resolvedv) - return true - } - case reflect.Ptr: - if out.Type().Elem() == reflect.TypeOf(resolved) { - // TODO DOes this make sense? When is out a Ptr except when decoding a nil value? - elem := reflect.New(out.Type().Elem()) - elem.Elem().Set(reflect.ValueOf(resolved)) - out.Set(elem) - return true - } - } - d.terror(n, tag, out) - return false -} - -func settableValueOf(i interface{}) reflect.Value { - v := reflect.ValueOf(i) - sv := reflect.New(v.Type()).Elem() - sv.Set(v) - return sv -} - -func (d *decoder) sequence(n *node, out reflect.Value) (good bool) { - l := len(n.children) - - var iface reflect.Value - switch out.Kind() { - case reflect.Slice: - out.Set(reflect.MakeSlice(out.Type(), l, l)) - case reflect.Array: - if l != out.Len() { - failf("invalid array: want %d elements but got %d", out.Len(), l) - } - case reflect.Interface: - // No type hints. Will have to use a generic sequence. - iface = out - out = settableValueOf(make([]interface{}, l)) - default: - d.terror(n, yaml_SEQ_TAG, out) - return false - } - et := out.Type().Elem() - - j := 0 - for i := 0; i < l; i++ { - e := reflect.New(et).Elem() - if ok := d.unmarshal(n.children[i], e); ok { - out.Index(j).Set(e) - j++ - } - } - if out.Kind() != reflect.Array { - out.Set(out.Slice(0, j)) - } - if iface.IsValid() { - iface.Set(out) - } - return true -} - -func (d *decoder) mapping(n *node, out reflect.Value) (good bool) { - switch out.Kind() { - case reflect.Struct: - return d.mappingStruct(n, out) - case reflect.Slice: - return d.mappingSlice(n, out) - case reflect.Map: - // okay - case reflect.Interface: - if d.mapType.Kind() == reflect.Map { - iface := out - out = reflect.MakeMap(d.mapType) - iface.Set(out) - } else { - slicev := reflect.New(d.mapType).Elem() - if !d.mappingSlice(n, slicev) { - return false - } - out.Set(slicev) - return true - } - default: - d.terror(n, yaml_MAP_TAG, out) - return false - } - outt := out.Type() - kt := outt.Key() - et := outt.Elem() - - mapType := d.mapType - if outt.Key() == ifaceType && outt.Elem() == ifaceType { - d.mapType = outt - } - - if out.IsNil() { - out.Set(reflect.MakeMap(outt)) - } - l := len(n.children) - for i := 0; i < l; i += 2 { - if isMerge(n.children[i]) { - d.merge(n.children[i+1], out) - continue - } - k := reflect.New(kt).Elem() - if d.unmarshal(n.children[i], k) { - kkind := k.Kind() - if kkind == reflect.Interface { - kkind = k.Elem().Kind() - } - if kkind == reflect.Map || kkind == reflect.Slice { - failf("invalid map key: %#v", k.Interface()) - } - e := reflect.New(et).Elem() - if d.unmarshal(n.children[i+1], e) { - d.setMapIndex(n.children[i+1], out, k, e) - } - } - } - d.mapType = mapType - return true -} - -func (d *decoder) setMapIndex(n *node, out, k, v reflect.Value) { - if d.strict && out.MapIndex(k) != zeroValue { - d.terrors = append(d.terrors, fmt.Sprintf("line %d: key %#v already set in map", n.line+1, k.Interface())) - return - } - out.SetMapIndex(k, v) -} - -func (d *decoder) mappingSlice(n *node, out reflect.Value) (good bool) { - outt := out.Type() - if outt.Elem() != mapItemType { - d.terror(n, yaml_MAP_TAG, out) - return false - } - - mapType := d.mapType - d.mapType = outt - - var slice []MapItem - var l = len(n.children) - for i := 0; i < l; i += 2 { - if isMerge(n.children[i]) { - d.merge(n.children[i+1], out) - continue - } - item := MapItem{} - k := reflect.ValueOf(&item.Key).Elem() - if d.unmarshal(n.children[i], k) { - v := reflect.ValueOf(&item.Value).Elem() - if d.unmarshal(n.children[i+1], v) { - slice = append(slice, item) - } - } - } - out.Set(reflect.ValueOf(slice)) - d.mapType = mapType - return true -} - -func (d *decoder) mappingStruct(n *node, out reflect.Value) (good bool) { - sinfo, err := getStructInfo(out.Type()) - if err != nil { - panic(err) - } - name := settableValueOf("") - l := len(n.children) - - var inlineMap reflect.Value - var elemType reflect.Type - if sinfo.InlineMap != -1 { - inlineMap = out.Field(sinfo.InlineMap) - inlineMap.Set(reflect.New(inlineMap.Type()).Elem()) - elemType = inlineMap.Type().Elem() - } - - var doneFields []bool - if d.strict { - doneFields = make([]bool, len(sinfo.FieldsList)) - } - for i := 0; i < l; i += 2 { - ni := n.children[i] - if isMerge(ni) { - d.merge(n.children[i+1], out) - continue - } - if !d.unmarshal(ni, name) { - continue - } - if info, ok := sinfo.FieldsMap[name.String()]; ok { - if d.strict { - if doneFields[info.Id] { - d.terrors = append(d.terrors, fmt.Sprintf("line %d: field %s already set in type %s", ni.line+1, name.String(), out.Type())) - continue - } - doneFields[info.Id] = true - } - var field reflect.Value - if info.Inline == nil { - field = out.Field(info.Num) - } else { - field = out.FieldByIndex(info.Inline) - } - d.unmarshal(n.children[i+1], field) - } else if sinfo.InlineMap != -1 { - if inlineMap.IsNil() { - inlineMap.Set(reflect.MakeMap(inlineMap.Type())) - } - value := reflect.New(elemType).Elem() - d.unmarshal(n.children[i+1], value) - d.setMapIndex(n.children[i+1], inlineMap, name, value) - } else if d.strict { - d.terrors = append(d.terrors, fmt.Sprintf("line %d: field %s not found in type %s", ni.line+1, name.String(), out.Type())) - } - } - return true -} - -func failWantMap() { - failf("map merge requires map or sequence of maps as the value") -} - -func (d *decoder) merge(n *node, out reflect.Value) { - switch n.kind { - case mappingNode: - d.unmarshal(n, out) - case aliasNode: - an, ok := d.doc.anchors[n.value] - if ok && an.kind != mappingNode { - failWantMap() - } - d.unmarshal(n, out) - case sequenceNode: - // Step backwards as earlier nodes take precedence. - for i := len(n.children) - 1; i >= 0; i-- { - ni := n.children[i] - if ni.kind == aliasNode { - an, ok := d.doc.anchors[ni.value] - if ok && an.kind != mappingNode { - failWantMap() - } - } else if ni.kind != mappingNode { - failWantMap() - } - d.unmarshal(ni, out) - } - default: - failWantMap() - } -} - -func isMerge(n *node) bool { - return n.kind == scalarNode && n.value == "<<" && (n.implicit == true || n.tag == yaml_MERGE_TAG) -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/emitterc.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/emitterc.go deleted file mode 100644 index a1c2cc526..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/emitterc.go +++ /dev/null @@ -1,1685 +0,0 @@ -package yaml - -import ( - "bytes" - "fmt" -) - -// Flush the buffer if needed. -func flush(emitter *yaml_emitter_t) bool { - if emitter.buffer_pos+5 >= len(emitter.buffer) { - return yaml_emitter_flush(emitter) - } - return true -} - -// Put a character to the output buffer. -func put(emitter *yaml_emitter_t, value byte) bool { - if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { - return false - } - emitter.buffer[emitter.buffer_pos] = value - emitter.buffer_pos++ - emitter.column++ - return true -} - -// Put a line break to the output buffer. -func put_break(emitter *yaml_emitter_t) bool { - if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { - return false - } - switch emitter.line_break { - case yaml_CR_BREAK: - emitter.buffer[emitter.buffer_pos] = '\r' - emitter.buffer_pos += 1 - case yaml_LN_BREAK: - emitter.buffer[emitter.buffer_pos] = '\n' - emitter.buffer_pos += 1 - case yaml_CRLN_BREAK: - emitter.buffer[emitter.buffer_pos+0] = '\r' - emitter.buffer[emitter.buffer_pos+1] = '\n' - emitter.buffer_pos += 2 - default: - panic("unknown line break setting") - } - emitter.column = 0 - emitter.line++ - return true -} - -// Copy a character from a string into buffer. -func write(emitter *yaml_emitter_t, s []byte, i *int) bool { - if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { - return false - } - p := emitter.buffer_pos - w := width(s[*i]) - switch w { - case 4: - emitter.buffer[p+3] = s[*i+3] - fallthrough - case 3: - emitter.buffer[p+2] = s[*i+2] - fallthrough - case 2: - emitter.buffer[p+1] = s[*i+1] - fallthrough - case 1: - emitter.buffer[p+0] = s[*i+0] - default: - panic("unknown character width") - } - emitter.column++ - emitter.buffer_pos += w - *i += w - return true -} - -// Write a whole string into buffer. -func write_all(emitter *yaml_emitter_t, s []byte) bool { - for i := 0; i < len(s); { - if !write(emitter, s, &i) { - return false - } - } - return true -} - -// Copy a line break character from a string into buffer. -func write_break(emitter *yaml_emitter_t, s []byte, i *int) bool { - if s[*i] == '\n' { - if !put_break(emitter) { - return false - } - *i++ - } else { - if !write(emitter, s, i) { - return false - } - emitter.column = 0 - emitter.line++ - } - return true -} - -// Set an emitter error and return false. -func yaml_emitter_set_emitter_error(emitter *yaml_emitter_t, problem string) bool { - emitter.error = yaml_EMITTER_ERROR - emitter.problem = problem - return false -} - -// Emit an event. -func yaml_emitter_emit(emitter *yaml_emitter_t, event *yaml_event_t) bool { - emitter.events = append(emitter.events, *event) - for !yaml_emitter_need_more_events(emitter) { - event := &emitter.events[emitter.events_head] - if !yaml_emitter_analyze_event(emitter, event) { - return false - } - if !yaml_emitter_state_machine(emitter, event) { - return false - } - yaml_event_delete(event) - emitter.events_head++ - } - return true -} - -// Check if we need to accumulate more events before emitting. -// -// We accumulate extra -// - 1 event for DOCUMENT-START -// - 2 events for SEQUENCE-START -// - 3 events for MAPPING-START -// -func yaml_emitter_need_more_events(emitter *yaml_emitter_t) bool { - if emitter.events_head == len(emitter.events) { - return true - } - var accumulate int - switch emitter.events[emitter.events_head].typ { - case yaml_DOCUMENT_START_EVENT: - accumulate = 1 - break - case yaml_SEQUENCE_START_EVENT: - accumulate = 2 - break - case yaml_MAPPING_START_EVENT: - accumulate = 3 - break - default: - return false - } - if len(emitter.events)-emitter.events_head > accumulate { - return false - } - var level int - for i := emitter.events_head; i < len(emitter.events); i++ { - switch emitter.events[i].typ { - case yaml_STREAM_START_EVENT, yaml_DOCUMENT_START_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT: - level++ - case yaml_STREAM_END_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_END_EVENT, yaml_MAPPING_END_EVENT: - level-- - } - if level == 0 { - return false - } - } - return true -} - -// Append a directive to the directives stack. -func yaml_emitter_append_tag_directive(emitter *yaml_emitter_t, value *yaml_tag_directive_t, allow_duplicates bool) bool { - for i := 0; i < len(emitter.tag_directives); i++ { - if bytes.Equal(value.handle, emitter.tag_directives[i].handle) { - if allow_duplicates { - return true - } - return yaml_emitter_set_emitter_error(emitter, "duplicate %TAG directive") - } - } - - // [Go] Do we actually need to copy this given garbage collection - // and the lack of deallocating destructors? - tag_copy := yaml_tag_directive_t{ - handle: make([]byte, len(value.handle)), - prefix: make([]byte, len(value.prefix)), - } - copy(tag_copy.handle, value.handle) - copy(tag_copy.prefix, value.prefix) - emitter.tag_directives = append(emitter.tag_directives, tag_copy) - return true -} - -// Increase the indentation level. -func yaml_emitter_increase_indent(emitter *yaml_emitter_t, flow, indentless bool) bool { - emitter.indents = append(emitter.indents, emitter.indent) - if emitter.indent < 0 { - if flow { - emitter.indent = emitter.best_indent - } else { - emitter.indent = 0 - } - } else if !indentless { - emitter.indent += emitter.best_indent - } - return true -} - -// State dispatcher. -func yaml_emitter_state_machine(emitter *yaml_emitter_t, event *yaml_event_t) bool { - switch emitter.state { - default: - case yaml_EMIT_STREAM_START_STATE: - return yaml_emitter_emit_stream_start(emitter, event) - - case yaml_EMIT_FIRST_DOCUMENT_START_STATE: - return yaml_emitter_emit_document_start(emitter, event, true) - - case yaml_EMIT_DOCUMENT_START_STATE: - return yaml_emitter_emit_document_start(emitter, event, false) - - case yaml_EMIT_DOCUMENT_CONTENT_STATE: - return yaml_emitter_emit_document_content(emitter, event) - - case yaml_EMIT_DOCUMENT_END_STATE: - return yaml_emitter_emit_document_end(emitter, event) - - case yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE: - return yaml_emitter_emit_flow_sequence_item(emitter, event, true) - - case yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE: - return yaml_emitter_emit_flow_sequence_item(emitter, event, false) - - case yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE: - return yaml_emitter_emit_flow_mapping_key(emitter, event, true) - - case yaml_EMIT_FLOW_MAPPING_KEY_STATE: - return yaml_emitter_emit_flow_mapping_key(emitter, event, false) - - case yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE: - return yaml_emitter_emit_flow_mapping_value(emitter, event, true) - - case yaml_EMIT_FLOW_MAPPING_VALUE_STATE: - return yaml_emitter_emit_flow_mapping_value(emitter, event, false) - - case yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE: - return yaml_emitter_emit_block_sequence_item(emitter, event, true) - - case yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE: - return yaml_emitter_emit_block_sequence_item(emitter, event, false) - - case yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE: - return yaml_emitter_emit_block_mapping_key(emitter, event, true) - - case yaml_EMIT_BLOCK_MAPPING_KEY_STATE: - return yaml_emitter_emit_block_mapping_key(emitter, event, false) - - case yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE: - return yaml_emitter_emit_block_mapping_value(emitter, event, true) - - case yaml_EMIT_BLOCK_MAPPING_VALUE_STATE: - return yaml_emitter_emit_block_mapping_value(emitter, event, false) - - case yaml_EMIT_END_STATE: - return yaml_emitter_set_emitter_error(emitter, "expected nothing after STREAM-END") - } - panic("invalid emitter state") -} - -// Expect STREAM-START. -func yaml_emitter_emit_stream_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { - if event.typ != yaml_STREAM_START_EVENT { - return yaml_emitter_set_emitter_error(emitter, "expected STREAM-START") - } - if emitter.encoding == yaml_ANY_ENCODING { - emitter.encoding = event.encoding - if emitter.encoding == yaml_ANY_ENCODING { - emitter.encoding = yaml_UTF8_ENCODING - } - } - if emitter.best_indent < 2 || emitter.best_indent > 9 { - emitter.best_indent = 2 - } - if emitter.best_width >= 0 && emitter.best_width <= emitter.best_indent*2 { - emitter.best_width = 80 - } - if emitter.best_width < 0 { - emitter.best_width = 1<<31 - 1 - } - if emitter.line_break == yaml_ANY_BREAK { - emitter.line_break = yaml_LN_BREAK - } - - emitter.indent = -1 - emitter.line = 0 - emitter.column = 0 - emitter.whitespace = true - emitter.indention = true - - if emitter.encoding != yaml_UTF8_ENCODING { - if !yaml_emitter_write_bom(emitter) { - return false - } - } - emitter.state = yaml_EMIT_FIRST_DOCUMENT_START_STATE - return true -} - -// Expect DOCUMENT-START or STREAM-END. -func yaml_emitter_emit_document_start(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { - - if event.typ == yaml_DOCUMENT_START_EVENT { - - if event.version_directive != nil { - if !yaml_emitter_analyze_version_directive(emitter, event.version_directive) { - return false - } - } - - for i := 0; i < len(event.tag_directives); i++ { - tag_directive := &event.tag_directives[i] - if !yaml_emitter_analyze_tag_directive(emitter, tag_directive) { - return false - } - if !yaml_emitter_append_tag_directive(emitter, tag_directive, false) { - return false - } - } - - for i := 0; i < len(default_tag_directives); i++ { - tag_directive := &default_tag_directives[i] - if !yaml_emitter_append_tag_directive(emitter, tag_directive, true) { - return false - } - } - - implicit := event.implicit - if !first || emitter.canonical { - implicit = false - } - - if emitter.open_ended && (event.version_directive != nil || len(event.tag_directives) > 0) { - if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { - return false - } - if !yaml_emitter_write_indent(emitter) { - return false - } - } - - if event.version_directive != nil { - implicit = false - if !yaml_emitter_write_indicator(emitter, []byte("%YAML"), true, false, false) { - return false - } - if !yaml_emitter_write_indicator(emitter, []byte("1.1"), true, false, false) { - return false - } - if !yaml_emitter_write_indent(emitter) { - return false - } - } - - if len(event.tag_directives) > 0 { - implicit = false - for i := 0; i < len(event.tag_directives); i++ { - tag_directive := &event.tag_directives[i] - if !yaml_emitter_write_indicator(emitter, []byte("%TAG"), true, false, false) { - return false - } - if !yaml_emitter_write_tag_handle(emitter, tag_directive.handle) { - return false - } - if !yaml_emitter_write_tag_content(emitter, tag_directive.prefix, true) { - return false - } - if !yaml_emitter_write_indent(emitter) { - return false - } - } - } - - if yaml_emitter_check_empty_document(emitter) { - implicit = false - } - if !implicit { - if !yaml_emitter_write_indent(emitter) { - return false - } - if !yaml_emitter_write_indicator(emitter, []byte("---"), true, false, false) { - return false - } - if emitter.canonical { - if !yaml_emitter_write_indent(emitter) { - return false - } - } - } - - emitter.state = yaml_EMIT_DOCUMENT_CONTENT_STATE - return true - } - - if event.typ == yaml_STREAM_END_EVENT { - if emitter.open_ended { - if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { - return false - } - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if !yaml_emitter_flush(emitter) { - return false - } - emitter.state = yaml_EMIT_END_STATE - return true - } - - return yaml_emitter_set_emitter_error(emitter, "expected DOCUMENT-START or STREAM-END") -} - -// Expect the root node. -func yaml_emitter_emit_document_content(emitter *yaml_emitter_t, event *yaml_event_t) bool { - emitter.states = append(emitter.states, yaml_EMIT_DOCUMENT_END_STATE) - return yaml_emitter_emit_node(emitter, event, true, false, false, false) -} - -// Expect DOCUMENT-END. -func yaml_emitter_emit_document_end(emitter *yaml_emitter_t, event *yaml_event_t) bool { - if event.typ != yaml_DOCUMENT_END_EVENT { - return yaml_emitter_set_emitter_error(emitter, "expected DOCUMENT-END") - } - if !yaml_emitter_write_indent(emitter) { - return false - } - if !event.implicit { - // [Go] Allocate the slice elsewhere. - if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { - return false - } - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if !yaml_emitter_flush(emitter) { - return false - } - emitter.state = yaml_EMIT_DOCUMENT_START_STATE - emitter.tag_directives = emitter.tag_directives[:0] - return true -} - -// Expect a flow item node. -func yaml_emitter_emit_flow_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { - if first { - if !yaml_emitter_write_indicator(emitter, []byte{'['}, true, true, false) { - return false - } - if !yaml_emitter_increase_indent(emitter, true, false) { - return false - } - emitter.flow_level++ - } - - if event.typ == yaml_SEQUENCE_END_EVENT { - emitter.flow_level-- - emitter.indent = emitter.indents[len(emitter.indents)-1] - emitter.indents = emitter.indents[:len(emitter.indents)-1] - if emitter.canonical && !first { - if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { - return false - } - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if !yaml_emitter_write_indicator(emitter, []byte{']'}, false, false, false) { - return false - } - emitter.state = emitter.states[len(emitter.states)-1] - emitter.states = emitter.states[:len(emitter.states)-1] - - return true - } - - if !first { - if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { - return false - } - } - - if emitter.canonical || emitter.column > emitter.best_width { - if !yaml_emitter_write_indent(emitter) { - return false - } - } - emitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE) - return yaml_emitter_emit_node(emitter, event, false, true, false, false) -} - -// Expect a flow key node. -func yaml_emitter_emit_flow_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { - if first { - if !yaml_emitter_write_indicator(emitter, []byte{'{'}, true, true, false) { - return false - } - if !yaml_emitter_increase_indent(emitter, true, false) { - return false - } - emitter.flow_level++ - } - - if event.typ == yaml_MAPPING_END_EVENT { - emitter.flow_level-- - emitter.indent = emitter.indents[len(emitter.indents)-1] - emitter.indents = emitter.indents[:len(emitter.indents)-1] - if emitter.canonical && !first { - if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { - return false - } - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if !yaml_emitter_write_indicator(emitter, []byte{'}'}, false, false, false) { - return false - } - emitter.state = emitter.states[len(emitter.states)-1] - emitter.states = emitter.states[:len(emitter.states)-1] - return true - } - - if !first { - if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { - return false - } - } - if emitter.canonical || emitter.column > emitter.best_width { - if !yaml_emitter_write_indent(emitter) { - return false - } - } - - if !emitter.canonical && yaml_emitter_check_simple_key(emitter) { - emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE) - return yaml_emitter_emit_node(emitter, event, false, false, true, true) - } - if !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, false) { - return false - } - emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_VALUE_STATE) - return yaml_emitter_emit_node(emitter, event, false, false, true, false) -} - -// Expect a flow value node. -func yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool { - if simple { - if !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) { - return false - } - } else { - if emitter.canonical || emitter.column > emitter.best_width { - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, false) { - return false - } - } - emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_KEY_STATE) - return yaml_emitter_emit_node(emitter, event, false, false, true, false) -} - -// Expect a block item node. -func yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { - if first { - if !yaml_emitter_increase_indent(emitter, false, emitter.mapping_context && !emitter.indention) { - return false - } - } - if event.typ == yaml_SEQUENCE_END_EVENT { - emitter.indent = emitter.indents[len(emitter.indents)-1] - emitter.indents = emitter.indents[:len(emitter.indents)-1] - emitter.state = emitter.states[len(emitter.states)-1] - emitter.states = emitter.states[:len(emitter.states)-1] - return true - } - if !yaml_emitter_write_indent(emitter) { - return false - } - if !yaml_emitter_write_indicator(emitter, []byte{'-'}, true, false, true) { - return false - } - emitter.states = append(emitter.states, yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE) - return yaml_emitter_emit_node(emitter, event, false, true, false, false) -} - -// Expect a block key node. -func yaml_emitter_emit_block_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { - if first { - if !yaml_emitter_increase_indent(emitter, false, false) { - return false - } - } - if event.typ == yaml_MAPPING_END_EVENT { - emitter.indent = emitter.indents[len(emitter.indents)-1] - emitter.indents = emitter.indents[:len(emitter.indents)-1] - emitter.state = emitter.states[len(emitter.states)-1] - emitter.states = emitter.states[:len(emitter.states)-1] - return true - } - if !yaml_emitter_write_indent(emitter) { - return false - } - if yaml_emitter_check_simple_key(emitter) { - emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE) - return yaml_emitter_emit_node(emitter, event, false, false, true, true) - } - if !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, true) { - return false - } - emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_VALUE_STATE) - return yaml_emitter_emit_node(emitter, event, false, false, true, false) -} - -// Expect a block value node. -func yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool { - if simple { - if !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) { - return false - } - } else { - if !yaml_emitter_write_indent(emitter) { - return false - } - if !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, true) { - return false - } - } - emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_KEY_STATE) - return yaml_emitter_emit_node(emitter, event, false, false, true, false) -} - -// Expect a node. -func yaml_emitter_emit_node(emitter *yaml_emitter_t, event *yaml_event_t, - root bool, sequence bool, mapping bool, simple_key bool) bool { - - emitter.root_context = root - emitter.sequence_context = sequence - emitter.mapping_context = mapping - emitter.simple_key_context = simple_key - - switch event.typ { - case yaml_ALIAS_EVENT: - return yaml_emitter_emit_alias(emitter, event) - case yaml_SCALAR_EVENT: - return yaml_emitter_emit_scalar(emitter, event) - case yaml_SEQUENCE_START_EVENT: - return yaml_emitter_emit_sequence_start(emitter, event) - case yaml_MAPPING_START_EVENT: - return yaml_emitter_emit_mapping_start(emitter, event) - default: - return yaml_emitter_set_emitter_error(emitter, - fmt.Sprintf("expected SCALAR, SEQUENCE-START, MAPPING-START, or ALIAS, but got %v", event.typ)) - } -} - -// Expect ALIAS. -func yaml_emitter_emit_alias(emitter *yaml_emitter_t, event *yaml_event_t) bool { - if !yaml_emitter_process_anchor(emitter) { - return false - } - emitter.state = emitter.states[len(emitter.states)-1] - emitter.states = emitter.states[:len(emitter.states)-1] - return true -} - -// Expect SCALAR. -func yaml_emitter_emit_scalar(emitter *yaml_emitter_t, event *yaml_event_t) bool { - if !yaml_emitter_select_scalar_style(emitter, event) { - return false - } - if !yaml_emitter_process_anchor(emitter) { - return false - } - if !yaml_emitter_process_tag(emitter) { - return false - } - if !yaml_emitter_increase_indent(emitter, true, false) { - return false - } - if !yaml_emitter_process_scalar(emitter) { - return false - } - emitter.indent = emitter.indents[len(emitter.indents)-1] - emitter.indents = emitter.indents[:len(emitter.indents)-1] - emitter.state = emitter.states[len(emitter.states)-1] - emitter.states = emitter.states[:len(emitter.states)-1] - return true -} - -// Expect SEQUENCE-START. -func yaml_emitter_emit_sequence_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { - if !yaml_emitter_process_anchor(emitter) { - return false - } - if !yaml_emitter_process_tag(emitter) { - return false - } - if emitter.flow_level > 0 || emitter.canonical || event.sequence_style() == yaml_FLOW_SEQUENCE_STYLE || - yaml_emitter_check_empty_sequence(emitter) { - emitter.state = yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE - } else { - emitter.state = yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE - } - return true -} - -// Expect MAPPING-START. -func yaml_emitter_emit_mapping_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { - if !yaml_emitter_process_anchor(emitter) { - return false - } - if !yaml_emitter_process_tag(emitter) { - return false - } - if emitter.flow_level > 0 || emitter.canonical || event.mapping_style() == yaml_FLOW_MAPPING_STYLE || - yaml_emitter_check_empty_mapping(emitter) { - emitter.state = yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE - } else { - emitter.state = yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE - } - return true -} - -// Check if the document content is an empty scalar. -func yaml_emitter_check_empty_document(emitter *yaml_emitter_t) bool { - return false // [Go] Huh? -} - -// Check if the next events represent an empty sequence. -func yaml_emitter_check_empty_sequence(emitter *yaml_emitter_t) bool { - if len(emitter.events)-emitter.events_head < 2 { - return false - } - return emitter.events[emitter.events_head].typ == yaml_SEQUENCE_START_EVENT && - emitter.events[emitter.events_head+1].typ == yaml_SEQUENCE_END_EVENT -} - -// Check if the next events represent an empty mapping. -func yaml_emitter_check_empty_mapping(emitter *yaml_emitter_t) bool { - if len(emitter.events)-emitter.events_head < 2 { - return false - } - return emitter.events[emitter.events_head].typ == yaml_MAPPING_START_EVENT && - emitter.events[emitter.events_head+1].typ == yaml_MAPPING_END_EVENT -} - -// Check if the next node can be expressed as a simple key. -func yaml_emitter_check_simple_key(emitter *yaml_emitter_t) bool { - length := 0 - switch emitter.events[emitter.events_head].typ { - case yaml_ALIAS_EVENT: - length += len(emitter.anchor_data.anchor) - case yaml_SCALAR_EVENT: - if emitter.scalar_data.multiline { - return false - } - length += len(emitter.anchor_data.anchor) + - len(emitter.tag_data.handle) + - len(emitter.tag_data.suffix) + - len(emitter.scalar_data.value) - case yaml_SEQUENCE_START_EVENT: - if !yaml_emitter_check_empty_sequence(emitter) { - return false - } - length += len(emitter.anchor_data.anchor) + - len(emitter.tag_data.handle) + - len(emitter.tag_data.suffix) - case yaml_MAPPING_START_EVENT: - if !yaml_emitter_check_empty_mapping(emitter) { - return false - } - length += len(emitter.anchor_data.anchor) + - len(emitter.tag_data.handle) + - len(emitter.tag_data.suffix) - default: - return false - } - return length <= 128 -} - -// Determine an acceptable scalar style. -func yaml_emitter_select_scalar_style(emitter *yaml_emitter_t, event *yaml_event_t) bool { - - no_tag := len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 - if no_tag && !event.implicit && !event.quoted_implicit { - return yaml_emitter_set_emitter_error(emitter, "neither tag nor implicit flags are specified") - } - - style := event.scalar_style() - if style == yaml_ANY_SCALAR_STYLE { - style = yaml_PLAIN_SCALAR_STYLE - } - if emitter.canonical { - style = yaml_DOUBLE_QUOTED_SCALAR_STYLE - } - if emitter.simple_key_context && emitter.scalar_data.multiline { - style = yaml_DOUBLE_QUOTED_SCALAR_STYLE - } - - if style == yaml_PLAIN_SCALAR_STYLE { - if emitter.flow_level > 0 && !emitter.scalar_data.flow_plain_allowed || - emitter.flow_level == 0 && !emitter.scalar_data.block_plain_allowed { - style = yaml_SINGLE_QUOTED_SCALAR_STYLE - } - if len(emitter.scalar_data.value) == 0 && (emitter.flow_level > 0 || emitter.simple_key_context) { - style = yaml_SINGLE_QUOTED_SCALAR_STYLE - } - if no_tag && !event.implicit { - style = yaml_SINGLE_QUOTED_SCALAR_STYLE - } - } - if style == yaml_SINGLE_QUOTED_SCALAR_STYLE { - if !emitter.scalar_data.single_quoted_allowed { - style = yaml_DOUBLE_QUOTED_SCALAR_STYLE - } - } - if style == yaml_LITERAL_SCALAR_STYLE || style == yaml_FOLDED_SCALAR_STYLE { - if !emitter.scalar_data.block_allowed || emitter.flow_level > 0 || emitter.simple_key_context { - style = yaml_DOUBLE_QUOTED_SCALAR_STYLE - } - } - - if no_tag && !event.quoted_implicit && style != yaml_PLAIN_SCALAR_STYLE { - emitter.tag_data.handle = []byte{'!'} - } - emitter.scalar_data.style = style - return true -} - -// Write an anchor. -func yaml_emitter_process_anchor(emitter *yaml_emitter_t) bool { - if emitter.anchor_data.anchor == nil { - return true - } - c := []byte{'&'} - if emitter.anchor_data.alias { - c[0] = '*' - } - if !yaml_emitter_write_indicator(emitter, c, true, false, false) { - return false - } - return yaml_emitter_write_anchor(emitter, emitter.anchor_data.anchor) -} - -// Write a tag. -func yaml_emitter_process_tag(emitter *yaml_emitter_t) bool { - if len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 { - return true - } - if len(emitter.tag_data.handle) > 0 { - if !yaml_emitter_write_tag_handle(emitter, emitter.tag_data.handle) { - return false - } - if len(emitter.tag_data.suffix) > 0 { - if !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) { - return false - } - } - } else { - // [Go] Allocate these slices elsewhere. - if !yaml_emitter_write_indicator(emitter, []byte("!<"), true, false, false) { - return false - } - if !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) { - return false - } - if !yaml_emitter_write_indicator(emitter, []byte{'>'}, false, false, false) { - return false - } - } - return true -} - -// Write a scalar. -func yaml_emitter_process_scalar(emitter *yaml_emitter_t) bool { - switch emitter.scalar_data.style { - case yaml_PLAIN_SCALAR_STYLE: - return yaml_emitter_write_plain_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) - - case yaml_SINGLE_QUOTED_SCALAR_STYLE: - return yaml_emitter_write_single_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) - - case yaml_DOUBLE_QUOTED_SCALAR_STYLE: - return yaml_emitter_write_double_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) - - case yaml_LITERAL_SCALAR_STYLE: - return yaml_emitter_write_literal_scalar(emitter, emitter.scalar_data.value) - - case yaml_FOLDED_SCALAR_STYLE: - return yaml_emitter_write_folded_scalar(emitter, emitter.scalar_data.value) - } - panic("unknown scalar style") -} - -// Check if a %YAML directive is valid. -func yaml_emitter_analyze_version_directive(emitter *yaml_emitter_t, version_directive *yaml_version_directive_t) bool { - if version_directive.major != 1 || version_directive.minor != 1 { - return yaml_emitter_set_emitter_error(emitter, "incompatible %YAML directive") - } - return true -} - -// Check if a %TAG directive is valid. -func yaml_emitter_analyze_tag_directive(emitter *yaml_emitter_t, tag_directive *yaml_tag_directive_t) bool { - handle := tag_directive.handle - prefix := tag_directive.prefix - if len(handle) == 0 { - return yaml_emitter_set_emitter_error(emitter, "tag handle must not be empty") - } - if handle[0] != '!' { - return yaml_emitter_set_emitter_error(emitter, "tag handle must start with '!'") - } - if handle[len(handle)-1] != '!' { - return yaml_emitter_set_emitter_error(emitter, "tag handle must end with '!'") - } - for i := 1; i < len(handle)-1; i += width(handle[i]) { - if !is_alpha(handle, i) { - return yaml_emitter_set_emitter_error(emitter, "tag handle must contain alphanumerical characters only") - } - } - if len(prefix) == 0 { - return yaml_emitter_set_emitter_error(emitter, "tag prefix must not be empty") - } - return true -} - -// Check if an anchor is valid. -func yaml_emitter_analyze_anchor(emitter *yaml_emitter_t, anchor []byte, alias bool) bool { - if len(anchor) == 0 { - problem := "anchor value must not be empty" - if alias { - problem = "alias value must not be empty" - } - return yaml_emitter_set_emitter_error(emitter, problem) - } - for i := 0; i < len(anchor); i += width(anchor[i]) { - if !is_alpha(anchor, i) { - problem := "anchor value must contain alphanumerical characters only" - if alias { - problem = "alias value must contain alphanumerical characters only" - } - return yaml_emitter_set_emitter_error(emitter, problem) - } - } - emitter.anchor_data.anchor = anchor - emitter.anchor_data.alias = alias - return true -} - -// Check if a tag is valid. -func yaml_emitter_analyze_tag(emitter *yaml_emitter_t, tag []byte) bool { - if len(tag) == 0 { - return yaml_emitter_set_emitter_error(emitter, "tag value must not be empty") - } - for i := 0; i < len(emitter.tag_directives); i++ { - tag_directive := &emitter.tag_directives[i] - if bytes.HasPrefix(tag, tag_directive.prefix) { - emitter.tag_data.handle = tag_directive.handle - emitter.tag_data.suffix = tag[len(tag_directive.prefix):] - return true - } - } - emitter.tag_data.suffix = tag - return true -} - -// Check if a scalar is valid. -func yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) bool { - var ( - block_indicators = false - flow_indicators = false - line_breaks = false - special_characters = false - - leading_space = false - leading_break = false - trailing_space = false - trailing_break = false - break_space = false - space_break = false - - preceded_by_whitespace = false - followed_by_whitespace = false - previous_space = false - previous_break = false - ) - - emitter.scalar_data.value = value - - if len(value) == 0 { - emitter.scalar_data.multiline = false - emitter.scalar_data.flow_plain_allowed = false - emitter.scalar_data.block_plain_allowed = true - emitter.scalar_data.single_quoted_allowed = true - emitter.scalar_data.block_allowed = false - return true - } - - if len(value) >= 3 && ((value[0] == '-' && value[1] == '-' && value[2] == '-') || (value[0] == '.' && value[1] == '.' && value[2] == '.')) { - block_indicators = true - flow_indicators = true - } - - preceded_by_whitespace = true - for i, w := 0, 0; i < len(value); i += w { - w = width(value[i]) - followed_by_whitespace = i+w >= len(value) || is_blank(value, i+w) - - if i == 0 { - switch value[i] { - case '#', ',', '[', ']', '{', '}', '&', '*', '!', '|', '>', '\'', '"', '%', '@', '`': - flow_indicators = true - block_indicators = true - case '?', ':': - flow_indicators = true - if followed_by_whitespace { - block_indicators = true - } - case '-': - if followed_by_whitespace { - flow_indicators = true - block_indicators = true - } - } - } else { - switch value[i] { - case ',', '?', '[', ']', '{', '}': - flow_indicators = true - case ':': - flow_indicators = true - if followed_by_whitespace { - block_indicators = true - } - case '#': - if preceded_by_whitespace { - flow_indicators = true - block_indicators = true - } - } - } - - if !is_printable(value, i) || !is_ascii(value, i) && !emitter.unicode { - special_characters = true - } - if is_space(value, i) { - if i == 0 { - leading_space = true - } - if i+width(value[i]) == len(value) { - trailing_space = true - } - if previous_break { - break_space = true - } - previous_space = true - previous_break = false - } else if is_break(value, i) { - line_breaks = true - if i == 0 { - leading_break = true - } - if i+width(value[i]) == len(value) { - trailing_break = true - } - if previous_space { - space_break = true - } - previous_space = false - previous_break = true - } else { - previous_space = false - previous_break = false - } - - // [Go]: Why 'z'? Couldn't be the end of the string as that's the loop condition. - preceded_by_whitespace = is_blankz(value, i) - } - - emitter.scalar_data.multiline = line_breaks - emitter.scalar_data.flow_plain_allowed = true - emitter.scalar_data.block_plain_allowed = true - emitter.scalar_data.single_quoted_allowed = true - emitter.scalar_data.block_allowed = true - - if leading_space || leading_break || trailing_space || trailing_break { - emitter.scalar_data.flow_plain_allowed = false - emitter.scalar_data.block_plain_allowed = false - } - if trailing_space { - emitter.scalar_data.block_allowed = false - } - if break_space { - emitter.scalar_data.flow_plain_allowed = false - emitter.scalar_data.block_plain_allowed = false - emitter.scalar_data.single_quoted_allowed = false - } - if space_break || special_characters { - emitter.scalar_data.flow_plain_allowed = false - emitter.scalar_data.block_plain_allowed = false - emitter.scalar_data.single_quoted_allowed = false - emitter.scalar_data.block_allowed = false - } - if line_breaks { - emitter.scalar_data.flow_plain_allowed = false - emitter.scalar_data.block_plain_allowed = false - } - if flow_indicators { - emitter.scalar_data.flow_plain_allowed = false - } - if block_indicators { - emitter.scalar_data.block_plain_allowed = false - } - return true -} - -// Check if the event data is valid. -func yaml_emitter_analyze_event(emitter *yaml_emitter_t, event *yaml_event_t) bool { - - emitter.anchor_data.anchor = nil - emitter.tag_data.handle = nil - emitter.tag_data.suffix = nil - emitter.scalar_data.value = nil - - switch event.typ { - case yaml_ALIAS_EVENT: - if !yaml_emitter_analyze_anchor(emitter, event.anchor, true) { - return false - } - - case yaml_SCALAR_EVENT: - if len(event.anchor) > 0 { - if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { - return false - } - } - if len(event.tag) > 0 && (emitter.canonical || (!event.implicit && !event.quoted_implicit)) { - if !yaml_emitter_analyze_tag(emitter, event.tag) { - return false - } - } - if !yaml_emitter_analyze_scalar(emitter, event.value) { - return false - } - - case yaml_SEQUENCE_START_EVENT: - if len(event.anchor) > 0 { - if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { - return false - } - } - if len(event.tag) > 0 && (emitter.canonical || !event.implicit) { - if !yaml_emitter_analyze_tag(emitter, event.tag) { - return false - } - } - - case yaml_MAPPING_START_EVENT: - if len(event.anchor) > 0 { - if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { - return false - } - } - if len(event.tag) > 0 && (emitter.canonical || !event.implicit) { - if !yaml_emitter_analyze_tag(emitter, event.tag) { - return false - } - } - } - return true -} - -// Write the BOM character. -func yaml_emitter_write_bom(emitter *yaml_emitter_t) bool { - if !flush(emitter) { - return false - } - pos := emitter.buffer_pos - emitter.buffer[pos+0] = '\xEF' - emitter.buffer[pos+1] = '\xBB' - emitter.buffer[pos+2] = '\xBF' - emitter.buffer_pos += 3 - return true -} - -func yaml_emitter_write_indent(emitter *yaml_emitter_t) bool { - indent := emitter.indent - if indent < 0 { - indent = 0 - } - if !emitter.indention || emitter.column > indent || (emitter.column == indent && !emitter.whitespace) { - if !put_break(emitter) { - return false - } - } - for emitter.column < indent { - if !put(emitter, ' ') { - return false - } - } - emitter.whitespace = true - emitter.indention = true - return true -} - -func yaml_emitter_write_indicator(emitter *yaml_emitter_t, indicator []byte, need_whitespace, is_whitespace, is_indention bool) bool { - if need_whitespace && !emitter.whitespace { - if !put(emitter, ' ') { - return false - } - } - if !write_all(emitter, indicator) { - return false - } - emitter.whitespace = is_whitespace - emitter.indention = (emitter.indention && is_indention) - emitter.open_ended = false - return true -} - -func yaml_emitter_write_anchor(emitter *yaml_emitter_t, value []byte) bool { - if !write_all(emitter, value) { - return false - } - emitter.whitespace = false - emitter.indention = false - return true -} - -func yaml_emitter_write_tag_handle(emitter *yaml_emitter_t, value []byte) bool { - if !emitter.whitespace { - if !put(emitter, ' ') { - return false - } - } - if !write_all(emitter, value) { - return false - } - emitter.whitespace = false - emitter.indention = false - return true -} - -func yaml_emitter_write_tag_content(emitter *yaml_emitter_t, value []byte, need_whitespace bool) bool { - if need_whitespace && !emitter.whitespace { - if !put(emitter, ' ') { - return false - } - } - for i := 0; i < len(value); { - var must_write bool - switch value[i] { - case ';', '/', '?', ':', '@', '&', '=', '+', '$', ',', '_', '.', '~', '*', '\'', '(', ')', '[', ']': - must_write = true - default: - must_write = is_alpha(value, i) - } - if must_write { - if !write(emitter, value, &i) { - return false - } - } else { - w := width(value[i]) - for k := 0; k < w; k++ { - octet := value[i] - i++ - if !put(emitter, '%') { - return false - } - - c := octet >> 4 - if c < 10 { - c += '0' - } else { - c += 'A' - 10 - } - if !put(emitter, c) { - return false - } - - c = octet & 0x0f - if c < 10 { - c += '0' - } else { - c += 'A' - 10 - } - if !put(emitter, c) { - return false - } - } - } - } - emitter.whitespace = false - emitter.indention = false - return true -} - -func yaml_emitter_write_plain_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { - if !emitter.whitespace { - if !put(emitter, ' ') { - return false - } - } - - spaces := false - breaks := false - for i := 0; i < len(value); { - if is_space(value, i) { - if allow_breaks && !spaces && emitter.column > emitter.best_width && !is_space(value, i+1) { - if !yaml_emitter_write_indent(emitter) { - return false - } - i += width(value[i]) - } else { - if !write(emitter, value, &i) { - return false - } - } - spaces = true - } else if is_break(value, i) { - if !breaks && value[i] == '\n' { - if !put_break(emitter) { - return false - } - } - if !write_break(emitter, value, &i) { - return false - } - emitter.indention = true - breaks = true - } else { - if breaks { - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if !write(emitter, value, &i) { - return false - } - emitter.indention = false - spaces = false - breaks = false - } - } - - emitter.whitespace = false - emitter.indention = false - if emitter.root_context { - emitter.open_ended = true - } - - return true -} - -func yaml_emitter_write_single_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { - - if !yaml_emitter_write_indicator(emitter, []byte{'\''}, true, false, false) { - return false - } - - spaces := false - breaks := false - for i := 0; i < len(value); { - if is_space(value, i) { - if allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 && !is_space(value, i+1) { - if !yaml_emitter_write_indent(emitter) { - return false - } - i += width(value[i]) - } else { - if !write(emitter, value, &i) { - return false - } - } - spaces = true - } else if is_break(value, i) { - if !breaks && value[i] == '\n' { - if !put_break(emitter) { - return false - } - } - if !write_break(emitter, value, &i) { - return false - } - emitter.indention = true - breaks = true - } else { - if breaks { - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if value[i] == '\'' { - if !put(emitter, '\'') { - return false - } - } - if !write(emitter, value, &i) { - return false - } - emitter.indention = false - spaces = false - breaks = false - } - } - if !yaml_emitter_write_indicator(emitter, []byte{'\''}, false, false, false) { - return false - } - emitter.whitespace = false - emitter.indention = false - return true -} - -func yaml_emitter_write_double_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { - spaces := false - if !yaml_emitter_write_indicator(emitter, []byte{'"'}, true, false, false) { - return false - } - - for i := 0; i < len(value); { - if !is_printable(value, i) || (!emitter.unicode && !is_ascii(value, i)) || - is_bom(value, i) || is_break(value, i) || - value[i] == '"' || value[i] == '\\' { - - octet := value[i] - - var w int - var v rune - switch { - case octet&0x80 == 0x00: - w, v = 1, rune(octet&0x7F) - case octet&0xE0 == 0xC0: - w, v = 2, rune(octet&0x1F) - case octet&0xF0 == 0xE0: - w, v = 3, rune(octet&0x0F) - case octet&0xF8 == 0xF0: - w, v = 4, rune(octet&0x07) - } - for k := 1; k < w; k++ { - octet = value[i+k] - v = (v << 6) + (rune(octet) & 0x3F) - } - i += w - - if !put(emitter, '\\') { - return false - } - - var ok bool - switch v { - case 0x00: - ok = put(emitter, '0') - case 0x07: - ok = put(emitter, 'a') - case 0x08: - ok = put(emitter, 'b') - case 0x09: - ok = put(emitter, 't') - case 0x0A: - ok = put(emitter, 'n') - case 0x0b: - ok = put(emitter, 'v') - case 0x0c: - ok = put(emitter, 'f') - case 0x0d: - ok = put(emitter, 'r') - case 0x1b: - ok = put(emitter, 'e') - case 0x22: - ok = put(emitter, '"') - case 0x5c: - ok = put(emitter, '\\') - case 0x85: - ok = put(emitter, 'N') - case 0xA0: - ok = put(emitter, '_') - case 0x2028: - ok = put(emitter, 'L') - case 0x2029: - ok = put(emitter, 'P') - default: - if v <= 0xFF { - ok = put(emitter, 'x') - w = 2 - } else if v <= 0xFFFF { - ok = put(emitter, 'u') - w = 4 - } else { - ok = put(emitter, 'U') - w = 8 - } - for k := (w - 1) * 4; ok && k >= 0; k -= 4 { - digit := byte((v >> uint(k)) & 0x0F) - if digit < 10 { - ok = put(emitter, digit+'0') - } else { - ok = put(emitter, digit+'A'-10) - } - } - } - if !ok { - return false - } - spaces = false - } else if is_space(value, i) { - if allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 { - if !yaml_emitter_write_indent(emitter) { - return false - } - if is_space(value, i+1) { - if !put(emitter, '\\') { - return false - } - } - i += width(value[i]) - } else if !write(emitter, value, &i) { - return false - } - spaces = true - } else { - if !write(emitter, value, &i) { - return false - } - spaces = false - } - } - if !yaml_emitter_write_indicator(emitter, []byte{'"'}, false, false, false) { - return false - } - emitter.whitespace = false - emitter.indention = false - return true -} - -func yaml_emitter_write_block_scalar_hints(emitter *yaml_emitter_t, value []byte) bool { - if is_space(value, 0) || is_break(value, 0) { - indent_hint := []byte{'0' + byte(emitter.best_indent)} - if !yaml_emitter_write_indicator(emitter, indent_hint, false, false, false) { - return false - } - } - - emitter.open_ended = false - - var chomp_hint [1]byte - if len(value) == 0 { - chomp_hint[0] = '-' - } else { - i := len(value) - 1 - for value[i]&0xC0 == 0x80 { - i-- - } - if !is_break(value, i) { - chomp_hint[0] = '-' - } else if i == 0 { - chomp_hint[0] = '+' - emitter.open_ended = true - } else { - i-- - for value[i]&0xC0 == 0x80 { - i-- - } - if is_break(value, i) { - chomp_hint[0] = '+' - emitter.open_ended = true - } - } - } - if chomp_hint[0] != 0 { - if !yaml_emitter_write_indicator(emitter, chomp_hint[:], false, false, false) { - return false - } - } - return true -} - -func yaml_emitter_write_literal_scalar(emitter *yaml_emitter_t, value []byte) bool { - if !yaml_emitter_write_indicator(emitter, []byte{'|'}, true, false, false) { - return false - } - if !yaml_emitter_write_block_scalar_hints(emitter, value) { - return false - } - if !put_break(emitter) { - return false - } - emitter.indention = true - emitter.whitespace = true - breaks := true - for i := 0; i < len(value); { - if is_break(value, i) { - if !write_break(emitter, value, &i) { - return false - } - emitter.indention = true - breaks = true - } else { - if breaks { - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if !write(emitter, value, &i) { - return false - } - emitter.indention = false - breaks = false - } - } - - return true -} - -func yaml_emitter_write_folded_scalar(emitter *yaml_emitter_t, value []byte) bool { - if !yaml_emitter_write_indicator(emitter, []byte{'>'}, true, false, false) { - return false - } - if !yaml_emitter_write_block_scalar_hints(emitter, value) { - return false - } - - if !put_break(emitter) { - return false - } - emitter.indention = true - emitter.whitespace = true - - breaks := true - leading_spaces := true - for i := 0; i < len(value); { - if is_break(value, i) { - if !breaks && !leading_spaces && value[i] == '\n' { - k := 0 - for is_break(value, k) { - k += width(value[k]) - } - if !is_blankz(value, k) { - if !put_break(emitter) { - return false - } - } - } - if !write_break(emitter, value, &i) { - return false - } - emitter.indention = true - breaks = true - } else { - if breaks { - if !yaml_emitter_write_indent(emitter) { - return false - } - leading_spaces = is_blank(value, i) - } - if !breaks && is_space(value, i) && !is_space(value, i+1) && emitter.column > emitter.best_width { - if !yaml_emitter_write_indent(emitter) { - return false - } - i += width(value[i]) - } else { - if !write(emitter, value, &i) { - return false - } - } - emitter.indention = false - breaks = false - } - } - return true -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/encode.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/encode.go deleted file mode 100644 index 0ee738e11..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/encode.go +++ /dev/null @@ -1,390 +0,0 @@ -package yaml - -import ( - "encoding" - "fmt" - "io" - "reflect" - "regexp" - "sort" - "strconv" - "strings" - "time" - "unicode/utf8" -) - -// jsonNumber is the interface of the encoding/json.Number datatype. -// Repeating the interface here avoids a dependency on encoding/json, and also -// supports other libraries like jsoniter, which use a similar datatype with -// the same interface. Detecting this interface is useful when dealing with -// structures containing json.Number, which is a string under the hood. The -// encoder should prefer the use of Int64(), Float64() and string(), in that -// order, when encoding this type. -type jsonNumber interface { - Float64() (float64, error) - Int64() (int64, error) - String() string -} - -type encoder struct { - emitter yaml_emitter_t - event yaml_event_t - out []byte - flow bool - // doneInit holds whether the initial stream_start_event has been - // emitted. - doneInit bool -} - -func newEncoder() *encoder { - e := &encoder{} - yaml_emitter_initialize(&e.emitter) - yaml_emitter_set_output_string(&e.emitter, &e.out) - yaml_emitter_set_unicode(&e.emitter, true) - return e -} - -func newEncoderWithWriter(w io.Writer) *encoder { - e := &encoder{} - yaml_emitter_initialize(&e.emitter) - yaml_emitter_set_output_writer(&e.emitter, w) - yaml_emitter_set_unicode(&e.emitter, true) - return e -} - -func (e *encoder) init() { - if e.doneInit { - return - } - yaml_stream_start_event_initialize(&e.event, yaml_UTF8_ENCODING) - e.emit() - e.doneInit = true -} - -func (e *encoder) finish() { - e.emitter.open_ended = false - yaml_stream_end_event_initialize(&e.event) - e.emit() -} - -func (e *encoder) destroy() { - yaml_emitter_delete(&e.emitter) -} - -func (e *encoder) emit() { - // This will internally delete the e.event value. - e.must(yaml_emitter_emit(&e.emitter, &e.event)) -} - -func (e *encoder) must(ok bool) { - if !ok { - msg := e.emitter.problem - if msg == "" { - msg = "unknown problem generating YAML content" - } - failf("%s", msg) - } -} - -func (e *encoder) marshalDoc(tag string, in reflect.Value) { - e.init() - yaml_document_start_event_initialize(&e.event, nil, nil, true) - e.emit() - e.marshal(tag, in) - yaml_document_end_event_initialize(&e.event, true) - e.emit() -} - -func (e *encoder) marshal(tag string, in reflect.Value) { - if !in.IsValid() || in.Kind() == reflect.Ptr && in.IsNil() { - e.nilv() - return - } - iface := in.Interface() - switch m := iface.(type) { - case jsonNumber: - integer, err := m.Int64() - if err == nil { - // In this case the json.Number is a valid int64 - in = reflect.ValueOf(integer) - break - } - float, err := m.Float64() - if err == nil { - // In this case the json.Number is a valid float64 - in = reflect.ValueOf(float) - break - } - // fallback case - no number could be obtained - in = reflect.ValueOf(m.String()) - case time.Time, *time.Time: - // Although time.Time implements TextMarshaler, - // we don't want to treat it as a string for YAML - // purposes because YAML has special support for - // timestamps. - case Marshaler: - v, err := m.MarshalYAML() - if err != nil { - fail(err) - } - if v == nil { - e.nilv() - return - } - in = reflect.ValueOf(v) - case encoding.TextMarshaler: - text, err := m.MarshalText() - if err != nil { - fail(err) - } - in = reflect.ValueOf(string(text)) - case nil: - e.nilv() - return - } - switch in.Kind() { - case reflect.Interface: - e.marshal(tag, in.Elem()) - case reflect.Map: - e.mapv(tag, in) - case reflect.Ptr: - if in.Type() == ptrTimeType { - e.timev(tag, in.Elem()) - } else { - e.marshal(tag, in.Elem()) - } - case reflect.Struct: - if in.Type() == timeType { - e.timev(tag, in) - } else { - e.structv(tag, in) - } - case reflect.Slice, reflect.Array: - if in.Type().Elem() == mapItemType { - e.itemsv(tag, in) - } else { - e.slicev(tag, in) - } - case reflect.String: - e.stringv(tag, in) - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - if in.Type() == durationType { - e.stringv(tag, reflect.ValueOf(iface.(time.Duration).String())) - } else { - e.intv(tag, in) - } - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - e.uintv(tag, in) - case reflect.Float32, reflect.Float64: - e.floatv(tag, in) - case reflect.Bool: - e.boolv(tag, in) - default: - panic("cannot marshal type: " + in.Type().String()) - } -} - -func (e *encoder) mapv(tag string, in reflect.Value) { - e.mappingv(tag, func() { - keys := keyList(in.MapKeys()) - sort.Sort(keys) - for _, k := range keys { - e.marshal("", k) - e.marshal("", in.MapIndex(k)) - } - }) -} - -func (e *encoder) itemsv(tag string, in reflect.Value) { - e.mappingv(tag, func() { - slice := in.Convert(reflect.TypeOf([]MapItem{})).Interface().([]MapItem) - for _, item := range slice { - e.marshal("", reflect.ValueOf(item.Key)) - e.marshal("", reflect.ValueOf(item.Value)) - } - }) -} - -func (e *encoder) structv(tag string, in reflect.Value) { - sinfo, err := getStructInfo(in.Type()) - if err != nil { - panic(err) - } - e.mappingv(tag, func() { - for _, info := range sinfo.FieldsList { - var value reflect.Value - if info.Inline == nil { - value = in.Field(info.Num) - } else { - value = in.FieldByIndex(info.Inline) - } - if info.OmitEmpty && isZero(value) { - continue - } - e.marshal("", reflect.ValueOf(info.Key)) - e.flow = info.Flow - e.marshal("", value) - } - if sinfo.InlineMap >= 0 { - m := in.Field(sinfo.InlineMap) - if m.Len() > 0 { - e.flow = false - keys := keyList(m.MapKeys()) - sort.Sort(keys) - for _, k := range keys { - if _, found := sinfo.FieldsMap[k.String()]; found { - panic(fmt.Sprintf("Can't have key %q in inlined map; conflicts with struct field", k.String())) - } - e.marshal("", k) - e.flow = false - e.marshal("", m.MapIndex(k)) - } - } - } - }) -} - -func (e *encoder) mappingv(tag string, f func()) { - implicit := tag == "" - style := yaml_BLOCK_MAPPING_STYLE - if e.flow { - e.flow = false - style = yaml_FLOW_MAPPING_STYLE - } - yaml_mapping_start_event_initialize(&e.event, nil, []byte(tag), implicit, style) - e.emit() - f() - yaml_mapping_end_event_initialize(&e.event) - e.emit() -} - -func (e *encoder) slicev(tag string, in reflect.Value) { - implicit := tag == "" - style := yaml_BLOCK_SEQUENCE_STYLE - if e.flow { - e.flow = false - style = yaml_FLOW_SEQUENCE_STYLE - } - e.must(yaml_sequence_start_event_initialize(&e.event, nil, []byte(tag), implicit, style)) - e.emit() - n := in.Len() - for i := 0; i < n; i++ { - e.marshal("", in.Index(i)) - } - e.must(yaml_sequence_end_event_initialize(&e.event)) - e.emit() -} - -// isBase60 returns whether s is in base 60 notation as defined in YAML 1.1. -// -// The base 60 float notation in YAML 1.1 is a terrible idea and is unsupported -// in YAML 1.2 and by this package, but these should be marshalled quoted for -// the time being for compatibility with other parsers. -func isBase60Float(s string) (result bool) { - // Fast path. - if s == "" { - return false - } - c := s[0] - if !(c == '+' || c == '-' || c >= '0' && c <= '9') || strings.IndexByte(s, ':') < 0 { - return false - } - // Do the full match. - return base60float.MatchString(s) -} - -// From http://yaml.org/type/float.html, except the regular expression there -// is bogus. In practice parsers do not enforce the "\.[0-9_]*" suffix. -var base60float = regexp.MustCompile(`^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+(?:\.[0-9_]*)?$`) - -func (e *encoder) stringv(tag string, in reflect.Value) { - var style yaml_scalar_style_t - s := in.String() - canUsePlain := true - switch { - case !utf8.ValidString(s): - if tag == yaml_BINARY_TAG { - failf("explicitly tagged !!binary data must be base64-encoded") - } - if tag != "" { - failf("cannot marshal invalid UTF-8 data as %s", shortTag(tag)) - } - // It can't be encoded directly as YAML so use a binary tag - // and encode it as base64. - tag = yaml_BINARY_TAG - s = encodeBase64(s) - case tag == "": - // Check to see if it would resolve to a specific - // tag when encoded unquoted. If it doesn't, - // there's no need to quote it. - rtag, _ := resolve("", s) - canUsePlain = rtag == yaml_STR_TAG && !isBase60Float(s) - } - // Note: it's possible for user code to emit invalid YAML - // if they explicitly specify a tag and a string containing - // text that's incompatible with that tag. - switch { - case strings.Contains(s, "\n"): - style = yaml_LITERAL_SCALAR_STYLE - case canUsePlain: - style = yaml_PLAIN_SCALAR_STYLE - default: - style = yaml_DOUBLE_QUOTED_SCALAR_STYLE - } - e.emitScalar(s, "", tag, style) -} - -func (e *encoder) boolv(tag string, in reflect.Value) { - var s string - if in.Bool() { - s = "true" - } else { - s = "false" - } - e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) -} - -func (e *encoder) intv(tag string, in reflect.Value) { - s := strconv.FormatInt(in.Int(), 10) - e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) -} - -func (e *encoder) uintv(tag string, in reflect.Value) { - s := strconv.FormatUint(in.Uint(), 10) - e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) -} - -func (e *encoder) timev(tag string, in reflect.Value) { - t := in.Interface().(time.Time) - s := t.Format(time.RFC3339Nano) - e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) -} - -func (e *encoder) floatv(tag string, in reflect.Value) { - // Issue #352: When formatting, use the precision of the underlying value - precision := 64 - if in.Kind() == reflect.Float32 { - precision = 32 - } - - s := strconv.FormatFloat(in.Float(), 'g', -1, precision) - switch s { - case "+Inf": - s = ".inf" - case "-Inf": - s = "-.inf" - case "NaN": - s = ".nan" - } - e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) -} - -func (e *encoder) nilv() { - e.emitScalar("null", "", "", yaml_PLAIN_SCALAR_STYLE) -} - -func (e *encoder) emitScalar(value, anchor, tag string, style yaml_scalar_style_t) { - implicit := tag == "" - e.must(yaml_scalar_event_initialize(&e.event, []byte(anchor), []byte(tag), []byte(value), implicit, implicit, style)) - e.emit() -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/go.mod b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/go.mod deleted file mode 100644 index 1934e8769..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module "gopkg.in/yaml.v2" - -require ( - "gopkg.in/check.v1" v0.0.0-20161208181325-20d25e280405 -) diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/parserc.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/parserc.go deleted file mode 100644 index 81d05dfe5..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/parserc.go +++ /dev/null @@ -1,1095 +0,0 @@ -package yaml - -import ( - "bytes" -) - -// The parser implements the following grammar: -// -// stream ::= STREAM-START implicit_document? explicit_document* STREAM-END -// implicit_document ::= block_node DOCUMENT-END* -// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* -// block_node_or_indentless_sequence ::= -// ALIAS -// | properties (block_content | indentless_block_sequence)? -// | block_content -// | indentless_block_sequence -// block_node ::= ALIAS -// | properties block_content? -// | block_content -// flow_node ::= ALIAS -// | properties flow_content? -// | flow_content -// properties ::= TAG ANCHOR? | ANCHOR TAG? -// block_content ::= block_collection | flow_collection | SCALAR -// flow_content ::= flow_collection | SCALAR -// block_collection ::= block_sequence | block_mapping -// flow_collection ::= flow_sequence | flow_mapping -// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END -// indentless_sequence ::= (BLOCK-ENTRY block_node?)+ -// block_mapping ::= BLOCK-MAPPING_START -// ((KEY block_node_or_indentless_sequence?)? -// (VALUE block_node_or_indentless_sequence?)?)* -// BLOCK-END -// flow_sequence ::= FLOW-SEQUENCE-START -// (flow_sequence_entry FLOW-ENTRY)* -// flow_sequence_entry? -// FLOW-SEQUENCE-END -// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// flow_mapping ::= FLOW-MAPPING-START -// (flow_mapping_entry FLOW-ENTRY)* -// flow_mapping_entry? -// FLOW-MAPPING-END -// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? - -// Peek the next token in the token queue. -func peek_token(parser *yaml_parser_t) *yaml_token_t { - if parser.token_available || yaml_parser_fetch_more_tokens(parser) { - return &parser.tokens[parser.tokens_head] - } - return nil -} - -// Remove the next token from the queue (must be called after peek_token). -func skip_token(parser *yaml_parser_t) { - parser.token_available = false - parser.tokens_parsed++ - parser.stream_end_produced = parser.tokens[parser.tokens_head].typ == yaml_STREAM_END_TOKEN - parser.tokens_head++ -} - -// Get the next event. -func yaml_parser_parse(parser *yaml_parser_t, event *yaml_event_t) bool { - // Erase the event object. - *event = yaml_event_t{} - - // No events after the end of the stream or error. - if parser.stream_end_produced || parser.error != yaml_NO_ERROR || parser.state == yaml_PARSE_END_STATE { - return true - } - - // Generate the next event. - return yaml_parser_state_machine(parser, event) -} - -// Set parser error. -func yaml_parser_set_parser_error(parser *yaml_parser_t, problem string, problem_mark yaml_mark_t) bool { - parser.error = yaml_PARSER_ERROR - parser.problem = problem - parser.problem_mark = problem_mark - return false -} - -func yaml_parser_set_parser_error_context(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string, problem_mark yaml_mark_t) bool { - parser.error = yaml_PARSER_ERROR - parser.context = context - parser.context_mark = context_mark - parser.problem = problem - parser.problem_mark = problem_mark - return false -} - -// State dispatcher. -func yaml_parser_state_machine(parser *yaml_parser_t, event *yaml_event_t) bool { - //trace("yaml_parser_state_machine", "state:", parser.state.String()) - - switch parser.state { - case yaml_PARSE_STREAM_START_STATE: - return yaml_parser_parse_stream_start(parser, event) - - case yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE: - return yaml_parser_parse_document_start(parser, event, true) - - case yaml_PARSE_DOCUMENT_START_STATE: - return yaml_parser_parse_document_start(parser, event, false) - - case yaml_PARSE_DOCUMENT_CONTENT_STATE: - return yaml_parser_parse_document_content(parser, event) - - case yaml_PARSE_DOCUMENT_END_STATE: - return yaml_parser_parse_document_end(parser, event) - - case yaml_PARSE_BLOCK_NODE_STATE: - return yaml_parser_parse_node(parser, event, true, false) - - case yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE: - return yaml_parser_parse_node(parser, event, true, true) - - case yaml_PARSE_FLOW_NODE_STATE: - return yaml_parser_parse_node(parser, event, false, false) - - case yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE: - return yaml_parser_parse_block_sequence_entry(parser, event, true) - - case yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE: - return yaml_parser_parse_block_sequence_entry(parser, event, false) - - case yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE: - return yaml_parser_parse_indentless_sequence_entry(parser, event) - - case yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE: - return yaml_parser_parse_block_mapping_key(parser, event, true) - - case yaml_PARSE_BLOCK_MAPPING_KEY_STATE: - return yaml_parser_parse_block_mapping_key(parser, event, false) - - case yaml_PARSE_BLOCK_MAPPING_VALUE_STATE: - return yaml_parser_parse_block_mapping_value(parser, event) - - case yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE: - return yaml_parser_parse_flow_sequence_entry(parser, event, true) - - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE: - return yaml_parser_parse_flow_sequence_entry(parser, event, false) - - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE: - return yaml_parser_parse_flow_sequence_entry_mapping_key(parser, event) - - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE: - return yaml_parser_parse_flow_sequence_entry_mapping_value(parser, event) - - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE: - return yaml_parser_parse_flow_sequence_entry_mapping_end(parser, event) - - case yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE: - return yaml_parser_parse_flow_mapping_key(parser, event, true) - - case yaml_PARSE_FLOW_MAPPING_KEY_STATE: - return yaml_parser_parse_flow_mapping_key(parser, event, false) - - case yaml_PARSE_FLOW_MAPPING_VALUE_STATE: - return yaml_parser_parse_flow_mapping_value(parser, event, false) - - case yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE: - return yaml_parser_parse_flow_mapping_value(parser, event, true) - - default: - panic("invalid parser state") - } -} - -// Parse the production: -// stream ::= STREAM-START implicit_document? explicit_document* STREAM-END -// ************ -func yaml_parser_parse_stream_start(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_STREAM_START_TOKEN { - return yaml_parser_set_parser_error(parser, "did not find expected ", token.start_mark) - } - parser.state = yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE - *event = yaml_event_t{ - typ: yaml_STREAM_START_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - encoding: token.encoding, - } - skip_token(parser) - return true -} - -// Parse the productions: -// implicit_document ::= block_node DOCUMENT-END* -// * -// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* -// ************************* -func yaml_parser_parse_document_start(parser *yaml_parser_t, event *yaml_event_t, implicit bool) bool { - - token := peek_token(parser) - if token == nil { - return false - } - - // Parse extra document end indicators. - if !implicit { - for token.typ == yaml_DOCUMENT_END_TOKEN { - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - } - } - - if implicit && token.typ != yaml_VERSION_DIRECTIVE_TOKEN && - token.typ != yaml_TAG_DIRECTIVE_TOKEN && - token.typ != yaml_DOCUMENT_START_TOKEN && - token.typ != yaml_STREAM_END_TOKEN { - // Parse an implicit document. - if !yaml_parser_process_directives(parser, nil, nil) { - return false - } - parser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE) - parser.state = yaml_PARSE_BLOCK_NODE_STATE - - *event = yaml_event_t{ - typ: yaml_DOCUMENT_START_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - } - - } else if token.typ != yaml_STREAM_END_TOKEN { - // Parse an explicit document. - var version_directive *yaml_version_directive_t - var tag_directives []yaml_tag_directive_t - start_mark := token.start_mark - if !yaml_parser_process_directives(parser, &version_directive, &tag_directives) { - return false - } - token = peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_DOCUMENT_START_TOKEN { - yaml_parser_set_parser_error(parser, - "did not find expected ", token.start_mark) - return false - } - parser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE) - parser.state = yaml_PARSE_DOCUMENT_CONTENT_STATE - end_mark := token.end_mark - - *event = yaml_event_t{ - typ: yaml_DOCUMENT_START_EVENT, - start_mark: start_mark, - end_mark: end_mark, - version_directive: version_directive, - tag_directives: tag_directives, - implicit: false, - } - skip_token(parser) - - } else { - // Parse the stream end. - parser.state = yaml_PARSE_END_STATE - *event = yaml_event_t{ - typ: yaml_STREAM_END_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - } - skip_token(parser) - } - - return true -} - -// Parse the productions: -// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* -// *********** -// -func yaml_parser_parse_document_content(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - if token.typ == yaml_VERSION_DIRECTIVE_TOKEN || - token.typ == yaml_TAG_DIRECTIVE_TOKEN || - token.typ == yaml_DOCUMENT_START_TOKEN || - token.typ == yaml_DOCUMENT_END_TOKEN || - token.typ == yaml_STREAM_END_TOKEN { - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - return yaml_parser_process_empty_scalar(parser, event, - token.start_mark) - } - return yaml_parser_parse_node(parser, event, true, false) -} - -// Parse the productions: -// implicit_document ::= block_node DOCUMENT-END* -// ************* -// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* -// -func yaml_parser_parse_document_end(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - - start_mark := token.start_mark - end_mark := token.start_mark - - implicit := true - if token.typ == yaml_DOCUMENT_END_TOKEN { - end_mark = token.end_mark - skip_token(parser) - implicit = false - } - - parser.tag_directives = parser.tag_directives[:0] - - parser.state = yaml_PARSE_DOCUMENT_START_STATE - *event = yaml_event_t{ - typ: yaml_DOCUMENT_END_EVENT, - start_mark: start_mark, - end_mark: end_mark, - implicit: implicit, - } - return true -} - -// Parse the productions: -// block_node_or_indentless_sequence ::= -// ALIAS -// ***** -// | properties (block_content | indentless_block_sequence)? -// ********** * -// | block_content | indentless_block_sequence -// * -// block_node ::= ALIAS -// ***** -// | properties block_content? -// ********** * -// | block_content -// * -// flow_node ::= ALIAS -// ***** -// | properties flow_content? -// ********** * -// | flow_content -// * -// properties ::= TAG ANCHOR? | ANCHOR TAG? -// ************************* -// block_content ::= block_collection | flow_collection | SCALAR -// ****** -// flow_content ::= flow_collection | SCALAR -// ****** -func yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t, block, indentless_sequence bool) bool { - //defer trace("yaml_parser_parse_node", "block:", block, "indentless_sequence:", indentless_sequence)() - - token := peek_token(parser) - if token == nil { - return false - } - - if token.typ == yaml_ALIAS_TOKEN { - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - *event = yaml_event_t{ - typ: yaml_ALIAS_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - anchor: token.value, - } - skip_token(parser) - return true - } - - start_mark := token.start_mark - end_mark := token.start_mark - - var tag_token bool - var tag_handle, tag_suffix, anchor []byte - var tag_mark yaml_mark_t - if token.typ == yaml_ANCHOR_TOKEN { - anchor = token.value - start_mark = token.start_mark - end_mark = token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ == yaml_TAG_TOKEN { - tag_token = true - tag_handle = token.value - tag_suffix = token.suffix - tag_mark = token.start_mark - end_mark = token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - } - } else if token.typ == yaml_TAG_TOKEN { - tag_token = true - tag_handle = token.value - tag_suffix = token.suffix - start_mark = token.start_mark - tag_mark = token.start_mark - end_mark = token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ == yaml_ANCHOR_TOKEN { - anchor = token.value - end_mark = token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - } - } - - var tag []byte - if tag_token { - if len(tag_handle) == 0 { - tag = tag_suffix - tag_suffix = nil - } else { - for i := range parser.tag_directives { - if bytes.Equal(parser.tag_directives[i].handle, tag_handle) { - tag = append([]byte(nil), parser.tag_directives[i].prefix...) - tag = append(tag, tag_suffix...) - break - } - } - if len(tag) == 0 { - yaml_parser_set_parser_error_context(parser, - "while parsing a node", start_mark, - "found undefined tag handle", tag_mark) - return false - } - } - } - - implicit := len(tag) == 0 - if indentless_sequence && token.typ == yaml_BLOCK_ENTRY_TOKEN { - end_mark = token.end_mark - parser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE - *event = yaml_event_t{ - typ: yaml_SEQUENCE_START_EVENT, - start_mark: start_mark, - end_mark: end_mark, - anchor: anchor, - tag: tag, - implicit: implicit, - style: yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE), - } - return true - } - if token.typ == yaml_SCALAR_TOKEN { - var plain_implicit, quoted_implicit bool - end_mark = token.end_mark - if (len(tag) == 0 && token.style == yaml_PLAIN_SCALAR_STYLE) || (len(tag) == 1 && tag[0] == '!') { - plain_implicit = true - } else if len(tag) == 0 { - quoted_implicit = true - } - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - - *event = yaml_event_t{ - typ: yaml_SCALAR_EVENT, - start_mark: start_mark, - end_mark: end_mark, - anchor: anchor, - tag: tag, - value: token.value, - implicit: plain_implicit, - quoted_implicit: quoted_implicit, - style: yaml_style_t(token.style), - } - skip_token(parser) - return true - } - if token.typ == yaml_FLOW_SEQUENCE_START_TOKEN { - // [Go] Some of the events below can be merged as they differ only on style. - end_mark = token.end_mark - parser.state = yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE - *event = yaml_event_t{ - typ: yaml_SEQUENCE_START_EVENT, - start_mark: start_mark, - end_mark: end_mark, - anchor: anchor, - tag: tag, - implicit: implicit, - style: yaml_style_t(yaml_FLOW_SEQUENCE_STYLE), - } - return true - } - if token.typ == yaml_FLOW_MAPPING_START_TOKEN { - end_mark = token.end_mark - parser.state = yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE - *event = yaml_event_t{ - typ: yaml_MAPPING_START_EVENT, - start_mark: start_mark, - end_mark: end_mark, - anchor: anchor, - tag: tag, - implicit: implicit, - style: yaml_style_t(yaml_FLOW_MAPPING_STYLE), - } - return true - } - if block && token.typ == yaml_BLOCK_SEQUENCE_START_TOKEN { - end_mark = token.end_mark - parser.state = yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE - *event = yaml_event_t{ - typ: yaml_SEQUENCE_START_EVENT, - start_mark: start_mark, - end_mark: end_mark, - anchor: anchor, - tag: tag, - implicit: implicit, - style: yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE), - } - return true - } - if block && token.typ == yaml_BLOCK_MAPPING_START_TOKEN { - end_mark = token.end_mark - parser.state = yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE - *event = yaml_event_t{ - typ: yaml_MAPPING_START_EVENT, - start_mark: start_mark, - end_mark: end_mark, - anchor: anchor, - tag: tag, - implicit: implicit, - style: yaml_style_t(yaml_BLOCK_MAPPING_STYLE), - } - return true - } - if len(anchor) > 0 || len(tag) > 0 { - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - - *event = yaml_event_t{ - typ: yaml_SCALAR_EVENT, - start_mark: start_mark, - end_mark: end_mark, - anchor: anchor, - tag: tag, - implicit: implicit, - quoted_implicit: false, - style: yaml_style_t(yaml_PLAIN_SCALAR_STYLE), - } - return true - } - - context := "while parsing a flow node" - if block { - context = "while parsing a block node" - } - yaml_parser_set_parser_error_context(parser, context, start_mark, - "did not find expected node content", token.start_mark) - return false -} - -// Parse the productions: -// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END -// ******************** *********** * ********* -// -func yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { - if first { - token := peek_token(parser) - parser.marks = append(parser.marks, token.start_mark) - skip_token(parser) - } - - token := peek_token(parser) - if token == nil { - return false - } - - if token.typ == yaml_BLOCK_ENTRY_TOKEN { - mark := token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_BLOCK_ENTRY_TOKEN && token.typ != yaml_BLOCK_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE) - return yaml_parser_parse_node(parser, event, true, false) - } else { - parser.state = yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE - return yaml_parser_process_empty_scalar(parser, event, mark) - } - } - if token.typ == yaml_BLOCK_END_TOKEN { - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - - *event = yaml_event_t{ - typ: yaml_SEQUENCE_END_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - } - - skip_token(parser) - return true - } - - context_mark := parser.marks[len(parser.marks)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - return yaml_parser_set_parser_error_context(parser, - "while parsing a block collection", context_mark, - "did not find expected '-' indicator", token.start_mark) -} - -// Parse the productions: -// indentless_sequence ::= (BLOCK-ENTRY block_node?)+ -// *********** * -func yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - - if token.typ == yaml_BLOCK_ENTRY_TOKEN { - mark := token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_BLOCK_ENTRY_TOKEN && - token.typ != yaml_KEY_TOKEN && - token.typ != yaml_VALUE_TOKEN && - token.typ != yaml_BLOCK_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE) - return yaml_parser_parse_node(parser, event, true, false) - } - parser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE - return yaml_parser_process_empty_scalar(parser, event, mark) - } - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - - *event = yaml_event_t{ - typ: yaml_SEQUENCE_END_EVENT, - start_mark: token.start_mark, - end_mark: token.start_mark, // [Go] Shouldn't this be token.end_mark? - } - return true -} - -// Parse the productions: -// block_mapping ::= BLOCK-MAPPING_START -// ******************* -// ((KEY block_node_or_indentless_sequence?)? -// *** * -// (VALUE block_node_or_indentless_sequence?)?)* -// -// BLOCK-END -// ********* -// -func yaml_parser_parse_block_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { - if first { - token := peek_token(parser) - parser.marks = append(parser.marks, token.start_mark) - skip_token(parser) - } - - token := peek_token(parser) - if token == nil { - return false - } - - if token.typ == yaml_KEY_TOKEN { - mark := token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_KEY_TOKEN && - token.typ != yaml_VALUE_TOKEN && - token.typ != yaml_BLOCK_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_VALUE_STATE) - return yaml_parser_parse_node(parser, event, true, true) - } else { - parser.state = yaml_PARSE_BLOCK_MAPPING_VALUE_STATE - return yaml_parser_process_empty_scalar(parser, event, mark) - } - } else if token.typ == yaml_BLOCK_END_TOKEN { - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - *event = yaml_event_t{ - typ: yaml_MAPPING_END_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - } - skip_token(parser) - return true - } - - context_mark := parser.marks[len(parser.marks)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - return yaml_parser_set_parser_error_context(parser, - "while parsing a block mapping", context_mark, - "did not find expected key", token.start_mark) -} - -// Parse the productions: -// block_mapping ::= BLOCK-MAPPING_START -// -// ((KEY block_node_or_indentless_sequence?)? -// -// (VALUE block_node_or_indentless_sequence?)?)* -// ***** * -// BLOCK-END -// -// -func yaml_parser_parse_block_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - if token.typ == yaml_VALUE_TOKEN { - mark := token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_KEY_TOKEN && - token.typ != yaml_VALUE_TOKEN && - token.typ != yaml_BLOCK_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_KEY_STATE) - return yaml_parser_parse_node(parser, event, true, true) - } - parser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE - return yaml_parser_process_empty_scalar(parser, event, mark) - } - parser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE - return yaml_parser_process_empty_scalar(parser, event, token.start_mark) -} - -// Parse the productions: -// flow_sequence ::= FLOW-SEQUENCE-START -// ******************* -// (flow_sequence_entry FLOW-ENTRY)* -// * ********** -// flow_sequence_entry? -// * -// FLOW-SEQUENCE-END -// ***************** -// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// * -// -func yaml_parser_parse_flow_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { - if first { - token := peek_token(parser) - parser.marks = append(parser.marks, token.start_mark) - skip_token(parser) - } - token := peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { - if !first { - if token.typ == yaml_FLOW_ENTRY_TOKEN { - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - } else { - context_mark := parser.marks[len(parser.marks)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - return yaml_parser_set_parser_error_context(parser, - "while parsing a flow sequence", context_mark, - "did not find expected ',' or ']'", token.start_mark) - } - } - - if token.typ == yaml_KEY_TOKEN { - parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE - *event = yaml_event_t{ - typ: yaml_MAPPING_START_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - implicit: true, - style: yaml_style_t(yaml_FLOW_MAPPING_STYLE), - } - skip_token(parser) - return true - } else if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE) - return yaml_parser_parse_node(parser, event, false, false) - } - } - - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - - *event = yaml_event_t{ - typ: yaml_SEQUENCE_END_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - } - - skip_token(parser) - return true -} - -// -// Parse the productions: -// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// *** * -// -func yaml_parser_parse_flow_sequence_entry_mapping_key(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_VALUE_TOKEN && - token.typ != yaml_FLOW_ENTRY_TOKEN && - token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE) - return yaml_parser_parse_node(parser, event, false, false) - } - mark := token.end_mark - skip_token(parser) - parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE - return yaml_parser_process_empty_scalar(parser, event, mark) -} - -// Parse the productions: -// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// ***** * -// -func yaml_parser_parse_flow_sequence_entry_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - if token.typ == yaml_VALUE_TOKEN { - skip_token(parser) - token := peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE) - return yaml_parser_parse_node(parser, event, false, false) - } - } - parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE - return yaml_parser_process_empty_scalar(parser, event, token.start_mark) -} - -// Parse the productions: -// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// * -// -func yaml_parser_parse_flow_sequence_entry_mapping_end(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE - *event = yaml_event_t{ - typ: yaml_MAPPING_END_EVENT, - start_mark: token.start_mark, - end_mark: token.start_mark, // [Go] Shouldn't this be end_mark? - } - return true -} - -// Parse the productions: -// flow_mapping ::= FLOW-MAPPING-START -// ****************** -// (flow_mapping_entry FLOW-ENTRY)* -// * ********** -// flow_mapping_entry? -// ****************** -// FLOW-MAPPING-END -// **************** -// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// * *** * -// -func yaml_parser_parse_flow_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { - if first { - token := peek_token(parser) - parser.marks = append(parser.marks, token.start_mark) - skip_token(parser) - } - - token := peek_token(parser) - if token == nil { - return false - } - - if token.typ != yaml_FLOW_MAPPING_END_TOKEN { - if !first { - if token.typ == yaml_FLOW_ENTRY_TOKEN { - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - } else { - context_mark := parser.marks[len(parser.marks)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - return yaml_parser_set_parser_error_context(parser, - "while parsing a flow mapping", context_mark, - "did not find expected ',' or '}'", token.start_mark) - } - } - - if token.typ == yaml_KEY_TOKEN { - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_VALUE_TOKEN && - token.typ != yaml_FLOW_ENTRY_TOKEN && - token.typ != yaml_FLOW_MAPPING_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_VALUE_STATE) - return yaml_parser_parse_node(parser, event, false, false) - } else { - parser.state = yaml_PARSE_FLOW_MAPPING_VALUE_STATE - return yaml_parser_process_empty_scalar(parser, event, token.start_mark) - } - } else if token.typ != yaml_FLOW_MAPPING_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE) - return yaml_parser_parse_node(parser, event, false, false) - } - } - - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - *event = yaml_event_t{ - typ: yaml_MAPPING_END_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - } - skip_token(parser) - return true -} - -// Parse the productions: -// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// * ***** * -// -func yaml_parser_parse_flow_mapping_value(parser *yaml_parser_t, event *yaml_event_t, empty bool) bool { - token := peek_token(parser) - if token == nil { - return false - } - if empty { - parser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE - return yaml_parser_process_empty_scalar(parser, event, token.start_mark) - } - if token.typ == yaml_VALUE_TOKEN { - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_MAPPING_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_KEY_STATE) - return yaml_parser_parse_node(parser, event, false, false) - } - } - parser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE - return yaml_parser_process_empty_scalar(parser, event, token.start_mark) -} - -// Generate an empty scalar event. -func yaml_parser_process_empty_scalar(parser *yaml_parser_t, event *yaml_event_t, mark yaml_mark_t) bool { - *event = yaml_event_t{ - typ: yaml_SCALAR_EVENT, - start_mark: mark, - end_mark: mark, - value: nil, // Empty - implicit: true, - style: yaml_style_t(yaml_PLAIN_SCALAR_STYLE), - } - return true -} - -var default_tag_directives = []yaml_tag_directive_t{ - {[]byte("!"), []byte("!")}, - {[]byte("!!"), []byte("tag:yaml.org,2002:")}, -} - -// Parse directives. -func yaml_parser_process_directives(parser *yaml_parser_t, - version_directive_ref **yaml_version_directive_t, - tag_directives_ref *[]yaml_tag_directive_t) bool { - - var version_directive *yaml_version_directive_t - var tag_directives []yaml_tag_directive_t - - token := peek_token(parser) - if token == nil { - return false - } - - for token.typ == yaml_VERSION_DIRECTIVE_TOKEN || token.typ == yaml_TAG_DIRECTIVE_TOKEN { - if token.typ == yaml_VERSION_DIRECTIVE_TOKEN { - if version_directive != nil { - yaml_parser_set_parser_error(parser, - "found duplicate %YAML directive", token.start_mark) - return false - } - if token.major != 1 || token.minor != 1 { - yaml_parser_set_parser_error(parser, - "found incompatible YAML document", token.start_mark) - return false - } - version_directive = &yaml_version_directive_t{ - major: token.major, - minor: token.minor, - } - } else if token.typ == yaml_TAG_DIRECTIVE_TOKEN { - value := yaml_tag_directive_t{ - handle: token.value, - prefix: token.prefix, - } - if !yaml_parser_append_tag_directive(parser, value, false, token.start_mark) { - return false - } - tag_directives = append(tag_directives, value) - } - - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - } - - for i := range default_tag_directives { - if !yaml_parser_append_tag_directive(parser, default_tag_directives[i], true, token.start_mark) { - return false - } - } - - if version_directive_ref != nil { - *version_directive_ref = version_directive - } - if tag_directives_ref != nil { - *tag_directives_ref = tag_directives - } - return true -} - -// Append a tag directive to the directives stack. -func yaml_parser_append_tag_directive(parser *yaml_parser_t, value yaml_tag_directive_t, allow_duplicates bool, mark yaml_mark_t) bool { - for i := range parser.tag_directives { - if bytes.Equal(value.handle, parser.tag_directives[i].handle) { - if allow_duplicates { - return true - } - return yaml_parser_set_parser_error(parser, "found duplicate %TAG directive", mark) - } - } - - // [Go] I suspect the copy is unnecessary. This was likely done - // because there was no way to track ownership of the data. - value_copy := yaml_tag_directive_t{ - handle: make([]byte, len(value.handle)), - prefix: make([]byte, len(value.prefix)), - } - copy(value_copy.handle, value.handle) - copy(value_copy.prefix, value.prefix) - parser.tag_directives = append(parser.tag_directives, value_copy) - return true -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/readerc.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/readerc.go deleted file mode 100644 index 7c1f5fac3..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/readerc.go +++ /dev/null @@ -1,412 +0,0 @@ -package yaml - -import ( - "io" -) - -// Set the reader error and return 0. -func yaml_parser_set_reader_error(parser *yaml_parser_t, problem string, offset int, value int) bool { - parser.error = yaml_READER_ERROR - parser.problem = problem - parser.problem_offset = offset - parser.problem_value = value - return false -} - -// Byte order marks. -const ( - bom_UTF8 = "\xef\xbb\xbf" - bom_UTF16LE = "\xff\xfe" - bom_UTF16BE = "\xfe\xff" -) - -// Determine the input stream encoding by checking the BOM symbol. If no BOM is -// found, the UTF-8 encoding is assumed. Return 1 on success, 0 on failure. -func yaml_parser_determine_encoding(parser *yaml_parser_t) bool { - // Ensure that we had enough bytes in the raw buffer. - for !parser.eof && len(parser.raw_buffer)-parser.raw_buffer_pos < 3 { - if !yaml_parser_update_raw_buffer(parser) { - return false - } - } - - // Determine the encoding. - buf := parser.raw_buffer - pos := parser.raw_buffer_pos - avail := len(buf) - pos - if avail >= 2 && buf[pos] == bom_UTF16LE[0] && buf[pos+1] == bom_UTF16LE[1] { - parser.encoding = yaml_UTF16LE_ENCODING - parser.raw_buffer_pos += 2 - parser.offset += 2 - } else if avail >= 2 && buf[pos] == bom_UTF16BE[0] && buf[pos+1] == bom_UTF16BE[1] { - parser.encoding = yaml_UTF16BE_ENCODING - parser.raw_buffer_pos += 2 - parser.offset += 2 - } else if avail >= 3 && buf[pos] == bom_UTF8[0] && buf[pos+1] == bom_UTF8[1] && buf[pos+2] == bom_UTF8[2] { - parser.encoding = yaml_UTF8_ENCODING - parser.raw_buffer_pos += 3 - parser.offset += 3 - } else { - parser.encoding = yaml_UTF8_ENCODING - } - return true -} - -// Update the raw buffer. -func yaml_parser_update_raw_buffer(parser *yaml_parser_t) bool { - size_read := 0 - - // Return if the raw buffer is full. - if parser.raw_buffer_pos == 0 && len(parser.raw_buffer) == cap(parser.raw_buffer) { - return true - } - - // Return on EOF. - if parser.eof { - return true - } - - // Move the remaining bytes in the raw buffer to the beginning. - if parser.raw_buffer_pos > 0 && parser.raw_buffer_pos < len(parser.raw_buffer) { - copy(parser.raw_buffer, parser.raw_buffer[parser.raw_buffer_pos:]) - } - parser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)-parser.raw_buffer_pos] - parser.raw_buffer_pos = 0 - - // Call the read handler to fill the buffer. - size_read, err := parser.read_handler(parser, parser.raw_buffer[len(parser.raw_buffer):cap(parser.raw_buffer)]) - parser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)+size_read] - if err == io.EOF { - parser.eof = true - } else if err != nil { - return yaml_parser_set_reader_error(parser, "input error: "+err.Error(), parser.offset, -1) - } - return true -} - -// Ensure that the buffer contains at least `length` characters. -// Return true on success, false on failure. -// -// The length is supposed to be significantly less that the buffer size. -func yaml_parser_update_buffer(parser *yaml_parser_t, length int) bool { - if parser.read_handler == nil { - panic("read handler must be set") - } - - // [Go] This function was changed to guarantee the requested length size at EOF. - // The fact we need to do this is pretty awful, but the description above implies - // for that to be the case, and there are tests - - // If the EOF flag is set and the raw buffer is empty, do nothing. - if parser.eof && parser.raw_buffer_pos == len(parser.raw_buffer) { - // [Go] ACTUALLY! Read the documentation of this function above. - // This is just broken. To return true, we need to have the - // given length in the buffer. Not doing that means every single - // check that calls this function to make sure the buffer has a - // given length is Go) panicking; or C) accessing invalid memory. - //return true - } - - // Return if the buffer contains enough characters. - if parser.unread >= length { - return true - } - - // Determine the input encoding if it is not known yet. - if parser.encoding == yaml_ANY_ENCODING { - if !yaml_parser_determine_encoding(parser) { - return false - } - } - - // Move the unread characters to the beginning of the buffer. - buffer_len := len(parser.buffer) - if parser.buffer_pos > 0 && parser.buffer_pos < buffer_len { - copy(parser.buffer, parser.buffer[parser.buffer_pos:]) - buffer_len -= parser.buffer_pos - parser.buffer_pos = 0 - } else if parser.buffer_pos == buffer_len { - buffer_len = 0 - parser.buffer_pos = 0 - } - - // Open the whole buffer for writing, and cut it before returning. - parser.buffer = parser.buffer[:cap(parser.buffer)] - - // Fill the buffer until it has enough characters. - first := true - for parser.unread < length { - - // Fill the raw buffer if necessary. - if !first || parser.raw_buffer_pos == len(parser.raw_buffer) { - if !yaml_parser_update_raw_buffer(parser) { - parser.buffer = parser.buffer[:buffer_len] - return false - } - } - first = false - - // Decode the raw buffer. - inner: - for parser.raw_buffer_pos != len(parser.raw_buffer) { - var value rune - var width int - - raw_unread := len(parser.raw_buffer) - parser.raw_buffer_pos - - // Decode the next character. - switch parser.encoding { - case yaml_UTF8_ENCODING: - // Decode a UTF-8 character. Check RFC 3629 - // (http://www.ietf.org/rfc/rfc3629.txt) for more details. - // - // The following table (taken from the RFC) is used for - // decoding. - // - // Char. number range | UTF-8 octet sequence - // (hexadecimal) | (binary) - // --------------------+------------------------------------ - // 0000 0000-0000 007F | 0xxxxxxx - // 0000 0080-0000 07FF | 110xxxxx 10xxxxxx - // 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx - // 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - // - // Additionally, the characters in the range 0xD800-0xDFFF - // are prohibited as they are reserved for use with UTF-16 - // surrogate pairs. - - // Determine the length of the UTF-8 sequence. - octet := parser.raw_buffer[parser.raw_buffer_pos] - switch { - case octet&0x80 == 0x00: - width = 1 - case octet&0xE0 == 0xC0: - width = 2 - case octet&0xF0 == 0xE0: - width = 3 - case octet&0xF8 == 0xF0: - width = 4 - default: - // The leading octet is invalid. - return yaml_parser_set_reader_error(parser, - "invalid leading UTF-8 octet", - parser.offset, int(octet)) - } - - // Check if the raw buffer contains an incomplete character. - if width > raw_unread { - if parser.eof { - return yaml_parser_set_reader_error(parser, - "incomplete UTF-8 octet sequence", - parser.offset, -1) - } - break inner - } - - // Decode the leading octet. - switch { - case octet&0x80 == 0x00: - value = rune(octet & 0x7F) - case octet&0xE0 == 0xC0: - value = rune(octet & 0x1F) - case octet&0xF0 == 0xE0: - value = rune(octet & 0x0F) - case octet&0xF8 == 0xF0: - value = rune(octet & 0x07) - default: - value = 0 - } - - // Check and decode the trailing octets. - for k := 1; k < width; k++ { - octet = parser.raw_buffer[parser.raw_buffer_pos+k] - - // Check if the octet is valid. - if (octet & 0xC0) != 0x80 { - return yaml_parser_set_reader_error(parser, - "invalid trailing UTF-8 octet", - parser.offset+k, int(octet)) - } - - // Decode the octet. - value = (value << 6) + rune(octet&0x3F) - } - - // Check the length of the sequence against the value. - switch { - case width == 1: - case width == 2 && value >= 0x80: - case width == 3 && value >= 0x800: - case width == 4 && value >= 0x10000: - default: - return yaml_parser_set_reader_error(parser, - "invalid length of a UTF-8 sequence", - parser.offset, -1) - } - - // Check the range of the value. - if value >= 0xD800 && value <= 0xDFFF || value > 0x10FFFF { - return yaml_parser_set_reader_error(parser, - "invalid Unicode character", - parser.offset, int(value)) - } - - case yaml_UTF16LE_ENCODING, yaml_UTF16BE_ENCODING: - var low, high int - if parser.encoding == yaml_UTF16LE_ENCODING { - low, high = 0, 1 - } else { - low, high = 1, 0 - } - - // The UTF-16 encoding is not as simple as one might - // naively think. Check RFC 2781 - // (http://www.ietf.org/rfc/rfc2781.txt). - // - // Normally, two subsequent bytes describe a Unicode - // character. However a special technique (called a - // surrogate pair) is used for specifying character - // values larger than 0xFFFF. - // - // A surrogate pair consists of two pseudo-characters: - // high surrogate area (0xD800-0xDBFF) - // low surrogate area (0xDC00-0xDFFF) - // - // The following formulas are used for decoding - // and encoding characters using surrogate pairs: - // - // U = U' + 0x10000 (0x01 00 00 <= U <= 0x10 FF FF) - // U' = yyyyyyyyyyxxxxxxxxxx (0 <= U' <= 0x0F FF FF) - // W1 = 110110yyyyyyyyyy - // W2 = 110111xxxxxxxxxx - // - // where U is the character value, W1 is the high surrogate - // area, W2 is the low surrogate area. - - // Check for incomplete UTF-16 character. - if raw_unread < 2 { - if parser.eof { - return yaml_parser_set_reader_error(parser, - "incomplete UTF-16 character", - parser.offset, -1) - } - break inner - } - - // Get the character. - value = rune(parser.raw_buffer[parser.raw_buffer_pos+low]) + - (rune(parser.raw_buffer[parser.raw_buffer_pos+high]) << 8) - - // Check for unexpected low surrogate area. - if value&0xFC00 == 0xDC00 { - return yaml_parser_set_reader_error(parser, - "unexpected low surrogate area", - parser.offset, int(value)) - } - - // Check for a high surrogate area. - if value&0xFC00 == 0xD800 { - width = 4 - - // Check for incomplete surrogate pair. - if raw_unread < 4 { - if parser.eof { - return yaml_parser_set_reader_error(parser, - "incomplete UTF-16 surrogate pair", - parser.offset, -1) - } - break inner - } - - // Get the next character. - value2 := rune(parser.raw_buffer[parser.raw_buffer_pos+low+2]) + - (rune(parser.raw_buffer[parser.raw_buffer_pos+high+2]) << 8) - - // Check for a low surrogate area. - if value2&0xFC00 != 0xDC00 { - return yaml_parser_set_reader_error(parser, - "expected low surrogate area", - parser.offset+2, int(value2)) - } - - // Generate the value of the surrogate pair. - value = 0x10000 + ((value & 0x3FF) << 10) + (value2 & 0x3FF) - } else { - width = 2 - } - - default: - panic("impossible") - } - - // Check if the character is in the allowed range: - // #x9 | #xA | #xD | [#x20-#x7E] (8 bit) - // | #x85 | [#xA0-#xD7FF] | [#xE000-#xFFFD] (16 bit) - // | [#x10000-#x10FFFF] (32 bit) - switch { - case value == 0x09: - case value == 0x0A: - case value == 0x0D: - case value >= 0x20 && value <= 0x7E: - case value == 0x85: - case value >= 0xA0 && value <= 0xD7FF: - case value >= 0xE000 && value <= 0xFFFD: - case value >= 0x10000 && value <= 0x10FFFF: - default: - return yaml_parser_set_reader_error(parser, - "control characters are not allowed", - parser.offset, int(value)) - } - - // Move the raw pointers. - parser.raw_buffer_pos += width - parser.offset += width - - // Finally put the character into the buffer. - if value <= 0x7F { - // 0000 0000-0000 007F . 0xxxxxxx - parser.buffer[buffer_len+0] = byte(value) - buffer_len += 1 - } else if value <= 0x7FF { - // 0000 0080-0000 07FF . 110xxxxx 10xxxxxx - parser.buffer[buffer_len+0] = byte(0xC0 + (value >> 6)) - parser.buffer[buffer_len+1] = byte(0x80 + (value & 0x3F)) - buffer_len += 2 - } else if value <= 0xFFFF { - // 0000 0800-0000 FFFF . 1110xxxx 10xxxxxx 10xxxxxx - parser.buffer[buffer_len+0] = byte(0xE0 + (value >> 12)) - parser.buffer[buffer_len+1] = byte(0x80 + ((value >> 6) & 0x3F)) - parser.buffer[buffer_len+2] = byte(0x80 + (value & 0x3F)) - buffer_len += 3 - } else { - // 0001 0000-0010 FFFF . 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - parser.buffer[buffer_len+0] = byte(0xF0 + (value >> 18)) - parser.buffer[buffer_len+1] = byte(0x80 + ((value >> 12) & 0x3F)) - parser.buffer[buffer_len+2] = byte(0x80 + ((value >> 6) & 0x3F)) - parser.buffer[buffer_len+3] = byte(0x80 + (value & 0x3F)) - buffer_len += 4 - } - - parser.unread++ - } - - // On EOF, put NUL into the buffer and return. - if parser.eof { - parser.buffer[buffer_len] = 0 - buffer_len++ - parser.unread++ - break - } - } - // [Go] Read the documentation of this function above. To return true, - // we need to have the given length in the buffer. Not doing that means - // every single check that calls this function to make sure the buffer - // has a given length is Go) panicking; or C) accessing invalid memory. - // This happens here due to the EOF above breaking early. - for buffer_len < length { - parser.buffer[buffer_len] = 0 - buffer_len++ - } - parser.buffer = parser.buffer[:buffer_len] - return true -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/resolve.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/resolve.go deleted file mode 100644 index 6c151db6f..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/resolve.go +++ /dev/null @@ -1,258 +0,0 @@ -package yaml - -import ( - "encoding/base64" - "math" - "regexp" - "strconv" - "strings" - "time" -) - -type resolveMapItem struct { - value interface{} - tag string -} - -var resolveTable = make([]byte, 256) -var resolveMap = make(map[string]resolveMapItem) - -func init() { - t := resolveTable - t[int('+')] = 'S' // Sign - t[int('-')] = 'S' - for _, c := range "0123456789" { - t[int(c)] = 'D' // Digit - } - for _, c := range "yYnNtTfFoO~" { - t[int(c)] = 'M' // In map - } - t[int('.')] = '.' // Float (potentially in map) - - var resolveMapList = []struct { - v interface{} - tag string - l []string - }{ - {true, yaml_BOOL_TAG, []string{"y", "Y", "yes", "Yes", "YES"}}, - {true, yaml_BOOL_TAG, []string{"true", "True", "TRUE"}}, - {true, yaml_BOOL_TAG, []string{"on", "On", "ON"}}, - {false, yaml_BOOL_TAG, []string{"n", "N", "no", "No", "NO"}}, - {false, yaml_BOOL_TAG, []string{"false", "False", "FALSE"}}, - {false, yaml_BOOL_TAG, []string{"off", "Off", "OFF"}}, - {nil, yaml_NULL_TAG, []string{"", "~", "null", "Null", "NULL"}}, - {math.NaN(), yaml_FLOAT_TAG, []string{".nan", ".NaN", ".NAN"}}, - {math.Inf(+1), yaml_FLOAT_TAG, []string{".inf", ".Inf", ".INF"}}, - {math.Inf(+1), yaml_FLOAT_TAG, []string{"+.inf", "+.Inf", "+.INF"}}, - {math.Inf(-1), yaml_FLOAT_TAG, []string{"-.inf", "-.Inf", "-.INF"}}, - {"<<", yaml_MERGE_TAG, []string{"<<"}}, - } - - m := resolveMap - for _, item := range resolveMapList { - for _, s := range item.l { - m[s] = resolveMapItem{item.v, item.tag} - } - } -} - -const longTagPrefix = "tag:yaml.org,2002:" - -func shortTag(tag string) string { - // TODO This can easily be made faster and produce less garbage. - if strings.HasPrefix(tag, longTagPrefix) { - return "!!" + tag[len(longTagPrefix):] - } - return tag -} - -func longTag(tag string) string { - if strings.HasPrefix(tag, "!!") { - return longTagPrefix + tag[2:] - } - return tag -} - -func resolvableTag(tag string) bool { - switch tag { - case "", yaml_STR_TAG, yaml_BOOL_TAG, yaml_INT_TAG, yaml_FLOAT_TAG, yaml_NULL_TAG, yaml_TIMESTAMP_TAG: - return true - } - return false -} - -var yamlStyleFloat = regexp.MustCompile(`^[-+]?[0-9]*\.?[0-9]+([eE][-+][0-9]+)?$`) - -func resolve(tag string, in string) (rtag string, out interface{}) { - if !resolvableTag(tag) { - return tag, in - } - - defer func() { - switch tag { - case "", rtag, yaml_STR_TAG, yaml_BINARY_TAG: - return - case yaml_FLOAT_TAG: - if rtag == yaml_INT_TAG { - switch v := out.(type) { - case int64: - rtag = yaml_FLOAT_TAG - out = float64(v) - return - case int: - rtag = yaml_FLOAT_TAG - out = float64(v) - return - } - } - } - failf("cannot decode %s `%s` as a %s", shortTag(rtag), in, shortTag(tag)) - }() - - // Any data is accepted as a !!str or !!binary. - // Otherwise, the prefix is enough of a hint about what it might be. - hint := byte('N') - if in != "" { - hint = resolveTable[in[0]] - } - if hint != 0 && tag != yaml_STR_TAG && tag != yaml_BINARY_TAG { - // Handle things we can lookup in a map. - if item, ok := resolveMap[in]; ok { - return item.tag, item.value - } - - // Base 60 floats are a bad idea, were dropped in YAML 1.2, and - // are purposefully unsupported here. They're still quoted on - // the way out for compatibility with other parser, though. - - switch hint { - case 'M': - // We've already checked the map above. - - case '.': - // Not in the map, so maybe a normal float. - floatv, err := strconv.ParseFloat(in, 64) - if err == nil { - return yaml_FLOAT_TAG, floatv - } - - case 'D', 'S': - // Int, float, or timestamp. - // Only try values as a timestamp if the value is unquoted or there's an explicit - // !!timestamp tag. - if tag == "" || tag == yaml_TIMESTAMP_TAG { - t, ok := parseTimestamp(in) - if ok { - return yaml_TIMESTAMP_TAG, t - } - } - - plain := strings.Replace(in, "_", "", -1) - intv, err := strconv.ParseInt(plain, 0, 64) - if err == nil { - if intv == int64(int(intv)) { - return yaml_INT_TAG, int(intv) - } else { - return yaml_INT_TAG, intv - } - } - uintv, err := strconv.ParseUint(plain, 0, 64) - if err == nil { - return yaml_INT_TAG, uintv - } - if yamlStyleFloat.MatchString(plain) { - floatv, err := strconv.ParseFloat(plain, 64) - if err == nil { - return yaml_FLOAT_TAG, floatv - } - } - if strings.HasPrefix(plain, "0b") { - intv, err := strconv.ParseInt(plain[2:], 2, 64) - if err == nil { - if intv == int64(int(intv)) { - return yaml_INT_TAG, int(intv) - } else { - return yaml_INT_TAG, intv - } - } - uintv, err := strconv.ParseUint(plain[2:], 2, 64) - if err == nil { - return yaml_INT_TAG, uintv - } - } else if strings.HasPrefix(plain, "-0b") { - intv, err := strconv.ParseInt("-" + plain[3:], 2, 64) - if err == nil { - if true || intv == int64(int(intv)) { - return yaml_INT_TAG, int(intv) - } else { - return yaml_INT_TAG, intv - } - } - } - default: - panic("resolveTable item not yet handled: " + string(rune(hint)) + " (with " + in + ")") - } - } - return yaml_STR_TAG, in -} - -// encodeBase64 encodes s as base64 that is broken up into multiple lines -// as appropriate for the resulting length. -func encodeBase64(s string) string { - const lineLen = 70 - encLen := base64.StdEncoding.EncodedLen(len(s)) - lines := encLen/lineLen + 1 - buf := make([]byte, encLen*2+lines) - in := buf[0:encLen] - out := buf[encLen:] - base64.StdEncoding.Encode(in, []byte(s)) - k := 0 - for i := 0; i < len(in); i += lineLen { - j := i + lineLen - if j > len(in) { - j = len(in) - } - k += copy(out[k:], in[i:j]) - if lines > 1 { - out[k] = '\n' - k++ - } - } - return string(out[:k]) -} - -// This is a subset of the formats allowed by the regular expression -// defined at http://yaml.org/type/timestamp.html. -var allowedTimestampFormats = []string{ - "2006-1-2T15:4:5.999999999Z07:00", // RCF3339Nano with short date fields. - "2006-1-2t15:4:5.999999999Z07:00", // RFC3339Nano with short date fields and lower-case "t". - "2006-1-2 15:4:5.999999999", // space separated with no time zone - "2006-1-2", // date only - // Notable exception: time.Parse cannot handle: "2001-12-14 21:59:43.10 -5" - // from the set of examples. -} - -// parseTimestamp parses s as a timestamp string and -// returns the timestamp and reports whether it succeeded. -// Timestamp formats are defined at http://yaml.org/type/timestamp.html -func parseTimestamp(s string) (time.Time, bool) { - // TODO write code to check all the formats supported by - // http://yaml.org/type/timestamp.html instead of using time.Parse. - - // Quick check: all date formats start with YYYY-. - i := 0 - for ; i < len(s); i++ { - if c := s[i]; c < '0' || c > '9' { - break - } - } - if i != 4 || i == len(s) || s[i] != '-' { - return time.Time{}, false - } - for _, format := range allowedTimestampFormats { - if t, err := time.Parse(format, s); err == nil { - return t, true - } - } - return time.Time{}, false -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/scannerc.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/scannerc.go deleted file mode 100644 index 077fd1dd2..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/scannerc.go +++ /dev/null @@ -1,2696 +0,0 @@ -package yaml - -import ( - "bytes" - "fmt" -) - -// Introduction -// ************ -// -// The following notes assume that you are familiar with the YAML specification -// (http://yaml.org/spec/1.2/spec.html). We mostly follow it, although in -// some cases we are less restrictive that it requires. -// -// The process of transforming a YAML stream into a sequence of events is -// divided on two steps: Scanning and Parsing. -// -// The Scanner transforms the input stream into a sequence of tokens, while the -// parser transform the sequence of tokens produced by the Scanner into a -// sequence of parsing events. -// -// The Scanner is rather clever and complicated. The Parser, on the contrary, -// is a straightforward implementation of a recursive-descendant parser (or, -// LL(1) parser, as it is usually called). -// -// Actually there are two issues of Scanning that might be called "clever", the -// rest is quite straightforward. The issues are "block collection start" and -// "simple keys". Both issues are explained below in details. -// -// Here the Scanning step is explained and implemented. We start with the list -// of all the tokens produced by the Scanner together with short descriptions. -// -// Now, tokens: -// -// STREAM-START(encoding) # The stream start. -// STREAM-END # The stream end. -// VERSION-DIRECTIVE(major,minor) # The '%YAML' directive. -// TAG-DIRECTIVE(handle,prefix) # The '%TAG' directive. -// DOCUMENT-START # '---' -// DOCUMENT-END # '...' -// BLOCK-SEQUENCE-START # Indentation increase denoting a block -// BLOCK-MAPPING-START # sequence or a block mapping. -// BLOCK-END # Indentation decrease. -// FLOW-SEQUENCE-START # '[' -// FLOW-SEQUENCE-END # ']' -// BLOCK-SEQUENCE-START # '{' -// BLOCK-SEQUENCE-END # '}' -// BLOCK-ENTRY # '-' -// FLOW-ENTRY # ',' -// KEY # '?' or nothing (simple keys). -// VALUE # ':' -// ALIAS(anchor) # '*anchor' -// ANCHOR(anchor) # '&anchor' -// TAG(handle,suffix) # '!handle!suffix' -// SCALAR(value,style) # A scalar. -// -// The following two tokens are "virtual" tokens denoting the beginning and the -// end of the stream: -// -// STREAM-START(encoding) -// STREAM-END -// -// We pass the information about the input stream encoding with the -// STREAM-START token. -// -// The next two tokens are responsible for tags: -// -// VERSION-DIRECTIVE(major,minor) -// TAG-DIRECTIVE(handle,prefix) -// -// Example: -// -// %YAML 1.1 -// %TAG ! !foo -// %TAG !yaml! tag:yaml.org,2002: -// --- -// -// The correspoding sequence of tokens: -// -// STREAM-START(utf-8) -// VERSION-DIRECTIVE(1,1) -// TAG-DIRECTIVE("!","!foo") -// TAG-DIRECTIVE("!yaml","tag:yaml.org,2002:") -// DOCUMENT-START -// STREAM-END -// -// Note that the VERSION-DIRECTIVE and TAG-DIRECTIVE tokens occupy a whole -// line. -// -// The document start and end indicators are represented by: -// -// DOCUMENT-START -// DOCUMENT-END -// -// Note that if a YAML stream contains an implicit document (without '---' -// and '...' indicators), no DOCUMENT-START and DOCUMENT-END tokens will be -// produced. -// -// In the following examples, we present whole documents together with the -// produced tokens. -// -// 1. An implicit document: -// -// 'a scalar' -// -// Tokens: -// -// STREAM-START(utf-8) -// SCALAR("a scalar",single-quoted) -// STREAM-END -// -// 2. An explicit document: -// -// --- -// 'a scalar' -// ... -// -// Tokens: -// -// STREAM-START(utf-8) -// DOCUMENT-START -// SCALAR("a scalar",single-quoted) -// DOCUMENT-END -// STREAM-END -// -// 3. Several documents in a stream: -// -// 'a scalar' -// --- -// 'another scalar' -// --- -// 'yet another scalar' -// -// Tokens: -// -// STREAM-START(utf-8) -// SCALAR("a scalar",single-quoted) -// DOCUMENT-START -// SCALAR("another scalar",single-quoted) -// DOCUMENT-START -// SCALAR("yet another scalar",single-quoted) -// STREAM-END -// -// We have already introduced the SCALAR token above. The following tokens are -// used to describe aliases, anchors, tag, and scalars: -// -// ALIAS(anchor) -// ANCHOR(anchor) -// TAG(handle,suffix) -// SCALAR(value,style) -// -// The following series of examples illustrate the usage of these tokens: -// -// 1. A recursive sequence: -// -// &A [ *A ] -// -// Tokens: -// -// STREAM-START(utf-8) -// ANCHOR("A") -// FLOW-SEQUENCE-START -// ALIAS("A") -// FLOW-SEQUENCE-END -// STREAM-END -// -// 2. A tagged scalar: -// -// !!float "3.14" # A good approximation. -// -// Tokens: -// -// STREAM-START(utf-8) -// TAG("!!","float") -// SCALAR("3.14",double-quoted) -// STREAM-END -// -// 3. Various scalar styles: -// -// --- # Implicit empty plain scalars do not produce tokens. -// --- a plain scalar -// --- 'a single-quoted scalar' -// --- "a double-quoted scalar" -// --- |- -// a literal scalar -// --- >- -// a folded -// scalar -// -// Tokens: -// -// STREAM-START(utf-8) -// DOCUMENT-START -// DOCUMENT-START -// SCALAR("a plain scalar",plain) -// DOCUMENT-START -// SCALAR("a single-quoted scalar",single-quoted) -// DOCUMENT-START -// SCALAR("a double-quoted scalar",double-quoted) -// DOCUMENT-START -// SCALAR("a literal scalar",literal) -// DOCUMENT-START -// SCALAR("a folded scalar",folded) -// STREAM-END -// -// Now it's time to review collection-related tokens. We will start with -// flow collections: -// -// FLOW-SEQUENCE-START -// FLOW-SEQUENCE-END -// FLOW-MAPPING-START -// FLOW-MAPPING-END -// FLOW-ENTRY -// KEY -// VALUE -// -// The tokens FLOW-SEQUENCE-START, FLOW-SEQUENCE-END, FLOW-MAPPING-START, and -// FLOW-MAPPING-END represent the indicators '[', ']', '{', and '}' -// correspondingly. FLOW-ENTRY represent the ',' indicator. Finally the -// indicators '?' and ':', which are used for denoting mapping keys and values, -// are represented by the KEY and VALUE tokens. -// -// The following examples show flow collections: -// -// 1. A flow sequence: -// -// [item 1, item 2, item 3] -// -// Tokens: -// -// STREAM-START(utf-8) -// FLOW-SEQUENCE-START -// SCALAR("item 1",plain) -// FLOW-ENTRY -// SCALAR("item 2",plain) -// FLOW-ENTRY -// SCALAR("item 3",plain) -// FLOW-SEQUENCE-END -// STREAM-END -// -// 2. A flow mapping: -// -// { -// a simple key: a value, # Note that the KEY token is produced. -// ? a complex key: another value, -// } -// -// Tokens: -// -// STREAM-START(utf-8) -// FLOW-MAPPING-START -// KEY -// SCALAR("a simple key",plain) -// VALUE -// SCALAR("a value",plain) -// FLOW-ENTRY -// KEY -// SCALAR("a complex key",plain) -// VALUE -// SCALAR("another value",plain) -// FLOW-ENTRY -// FLOW-MAPPING-END -// STREAM-END -// -// A simple key is a key which is not denoted by the '?' indicator. Note that -// the Scanner still produce the KEY token whenever it encounters a simple key. -// -// For scanning block collections, the following tokens are used (note that we -// repeat KEY and VALUE here): -// -// BLOCK-SEQUENCE-START -// BLOCK-MAPPING-START -// BLOCK-END -// BLOCK-ENTRY -// KEY -// VALUE -// -// The tokens BLOCK-SEQUENCE-START and BLOCK-MAPPING-START denote indentation -// increase that precedes a block collection (cf. the INDENT token in Python). -// The token BLOCK-END denote indentation decrease that ends a block collection -// (cf. the DEDENT token in Python). However YAML has some syntax pecularities -// that makes detections of these tokens more complex. -// -// The tokens BLOCK-ENTRY, KEY, and VALUE are used to represent the indicators -// '-', '?', and ':' correspondingly. -// -// The following examples show how the tokens BLOCK-SEQUENCE-START, -// BLOCK-MAPPING-START, and BLOCK-END are emitted by the Scanner: -// -// 1. Block sequences: -// -// - item 1 -// - item 2 -// - -// - item 3.1 -// - item 3.2 -// - -// key 1: value 1 -// key 2: value 2 -// -// Tokens: -// -// STREAM-START(utf-8) -// BLOCK-SEQUENCE-START -// BLOCK-ENTRY -// SCALAR("item 1",plain) -// BLOCK-ENTRY -// SCALAR("item 2",plain) -// BLOCK-ENTRY -// BLOCK-SEQUENCE-START -// BLOCK-ENTRY -// SCALAR("item 3.1",plain) -// BLOCK-ENTRY -// SCALAR("item 3.2",plain) -// BLOCK-END -// BLOCK-ENTRY -// BLOCK-MAPPING-START -// KEY -// SCALAR("key 1",plain) -// VALUE -// SCALAR("value 1",plain) -// KEY -// SCALAR("key 2",plain) -// VALUE -// SCALAR("value 2",plain) -// BLOCK-END -// BLOCK-END -// STREAM-END -// -// 2. Block mappings: -// -// a simple key: a value # The KEY token is produced here. -// ? a complex key -// : another value -// a mapping: -// key 1: value 1 -// key 2: value 2 -// a sequence: -// - item 1 -// - item 2 -// -// Tokens: -// -// STREAM-START(utf-8) -// BLOCK-MAPPING-START -// KEY -// SCALAR("a simple key",plain) -// VALUE -// SCALAR("a value",plain) -// KEY -// SCALAR("a complex key",plain) -// VALUE -// SCALAR("another value",plain) -// KEY -// SCALAR("a mapping",plain) -// BLOCK-MAPPING-START -// KEY -// SCALAR("key 1",plain) -// VALUE -// SCALAR("value 1",plain) -// KEY -// SCALAR("key 2",plain) -// VALUE -// SCALAR("value 2",plain) -// BLOCK-END -// KEY -// SCALAR("a sequence",plain) -// VALUE -// BLOCK-SEQUENCE-START -// BLOCK-ENTRY -// SCALAR("item 1",plain) -// BLOCK-ENTRY -// SCALAR("item 2",plain) -// BLOCK-END -// BLOCK-END -// STREAM-END -// -// YAML does not always require to start a new block collection from a new -// line. If the current line contains only '-', '?', and ':' indicators, a new -// block collection may start at the current line. The following examples -// illustrate this case: -// -// 1. Collections in a sequence: -// -// - - item 1 -// - item 2 -// - key 1: value 1 -// key 2: value 2 -// - ? complex key -// : complex value -// -// Tokens: -// -// STREAM-START(utf-8) -// BLOCK-SEQUENCE-START -// BLOCK-ENTRY -// BLOCK-SEQUENCE-START -// BLOCK-ENTRY -// SCALAR("item 1",plain) -// BLOCK-ENTRY -// SCALAR("item 2",plain) -// BLOCK-END -// BLOCK-ENTRY -// BLOCK-MAPPING-START -// KEY -// SCALAR("key 1",plain) -// VALUE -// SCALAR("value 1",plain) -// KEY -// SCALAR("key 2",plain) -// VALUE -// SCALAR("value 2",plain) -// BLOCK-END -// BLOCK-ENTRY -// BLOCK-MAPPING-START -// KEY -// SCALAR("complex key") -// VALUE -// SCALAR("complex value") -// BLOCK-END -// BLOCK-END -// STREAM-END -// -// 2. Collections in a mapping: -// -// ? a sequence -// : - item 1 -// - item 2 -// ? a mapping -// : key 1: value 1 -// key 2: value 2 -// -// Tokens: -// -// STREAM-START(utf-8) -// BLOCK-MAPPING-START -// KEY -// SCALAR("a sequence",plain) -// VALUE -// BLOCK-SEQUENCE-START -// BLOCK-ENTRY -// SCALAR("item 1",plain) -// BLOCK-ENTRY -// SCALAR("item 2",plain) -// BLOCK-END -// KEY -// SCALAR("a mapping",plain) -// VALUE -// BLOCK-MAPPING-START -// KEY -// SCALAR("key 1",plain) -// VALUE -// SCALAR("value 1",plain) -// KEY -// SCALAR("key 2",plain) -// VALUE -// SCALAR("value 2",plain) -// BLOCK-END -// BLOCK-END -// STREAM-END -// -// YAML also permits non-indented sequences if they are included into a block -// mapping. In this case, the token BLOCK-SEQUENCE-START is not produced: -// -// key: -// - item 1 # BLOCK-SEQUENCE-START is NOT produced here. -// - item 2 -// -// Tokens: -// -// STREAM-START(utf-8) -// BLOCK-MAPPING-START -// KEY -// SCALAR("key",plain) -// VALUE -// BLOCK-ENTRY -// SCALAR("item 1",plain) -// BLOCK-ENTRY -// SCALAR("item 2",plain) -// BLOCK-END -// - -// Ensure that the buffer contains the required number of characters. -// Return true on success, false on failure (reader error or memory error). -func cache(parser *yaml_parser_t, length int) bool { - // [Go] This was inlined: !cache(A, B) -> unread < B && !update(A, B) - return parser.unread >= length || yaml_parser_update_buffer(parser, length) -} - -// Advance the buffer pointer. -func skip(parser *yaml_parser_t) { - parser.mark.index++ - parser.mark.column++ - parser.unread-- - parser.buffer_pos += width(parser.buffer[parser.buffer_pos]) -} - -func skip_line(parser *yaml_parser_t) { - if is_crlf(parser.buffer, parser.buffer_pos) { - parser.mark.index += 2 - parser.mark.column = 0 - parser.mark.line++ - parser.unread -= 2 - parser.buffer_pos += 2 - } else if is_break(parser.buffer, parser.buffer_pos) { - parser.mark.index++ - parser.mark.column = 0 - parser.mark.line++ - parser.unread-- - parser.buffer_pos += width(parser.buffer[parser.buffer_pos]) - } -} - -// Copy a character to a string buffer and advance pointers. -func read(parser *yaml_parser_t, s []byte) []byte { - w := width(parser.buffer[parser.buffer_pos]) - if w == 0 { - panic("invalid character sequence") - } - if len(s) == 0 { - s = make([]byte, 0, 32) - } - if w == 1 && len(s)+w <= cap(s) { - s = s[:len(s)+1] - s[len(s)-1] = parser.buffer[parser.buffer_pos] - parser.buffer_pos++ - } else { - s = append(s, parser.buffer[parser.buffer_pos:parser.buffer_pos+w]...) - parser.buffer_pos += w - } - parser.mark.index++ - parser.mark.column++ - parser.unread-- - return s -} - -// Copy a line break character to a string buffer and advance pointers. -func read_line(parser *yaml_parser_t, s []byte) []byte { - buf := parser.buffer - pos := parser.buffer_pos - switch { - case buf[pos] == '\r' && buf[pos+1] == '\n': - // CR LF . LF - s = append(s, '\n') - parser.buffer_pos += 2 - parser.mark.index++ - parser.unread-- - case buf[pos] == '\r' || buf[pos] == '\n': - // CR|LF . LF - s = append(s, '\n') - parser.buffer_pos += 1 - case buf[pos] == '\xC2' && buf[pos+1] == '\x85': - // NEL . LF - s = append(s, '\n') - parser.buffer_pos += 2 - case buf[pos] == '\xE2' && buf[pos+1] == '\x80' && (buf[pos+2] == '\xA8' || buf[pos+2] == '\xA9'): - // LS|PS . LS|PS - s = append(s, buf[parser.buffer_pos:pos+3]...) - parser.buffer_pos += 3 - default: - return s - } - parser.mark.index++ - parser.mark.column = 0 - parser.mark.line++ - parser.unread-- - return s -} - -// Get the next token. -func yaml_parser_scan(parser *yaml_parser_t, token *yaml_token_t) bool { - // Erase the token object. - *token = yaml_token_t{} // [Go] Is this necessary? - - // No tokens after STREAM-END or error. - if parser.stream_end_produced || parser.error != yaml_NO_ERROR { - return true - } - - // Ensure that the tokens queue contains enough tokens. - if !parser.token_available { - if !yaml_parser_fetch_more_tokens(parser) { - return false - } - } - - // Fetch the next token from the queue. - *token = parser.tokens[parser.tokens_head] - parser.tokens_head++ - parser.tokens_parsed++ - parser.token_available = false - - if token.typ == yaml_STREAM_END_TOKEN { - parser.stream_end_produced = true - } - return true -} - -// Set the scanner error and return false. -func yaml_parser_set_scanner_error(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string) bool { - parser.error = yaml_SCANNER_ERROR - parser.context = context - parser.context_mark = context_mark - parser.problem = problem - parser.problem_mark = parser.mark - return false -} - -func yaml_parser_set_scanner_tag_error(parser *yaml_parser_t, directive bool, context_mark yaml_mark_t, problem string) bool { - context := "while parsing a tag" - if directive { - context = "while parsing a %TAG directive" - } - return yaml_parser_set_scanner_error(parser, context, context_mark, problem) -} - -func trace(args ...interface{}) func() { - pargs := append([]interface{}{"+++"}, args...) - fmt.Println(pargs...) - pargs = append([]interface{}{"---"}, args...) - return func() { fmt.Println(pargs...) } -} - -// Ensure that the tokens queue contains at least one token which can be -// returned to the Parser. -func yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool { - // While we need more tokens to fetch, do it. - for { - // Check if we really need to fetch more tokens. - need_more_tokens := false - - if parser.tokens_head == len(parser.tokens) { - // Queue is empty. - need_more_tokens = true - } else { - // Check if any potential simple key may occupy the head position. - if !yaml_parser_stale_simple_keys(parser) { - return false - } - - for i := range parser.simple_keys { - simple_key := &parser.simple_keys[i] - if simple_key.possible && simple_key.token_number == parser.tokens_parsed { - need_more_tokens = true - break - } - } - } - - // We are finished. - if !need_more_tokens { - break - } - // Fetch the next token. - if !yaml_parser_fetch_next_token(parser) { - return false - } - } - - parser.token_available = true - return true -} - -// The dispatcher for token fetchers. -func yaml_parser_fetch_next_token(parser *yaml_parser_t) bool { - // Ensure that the buffer is initialized. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - // Check if we just started scanning. Fetch STREAM-START then. - if !parser.stream_start_produced { - return yaml_parser_fetch_stream_start(parser) - } - - // Eat whitespaces and comments until we reach the next token. - if !yaml_parser_scan_to_next_token(parser) { - return false - } - - // Remove obsolete potential simple keys. - if !yaml_parser_stale_simple_keys(parser) { - return false - } - - // Check the indentation level against the current column. - if !yaml_parser_unroll_indent(parser, parser.mark.column) { - return false - } - - // Ensure that the buffer contains at least 4 characters. 4 is the length - // of the longest indicators ('--- ' and '... '). - if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { - return false - } - - // Is it the end of the stream? - if is_z(parser.buffer, parser.buffer_pos) { - return yaml_parser_fetch_stream_end(parser) - } - - // Is it a directive? - if parser.mark.column == 0 && parser.buffer[parser.buffer_pos] == '%' { - return yaml_parser_fetch_directive(parser) - } - - buf := parser.buffer - pos := parser.buffer_pos - - // Is it the document start indicator? - if parser.mark.column == 0 && buf[pos] == '-' && buf[pos+1] == '-' && buf[pos+2] == '-' && is_blankz(buf, pos+3) { - return yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_START_TOKEN) - } - - // Is it the document end indicator? - if parser.mark.column == 0 && buf[pos] == '.' && buf[pos+1] == '.' && buf[pos+2] == '.' && is_blankz(buf, pos+3) { - return yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_END_TOKEN) - } - - // Is it the flow sequence start indicator? - if buf[pos] == '[' { - return yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_SEQUENCE_START_TOKEN) - } - - // Is it the flow mapping start indicator? - if parser.buffer[parser.buffer_pos] == '{' { - return yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_MAPPING_START_TOKEN) - } - - // Is it the flow sequence end indicator? - if parser.buffer[parser.buffer_pos] == ']' { - return yaml_parser_fetch_flow_collection_end(parser, - yaml_FLOW_SEQUENCE_END_TOKEN) - } - - // Is it the flow mapping end indicator? - if parser.buffer[parser.buffer_pos] == '}' { - return yaml_parser_fetch_flow_collection_end(parser, - yaml_FLOW_MAPPING_END_TOKEN) - } - - // Is it the flow entry indicator? - if parser.buffer[parser.buffer_pos] == ',' { - return yaml_parser_fetch_flow_entry(parser) - } - - // Is it the block entry indicator? - if parser.buffer[parser.buffer_pos] == '-' && is_blankz(parser.buffer, parser.buffer_pos+1) { - return yaml_parser_fetch_block_entry(parser) - } - - // Is it the key indicator? - if parser.buffer[parser.buffer_pos] == '?' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) { - return yaml_parser_fetch_key(parser) - } - - // Is it the value indicator? - if parser.buffer[parser.buffer_pos] == ':' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) { - return yaml_parser_fetch_value(parser) - } - - // Is it an alias? - if parser.buffer[parser.buffer_pos] == '*' { - return yaml_parser_fetch_anchor(parser, yaml_ALIAS_TOKEN) - } - - // Is it an anchor? - if parser.buffer[parser.buffer_pos] == '&' { - return yaml_parser_fetch_anchor(parser, yaml_ANCHOR_TOKEN) - } - - // Is it a tag? - if parser.buffer[parser.buffer_pos] == '!' { - return yaml_parser_fetch_tag(parser) - } - - // Is it a literal scalar? - if parser.buffer[parser.buffer_pos] == '|' && parser.flow_level == 0 { - return yaml_parser_fetch_block_scalar(parser, true) - } - - // Is it a folded scalar? - if parser.buffer[parser.buffer_pos] == '>' && parser.flow_level == 0 { - return yaml_parser_fetch_block_scalar(parser, false) - } - - // Is it a single-quoted scalar? - if parser.buffer[parser.buffer_pos] == '\'' { - return yaml_parser_fetch_flow_scalar(parser, true) - } - - // Is it a double-quoted scalar? - if parser.buffer[parser.buffer_pos] == '"' { - return yaml_parser_fetch_flow_scalar(parser, false) - } - - // Is it a plain scalar? - // - // A plain scalar may start with any non-blank characters except - // - // '-', '?', ':', ',', '[', ']', '{', '}', - // '#', '&', '*', '!', '|', '>', '\'', '\"', - // '%', '@', '`'. - // - // In the block context (and, for the '-' indicator, in the flow context - // too), it may also start with the characters - // - // '-', '?', ':' - // - // if it is followed by a non-space character. - // - // The last rule is more restrictive than the specification requires. - // [Go] Make this logic more reasonable. - //switch parser.buffer[parser.buffer_pos] { - //case '-', '?', ':', ',', '?', '-', ',', ':', ']', '[', '}', '{', '&', '#', '!', '*', '>', '|', '"', '\'', '@', '%', '-', '`': - //} - if !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '-' || - parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':' || - parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '[' || - parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' || - parser.buffer[parser.buffer_pos] == '}' || parser.buffer[parser.buffer_pos] == '#' || - parser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '*' || - parser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '|' || - parser.buffer[parser.buffer_pos] == '>' || parser.buffer[parser.buffer_pos] == '\'' || - parser.buffer[parser.buffer_pos] == '"' || parser.buffer[parser.buffer_pos] == '%' || - parser.buffer[parser.buffer_pos] == '@' || parser.buffer[parser.buffer_pos] == '`') || - (parser.buffer[parser.buffer_pos] == '-' && !is_blank(parser.buffer, parser.buffer_pos+1)) || - (parser.flow_level == 0 && - (parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':') && - !is_blankz(parser.buffer, parser.buffer_pos+1)) { - return yaml_parser_fetch_plain_scalar(parser) - } - - // If we don't determine the token type so far, it is an error. - return yaml_parser_set_scanner_error(parser, - "while scanning for the next token", parser.mark, - "found character that cannot start any token") -} - -// Check the list of potential simple keys and remove the positions that -// cannot contain simple keys anymore. -func yaml_parser_stale_simple_keys(parser *yaml_parser_t) bool { - // Check for a potential simple key for each flow level. - for i := range parser.simple_keys { - simple_key := &parser.simple_keys[i] - - // The specification requires that a simple key - // - // - is limited to a single line, - // - is shorter than 1024 characters. - if simple_key.possible && (simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index) { - - // Check if the potential simple key to be removed is required. - if simple_key.required { - return yaml_parser_set_scanner_error(parser, - "while scanning a simple key", simple_key.mark, - "could not find expected ':'") - } - simple_key.possible = false - } - } - return true -} - -// Check if a simple key may start at the current position and add it if -// needed. -func yaml_parser_save_simple_key(parser *yaml_parser_t) bool { - // A simple key is required at the current position if the scanner is in - // the block context and the current column coincides with the indentation - // level. - - required := parser.flow_level == 0 && parser.indent == parser.mark.column - - // - // If the current position may start a simple key, save it. - // - if parser.simple_key_allowed { - simple_key := yaml_simple_key_t{ - possible: true, - required: required, - token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head), - } - simple_key.mark = parser.mark - - if !yaml_parser_remove_simple_key(parser) { - return false - } - parser.simple_keys[len(parser.simple_keys)-1] = simple_key - } - return true -} - -// Remove a potential simple key at the current flow level. -func yaml_parser_remove_simple_key(parser *yaml_parser_t) bool { - i := len(parser.simple_keys) - 1 - if parser.simple_keys[i].possible { - // If the key is required, it is an error. - if parser.simple_keys[i].required { - return yaml_parser_set_scanner_error(parser, - "while scanning a simple key", parser.simple_keys[i].mark, - "could not find expected ':'") - } - } - // Remove the key from the stack. - parser.simple_keys[i].possible = false - return true -} - -// Increase the flow level and resize the simple key list if needed. -func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool { - // Reset the simple key on the next level. - parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{}) - - // Increase the flow level. - parser.flow_level++ - return true -} - -// Decrease the flow level. -func yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool { - if parser.flow_level > 0 { - parser.flow_level-- - parser.simple_keys = parser.simple_keys[:len(parser.simple_keys)-1] - } - return true -} - -// Push the current indentation level to the stack and set the new level -// the current column is greater than the indentation level. In this case, -// append or insert the specified token into the token queue. -func yaml_parser_roll_indent(parser *yaml_parser_t, column, number int, typ yaml_token_type_t, mark yaml_mark_t) bool { - // In the flow context, do nothing. - if parser.flow_level > 0 { - return true - } - - if parser.indent < column { - // Push the current indentation level to the stack and set the new - // indentation level. - parser.indents = append(parser.indents, parser.indent) - parser.indent = column - - // Create a token and insert it into the queue. - token := yaml_token_t{ - typ: typ, - start_mark: mark, - end_mark: mark, - } - if number > -1 { - number -= parser.tokens_parsed - } - yaml_insert_token(parser, number, &token) - } - return true -} - -// Pop indentation levels from the indents stack until the current level -// becomes less or equal to the column. For each indentation level, append -// the BLOCK-END token. -func yaml_parser_unroll_indent(parser *yaml_parser_t, column int) bool { - // In the flow context, do nothing. - if parser.flow_level > 0 { - return true - } - - // Loop through the indentation levels in the stack. - for parser.indent > column { - // Create a token and append it to the queue. - token := yaml_token_t{ - typ: yaml_BLOCK_END_TOKEN, - start_mark: parser.mark, - end_mark: parser.mark, - } - yaml_insert_token(parser, -1, &token) - - // Pop the indentation level. - parser.indent = parser.indents[len(parser.indents)-1] - parser.indents = parser.indents[:len(parser.indents)-1] - } - return true -} - -// Initialize the scanner and produce the STREAM-START token. -func yaml_parser_fetch_stream_start(parser *yaml_parser_t) bool { - - // Set the initial indentation. - parser.indent = -1 - - // Initialize the simple key stack. - parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{}) - - // A simple key is allowed at the beginning of the stream. - parser.simple_key_allowed = true - - // We have started. - parser.stream_start_produced = true - - // Create the STREAM-START token and append it to the queue. - token := yaml_token_t{ - typ: yaml_STREAM_START_TOKEN, - start_mark: parser.mark, - end_mark: parser.mark, - encoding: parser.encoding, - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the STREAM-END token and shut down the scanner. -func yaml_parser_fetch_stream_end(parser *yaml_parser_t) bool { - - // Force new line. - if parser.mark.column != 0 { - parser.mark.column = 0 - parser.mark.line++ - } - - // Reset the indentation level. - if !yaml_parser_unroll_indent(parser, -1) { - return false - } - - // Reset simple keys. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - parser.simple_key_allowed = false - - // Create the STREAM-END token and append it to the queue. - token := yaml_token_t{ - typ: yaml_STREAM_END_TOKEN, - start_mark: parser.mark, - end_mark: parser.mark, - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce a VERSION-DIRECTIVE or TAG-DIRECTIVE token. -func yaml_parser_fetch_directive(parser *yaml_parser_t) bool { - // Reset the indentation level. - if !yaml_parser_unroll_indent(parser, -1) { - return false - } - - // Reset simple keys. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - parser.simple_key_allowed = false - - // Create the YAML-DIRECTIVE or TAG-DIRECTIVE token. - token := yaml_token_t{} - if !yaml_parser_scan_directive(parser, &token) { - return false - } - // Append the token to the queue. - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the DOCUMENT-START or DOCUMENT-END token. -func yaml_parser_fetch_document_indicator(parser *yaml_parser_t, typ yaml_token_type_t) bool { - // Reset the indentation level. - if !yaml_parser_unroll_indent(parser, -1) { - return false - } - - // Reset simple keys. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - parser.simple_key_allowed = false - - // Consume the token. - start_mark := parser.mark - - skip(parser) - skip(parser) - skip(parser) - - end_mark := parser.mark - - // Create the DOCUMENT-START or DOCUMENT-END token. - token := yaml_token_t{ - typ: typ, - start_mark: start_mark, - end_mark: end_mark, - } - // Append the token to the queue. - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the FLOW-SEQUENCE-START or FLOW-MAPPING-START token. -func yaml_parser_fetch_flow_collection_start(parser *yaml_parser_t, typ yaml_token_type_t) bool { - // The indicators '[' and '{' may start a simple key. - if !yaml_parser_save_simple_key(parser) { - return false - } - - // Increase the flow level. - if !yaml_parser_increase_flow_level(parser) { - return false - } - - // A simple key may follow the indicators '[' and '{'. - parser.simple_key_allowed = true - - // Consume the token. - start_mark := parser.mark - skip(parser) - end_mark := parser.mark - - // Create the FLOW-SEQUENCE-START of FLOW-MAPPING-START token. - token := yaml_token_t{ - typ: typ, - start_mark: start_mark, - end_mark: end_mark, - } - // Append the token to the queue. - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the FLOW-SEQUENCE-END or FLOW-MAPPING-END token. -func yaml_parser_fetch_flow_collection_end(parser *yaml_parser_t, typ yaml_token_type_t) bool { - // Reset any potential simple key on the current flow level. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - // Decrease the flow level. - if !yaml_parser_decrease_flow_level(parser) { - return false - } - - // No simple keys after the indicators ']' and '}'. - parser.simple_key_allowed = false - - // Consume the token. - - start_mark := parser.mark - skip(parser) - end_mark := parser.mark - - // Create the FLOW-SEQUENCE-END of FLOW-MAPPING-END token. - token := yaml_token_t{ - typ: typ, - start_mark: start_mark, - end_mark: end_mark, - } - // Append the token to the queue. - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the FLOW-ENTRY token. -func yaml_parser_fetch_flow_entry(parser *yaml_parser_t) bool { - // Reset any potential simple keys on the current flow level. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - // Simple keys are allowed after ','. - parser.simple_key_allowed = true - - // Consume the token. - start_mark := parser.mark - skip(parser) - end_mark := parser.mark - - // Create the FLOW-ENTRY token and append it to the queue. - token := yaml_token_t{ - typ: yaml_FLOW_ENTRY_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the BLOCK-ENTRY token. -func yaml_parser_fetch_block_entry(parser *yaml_parser_t) bool { - // Check if the scanner is in the block context. - if parser.flow_level == 0 { - // Check if we are allowed to start a new entry. - if !parser.simple_key_allowed { - return yaml_parser_set_scanner_error(parser, "", parser.mark, - "block sequence entries are not allowed in this context") - } - // Add the BLOCK-SEQUENCE-START token if needed. - if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_SEQUENCE_START_TOKEN, parser.mark) { - return false - } - } else { - // It is an error for the '-' indicator to occur in the flow context, - // but we let the Parser detect and report about it because the Parser - // is able to point to the context. - } - - // Reset any potential simple keys on the current flow level. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - // Simple keys are allowed after '-'. - parser.simple_key_allowed = true - - // Consume the token. - start_mark := parser.mark - skip(parser) - end_mark := parser.mark - - // Create the BLOCK-ENTRY token and append it to the queue. - token := yaml_token_t{ - typ: yaml_BLOCK_ENTRY_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the KEY token. -func yaml_parser_fetch_key(parser *yaml_parser_t) bool { - - // In the block context, additional checks are required. - if parser.flow_level == 0 { - // Check if we are allowed to start a new key (not nessesary simple). - if !parser.simple_key_allowed { - return yaml_parser_set_scanner_error(parser, "", parser.mark, - "mapping keys are not allowed in this context") - } - // Add the BLOCK-MAPPING-START token if needed. - if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) { - return false - } - } - - // Reset any potential simple keys on the current flow level. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - // Simple keys are allowed after '?' in the block context. - parser.simple_key_allowed = parser.flow_level == 0 - - // Consume the token. - start_mark := parser.mark - skip(parser) - end_mark := parser.mark - - // Create the KEY token and append it to the queue. - token := yaml_token_t{ - typ: yaml_KEY_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the VALUE token. -func yaml_parser_fetch_value(parser *yaml_parser_t) bool { - - simple_key := &parser.simple_keys[len(parser.simple_keys)-1] - - // Have we found a simple key? - if simple_key.possible { - // Create the KEY token and insert it into the queue. - token := yaml_token_t{ - typ: yaml_KEY_TOKEN, - start_mark: simple_key.mark, - end_mark: simple_key.mark, - } - yaml_insert_token(parser, simple_key.token_number-parser.tokens_parsed, &token) - - // In the block context, we may need to add the BLOCK-MAPPING-START token. - if !yaml_parser_roll_indent(parser, simple_key.mark.column, - simple_key.token_number, - yaml_BLOCK_MAPPING_START_TOKEN, simple_key.mark) { - return false - } - - // Remove the simple key. - simple_key.possible = false - - // A simple key cannot follow another simple key. - parser.simple_key_allowed = false - - } else { - // The ':' indicator follows a complex key. - - // In the block context, extra checks are required. - if parser.flow_level == 0 { - - // Check if we are allowed to start a complex value. - if !parser.simple_key_allowed { - return yaml_parser_set_scanner_error(parser, "", parser.mark, - "mapping values are not allowed in this context") - } - - // Add the BLOCK-MAPPING-START token if needed. - if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) { - return false - } - } - - // Simple keys after ':' are allowed in the block context. - parser.simple_key_allowed = parser.flow_level == 0 - } - - // Consume the token. - start_mark := parser.mark - skip(parser) - end_mark := parser.mark - - // Create the VALUE token and append it to the queue. - token := yaml_token_t{ - typ: yaml_VALUE_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the ALIAS or ANCHOR token. -func yaml_parser_fetch_anchor(parser *yaml_parser_t, typ yaml_token_type_t) bool { - // An anchor or an alias could be a simple key. - if !yaml_parser_save_simple_key(parser) { - return false - } - - // A simple key cannot follow an anchor or an alias. - parser.simple_key_allowed = false - - // Create the ALIAS or ANCHOR token and append it to the queue. - var token yaml_token_t - if !yaml_parser_scan_anchor(parser, &token, typ) { - return false - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the TAG token. -func yaml_parser_fetch_tag(parser *yaml_parser_t) bool { - // A tag could be a simple key. - if !yaml_parser_save_simple_key(parser) { - return false - } - - // A simple key cannot follow a tag. - parser.simple_key_allowed = false - - // Create the TAG token and append it to the queue. - var token yaml_token_t - if !yaml_parser_scan_tag(parser, &token) { - return false - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the SCALAR(...,literal) or SCALAR(...,folded) tokens. -func yaml_parser_fetch_block_scalar(parser *yaml_parser_t, literal bool) bool { - // Remove any potential simple keys. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - // A simple key may follow a block scalar. - parser.simple_key_allowed = true - - // Create the SCALAR token and append it to the queue. - var token yaml_token_t - if !yaml_parser_scan_block_scalar(parser, &token, literal) { - return false - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the SCALAR(...,single-quoted) or SCALAR(...,double-quoted) tokens. -func yaml_parser_fetch_flow_scalar(parser *yaml_parser_t, single bool) bool { - // A plain scalar could be a simple key. - if !yaml_parser_save_simple_key(parser) { - return false - } - - // A simple key cannot follow a flow scalar. - parser.simple_key_allowed = false - - // Create the SCALAR token and append it to the queue. - var token yaml_token_t - if !yaml_parser_scan_flow_scalar(parser, &token, single) { - return false - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the SCALAR(...,plain) token. -func yaml_parser_fetch_plain_scalar(parser *yaml_parser_t) bool { - // A plain scalar could be a simple key. - if !yaml_parser_save_simple_key(parser) { - return false - } - - // A simple key cannot follow a flow scalar. - parser.simple_key_allowed = false - - // Create the SCALAR token and append it to the queue. - var token yaml_token_t - if !yaml_parser_scan_plain_scalar(parser, &token) { - return false - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Eat whitespaces and comments until the next token is found. -func yaml_parser_scan_to_next_token(parser *yaml_parser_t) bool { - - // Until the next token is not found. - for { - // Allow the BOM mark to start a line. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - if parser.mark.column == 0 && is_bom(parser.buffer, parser.buffer_pos) { - skip(parser) - } - - // Eat whitespaces. - // Tabs are allowed: - // - in the flow context - // - in the block context, but not at the beginning of the line or - // after '-', '?', or ':' (complex value). - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - for parser.buffer[parser.buffer_pos] == ' ' || ((parser.flow_level > 0 || !parser.simple_key_allowed) && parser.buffer[parser.buffer_pos] == '\t') { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Eat a comment until a line break. - if parser.buffer[parser.buffer_pos] == '#' { - for !is_breakz(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - } - - // If it is a line break, eat it. - if is_break(parser.buffer, parser.buffer_pos) { - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - skip_line(parser) - - // In the block context, a new line may start a simple key. - if parser.flow_level == 0 { - parser.simple_key_allowed = true - } - } else { - break // We have found a token. - } - } - - return true -} - -// Scan a YAML-DIRECTIVE or TAG-DIRECTIVE token. -// -// Scope: -// %YAML 1.1 # a comment \n -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -// %TAG !yaml! tag:yaml.org,2002: \n -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -// -func yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token_t) bool { - // Eat '%'. - start_mark := parser.mark - skip(parser) - - // Scan the directive name. - var name []byte - if !yaml_parser_scan_directive_name(parser, start_mark, &name) { - return false - } - - // Is it a YAML directive? - if bytes.Equal(name, []byte("YAML")) { - // Scan the VERSION directive value. - var major, minor int8 - if !yaml_parser_scan_version_directive_value(parser, start_mark, &major, &minor) { - return false - } - end_mark := parser.mark - - // Create a VERSION-DIRECTIVE token. - *token = yaml_token_t{ - typ: yaml_VERSION_DIRECTIVE_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - major: major, - minor: minor, - } - - // Is it a TAG directive? - } else if bytes.Equal(name, []byte("TAG")) { - // Scan the TAG directive value. - var handle, prefix []byte - if !yaml_parser_scan_tag_directive_value(parser, start_mark, &handle, &prefix) { - return false - } - end_mark := parser.mark - - // Create a TAG-DIRECTIVE token. - *token = yaml_token_t{ - typ: yaml_TAG_DIRECTIVE_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - value: handle, - prefix: prefix, - } - - // Unknown directive. - } else { - yaml_parser_set_scanner_error(parser, "while scanning a directive", - start_mark, "found unknown directive name") - return false - } - - // Eat the rest of the line including any comments. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - for is_blank(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - if parser.buffer[parser.buffer_pos] == '#' { - for !is_breakz(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - } - - // Check if we are at the end of the line. - if !is_breakz(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a directive", - start_mark, "did not find expected comment or line break") - return false - } - - // Eat a line break. - if is_break(parser.buffer, parser.buffer_pos) { - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - skip_line(parser) - } - - return true -} - -// Scan the directive name. -// -// Scope: -// %YAML 1.1 # a comment \n -// ^^^^ -// %TAG !yaml! tag:yaml.org,2002: \n -// ^^^ -// -func yaml_parser_scan_directive_name(parser *yaml_parser_t, start_mark yaml_mark_t, name *[]byte) bool { - // Consume the directive name. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - var s []byte - for is_alpha(parser.buffer, parser.buffer_pos) { - s = read(parser, s) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Check if the name is empty. - if len(s) == 0 { - yaml_parser_set_scanner_error(parser, "while scanning a directive", - start_mark, "could not find expected directive name") - return false - } - - // Check for an blank character after the name. - if !is_blankz(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a directive", - start_mark, "found unexpected non-alphabetical character") - return false - } - *name = s - return true -} - -// Scan the value of VERSION-DIRECTIVE. -// -// Scope: -// %YAML 1.1 # a comment \n -// ^^^^^^ -func yaml_parser_scan_version_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, major, minor *int8) bool { - // Eat whitespaces. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - for is_blank(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Consume the major version number. - if !yaml_parser_scan_version_directive_number(parser, start_mark, major) { - return false - } - - // Eat '.'. - if parser.buffer[parser.buffer_pos] != '.' { - return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", - start_mark, "did not find expected digit or '.' character") - } - - skip(parser) - - // Consume the minor version number. - if !yaml_parser_scan_version_directive_number(parser, start_mark, minor) { - return false - } - return true -} - -const max_number_length = 2 - -// Scan the version number of VERSION-DIRECTIVE. -// -// Scope: -// %YAML 1.1 # a comment \n -// ^ -// %YAML 1.1 # a comment \n -// ^ -func yaml_parser_scan_version_directive_number(parser *yaml_parser_t, start_mark yaml_mark_t, number *int8) bool { - - // Repeat while the next character is digit. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - var value, length int8 - for is_digit(parser.buffer, parser.buffer_pos) { - // Check if the number is too long. - length++ - if length > max_number_length { - return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", - start_mark, "found extremely long version number") - } - value = value*10 + int8(as_digit(parser.buffer, parser.buffer_pos)) - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Check if the number was present. - if length == 0 { - return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", - start_mark, "did not find expected version number") - } - *number = value - return true -} - -// Scan the value of a TAG-DIRECTIVE token. -// -// Scope: -// %TAG !yaml! tag:yaml.org,2002: \n -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -// -func yaml_parser_scan_tag_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, handle, prefix *[]byte) bool { - var handle_value, prefix_value []byte - - // Eat whitespaces. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - for is_blank(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Scan a handle. - if !yaml_parser_scan_tag_handle(parser, true, start_mark, &handle_value) { - return false - } - - // Expect a whitespace. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - if !is_blank(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive", - start_mark, "did not find expected whitespace") - return false - } - - // Eat whitespaces. - for is_blank(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Scan a prefix. - if !yaml_parser_scan_tag_uri(parser, true, nil, start_mark, &prefix_value) { - return false - } - - // Expect a whitespace or line break. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - if !is_blankz(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive", - start_mark, "did not find expected whitespace or line break") - return false - } - - *handle = handle_value - *prefix = prefix_value - return true -} - -func yaml_parser_scan_anchor(parser *yaml_parser_t, token *yaml_token_t, typ yaml_token_type_t) bool { - var s []byte - - // Eat the indicator character. - start_mark := parser.mark - skip(parser) - - // Consume the value. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - for is_alpha(parser.buffer, parser.buffer_pos) { - s = read(parser, s) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - end_mark := parser.mark - - /* - * Check if length of the anchor is greater than 0 and it is followed by - * a whitespace character or one of the indicators: - * - * '?', ':', ',', ']', '}', '%', '@', '`'. - */ - - if len(s) == 0 || - !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '?' || - parser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == ',' || - parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '}' || - parser.buffer[parser.buffer_pos] == '%' || parser.buffer[parser.buffer_pos] == '@' || - parser.buffer[parser.buffer_pos] == '`') { - context := "while scanning an alias" - if typ == yaml_ANCHOR_TOKEN { - context = "while scanning an anchor" - } - yaml_parser_set_scanner_error(parser, context, start_mark, - "did not find expected alphabetic or numeric character") - return false - } - - // Create a token. - *token = yaml_token_t{ - typ: typ, - start_mark: start_mark, - end_mark: end_mark, - value: s, - } - - return true -} - -/* - * Scan a TAG token. - */ - -func yaml_parser_scan_tag(parser *yaml_parser_t, token *yaml_token_t) bool { - var handle, suffix []byte - - start_mark := parser.mark - - // Check if the tag is in the canonical form. - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - - if parser.buffer[parser.buffer_pos+1] == '<' { - // Keep the handle as '' - - // Eat '!<' - skip(parser) - skip(parser) - - // Consume the tag value. - if !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) { - return false - } - - // Check for '>' and eat it. - if parser.buffer[parser.buffer_pos] != '>' { - yaml_parser_set_scanner_error(parser, "while scanning a tag", - start_mark, "did not find the expected '>'") - return false - } - - skip(parser) - } else { - // The tag has either the '!suffix' or the '!handle!suffix' form. - - // First, try to scan a handle. - if !yaml_parser_scan_tag_handle(parser, false, start_mark, &handle) { - return false - } - - // Check if it is, indeed, handle. - if handle[0] == '!' && len(handle) > 1 && handle[len(handle)-1] == '!' { - // Scan the suffix now. - if !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) { - return false - } - } else { - // It wasn't a handle after all. Scan the rest of the tag. - if !yaml_parser_scan_tag_uri(parser, false, handle, start_mark, &suffix) { - return false - } - - // Set the handle to '!'. - handle = []byte{'!'} - - // A special case: the '!' tag. Set the handle to '' and the - // suffix to '!'. - if len(suffix) == 0 { - handle, suffix = suffix, handle - } - } - } - - // Check the character which ends the tag. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - if !is_blankz(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a tag", - start_mark, "did not find expected whitespace or line break") - return false - } - - end_mark := parser.mark - - // Create a token. - *token = yaml_token_t{ - typ: yaml_TAG_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - value: handle, - suffix: suffix, - } - return true -} - -// Scan a tag handle. -func yaml_parser_scan_tag_handle(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, handle *[]byte) bool { - // Check the initial '!' character. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - if parser.buffer[parser.buffer_pos] != '!' { - yaml_parser_set_scanner_tag_error(parser, directive, - start_mark, "did not find expected '!'") - return false - } - - var s []byte - - // Copy the '!' character. - s = read(parser, s) - - // Copy all subsequent alphabetical and numerical characters. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - for is_alpha(parser.buffer, parser.buffer_pos) { - s = read(parser, s) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Check if the trailing character is '!' and copy it. - if parser.buffer[parser.buffer_pos] == '!' { - s = read(parser, s) - } else { - // It's either the '!' tag or not really a tag handle. If it's a %TAG - // directive, it's an error. If it's a tag token, it must be a part of URI. - if directive && string(s) != "!" { - yaml_parser_set_scanner_tag_error(parser, directive, - start_mark, "did not find expected '!'") - return false - } - } - - *handle = s - return true -} - -// Scan a tag. -func yaml_parser_scan_tag_uri(parser *yaml_parser_t, directive bool, head []byte, start_mark yaml_mark_t, uri *[]byte) bool { - //size_t length = head ? strlen((char *)head) : 0 - var s []byte - hasTag := len(head) > 0 - - // Copy the head if needed. - // - // Note that we don't copy the leading '!' character. - if len(head) > 1 { - s = append(s, head[1:]...) - } - - // Scan the tag. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - // The set of characters that may appear in URI is as follows: - // - // '0'-'9', 'A'-'Z', 'a'-'z', '_', '-', ';', '/', '?', ':', '@', '&', - // '=', '+', '$', ',', '.', '!', '~', '*', '\'', '(', ')', '[', ']', - // '%'. - // [Go] Convert this into more reasonable logic. - for is_alpha(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == ';' || - parser.buffer[parser.buffer_pos] == '/' || parser.buffer[parser.buffer_pos] == '?' || - parser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == '@' || - parser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '=' || - parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '$' || - parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '.' || - parser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '~' || - parser.buffer[parser.buffer_pos] == '*' || parser.buffer[parser.buffer_pos] == '\'' || - parser.buffer[parser.buffer_pos] == '(' || parser.buffer[parser.buffer_pos] == ')' || - parser.buffer[parser.buffer_pos] == '[' || parser.buffer[parser.buffer_pos] == ']' || - parser.buffer[parser.buffer_pos] == '%' { - // Check if it is a URI-escape sequence. - if parser.buffer[parser.buffer_pos] == '%' { - if !yaml_parser_scan_uri_escapes(parser, directive, start_mark, &s) { - return false - } - } else { - s = read(parser, s) - } - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - hasTag = true - } - - if !hasTag { - yaml_parser_set_scanner_tag_error(parser, directive, - start_mark, "did not find expected tag URI") - return false - } - *uri = s - return true -} - -// Decode an URI-escape sequence corresponding to a single UTF-8 character. -func yaml_parser_scan_uri_escapes(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, s *[]byte) bool { - - // Decode the required number of characters. - w := 1024 - for w > 0 { - // Check for a URI-escaped octet. - if parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) { - return false - } - - if !(parser.buffer[parser.buffer_pos] == '%' && - is_hex(parser.buffer, parser.buffer_pos+1) && - is_hex(parser.buffer, parser.buffer_pos+2)) { - return yaml_parser_set_scanner_tag_error(parser, directive, - start_mark, "did not find URI escaped octet") - } - - // Get the octet. - octet := byte((as_hex(parser.buffer, parser.buffer_pos+1) << 4) + as_hex(parser.buffer, parser.buffer_pos+2)) - - // If it is the leading octet, determine the length of the UTF-8 sequence. - if w == 1024 { - w = width(octet) - if w == 0 { - return yaml_parser_set_scanner_tag_error(parser, directive, - start_mark, "found an incorrect leading UTF-8 octet") - } - } else { - // Check if the trailing octet is correct. - if octet&0xC0 != 0x80 { - return yaml_parser_set_scanner_tag_error(parser, directive, - start_mark, "found an incorrect trailing UTF-8 octet") - } - } - - // Copy the octet and move the pointers. - *s = append(*s, octet) - skip(parser) - skip(parser) - skip(parser) - w-- - } - return true -} - -// Scan a block scalar. -func yaml_parser_scan_block_scalar(parser *yaml_parser_t, token *yaml_token_t, literal bool) bool { - // Eat the indicator '|' or '>'. - start_mark := parser.mark - skip(parser) - - // Scan the additional block scalar indicators. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - // Check for a chomping indicator. - var chomping, increment int - if parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' { - // Set the chomping method and eat the indicator. - if parser.buffer[parser.buffer_pos] == '+' { - chomping = +1 - } else { - chomping = -1 - } - skip(parser) - - // Check for an indentation indicator. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - if is_digit(parser.buffer, parser.buffer_pos) { - // Check that the indentation is greater than 0. - if parser.buffer[parser.buffer_pos] == '0' { - yaml_parser_set_scanner_error(parser, "while scanning a block scalar", - start_mark, "found an indentation indicator equal to 0") - return false - } - - // Get the indentation level and eat the indicator. - increment = as_digit(parser.buffer, parser.buffer_pos) - skip(parser) - } - - } else if is_digit(parser.buffer, parser.buffer_pos) { - // Do the same as above, but in the opposite order. - - if parser.buffer[parser.buffer_pos] == '0' { - yaml_parser_set_scanner_error(parser, "while scanning a block scalar", - start_mark, "found an indentation indicator equal to 0") - return false - } - increment = as_digit(parser.buffer, parser.buffer_pos) - skip(parser) - - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - if parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' { - if parser.buffer[parser.buffer_pos] == '+' { - chomping = +1 - } else { - chomping = -1 - } - skip(parser) - } - } - - // Eat whitespaces and comments to the end of the line. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - for is_blank(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - if parser.buffer[parser.buffer_pos] == '#' { - for !is_breakz(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - } - - // Check if we are at the end of the line. - if !is_breakz(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a block scalar", - start_mark, "did not find expected comment or line break") - return false - } - - // Eat a line break. - if is_break(parser.buffer, parser.buffer_pos) { - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - skip_line(parser) - } - - end_mark := parser.mark - - // Set the indentation level if it was specified. - var indent int - if increment > 0 { - if parser.indent >= 0 { - indent = parser.indent + increment - } else { - indent = increment - } - } - - // Scan the leading line breaks and determine the indentation level if needed. - var s, leading_break, trailing_breaks []byte - if !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) { - return false - } - - // Scan the block scalar content. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - var leading_blank, trailing_blank bool - for parser.mark.column == indent && !is_z(parser.buffer, parser.buffer_pos) { - // We are at the beginning of a non-empty line. - - // Is it a trailing whitespace? - trailing_blank = is_blank(parser.buffer, parser.buffer_pos) - - // Check if we need to fold the leading line break. - if !literal && !leading_blank && !trailing_blank && len(leading_break) > 0 && leading_break[0] == '\n' { - // Do we need to join the lines by space? - if len(trailing_breaks) == 0 { - s = append(s, ' ') - } - } else { - s = append(s, leading_break...) - } - leading_break = leading_break[:0] - - // Append the remaining line breaks. - s = append(s, trailing_breaks...) - trailing_breaks = trailing_breaks[:0] - - // Is it a leading whitespace? - leading_blank = is_blank(parser.buffer, parser.buffer_pos) - - // Consume the current line. - for !is_breakz(parser.buffer, parser.buffer_pos) { - s = read(parser, s) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Consume the line break. - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - - leading_break = read_line(parser, leading_break) - - // Eat the following indentation spaces and line breaks. - if !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) { - return false - } - } - - // Chomp the tail. - if chomping != -1 { - s = append(s, leading_break...) - } - if chomping == 1 { - s = append(s, trailing_breaks...) - } - - // Create a token. - *token = yaml_token_t{ - typ: yaml_SCALAR_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - value: s, - style: yaml_LITERAL_SCALAR_STYLE, - } - if !literal { - token.style = yaml_FOLDED_SCALAR_STYLE - } - return true -} - -// Scan indentation spaces and line breaks for a block scalar. Determine the -// indentation level if needed. -func yaml_parser_scan_block_scalar_breaks(parser *yaml_parser_t, indent *int, breaks *[]byte, start_mark yaml_mark_t, end_mark *yaml_mark_t) bool { - *end_mark = parser.mark - - // Eat the indentation spaces and line breaks. - max_indent := 0 - for { - // Eat the indentation spaces. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - for (*indent == 0 || parser.mark.column < *indent) && is_space(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - if parser.mark.column > max_indent { - max_indent = parser.mark.column - } - - // Check for a tab character messing the indentation. - if (*indent == 0 || parser.mark.column < *indent) && is_tab(parser.buffer, parser.buffer_pos) { - return yaml_parser_set_scanner_error(parser, "while scanning a block scalar", - start_mark, "found a tab character where an indentation space is expected") - } - - // Have we found a non-empty line? - if !is_break(parser.buffer, parser.buffer_pos) { - break - } - - // Consume the line break. - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - // [Go] Should really be returning breaks instead. - *breaks = read_line(parser, *breaks) - *end_mark = parser.mark - } - - // Determine the indentation level if needed. - if *indent == 0 { - *indent = max_indent - if *indent < parser.indent+1 { - *indent = parser.indent + 1 - } - if *indent < 1 { - *indent = 1 - } - } - return true -} - -// Scan a quoted scalar. -func yaml_parser_scan_flow_scalar(parser *yaml_parser_t, token *yaml_token_t, single bool) bool { - // Eat the left quote. - start_mark := parser.mark - skip(parser) - - // Consume the content of the quoted scalar. - var s, leading_break, trailing_breaks, whitespaces []byte - for { - // Check that there are no document indicators at the beginning of the line. - if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { - return false - } - - if parser.mark.column == 0 && - ((parser.buffer[parser.buffer_pos+0] == '-' && - parser.buffer[parser.buffer_pos+1] == '-' && - parser.buffer[parser.buffer_pos+2] == '-') || - (parser.buffer[parser.buffer_pos+0] == '.' && - parser.buffer[parser.buffer_pos+1] == '.' && - parser.buffer[parser.buffer_pos+2] == '.')) && - is_blankz(parser.buffer, parser.buffer_pos+3) { - yaml_parser_set_scanner_error(parser, "while scanning a quoted scalar", - start_mark, "found unexpected document indicator") - return false - } - - // Check for EOF. - if is_z(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a quoted scalar", - start_mark, "found unexpected end of stream") - return false - } - - // Consume non-blank characters. - leading_blanks := false - for !is_blankz(parser.buffer, parser.buffer_pos) { - if single && parser.buffer[parser.buffer_pos] == '\'' && parser.buffer[parser.buffer_pos+1] == '\'' { - // Is is an escaped single quote. - s = append(s, '\'') - skip(parser) - skip(parser) - - } else if single && parser.buffer[parser.buffer_pos] == '\'' { - // It is a right single quote. - break - } else if !single && parser.buffer[parser.buffer_pos] == '"' { - // It is a right double quote. - break - - } else if !single && parser.buffer[parser.buffer_pos] == '\\' && is_break(parser.buffer, parser.buffer_pos+1) { - // It is an escaped line break. - if parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) { - return false - } - skip(parser) - skip_line(parser) - leading_blanks = true - break - - } else if !single && parser.buffer[parser.buffer_pos] == '\\' { - // It is an escape sequence. - code_length := 0 - - // Check the escape character. - switch parser.buffer[parser.buffer_pos+1] { - case '0': - s = append(s, 0) - case 'a': - s = append(s, '\x07') - case 'b': - s = append(s, '\x08') - case 't', '\t': - s = append(s, '\x09') - case 'n': - s = append(s, '\x0A') - case 'v': - s = append(s, '\x0B') - case 'f': - s = append(s, '\x0C') - case 'r': - s = append(s, '\x0D') - case 'e': - s = append(s, '\x1B') - case ' ': - s = append(s, '\x20') - case '"': - s = append(s, '"') - case '\'': - s = append(s, '\'') - case '\\': - s = append(s, '\\') - case 'N': // NEL (#x85) - s = append(s, '\xC2') - s = append(s, '\x85') - case '_': // #xA0 - s = append(s, '\xC2') - s = append(s, '\xA0') - case 'L': // LS (#x2028) - s = append(s, '\xE2') - s = append(s, '\x80') - s = append(s, '\xA8') - case 'P': // PS (#x2029) - s = append(s, '\xE2') - s = append(s, '\x80') - s = append(s, '\xA9') - case 'x': - code_length = 2 - case 'u': - code_length = 4 - case 'U': - code_length = 8 - default: - yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", - start_mark, "found unknown escape character") - return false - } - - skip(parser) - skip(parser) - - // Consume an arbitrary escape code. - if code_length > 0 { - var value int - - // Scan the character value. - if parser.unread < code_length && !yaml_parser_update_buffer(parser, code_length) { - return false - } - for k := 0; k < code_length; k++ { - if !is_hex(parser.buffer, parser.buffer_pos+k) { - yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", - start_mark, "did not find expected hexdecimal number") - return false - } - value = (value << 4) + as_hex(parser.buffer, parser.buffer_pos+k) - } - - // Check the value and write the character. - if (value >= 0xD800 && value <= 0xDFFF) || value > 0x10FFFF { - yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", - start_mark, "found invalid Unicode character escape code") - return false - } - if value <= 0x7F { - s = append(s, byte(value)) - } else if value <= 0x7FF { - s = append(s, byte(0xC0+(value>>6))) - s = append(s, byte(0x80+(value&0x3F))) - } else if value <= 0xFFFF { - s = append(s, byte(0xE0+(value>>12))) - s = append(s, byte(0x80+((value>>6)&0x3F))) - s = append(s, byte(0x80+(value&0x3F))) - } else { - s = append(s, byte(0xF0+(value>>18))) - s = append(s, byte(0x80+((value>>12)&0x3F))) - s = append(s, byte(0x80+((value>>6)&0x3F))) - s = append(s, byte(0x80+(value&0x3F))) - } - - // Advance the pointer. - for k := 0; k < code_length; k++ { - skip(parser) - } - } - } else { - // It is a non-escaped non-blank character. - s = read(parser, s) - } - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - } - - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - // Check if we are at the end of the scalar. - if single { - if parser.buffer[parser.buffer_pos] == '\'' { - break - } - } else { - if parser.buffer[parser.buffer_pos] == '"' { - break - } - } - - // Consume blank characters. - for is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) { - if is_blank(parser.buffer, parser.buffer_pos) { - // Consume a space or a tab character. - if !leading_blanks { - whitespaces = read(parser, whitespaces) - } else { - skip(parser) - } - } else { - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - - // Check if it is a first line break. - if !leading_blanks { - whitespaces = whitespaces[:0] - leading_break = read_line(parser, leading_break) - leading_blanks = true - } else { - trailing_breaks = read_line(parser, trailing_breaks) - } - } - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Join the whitespaces or fold line breaks. - if leading_blanks { - // Do we need to fold line breaks? - if len(leading_break) > 0 && leading_break[0] == '\n' { - if len(trailing_breaks) == 0 { - s = append(s, ' ') - } else { - s = append(s, trailing_breaks...) - } - } else { - s = append(s, leading_break...) - s = append(s, trailing_breaks...) - } - trailing_breaks = trailing_breaks[:0] - leading_break = leading_break[:0] - } else { - s = append(s, whitespaces...) - whitespaces = whitespaces[:0] - } - } - - // Eat the right quote. - skip(parser) - end_mark := parser.mark - - // Create a token. - *token = yaml_token_t{ - typ: yaml_SCALAR_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - value: s, - style: yaml_SINGLE_QUOTED_SCALAR_STYLE, - } - if !single { - token.style = yaml_DOUBLE_QUOTED_SCALAR_STYLE - } - return true -} - -// Scan a plain scalar. -func yaml_parser_scan_plain_scalar(parser *yaml_parser_t, token *yaml_token_t) bool { - - var s, leading_break, trailing_breaks, whitespaces []byte - var leading_blanks bool - var indent = parser.indent + 1 - - start_mark := parser.mark - end_mark := parser.mark - - // Consume the content of the plain scalar. - for { - // Check for a document indicator. - if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { - return false - } - if parser.mark.column == 0 && - ((parser.buffer[parser.buffer_pos+0] == '-' && - parser.buffer[parser.buffer_pos+1] == '-' && - parser.buffer[parser.buffer_pos+2] == '-') || - (parser.buffer[parser.buffer_pos+0] == '.' && - parser.buffer[parser.buffer_pos+1] == '.' && - parser.buffer[parser.buffer_pos+2] == '.')) && - is_blankz(parser.buffer, parser.buffer_pos+3) { - break - } - - // Check for a comment. - if parser.buffer[parser.buffer_pos] == '#' { - break - } - - // Consume non-blank characters. - for !is_blankz(parser.buffer, parser.buffer_pos) { - - // Check for indicators that may end a plain scalar. - if (parser.buffer[parser.buffer_pos] == ':' && is_blankz(parser.buffer, parser.buffer_pos+1)) || - (parser.flow_level > 0 && - (parser.buffer[parser.buffer_pos] == ',' || - parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == '[' || - parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' || - parser.buffer[parser.buffer_pos] == '}')) { - break - } - - // Check if we need to join whitespaces and breaks. - if leading_blanks || len(whitespaces) > 0 { - if leading_blanks { - // Do we need to fold line breaks? - if leading_break[0] == '\n' { - if len(trailing_breaks) == 0 { - s = append(s, ' ') - } else { - s = append(s, trailing_breaks...) - } - } else { - s = append(s, leading_break...) - s = append(s, trailing_breaks...) - } - trailing_breaks = trailing_breaks[:0] - leading_break = leading_break[:0] - leading_blanks = false - } else { - s = append(s, whitespaces...) - whitespaces = whitespaces[:0] - } - } - - // Copy the character. - s = read(parser, s) - - end_mark = parser.mark - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - } - - // Is it the end? - if !(is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos)) { - break - } - - // Consume blank characters. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - for is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) { - if is_blank(parser.buffer, parser.buffer_pos) { - - // Check for tab characters that abuse indentation. - if leading_blanks && parser.mark.column < indent && is_tab(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a plain scalar", - start_mark, "found a tab character that violates indentation") - return false - } - - // Consume a space or a tab character. - if !leading_blanks { - whitespaces = read(parser, whitespaces) - } else { - skip(parser) - } - } else { - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - - // Check if it is a first line break. - if !leading_blanks { - whitespaces = whitespaces[:0] - leading_break = read_line(parser, leading_break) - leading_blanks = true - } else { - trailing_breaks = read_line(parser, trailing_breaks) - } - } - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Check indentation level. - if parser.flow_level == 0 && parser.mark.column < indent { - break - } - } - - // Create a token. - *token = yaml_token_t{ - typ: yaml_SCALAR_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - value: s, - style: yaml_PLAIN_SCALAR_STYLE, - } - - // Note that we change the 'simple_key_allowed' flag. - if leading_blanks { - parser.simple_key_allowed = true - } - return true -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/sorter.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/sorter.go deleted file mode 100644 index 4c45e660a..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/sorter.go +++ /dev/null @@ -1,113 +0,0 @@ -package yaml - -import ( - "reflect" - "unicode" -) - -type keyList []reflect.Value - -func (l keyList) Len() int { return len(l) } -func (l keyList) Swap(i, j int) { l[i], l[j] = l[j], l[i] } -func (l keyList) Less(i, j int) bool { - a := l[i] - b := l[j] - ak := a.Kind() - bk := b.Kind() - for (ak == reflect.Interface || ak == reflect.Ptr) && !a.IsNil() { - a = a.Elem() - ak = a.Kind() - } - for (bk == reflect.Interface || bk == reflect.Ptr) && !b.IsNil() { - b = b.Elem() - bk = b.Kind() - } - af, aok := keyFloat(a) - bf, bok := keyFloat(b) - if aok && bok { - if af != bf { - return af < bf - } - if ak != bk { - return ak < bk - } - return numLess(a, b) - } - if ak != reflect.String || bk != reflect.String { - return ak < bk - } - ar, br := []rune(a.String()), []rune(b.String()) - for i := 0; i < len(ar) && i < len(br); i++ { - if ar[i] == br[i] { - continue - } - al := unicode.IsLetter(ar[i]) - bl := unicode.IsLetter(br[i]) - if al && bl { - return ar[i] < br[i] - } - if al || bl { - return bl - } - var ai, bi int - var an, bn int64 - if ar[i] == '0' || br[i] == '0' { - for j := i-1; j >= 0 && unicode.IsDigit(ar[j]); j-- { - if ar[j] != '0' { - an = 1 - bn = 1 - break - } - } - } - for ai = i; ai < len(ar) && unicode.IsDigit(ar[ai]); ai++ { - an = an*10 + int64(ar[ai]-'0') - } - for bi = i; bi < len(br) && unicode.IsDigit(br[bi]); bi++ { - bn = bn*10 + int64(br[bi]-'0') - } - if an != bn { - return an < bn - } - if ai != bi { - return ai < bi - } - return ar[i] < br[i] - } - return len(ar) < len(br) -} - -// keyFloat returns a float value for v if it is a number/bool -// and whether it is a number/bool or not. -func keyFloat(v reflect.Value) (f float64, ok bool) { - switch v.Kind() { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return float64(v.Int()), true - case reflect.Float32, reflect.Float64: - return v.Float(), true - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - return float64(v.Uint()), true - case reflect.Bool: - if v.Bool() { - return 1, true - } - return 0, true - } - return 0, false -} - -// numLess returns whether a < b. -// a and b must necessarily have the same kind. -func numLess(a, b reflect.Value) bool { - switch a.Kind() { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return a.Int() < b.Int() - case reflect.Float32, reflect.Float64: - return a.Float() < b.Float() - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - return a.Uint() < b.Uint() - case reflect.Bool: - return !a.Bool() && b.Bool() - } - panic("not a number") -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/writerc.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/writerc.go deleted file mode 100644 index a2dde608c..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/writerc.go +++ /dev/null @@ -1,26 +0,0 @@ -package yaml - -// Set the writer error and return false. -func yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem string) bool { - emitter.error = yaml_WRITER_ERROR - emitter.problem = problem - return false -} - -// Flush the output buffer. -func yaml_emitter_flush(emitter *yaml_emitter_t) bool { - if emitter.write_handler == nil { - panic("write handler not set") - } - - // Check if the buffer is empty. - if emitter.buffer_pos == 0 { - return true - } - - if err := emitter.write_handler(emitter, emitter.buffer[:emitter.buffer_pos]); err != nil { - return yaml_emitter_set_writer_error(emitter, "write error: "+err.Error()) - } - emitter.buffer_pos = 0 - return true -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/yaml.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/yaml.go deleted file mode 100644 index de85aa4cd..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/yaml.go +++ /dev/null @@ -1,466 +0,0 @@ -// Package yaml implements YAML support for the Go language. -// -// Source code and other details for the project are available at GitHub: -// -// https://github.com/go-yaml/yaml -// -package yaml - -import ( - "errors" - "fmt" - "io" - "reflect" - "strings" - "sync" -) - -// MapSlice encodes and decodes as a YAML map. -// The order of keys is preserved when encoding and decoding. -type MapSlice []MapItem - -// MapItem is an item in a MapSlice. -type MapItem struct { - Key, Value interface{} -} - -// The Unmarshaler interface may be implemented by types to customize their -// behavior when being unmarshaled from a YAML document. The UnmarshalYAML -// method receives a function that may be called to unmarshal the original -// YAML value into a field or variable. It is safe to call the unmarshal -// function parameter more than once if necessary. -type Unmarshaler interface { - UnmarshalYAML(unmarshal func(interface{}) error) error -} - -// The Marshaler interface may be implemented by types to customize their -// behavior when being marshaled into a YAML document. The returned value -// is marshaled in place of the original value implementing Marshaler. -// -// If an error is returned by MarshalYAML, the marshaling procedure stops -// and returns with the provided error. -type Marshaler interface { - MarshalYAML() (interface{}, error) -} - -// Unmarshal decodes the first document found within the in byte slice -// and assigns decoded values into the out value. -// -// Maps and pointers (to a struct, string, int, etc) are accepted as out -// values. If an internal pointer within a struct is not initialized, -// the yaml package will initialize it if necessary for unmarshalling -// the provided data. The out parameter must not be nil. -// -// The type of the decoded values should be compatible with the respective -// values in out. If one or more values cannot be decoded due to a type -// mismatches, decoding continues partially until the end of the YAML -// content, and a *yaml.TypeError is returned with details for all -// missed values. -// -// Struct fields are only unmarshalled if they are exported (have an -// upper case first letter), and are unmarshalled using the field name -// lowercased as the default key. Custom keys may be defined via the -// "yaml" name in the field tag: the content preceding the first comma -// is used as the key, and the following comma-separated options are -// used to tweak the marshalling process (see Marshal). -// Conflicting names result in a runtime error. -// -// For example: -// -// type T struct { -// F int `yaml:"a,omitempty"` -// B int -// } -// var t T -// yaml.Unmarshal([]byte("a: 1\nb: 2"), &t) -// -// See the documentation of Marshal for the format of tags and a list of -// supported tag options. -// -func Unmarshal(in []byte, out interface{}) (err error) { - return unmarshal(in, out, false) -} - -// UnmarshalStrict is like Unmarshal except that any fields that are found -// in the data that do not have corresponding struct members, or mapping -// keys that are duplicates, will result in -// an error. -func UnmarshalStrict(in []byte, out interface{}) (err error) { - return unmarshal(in, out, true) -} - -// A Decorder reads and decodes YAML values from an input stream. -type Decoder struct { - strict bool - parser *parser -} - -// NewDecoder returns a new decoder that reads from r. -// -// The decoder introduces its own buffering and may read -// data from r beyond the YAML values requested. -func NewDecoder(r io.Reader) *Decoder { - return &Decoder{ - parser: newParserFromReader(r), - } -} - -// SetStrict sets whether strict decoding behaviour is enabled when -// decoding items in the data (see UnmarshalStrict). By default, decoding is not strict. -func (dec *Decoder) SetStrict(strict bool) { - dec.strict = strict -} - -// Decode reads the next YAML-encoded value from its input -// and stores it in the value pointed to by v. -// -// See the documentation for Unmarshal for details about the -// conversion of YAML into a Go value. -func (dec *Decoder) Decode(v interface{}) (err error) { - d := newDecoder(dec.strict) - defer handleErr(&err) - node := dec.parser.parse() - if node == nil { - return io.EOF - } - out := reflect.ValueOf(v) - if out.Kind() == reflect.Ptr && !out.IsNil() { - out = out.Elem() - } - d.unmarshal(node, out) - if len(d.terrors) > 0 { - return &TypeError{d.terrors} - } - return nil -} - -func unmarshal(in []byte, out interface{}, strict bool) (err error) { - defer handleErr(&err) - d := newDecoder(strict) - p := newParser(in) - defer p.destroy() - node := p.parse() - if node != nil { - v := reflect.ValueOf(out) - if v.Kind() == reflect.Ptr && !v.IsNil() { - v = v.Elem() - } - d.unmarshal(node, v) - } - if len(d.terrors) > 0 { - return &TypeError{d.terrors} - } - return nil -} - -// Marshal serializes the value provided into a YAML document. The structure -// of the generated document will reflect the structure of the value itself. -// Maps and pointers (to struct, string, int, etc) are accepted as the in value. -// -// Struct fields are only marshalled if they are exported (have an upper case -// first letter), and are marshalled using the field name lowercased as the -// default key. Custom keys may be defined via the "yaml" name in the field -// tag: the content preceding the first comma is used as the key, and the -// following comma-separated options are used to tweak the marshalling process. -// Conflicting names result in a runtime error. -// -// The field tag format accepted is: -// -// `(...) yaml:"[][,[,]]" (...)` -// -// The following flags are currently supported: -// -// omitempty Only include the field if it's not set to the zero -// value for the type or to empty slices or maps. -// Zero valued structs will be omitted if all their public -// fields are zero, unless they implement an IsZero -// method (see the IsZeroer interface type), in which -// case the field will be included if that method returns true. -// -// flow Marshal using a flow style (useful for structs, -// sequences and maps). -// -// inline Inline the field, which must be a struct or a map, -// causing all of its fields or keys to be processed as if -// they were part of the outer struct. For maps, keys must -// not conflict with the yaml keys of other struct fields. -// -// In addition, if the key is "-", the field is ignored. -// -// For example: -// -// type T struct { -// F int `yaml:"a,omitempty"` -// B int -// } -// yaml.Marshal(&T{B: 2}) // Returns "b: 2\n" -// yaml.Marshal(&T{F: 1}} // Returns "a: 1\nb: 0\n" -// -func Marshal(in interface{}) (out []byte, err error) { - defer handleErr(&err) - e := newEncoder() - defer e.destroy() - e.marshalDoc("", reflect.ValueOf(in)) - e.finish() - out = e.out - return -} - -// An Encoder writes YAML values to an output stream. -type Encoder struct { - encoder *encoder -} - -// NewEncoder returns a new encoder that writes to w. -// The Encoder should be closed after use to flush all data -// to w. -func NewEncoder(w io.Writer) *Encoder { - return &Encoder{ - encoder: newEncoderWithWriter(w), - } -} - -// Encode writes the YAML encoding of v to the stream. -// If multiple items are encoded to the stream, the -// second and subsequent document will be preceded -// with a "---" document separator, but the first will not. -// -// See the documentation for Marshal for details about the conversion of Go -// values to YAML. -func (e *Encoder) Encode(v interface{}) (err error) { - defer handleErr(&err) - e.encoder.marshalDoc("", reflect.ValueOf(v)) - return nil -} - -// Close closes the encoder by writing any remaining data. -// It does not write a stream terminating string "...". -func (e *Encoder) Close() (err error) { - defer handleErr(&err) - e.encoder.finish() - return nil -} - -func handleErr(err *error) { - if v := recover(); v != nil { - if e, ok := v.(yamlError); ok { - *err = e.err - } else { - panic(v) - } - } -} - -type yamlError struct { - err error -} - -func fail(err error) { - panic(yamlError{err}) -} - -func failf(format string, args ...interface{}) { - panic(yamlError{fmt.Errorf("yaml: "+format, args...)}) -} - -// A TypeError is returned by Unmarshal when one or more fields in -// the YAML document cannot be properly decoded into the requested -// types. When this error is returned, the value is still -// unmarshaled partially. -type TypeError struct { - Errors []string -} - -func (e *TypeError) Error() string { - return fmt.Sprintf("yaml: unmarshal errors:\n %s", strings.Join(e.Errors, "\n ")) -} - -// -------------------------------------------------------------------------- -// Maintain a mapping of keys to structure field indexes - -// The code in this section was copied from mgo/bson. - -// structInfo holds details for the serialization of fields of -// a given struct. -type structInfo struct { - FieldsMap map[string]fieldInfo - FieldsList []fieldInfo - - // InlineMap is the number of the field in the struct that - // contains an ,inline map, or -1 if there's none. - InlineMap int -} - -type fieldInfo struct { - Key string - Num int - OmitEmpty bool - Flow bool - // Id holds the unique field identifier, so we can cheaply - // check for field duplicates without maintaining an extra map. - Id int - - // Inline holds the field index if the field is part of an inlined struct. - Inline []int -} - -var structMap = make(map[reflect.Type]*structInfo) -var fieldMapMutex sync.RWMutex - -func getStructInfo(st reflect.Type) (*structInfo, error) { - fieldMapMutex.RLock() - sinfo, found := structMap[st] - fieldMapMutex.RUnlock() - if found { - return sinfo, nil - } - - n := st.NumField() - fieldsMap := make(map[string]fieldInfo) - fieldsList := make([]fieldInfo, 0, n) - inlineMap := -1 - for i := 0; i != n; i++ { - field := st.Field(i) - if field.PkgPath != "" && !field.Anonymous { - continue // Private field - } - - info := fieldInfo{Num: i} - - tag := field.Tag.Get("yaml") - if tag == "" && strings.Index(string(field.Tag), ":") < 0 { - tag = string(field.Tag) - } - if tag == "-" { - continue - } - - inline := false - fields := strings.Split(tag, ",") - if len(fields) > 1 { - for _, flag := range fields[1:] { - switch flag { - case "omitempty": - info.OmitEmpty = true - case "flow": - info.Flow = true - case "inline": - inline = true - default: - return nil, errors.New(fmt.Sprintf("Unsupported flag %q in tag %q of type %s", flag, tag, st)) - } - } - tag = fields[0] - } - - if inline { - switch field.Type.Kind() { - case reflect.Map: - if inlineMap >= 0 { - return nil, errors.New("Multiple ,inline maps in struct " + st.String()) - } - if field.Type.Key() != reflect.TypeOf("") { - return nil, errors.New("Option ,inline needs a map with string keys in struct " + st.String()) - } - inlineMap = info.Num - case reflect.Struct: - sinfo, err := getStructInfo(field.Type) - if err != nil { - return nil, err - } - for _, finfo := range sinfo.FieldsList { - if _, found := fieldsMap[finfo.Key]; found { - msg := "Duplicated key '" + finfo.Key + "' in struct " + st.String() - return nil, errors.New(msg) - } - if finfo.Inline == nil { - finfo.Inline = []int{i, finfo.Num} - } else { - finfo.Inline = append([]int{i}, finfo.Inline...) - } - finfo.Id = len(fieldsList) - fieldsMap[finfo.Key] = finfo - fieldsList = append(fieldsList, finfo) - } - default: - //return nil, errors.New("Option ,inline needs a struct value or map field") - return nil, errors.New("Option ,inline needs a struct value field") - } - continue - } - - if tag != "" { - info.Key = tag - } else { - info.Key = strings.ToLower(field.Name) - } - - if _, found = fieldsMap[info.Key]; found { - msg := "Duplicated key '" + info.Key + "' in struct " + st.String() - return nil, errors.New(msg) - } - - info.Id = len(fieldsList) - fieldsList = append(fieldsList, info) - fieldsMap[info.Key] = info - } - - sinfo = &structInfo{ - FieldsMap: fieldsMap, - FieldsList: fieldsList, - InlineMap: inlineMap, - } - - fieldMapMutex.Lock() - structMap[st] = sinfo - fieldMapMutex.Unlock() - return sinfo, nil -} - -// IsZeroer is used to check whether an object is zero to -// determine whether it should be omitted when marshaling -// with the omitempty flag. One notable implementation -// is time.Time. -type IsZeroer interface { - IsZero() bool -} - -func isZero(v reflect.Value) bool { - kind := v.Kind() - if z, ok := v.Interface().(IsZeroer); ok { - if (kind == reflect.Ptr || kind == reflect.Interface) && v.IsNil() { - return true - } - return z.IsZero() - } - switch kind { - case reflect.String: - return len(v.String()) == 0 - case reflect.Interface, reflect.Ptr: - return v.IsNil() - case reflect.Slice: - return v.Len() == 0 - case reflect.Map: - return v.Len() == 0 - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return v.Int() == 0 - case reflect.Float32, reflect.Float64: - return v.Float() == 0 - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - return v.Uint() == 0 - case reflect.Bool: - return !v.Bool() - case reflect.Struct: - vt := v.Type() - for i := v.NumField() - 1; i >= 0; i-- { - if vt.Field(i).PkgPath != "" { - continue // Private field - } - if !isZero(v.Field(i)) { - return false - } - } - return true - } - return false -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/yamlh.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/yamlh.go deleted file mode 100644 index e25cee563..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/yamlh.go +++ /dev/null @@ -1,738 +0,0 @@ -package yaml - -import ( - "fmt" - "io" -) - -// The version directive data. -type yaml_version_directive_t struct { - major int8 // The major version number. - minor int8 // The minor version number. -} - -// The tag directive data. -type yaml_tag_directive_t struct { - handle []byte // The tag handle. - prefix []byte // The tag prefix. -} - -type yaml_encoding_t int - -// The stream encoding. -const ( - // Let the parser choose the encoding. - yaml_ANY_ENCODING yaml_encoding_t = iota - - yaml_UTF8_ENCODING // The default UTF-8 encoding. - yaml_UTF16LE_ENCODING // The UTF-16-LE encoding with BOM. - yaml_UTF16BE_ENCODING // The UTF-16-BE encoding with BOM. -) - -type yaml_break_t int - -// Line break types. -const ( - // Let the parser choose the break type. - yaml_ANY_BREAK yaml_break_t = iota - - yaml_CR_BREAK // Use CR for line breaks (Mac style). - yaml_LN_BREAK // Use LN for line breaks (Unix style). - yaml_CRLN_BREAK // Use CR LN for line breaks (DOS style). -) - -type yaml_error_type_t int - -// Many bad things could happen with the parser and emitter. -const ( - // No error is produced. - yaml_NO_ERROR yaml_error_type_t = iota - - yaml_MEMORY_ERROR // Cannot allocate or reallocate a block of memory. - yaml_READER_ERROR // Cannot read or decode the input stream. - yaml_SCANNER_ERROR // Cannot scan the input stream. - yaml_PARSER_ERROR // Cannot parse the input stream. - yaml_COMPOSER_ERROR // Cannot compose a YAML document. - yaml_WRITER_ERROR // Cannot write to the output stream. - yaml_EMITTER_ERROR // Cannot emit a YAML stream. -) - -// The pointer position. -type yaml_mark_t struct { - index int // The position index. - line int // The position line. - column int // The position column. -} - -// Node Styles - -type yaml_style_t int8 - -type yaml_scalar_style_t yaml_style_t - -// Scalar styles. -const ( - // Let the emitter choose the style. - yaml_ANY_SCALAR_STYLE yaml_scalar_style_t = iota - - yaml_PLAIN_SCALAR_STYLE // The plain scalar style. - yaml_SINGLE_QUOTED_SCALAR_STYLE // The single-quoted scalar style. - yaml_DOUBLE_QUOTED_SCALAR_STYLE // The double-quoted scalar style. - yaml_LITERAL_SCALAR_STYLE // The literal scalar style. - yaml_FOLDED_SCALAR_STYLE // The folded scalar style. -) - -type yaml_sequence_style_t yaml_style_t - -// Sequence styles. -const ( - // Let the emitter choose the style. - yaml_ANY_SEQUENCE_STYLE yaml_sequence_style_t = iota - - yaml_BLOCK_SEQUENCE_STYLE // The block sequence style. - yaml_FLOW_SEQUENCE_STYLE // The flow sequence style. -) - -type yaml_mapping_style_t yaml_style_t - -// Mapping styles. -const ( - // Let the emitter choose the style. - yaml_ANY_MAPPING_STYLE yaml_mapping_style_t = iota - - yaml_BLOCK_MAPPING_STYLE // The block mapping style. - yaml_FLOW_MAPPING_STYLE // The flow mapping style. -) - -// Tokens - -type yaml_token_type_t int - -// Token types. -const ( - // An empty token. - yaml_NO_TOKEN yaml_token_type_t = iota - - yaml_STREAM_START_TOKEN // A STREAM-START token. - yaml_STREAM_END_TOKEN // A STREAM-END token. - - yaml_VERSION_DIRECTIVE_TOKEN // A VERSION-DIRECTIVE token. - yaml_TAG_DIRECTIVE_TOKEN // A TAG-DIRECTIVE token. - yaml_DOCUMENT_START_TOKEN // A DOCUMENT-START token. - yaml_DOCUMENT_END_TOKEN // A DOCUMENT-END token. - - yaml_BLOCK_SEQUENCE_START_TOKEN // A BLOCK-SEQUENCE-START token. - yaml_BLOCK_MAPPING_START_TOKEN // A BLOCK-SEQUENCE-END token. - yaml_BLOCK_END_TOKEN // A BLOCK-END token. - - yaml_FLOW_SEQUENCE_START_TOKEN // A FLOW-SEQUENCE-START token. - yaml_FLOW_SEQUENCE_END_TOKEN // A FLOW-SEQUENCE-END token. - yaml_FLOW_MAPPING_START_TOKEN // A FLOW-MAPPING-START token. - yaml_FLOW_MAPPING_END_TOKEN // A FLOW-MAPPING-END token. - - yaml_BLOCK_ENTRY_TOKEN // A BLOCK-ENTRY token. - yaml_FLOW_ENTRY_TOKEN // A FLOW-ENTRY token. - yaml_KEY_TOKEN // A KEY token. - yaml_VALUE_TOKEN // A VALUE token. - - yaml_ALIAS_TOKEN // An ALIAS token. - yaml_ANCHOR_TOKEN // An ANCHOR token. - yaml_TAG_TOKEN // A TAG token. - yaml_SCALAR_TOKEN // A SCALAR token. -) - -func (tt yaml_token_type_t) String() string { - switch tt { - case yaml_NO_TOKEN: - return "yaml_NO_TOKEN" - case yaml_STREAM_START_TOKEN: - return "yaml_STREAM_START_TOKEN" - case yaml_STREAM_END_TOKEN: - return "yaml_STREAM_END_TOKEN" - case yaml_VERSION_DIRECTIVE_TOKEN: - return "yaml_VERSION_DIRECTIVE_TOKEN" - case yaml_TAG_DIRECTIVE_TOKEN: - return "yaml_TAG_DIRECTIVE_TOKEN" - case yaml_DOCUMENT_START_TOKEN: - return "yaml_DOCUMENT_START_TOKEN" - case yaml_DOCUMENT_END_TOKEN: - return "yaml_DOCUMENT_END_TOKEN" - case yaml_BLOCK_SEQUENCE_START_TOKEN: - return "yaml_BLOCK_SEQUENCE_START_TOKEN" - case yaml_BLOCK_MAPPING_START_TOKEN: - return "yaml_BLOCK_MAPPING_START_TOKEN" - case yaml_BLOCK_END_TOKEN: - return "yaml_BLOCK_END_TOKEN" - case yaml_FLOW_SEQUENCE_START_TOKEN: - return "yaml_FLOW_SEQUENCE_START_TOKEN" - case yaml_FLOW_SEQUENCE_END_TOKEN: - return "yaml_FLOW_SEQUENCE_END_TOKEN" - case yaml_FLOW_MAPPING_START_TOKEN: - return "yaml_FLOW_MAPPING_START_TOKEN" - case yaml_FLOW_MAPPING_END_TOKEN: - return "yaml_FLOW_MAPPING_END_TOKEN" - case yaml_BLOCK_ENTRY_TOKEN: - return "yaml_BLOCK_ENTRY_TOKEN" - case yaml_FLOW_ENTRY_TOKEN: - return "yaml_FLOW_ENTRY_TOKEN" - case yaml_KEY_TOKEN: - return "yaml_KEY_TOKEN" - case yaml_VALUE_TOKEN: - return "yaml_VALUE_TOKEN" - case yaml_ALIAS_TOKEN: - return "yaml_ALIAS_TOKEN" - case yaml_ANCHOR_TOKEN: - return "yaml_ANCHOR_TOKEN" - case yaml_TAG_TOKEN: - return "yaml_TAG_TOKEN" - case yaml_SCALAR_TOKEN: - return "yaml_SCALAR_TOKEN" - } - return "" -} - -// The token structure. -type yaml_token_t struct { - // The token type. - typ yaml_token_type_t - - // The start/end of the token. - start_mark, end_mark yaml_mark_t - - // The stream encoding (for yaml_STREAM_START_TOKEN). - encoding yaml_encoding_t - - // The alias/anchor/scalar value or tag/tag directive handle - // (for yaml_ALIAS_TOKEN, yaml_ANCHOR_TOKEN, yaml_SCALAR_TOKEN, yaml_TAG_TOKEN, yaml_TAG_DIRECTIVE_TOKEN). - value []byte - - // The tag suffix (for yaml_TAG_TOKEN). - suffix []byte - - // The tag directive prefix (for yaml_TAG_DIRECTIVE_TOKEN). - prefix []byte - - // The scalar style (for yaml_SCALAR_TOKEN). - style yaml_scalar_style_t - - // The version directive major/minor (for yaml_VERSION_DIRECTIVE_TOKEN). - major, minor int8 -} - -// Events - -type yaml_event_type_t int8 - -// Event types. -const ( - // An empty event. - yaml_NO_EVENT yaml_event_type_t = iota - - yaml_STREAM_START_EVENT // A STREAM-START event. - yaml_STREAM_END_EVENT // A STREAM-END event. - yaml_DOCUMENT_START_EVENT // A DOCUMENT-START event. - yaml_DOCUMENT_END_EVENT // A DOCUMENT-END event. - yaml_ALIAS_EVENT // An ALIAS event. - yaml_SCALAR_EVENT // A SCALAR event. - yaml_SEQUENCE_START_EVENT // A SEQUENCE-START event. - yaml_SEQUENCE_END_EVENT // A SEQUENCE-END event. - yaml_MAPPING_START_EVENT // A MAPPING-START event. - yaml_MAPPING_END_EVENT // A MAPPING-END event. -) - -var eventStrings = []string{ - yaml_NO_EVENT: "none", - yaml_STREAM_START_EVENT: "stream start", - yaml_STREAM_END_EVENT: "stream end", - yaml_DOCUMENT_START_EVENT: "document start", - yaml_DOCUMENT_END_EVENT: "document end", - yaml_ALIAS_EVENT: "alias", - yaml_SCALAR_EVENT: "scalar", - yaml_SEQUENCE_START_EVENT: "sequence start", - yaml_SEQUENCE_END_EVENT: "sequence end", - yaml_MAPPING_START_EVENT: "mapping start", - yaml_MAPPING_END_EVENT: "mapping end", -} - -func (e yaml_event_type_t) String() string { - if e < 0 || int(e) >= len(eventStrings) { - return fmt.Sprintf("unknown event %d", e) - } - return eventStrings[e] -} - -// The event structure. -type yaml_event_t struct { - - // The event type. - typ yaml_event_type_t - - // The start and end of the event. - start_mark, end_mark yaml_mark_t - - // The document encoding (for yaml_STREAM_START_EVENT). - encoding yaml_encoding_t - - // The version directive (for yaml_DOCUMENT_START_EVENT). - version_directive *yaml_version_directive_t - - // The list of tag directives (for yaml_DOCUMENT_START_EVENT). - tag_directives []yaml_tag_directive_t - - // The anchor (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_ALIAS_EVENT). - anchor []byte - - // The tag (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT). - tag []byte - - // The scalar value (for yaml_SCALAR_EVENT). - value []byte - - // Is the document start/end indicator implicit, or the tag optional? - // (for yaml_DOCUMENT_START_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_SCALAR_EVENT). - implicit bool - - // Is the tag optional for any non-plain style? (for yaml_SCALAR_EVENT). - quoted_implicit bool - - // The style (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT). - style yaml_style_t -} - -func (e *yaml_event_t) scalar_style() yaml_scalar_style_t { return yaml_scalar_style_t(e.style) } -func (e *yaml_event_t) sequence_style() yaml_sequence_style_t { return yaml_sequence_style_t(e.style) } -func (e *yaml_event_t) mapping_style() yaml_mapping_style_t { return yaml_mapping_style_t(e.style) } - -// Nodes - -const ( - yaml_NULL_TAG = "tag:yaml.org,2002:null" // The tag !!null with the only possible value: null. - yaml_BOOL_TAG = "tag:yaml.org,2002:bool" // The tag !!bool with the values: true and false. - yaml_STR_TAG = "tag:yaml.org,2002:str" // The tag !!str for string values. - yaml_INT_TAG = "tag:yaml.org,2002:int" // The tag !!int for integer values. - yaml_FLOAT_TAG = "tag:yaml.org,2002:float" // The tag !!float for float values. - yaml_TIMESTAMP_TAG = "tag:yaml.org,2002:timestamp" // The tag !!timestamp for date and time values. - - yaml_SEQ_TAG = "tag:yaml.org,2002:seq" // The tag !!seq is used to denote sequences. - yaml_MAP_TAG = "tag:yaml.org,2002:map" // The tag !!map is used to denote mapping. - - // Not in original libyaml. - yaml_BINARY_TAG = "tag:yaml.org,2002:binary" - yaml_MERGE_TAG = "tag:yaml.org,2002:merge" - - yaml_DEFAULT_SCALAR_TAG = yaml_STR_TAG // The default scalar tag is !!str. - yaml_DEFAULT_SEQUENCE_TAG = yaml_SEQ_TAG // The default sequence tag is !!seq. - yaml_DEFAULT_MAPPING_TAG = yaml_MAP_TAG // The default mapping tag is !!map. -) - -type yaml_node_type_t int - -// Node types. -const ( - // An empty node. - yaml_NO_NODE yaml_node_type_t = iota - - yaml_SCALAR_NODE // A scalar node. - yaml_SEQUENCE_NODE // A sequence node. - yaml_MAPPING_NODE // A mapping node. -) - -// An element of a sequence node. -type yaml_node_item_t int - -// An element of a mapping node. -type yaml_node_pair_t struct { - key int // The key of the element. - value int // The value of the element. -} - -// The node structure. -type yaml_node_t struct { - typ yaml_node_type_t // The node type. - tag []byte // The node tag. - - // The node data. - - // The scalar parameters (for yaml_SCALAR_NODE). - scalar struct { - value []byte // The scalar value. - length int // The length of the scalar value. - style yaml_scalar_style_t // The scalar style. - } - - // The sequence parameters (for YAML_SEQUENCE_NODE). - sequence struct { - items_data []yaml_node_item_t // The stack of sequence items. - style yaml_sequence_style_t // The sequence style. - } - - // The mapping parameters (for yaml_MAPPING_NODE). - mapping struct { - pairs_data []yaml_node_pair_t // The stack of mapping pairs (key, value). - pairs_start *yaml_node_pair_t // The beginning of the stack. - pairs_end *yaml_node_pair_t // The end of the stack. - pairs_top *yaml_node_pair_t // The top of the stack. - style yaml_mapping_style_t // The mapping style. - } - - start_mark yaml_mark_t // The beginning of the node. - end_mark yaml_mark_t // The end of the node. - -} - -// The document structure. -type yaml_document_t struct { - - // The document nodes. - nodes []yaml_node_t - - // The version directive. - version_directive *yaml_version_directive_t - - // The list of tag directives. - tag_directives_data []yaml_tag_directive_t - tag_directives_start int // The beginning of the tag directives list. - tag_directives_end int // The end of the tag directives list. - - start_implicit int // Is the document start indicator implicit? - end_implicit int // Is the document end indicator implicit? - - // The start/end of the document. - start_mark, end_mark yaml_mark_t -} - -// The prototype of a read handler. -// -// The read handler is called when the parser needs to read more bytes from the -// source. The handler should write not more than size bytes to the buffer. -// The number of written bytes should be set to the size_read variable. -// -// [in,out] data A pointer to an application data specified by -// yaml_parser_set_input(). -// [out] buffer The buffer to write the data from the source. -// [in] size The size of the buffer. -// [out] size_read The actual number of bytes read from the source. -// -// On success, the handler should return 1. If the handler failed, -// the returned value should be 0. On EOF, the handler should set the -// size_read to 0 and return 1. -type yaml_read_handler_t func(parser *yaml_parser_t, buffer []byte) (n int, err error) - -// This structure holds information about a potential simple key. -type yaml_simple_key_t struct { - possible bool // Is a simple key possible? - required bool // Is a simple key required? - token_number int // The number of the token. - mark yaml_mark_t // The position mark. -} - -// The states of the parser. -type yaml_parser_state_t int - -const ( - yaml_PARSE_STREAM_START_STATE yaml_parser_state_t = iota - - yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE // Expect the beginning of an implicit document. - yaml_PARSE_DOCUMENT_START_STATE // Expect DOCUMENT-START. - yaml_PARSE_DOCUMENT_CONTENT_STATE // Expect the content of a document. - yaml_PARSE_DOCUMENT_END_STATE // Expect DOCUMENT-END. - yaml_PARSE_BLOCK_NODE_STATE // Expect a block node. - yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE // Expect a block node or indentless sequence. - yaml_PARSE_FLOW_NODE_STATE // Expect a flow node. - yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE // Expect the first entry of a block sequence. - yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE // Expect an entry of a block sequence. - yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE // Expect an entry of an indentless sequence. - yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE // Expect the first key of a block mapping. - yaml_PARSE_BLOCK_MAPPING_KEY_STATE // Expect a block mapping key. - yaml_PARSE_BLOCK_MAPPING_VALUE_STATE // Expect a block mapping value. - yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE // Expect the first entry of a flow sequence. - yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE // Expect an entry of a flow sequence. - yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE // Expect a key of an ordered mapping. - yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE // Expect a value of an ordered mapping. - yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE // Expect the and of an ordered mapping entry. - yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE // Expect the first key of a flow mapping. - yaml_PARSE_FLOW_MAPPING_KEY_STATE // Expect a key of a flow mapping. - yaml_PARSE_FLOW_MAPPING_VALUE_STATE // Expect a value of a flow mapping. - yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE // Expect an empty value of a flow mapping. - yaml_PARSE_END_STATE // Expect nothing. -) - -func (ps yaml_parser_state_t) String() string { - switch ps { - case yaml_PARSE_STREAM_START_STATE: - return "yaml_PARSE_STREAM_START_STATE" - case yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE: - return "yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE" - case yaml_PARSE_DOCUMENT_START_STATE: - return "yaml_PARSE_DOCUMENT_START_STATE" - case yaml_PARSE_DOCUMENT_CONTENT_STATE: - return "yaml_PARSE_DOCUMENT_CONTENT_STATE" - case yaml_PARSE_DOCUMENT_END_STATE: - return "yaml_PARSE_DOCUMENT_END_STATE" - case yaml_PARSE_BLOCK_NODE_STATE: - return "yaml_PARSE_BLOCK_NODE_STATE" - case yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE: - return "yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE" - case yaml_PARSE_FLOW_NODE_STATE: - return "yaml_PARSE_FLOW_NODE_STATE" - case yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE: - return "yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE" - case yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE: - return "yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE" - case yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE: - return "yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE" - case yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE: - return "yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE" - case yaml_PARSE_BLOCK_MAPPING_KEY_STATE: - return "yaml_PARSE_BLOCK_MAPPING_KEY_STATE" - case yaml_PARSE_BLOCK_MAPPING_VALUE_STATE: - return "yaml_PARSE_BLOCK_MAPPING_VALUE_STATE" - case yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE: - return "yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE" - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE: - return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE" - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE: - return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE" - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE: - return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE" - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE: - return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE" - case yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE: - return "yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE" - case yaml_PARSE_FLOW_MAPPING_KEY_STATE: - return "yaml_PARSE_FLOW_MAPPING_KEY_STATE" - case yaml_PARSE_FLOW_MAPPING_VALUE_STATE: - return "yaml_PARSE_FLOW_MAPPING_VALUE_STATE" - case yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE: - return "yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE" - case yaml_PARSE_END_STATE: - return "yaml_PARSE_END_STATE" - } - return "" -} - -// This structure holds aliases data. -type yaml_alias_data_t struct { - anchor []byte // The anchor. - index int // The node id. - mark yaml_mark_t // The anchor mark. -} - -// The parser structure. -// -// All members are internal. Manage the structure using the -// yaml_parser_ family of functions. -type yaml_parser_t struct { - - // Error handling - - error yaml_error_type_t // Error type. - - problem string // Error description. - - // The byte about which the problem occurred. - problem_offset int - problem_value int - problem_mark yaml_mark_t - - // The error context. - context string - context_mark yaml_mark_t - - // Reader stuff - - read_handler yaml_read_handler_t // Read handler. - - input_reader io.Reader // File input data. - input []byte // String input data. - input_pos int - - eof bool // EOF flag - - buffer []byte // The working buffer. - buffer_pos int // The current position of the buffer. - - unread int // The number of unread characters in the buffer. - - raw_buffer []byte // The raw buffer. - raw_buffer_pos int // The current position of the buffer. - - encoding yaml_encoding_t // The input encoding. - - offset int // The offset of the current position (in bytes). - mark yaml_mark_t // The mark of the current position. - - // Scanner stuff - - stream_start_produced bool // Have we started to scan the input stream? - stream_end_produced bool // Have we reached the end of the input stream? - - flow_level int // The number of unclosed '[' and '{' indicators. - - tokens []yaml_token_t // The tokens queue. - tokens_head int // The head of the tokens queue. - tokens_parsed int // The number of tokens fetched from the queue. - token_available bool // Does the tokens queue contain a token ready for dequeueing. - - indent int // The current indentation level. - indents []int // The indentation levels stack. - - simple_key_allowed bool // May a simple key occur at the current position? - simple_keys []yaml_simple_key_t // The stack of simple keys. - - // Parser stuff - - state yaml_parser_state_t // The current parser state. - states []yaml_parser_state_t // The parser states stack. - marks []yaml_mark_t // The stack of marks. - tag_directives []yaml_tag_directive_t // The list of TAG directives. - - // Dumper stuff - - aliases []yaml_alias_data_t // The alias data. - - document *yaml_document_t // The currently parsed document. -} - -// Emitter Definitions - -// The prototype of a write handler. -// -// The write handler is called when the emitter needs to flush the accumulated -// characters to the output. The handler should write @a size bytes of the -// @a buffer to the output. -// -// @param[in,out] data A pointer to an application data specified by -// yaml_emitter_set_output(). -// @param[in] buffer The buffer with bytes to be written. -// @param[in] size The size of the buffer. -// -// @returns On success, the handler should return @c 1. If the handler failed, -// the returned value should be @c 0. -// -type yaml_write_handler_t func(emitter *yaml_emitter_t, buffer []byte) error - -type yaml_emitter_state_t int - -// The emitter states. -const ( - // Expect STREAM-START. - yaml_EMIT_STREAM_START_STATE yaml_emitter_state_t = iota - - yaml_EMIT_FIRST_DOCUMENT_START_STATE // Expect the first DOCUMENT-START or STREAM-END. - yaml_EMIT_DOCUMENT_START_STATE // Expect DOCUMENT-START or STREAM-END. - yaml_EMIT_DOCUMENT_CONTENT_STATE // Expect the content of a document. - yaml_EMIT_DOCUMENT_END_STATE // Expect DOCUMENT-END. - yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE // Expect the first item of a flow sequence. - yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE // Expect an item of a flow sequence. - yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE // Expect the first key of a flow mapping. - yaml_EMIT_FLOW_MAPPING_KEY_STATE // Expect a key of a flow mapping. - yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a flow mapping. - yaml_EMIT_FLOW_MAPPING_VALUE_STATE // Expect a value of a flow mapping. - yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE // Expect the first item of a block sequence. - yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE // Expect an item of a block sequence. - yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE // Expect the first key of a block mapping. - yaml_EMIT_BLOCK_MAPPING_KEY_STATE // Expect the key of a block mapping. - yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a block mapping. - yaml_EMIT_BLOCK_MAPPING_VALUE_STATE // Expect a value of a block mapping. - yaml_EMIT_END_STATE // Expect nothing. -) - -// The emitter structure. -// -// All members are internal. Manage the structure using the @c yaml_emitter_ -// family of functions. -type yaml_emitter_t struct { - - // Error handling - - error yaml_error_type_t // Error type. - problem string // Error description. - - // Writer stuff - - write_handler yaml_write_handler_t // Write handler. - - output_buffer *[]byte // String output data. - output_writer io.Writer // File output data. - - buffer []byte // The working buffer. - buffer_pos int // The current position of the buffer. - - raw_buffer []byte // The raw buffer. - raw_buffer_pos int // The current position of the buffer. - - encoding yaml_encoding_t // The stream encoding. - - // Emitter stuff - - canonical bool // If the output is in the canonical style? - best_indent int // The number of indentation spaces. - best_width int // The preferred width of the output lines. - unicode bool // Allow unescaped non-ASCII characters? - line_break yaml_break_t // The preferred line break. - - state yaml_emitter_state_t // The current emitter state. - states []yaml_emitter_state_t // The stack of states. - - events []yaml_event_t // The event queue. - events_head int // The head of the event queue. - - indents []int // The stack of indentation levels. - - tag_directives []yaml_tag_directive_t // The list of tag directives. - - indent int // The current indentation level. - - flow_level int // The current flow level. - - root_context bool // Is it the document root context? - sequence_context bool // Is it a sequence context? - mapping_context bool // Is it a mapping context? - simple_key_context bool // Is it a simple mapping key context? - - line int // The current line. - column int // The current column. - whitespace bool // If the last character was a whitespace? - indention bool // If the last character was an indentation character (' ', '-', '?', ':')? - open_ended bool // If an explicit document end is required? - - // Anchor analysis. - anchor_data struct { - anchor []byte // The anchor value. - alias bool // Is it an alias? - } - - // Tag analysis. - tag_data struct { - handle []byte // The tag handle. - suffix []byte // The tag suffix. - } - - // Scalar analysis. - scalar_data struct { - value []byte // The scalar value. - multiline bool // Does the scalar contain line breaks? - flow_plain_allowed bool // Can the scalar be expessed in the flow plain style? - block_plain_allowed bool // Can the scalar be expressed in the block plain style? - single_quoted_allowed bool // Can the scalar be expressed in the single quoted style? - block_allowed bool // Can the scalar be expressed in the literal or folded styles? - style yaml_scalar_style_t // The output style. - } - - // Dumper stuff - - opened bool // If the stream was already opened? - closed bool // If the stream was already closed? - - // The information associated with the document nodes. - anchors *struct { - references int // The number of references. - anchor int // The anchor id. - serialized bool // If the node has been emitted? - } - - last_anchor_id int // The last assigned anchor id. - - document *yaml_document_t // The currently emitted document. -} diff --git a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/yamlprivateh.go b/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/yamlprivateh.go deleted file mode 100644 index 8110ce3c3..000000000 --- a/tools/packaging/cmd/kata-pkgsync/vendor/gopkg.in/yaml.v2/yamlprivateh.go +++ /dev/null @@ -1,173 +0,0 @@ -package yaml - -const ( - // The size of the input raw buffer. - input_raw_buffer_size = 512 - - // The size of the input buffer. - // It should be possible to decode the whole raw buffer. - input_buffer_size = input_raw_buffer_size * 3 - - // The size of the output buffer. - output_buffer_size = 128 - - // The size of the output raw buffer. - // It should be possible to encode the whole output buffer. - output_raw_buffer_size = (output_buffer_size*2 + 2) - - // The size of other stacks and queues. - initial_stack_size = 16 - initial_queue_size = 16 - initial_string_size = 16 -) - -// Check if the character at the specified position is an alphabetical -// character, a digit, '_', or '-'. -func is_alpha(b []byte, i int) bool { - return b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'Z' || b[i] >= 'a' && b[i] <= 'z' || b[i] == '_' || b[i] == '-' -} - -// Check if the character at the specified position is a digit. -func is_digit(b []byte, i int) bool { - return b[i] >= '0' && b[i] <= '9' -} - -// Get the value of a digit. -func as_digit(b []byte, i int) int { - return int(b[i]) - '0' -} - -// Check if the character at the specified position is a hex-digit. -func is_hex(b []byte, i int) bool { - return b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'F' || b[i] >= 'a' && b[i] <= 'f' -} - -// Get the value of a hex-digit. -func as_hex(b []byte, i int) int { - bi := b[i] - if bi >= 'A' && bi <= 'F' { - return int(bi) - 'A' + 10 - } - if bi >= 'a' && bi <= 'f' { - return int(bi) - 'a' + 10 - } - return int(bi) - '0' -} - -// Check if the character is ASCII. -func is_ascii(b []byte, i int) bool { - return b[i] <= 0x7F -} - -// Check if the character at the start of the buffer can be printed unescaped. -func is_printable(b []byte, i int) bool { - return ((b[i] == 0x0A) || // . == #x0A - (b[i] >= 0x20 && b[i] <= 0x7E) || // #x20 <= . <= #x7E - (b[i] == 0xC2 && b[i+1] >= 0xA0) || // #0xA0 <= . <= #xD7FF - (b[i] > 0xC2 && b[i] < 0xED) || - (b[i] == 0xED && b[i+1] < 0xA0) || - (b[i] == 0xEE) || - (b[i] == 0xEF && // #xE000 <= . <= #xFFFD - !(b[i+1] == 0xBB && b[i+2] == 0xBF) && // && . != #xFEFF - !(b[i+1] == 0xBF && (b[i+2] == 0xBE || b[i+2] == 0xBF)))) -} - -// Check if the character at the specified position is NUL. -func is_z(b []byte, i int) bool { - return b[i] == 0x00 -} - -// Check if the beginning of the buffer is a BOM. -func is_bom(b []byte, i int) bool { - return b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF -} - -// Check if the character at the specified position is space. -func is_space(b []byte, i int) bool { - return b[i] == ' ' -} - -// Check if the character at the specified position is tab. -func is_tab(b []byte, i int) bool { - return b[i] == '\t' -} - -// Check if the character at the specified position is blank (space or tab). -func is_blank(b []byte, i int) bool { - //return is_space(b, i) || is_tab(b, i) - return b[i] == ' ' || b[i] == '\t' -} - -// Check if the character at the specified position is a line break. -func is_break(b []byte, i int) bool { - return (b[i] == '\r' || // CR (#xD) - b[i] == '\n' || // LF (#xA) - b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9) // PS (#x2029) -} - -func is_crlf(b []byte, i int) bool { - return b[i] == '\r' && b[i+1] == '\n' -} - -// Check if the character is a line break or NUL. -func is_breakz(b []byte, i int) bool { - //return is_break(b, i) || is_z(b, i) - return ( // is_break: - b[i] == '\r' || // CR (#xD) - b[i] == '\n' || // LF (#xA) - b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) - // is_z: - b[i] == 0) -} - -// Check if the character is a line break, space, or NUL. -func is_spacez(b []byte, i int) bool { - //return is_space(b, i) || is_breakz(b, i) - return ( // is_space: - b[i] == ' ' || - // is_breakz: - b[i] == '\r' || // CR (#xD) - b[i] == '\n' || // LF (#xA) - b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) - b[i] == 0) -} - -// Check if the character is a line break, space, tab, or NUL. -func is_blankz(b []byte, i int) bool { - //return is_blank(b, i) || is_breakz(b, i) - return ( // is_blank: - b[i] == ' ' || b[i] == '\t' || - // is_breakz: - b[i] == '\r' || // CR (#xD) - b[i] == '\n' || // LF (#xA) - b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) - b[i] == 0) -} - -// Determine the width of the character. -func width(b byte) int { - // Don't replace these by a switch without first - // confirming that it is being inlined. - if b&0x80 == 0x00 { - return 1 - } - if b&0xE0 == 0xC0 { - return 2 - } - if b&0xF0 == 0xE0 { - return 3 - } - if b&0xF8 == 0xF0 { - return 4 - } - return 0 - -} From ec6655af87158c4bea38302246b806e5ff7a7533 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Wed, 19 Jan 2022 09:48:56 +0100 Subject: [PATCH 313/385] govmm: Use govmm from our own pkg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Let's stop using govmm from kata-containers/govmm and let's start using it from our own repo. Fixes: #3495 Signed-off-by: Fabiano Fidêncio --- src/runtime/go.mod | 1 - src/runtime/go.sum | 2 - src/runtime/pkg/govmm/qemu/examples_test.go | 2 +- src/runtime/pkg/katautils/config.go | 2 +- .../github.com/kata-containers/govmm/COPYING | 202 -- .../kata-containers/govmm/qemu/image.go | 77 - .../kata-containers/govmm/qemu/qemu.go | 3039 ----------------- .../kata-containers/govmm/qemu/qmp.go | 1664 --------- src/runtime/vendor/modules.txt | 3 - src/runtime/virtcontainers/qemu.go | 2 +- src/runtime/virtcontainers/qemu_amd64.go | 2 +- src/runtime/virtcontainers/qemu_amd64_test.go | 2 +- src/runtime/virtcontainers/qemu_arch_base.go | 2 +- .../virtcontainers/qemu_arch_base_test.go | 2 +- src/runtime/virtcontainers/qemu_arm64.go | 2 +- src/runtime/virtcontainers/qemu_arm64_test.go | 2 +- src/runtime/virtcontainers/qemu_ppc64le.go | 2 +- .../virtcontainers/qemu_ppc64le_test.go | 2 +- src/runtime/virtcontainers/qemu_s390x.go | 2 +- src/runtime/virtcontainers/qemu_s390x_test.go | 2 +- src/runtime/virtcontainers/qemu_test.go | 2 +- 21 files changed, 14 insertions(+), 5002 deletions(-) delete mode 100644 src/runtime/vendor/github.com/kata-containers/govmm/COPYING delete mode 100644 src/runtime/vendor/github.com/kata-containers/govmm/qemu/image.go delete mode 100644 src/runtime/vendor/github.com/kata-containers/govmm/qemu/qemu.go delete mode 100644 src/runtime/vendor/github.com/kata-containers/govmm/qemu/qmp.go diff --git a/src/runtime/go.mod b/src/runtime/go.mod index 020700c37..ab3fdcbc1 100644 --- a/src/runtime/go.mod +++ b/src/runtime/go.mod @@ -28,7 +28,6 @@ require ( github.com/gogo/protobuf v1.3.2 github.com/hashicorp/go-multierror v1.0.0 github.com/intel-go/cpuid v0.0.0-20210602155658-5747e5cec0d9 - github.com/kata-containers/govmm v0.0.0-20220117131932-0781a21804ee github.com/mdlayher/vsock v0.0.0-20191108225356-d9c65923cb8f github.com/opencontainers/runc v1.0.3 github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 diff --git a/src/runtime/go.sum b/src/runtime/go.sum index 88f3e0a8a..da4fcc3fe 100644 --- a/src/runtime/go.sum +++ b/src/runtime/go.sum @@ -576,8 +576,6 @@ github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7 github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/kata-containers/govmm v0.0.0-20220117131932-0781a21804ee h1:XofauxL6B1JEeDS+Ta/M1tM9Kutj/n72JSAvx10ubFA= -github.com/kata-containers/govmm v0.0.0-20220117131932-0781a21804ee/go.mod h1:A6QaNB6N6PRQ9mTRpFtUxiF5T5CJpzLALjxBrUQPlFI= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= diff --git a/src/runtime/pkg/govmm/qemu/examples_test.go b/src/runtime/pkg/govmm/qemu/examples_test.go index 1946aeef8..22cc0eff3 100644 --- a/src/runtime/pkg/govmm/qemu/examples_test.go +++ b/src/runtime/pkg/govmm/qemu/examples_test.go @@ -21,7 +21,7 @@ import ( "context" - "github.com/kata-containers/govmm/qemu" + "github.com/kata-containers/kata-containers/src/runtime/pkg/govmm/qemu" ) func Example() { diff --git a/src/runtime/pkg/katautils/config.go b/src/runtime/pkg/katautils/config.go index 7035860b3..20ed1b695 100644 --- a/src/runtime/pkg/katautils/config.go +++ b/src/runtime/pkg/katautils/config.go @@ -15,7 +15,7 @@ import ( "strings" "github.com/BurntSushi/toml" - govmmQemu "github.com/kata-containers/govmm/qemu" + govmmQemu "github.com/kata-containers/kata-containers/src/runtime/pkg/govmm/qemu" "github.com/kata-containers/kata-containers/src/runtime/pkg/katautils/katatrace" "github.com/kata-containers/kata-containers/src/runtime/pkg/oci" vc "github.com/kata-containers/kata-containers/src/runtime/virtcontainers" diff --git a/src/runtime/vendor/github.com/kata-containers/govmm/COPYING b/src/runtime/vendor/github.com/kata-containers/govmm/COPYING deleted file mode 100644 index d64569567..000000000 --- a/src/runtime/vendor/github.com/kata-containers/govmm/COPYING +++ /dev/null @@ -1,202 +0,0 @@ - - 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 - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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/src/runtime/vendor/github.com/kata-containers/govmm/qemu/image.go b/src/runtime/vendor/github.com/kata-containers/govmm/qemu/image.go deleted file mode 100644 index ddee0670e..000000000 --- a/src/runtime/vendor/github.com/kata-containers/govmm/qemu/image.go +++ /dev/null @@ -1,77 +0,0 @@ -/* -// Copyright contributors to the Virtual Machine Manager for Go project -// -// 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. -*/ - -package qemu - -import ( - "context" - "fmt" - "io/ioutil" - "os" - "os/exec" - "path" - "syscall" -) - -// CreateCloudInitISO creates a cloud-init ConfigDrive ISO image. This is -// useful for configuring newly booted VMs. Before it can create the ISO -// image it needs to create a file tree with the various files that will -// make up the image. This directory is created under scratchDir and is -// deleted when when the function returns, successfully or otherwise. ctx is -// a context that can be used to timeout or cancel the image creation. -// isoPath contains the desired path of the ISO image to be created. The -// userdata and metadata parameters are byte slices that contain the -// ConfigDrive userdata and metadata that will be stored with the ISO image. -// The attrs parameter can be used to control aspects of the newly created -// qemu process, such as the user and group under which it runs. It may be nil. -func CreateCloudInitISO(ctx context.Context, scratchDir, isoPath string, - userData, metaData []byte, attr *syscall.SysProcAttr) error { - configDrivePath := path.Join(scratchDir, "clr-cloud-init") - dataDirPath := path.Join(configDrivePath, "openstack", "latest") - metaDataPath := path.Join(dataDirPath, "meta_data.json") - userDataPath := path.Join(dataDirPath, "user_data") - - defer func() { - /* #nosec */ - _ = os.RemoveAll(configDrivePath) - }() - - err := os.MkdirAll(dataDirPath, 0750) - if err != nil { - return fmt.Errorf("unable to create config drive directory %s : %v", - dataDirPath, err) - } - - err = ioutil.WriteFile(metaDataPath, metaData, 0644) - if err != nil { - return fmt.Errorf("unable to create %s : %v", metaDataPath, err) - } - - err = ioutil.WriteFile(userDataPath, userData, 0644) - if err != nil { - return fmt.Errorf("unable to create %s : %v", userDataPath, err) - } - - cmd := exec.CommandContext(ctx, "xorriso", "-as", "mkisofs", "-R", "-V", "config-2", - "-o", isoPath, configDrivePath) - cmd.SysProcAttr = attr - err = cmd.Run() - if err != nil { - return fmt.Errorf("unable to create cloudinit iso image %v", err) - } - - return nil -} diff --git a/src/runtime/vendor/github.com/kata-containers/govmm/qemu/qemu.go b/src/runtime/vendor/github.com/kata-containers/govmm/qemu/qemu.go deleted file mode 100644 index c43ff5795..000000000 --- a/src/runtime/vendor/github.com/kata-containers/govmm/qemu/qemu.go +++ /dev/null @@ -1,3039 +0,0 @@ -/* -// Copyright contributors to the Virtual Machine Manager for Go project -// -// 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. -*/ - -// Package qemu provides methods and types for launching and managing QEMU -// instances. Instances can be launched with the LaunchQemu function and -// managed thereafter via QMPStart and the QMP object that this function -// returns. To manage a qemu instance after it has been launched you need -// to pass the -qmp option during launch requesting the qemu instance to create -// a QMP unix domain manageent socket, e.g., -// -qmp unix:/tmp/qmp-socket,server,nowait. For more information see the -// example below. -package qemu - -import ( - "bytes" - "fmt" - "log" - "os" - "os/exec" - "runtime" - "strconv" - "strings" - "syscall" - - "context" -) - -// Machine describes the machine type qemu will emulate. -type Machine struct { - // Type is the machine type to be used by qemu. - Type string - - // Acceleration are the machine acceleration options to be used by qemu. - Acceleration string - - // Options are options for the machine type - // For example gic-version=host and usb=off - Options string -} - -const ( - // MachineTypeMicrovm is the QEMU microvm machine type for amd64 - MachineTypeMicrovm string = "microvm" -) - -// Device is the qemu device interface. -type Device interface { - Valid() bool - QemuParams(config *Config) []string -} - -// DeviceDriver is the device driver string. -type DeviceDriver string - -const ( - // LegacySerial is the legacy serial device driver - LegacySerial DeviceDriver = "serial" - - // NVDIMM is the Non Volatile DIMM device driver. - NVDIMM DeviceDriver = "nvdimm" - - // VirtioNet is the virtio networking device driver. - VirtioNet DeviceDriver = "virtio-net" - - // VirtioNetPCI is the virt-io pci networking device driver. - VirtioNetPCI DeviceDriver = "virtio-net-pci" - - // VirtioNetCCW is the virt-io ccw networking device driver. - VirtioNetCCW DeviceDriver = "virtio-net-ccw" - - // VirtioBlock is the block device driver. - VirtioBlock DeviceDriver = "virtio-blk" - - // Console is the console device driver. - Console DeviceDriver = "virtconsole" - - // Virtio9P is the 9pfs device driver. - Virtio9P DeviceDriver = "virtio-9p" - - // VirtioSerial is the serial device driver. - VirtioSerial DeviceDriver = "virtio-serial" - - // VirtioSerialPort is the serial port device driver. - VirtioSerialPort DeviceDriver = "virtserialport" - - // VirtioRng is the paravirtualized RNG device driver. - VirtioRng DeviceDriver = "virtio-rng" - - // VirtioBalloon is the memory balloon device driver. - VirtioBalloon DeviceDriver = "virtio-balloon" - - //VhostUserSCSI represents a SCSI vhostuser device type. - VhostUserSCSI DeviceDriver = "vhost-user-scsi" - - //VhostUserNet represents a net vhostuser device type. - VhostUserNet DeviceDriver = "virtio-net" - - //VhostUserBlk represents a block vhostuser device type. - VhostUserBlk DeviceDriver = "vhost-user-blk" - - //VhostUserFS represents a virtio-fs vhostuser device type - VhostUserFS DeviceDriver = "vhost-user-fs" - - // PCIBridgeDriver represents a PCI bridge device type. - PCIBridgeDriver DeviceDriver = "pci-bridge" - - // PCIePCIBridgeDriver represents a PCIe to PCI bridge device type. - PCIePCIBridgeDriver DeviceDriver = "pcie-pci-bridge" - - // VfioPCI is the vfio driver with PCI transport. - VfioPCI DeviceDriver = "vfio-pci" - - // VfioCCW is the vfio driver with CCW transport. - VfioCCW DeviceDriver = "vfio-ccw" - - // VfioAP is the vfio driver with AP transport. - VfioAP DeviceDriver = "vfio-ap" - - // VHostVSockPCI is a generic Vsock vhost device with PCI transport. - VHostVSockPCI DeviceDriver = "vhost-vsock-pci" - - // PCIeRootPort is a PCIe Root Port, the PCIe device should be hotplugged to this port. - PCIeRootPort DeviceDriver = "pcie-root-port" - - // Loader is the Loader device driver. - Loader DeviceDriver = "loader" - - // SpaprTPMProxy is used for enabling guest to run in secure mode on ppc64le. - SpaprTPMProxy DeviceDriver = "spapr-tpm-proxy" -) - -func isDimmSupported(config *Config) bool { - switch runtime.GOARCH { - case "amd64", "386", "ppc64le", "arm64": - if config != nil && config.Machine.Type == MachineTypeMicrovm { - // microvm does not support NUMA - return false - } - return true - default: - return false - } -} - -// VirtioTransport is the transport in use for a virtio device. -type VirtioTransport string - -const ( - // TransportPCI is the PCI transport for virtio device. - TransportPCI VirtioTransport = "pci" - - // TransportCCW is the CCW transport for virtio devices. - TransportCCW VirtioTransport = "ccw" - - // TransportMMIO is the MMIO transport for virtio devices. - TransportMMIO VirtioTransport = "mmio" -) - -// defaultTransport returns the default transport for the current combination -// of host's architecture and QEMU machine type. -func (transport VirtioTransport) defaultTransport(config *Config) VirtioTransport { - switch runtime.GOARCH { - case "amd64", "386": - if config != nil && config.Machine.Type == MachineTypeMicrovm { - return TransportMMIO - } - return TransportPCI - case "s390x": - return TransportCCW - default: - return TransportPCI - } -} - -// isVirtioPCI returns true if the transport is PCI. -func (transport VirtioTransport) isVirtioPCI(config *Config) bool { - if transport == "" { - transport = transport.defaultTransport(config) - } - - return transport == TransportPCI -} - -// isVirtioCCW returns true if the transport is CCW. -func (transport VirtioTransport) isVirtioCCW(config *Config) bool { - if transport == "" { - transport = transport.defaultTransport(config) - } - - return transport == TransportCCW -} - -// getName returns the name of the current transport. -func (transport VirtioTransport) getName(config *Config) string { - if transport == "" { - transport = transport.defaultTransport(config) - } - - return string(transport) -} - -// disableModern returns the parameters with the disable-modern option. -// In case the device driver is not a PCI device and it doesn't have the option -// an empty string is returned. -func (transport VirtioTransport) disableModern(config *Config, disable bool) string { - if !transport.isVirtioPCI(config) { - return "" - } - - if disable { - return "disable-modern=true" - } - - return "disable-modern=false" -} - -// ObjectType is a string representing a qemu object type. -type ObjectType string - -const ( - // MemoryBackendFile represents a guest memory mapped file. - MemoryBackendFile ObjectType = "memory-backend-file" - - // MemoryBackendEPC represents a guest memory backend EPC for SGX. - MemoryBackendEPC ObjectType = "memory-backend-epc" - - // TDXGuest represents a TDX object - TDXGuest ObjectType = "tdx-guest" - - // SEVGuest represents an SEV guest object - SEVGuest ObjectType = "sev-guest" - - // SecExecGuest represents an s390x Secure Execution (Protected Virtualization in QEMU) object - SecExecGuest ObjectType = "s390-pv-guest" - // PEFGuest represent ppc64le PEF(Protected Execution Facility) object. - PEFGuest ObjectType = "pef-guest" -) - -// Object is a qemu object representation. -type Object struct { - // Driver is the qemu device driver - Driver DeviceDriver - - // Type is the qemu object type. - Type ObjectType - - // ID is the user defined object ID. - ID string - - // DeviceID is the user defined device ID. - DeviceID string - - // MemPath is the object's memory path. - // This is only relevant for memory objects - MemPath string - - // Size is the object size in bytes - Size uint64 - - // Debug this is a debug object - Debug bool - - // File is the device file - File string - - // CBitPos is the location of the C-bit in a guest page table entry - // This is only relevant for sev-guest objects - CBitPos uint32 - - // ReducedPhysBits is the reduction in the guest physical address space - // This is only relevant for sev-guest objects - ReducedPhysBits uint32 - - // ReadOnly specifies whether `MemPath` is opened read-only or read/write (default) - ReadOnly bool - - // Prealloc enables memory preallocation - Prealloc bool -} - -// Valid returns true if the Object structure is valid and complete. -func (object Object) Valid() bool { - switch object.Type { - case MemoryBackendFile: - return object.ID != "" && object.MemPath != "" && object.Size != 0 - case MemoryBackendEPC: - return object.ID != "" && object.Size != 0 - case TDXGuest: - return object.ID != "" && object.File != "" && object.DeviceID != "" - case SEVGuest: - return object.ID != "" && object.File != "" && object.CBitPos != 0 && object.ReducedPhysBits != 0 - case SecExecGuest: - return object.ID != "" - case PEFGuest: - return object.ID != "" && object.File != "" - - default: - return false - } -} - -// QemuParams returns the qemu parameters built out of this Object device. -func (object Object) QemuParams(config *Config) []string { - var objectParams []string - var deviceParams []string - var driveParams []string - var qemuParams []string - - switch object.Type { - case MemoryBackendFile: - objectParams = append(objectParams, string(object.Type)) - objectParams = append(objectParams, fmt.Sprintf("id=%s", object.ID)) - objectParams = append(objectParams, fmt.Sprintf("mem-path=%s", object.MemPath)) - objectParams = append(objectParams, fmt.Sprintf("size=%d", object.Size)) - - deviceParams = append(deviceParams, string(object.Driver)) - deviceParams = append(deviceParams, fmt.Sprintf("id=%s", object.DeviceID)) - deviceParams = append(deviceParams, fmt.Sprintf("memdev=%s", object.ID)) - - if object.ReadOnly { - objectParams = append(objectParams, "readonly=on") - deviceParams = append(deviceParams, "unarmed=on") - } - case MemoryBackendEPC: - objectParams = append(objectParams, string(object.Type)) - objectParams = append(objectParams, fmt.Sprintf("id=%s", object.ID)) - objectParams = append(objectParams, fmt.Sprintf("size=%d", object.Size)) - if object.Prealloc { - objectParams = append(objectParams, "prealloc=on") - } - - case TDXGuest: - objectParams = append(objectParams, string(object.Type)) - objectParams = append(objectParams, fmt.Sprintf("id=%s", object.ID)) - if object.Debug { - objectParams = append(objectParams, "debug=on") - } - deviceParams = append(deviceParams, string(object.Driver)) - deviceParams = append(deviceParams, fmt.Sprintf("id=%s", object.DeviceID)) - deviceParams = append(deviceParams, fmt.Sprintf("file=%s", object.File)) - case SEVGuest: - objectParams = append(objectParams, string(object.Type)) - objectParams = append(objectParams, fmt.Sprintf("id=%s", object.ID)) - objectParams = append(objectParams, fmt.Sprintf("cbitpos=%d", object.CBitPos)) - objectParams = append(objectParams, fmt.Sprintf("reduced-phys-bits=%d", object.ReducedPhysBits)) - - driveParams = append(driveParams, "if=pflash,format=raw,readonly=on") - driveParams = append(driveParams, fmt.Sprintf("file=%s", object.File)) - case SecExecGuest: - objectParams = append(objectParams, string(object.Type)) - objectParams = append(objectParams, fmt.Sprintf("id=%s", object.ID)) - case PEFGuest: - objectParams = append(objectParams, string(object.Type)) - objectParams = append(objectParams, fmt.Sprintf("id=%s", object.ID)) - - deviceParams = append(deviceParams, string(object.Driver)) - deviceParams = append(deviceParams, fmt.Sprintf("id=%s", object.DeviceID)) - deviceParams = append(deviceParams, fmt.Sprintf("host-path=%s", object.File)) - - } - - if len(deviceParams) > 0 { - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) - } - - if len(objectParams) > 0 { - qemuParams = append(qemuParams, "-object") - qemuParams = append(qemuParams, strings.Join(objectParams, ",")) - } - - if len(driveParams) > 0 { - qemuParams = append(qemuParams, "-drive") - qemuParams = append(qemuParams, strings.Join(driveParams, ",")) - } - - return qemuParams -} - -// Virtio9PMultidev filesystem behaviour to deal -// with multiple devices being shared with a 9p export. -type Virtio9PMultidev string - -const ( - // Remap shares multiple devices with only one export. - Remap Virtio9PMultidev = "remap" - - // Warn assumes that only one device is shared by the same export. - // Only a warning message is logged (once) by qemu on host side. - // This is the default behaviour. - Warn Virtio9PMultidev = "warn" - - // Forbid like "warn" but also deny access to additional devices on guest. - Forbid Virtio9PMultidev = "forbid" -) - -// FSDriver represents a qemu filesystem driver. -type FSDriver string - -// SecurityModelType is a qemu filesystem security model type. -type SecurityModelType string - -const ( - // Local is the local qemu filesystem driver. - Local FSDriver = "local" - - // Handle is the handle qemu filesystem driver. - Handle FSDriver = "handle" - - // Proxy is the proxy qemu filesystem driver. - Proxy FSDriver = "proxy" -) - -const ( - // None is like passthrough without failure reports. - None SecurityModelType = "none" - - // PassThrough uses the same credentials on both the host and guest. - PassThrough SecurityModelType = "passthrough" - - // MappedXattr stores some files attributes as extended attributes. - MappedXattr SecurityModelType = "mapped-xattr" - - // MappedFile stores some files attributes in the .virtfs directory. - MappedFile SecurityModelType = "mapped-file" -) - -// FSDevice represents a qemu filesystem configuration. -type FSDevice struct { - // Driver is the qemu device driver - Driver DeviceDriver - - // FSDriver is the filesystem driver backend. - FSDriver FSDriver - - // ID is the filesystem identifier. - ID string - - // Path is the host root path for this filesystem. - Path string - - // MountTag is the device filesystem mount point tag. - MountTag string - - // SecurityModel is the security model for this filesystem device. - SecurityModel SecurityModelType - - // DisableModern prevents qemu from relying on fast MMIO. - DisableModern bool - - // ROMFile specifies the ROM file being used for this device. - ROMFile string - - // DevNo identifies the ccw devices for s390x architecture - DevNo string - - // Transport is the virtio transport for this device. - Transport VirtioTransport - - // Multidev is the filesystem behaviour to deal - // with multiple devices being shared with a 9p export - Multidev Virtio9PMultidev -} - -// Virtio9PTransport is a map of the virtio-9p device name that corresponds -// to each transport. -var Virtio9PTransport = map[VirtioTransport]string{ - TransportPCI: "virtio-9p-pci", - TransportCCW: "virtio-9p-ccw", - TransportMMIO: "virtio-9p-device", -} - -// Valid returns true if the FSDevice structure is valid and complete. -func (fsdev FSDevice) Valid() bool { - if fsdev.ID == "" || fsdev.Path == "" || fsdev.MountTag == "" { - return false - } - - return true -} - -// QemuParams returns the qemu parameters built out of this filesystem device. -func (fsdev FSDevice) QemuParams(config *Config) []string { - var fsParams []string - var deviceParams []string - var qemuParams []string - - deviceParams = append(deviceParams, fsdev.deviceName(config)) - if s := fsdev.Transport.disableModern(config, fsdev.DisableModern); s != "" { - deviceParams = append(deviceParams, s) - } - deviceParams = append(deviceParams, fmt.Sprintf("fsdev=%s", fsdev.ID)) - deviceParams = append(deviceParams, fmt.Sprintf("mount_tag=%s", fsdev.MountTag)) - if fsdev.Transport.isVirtioPCI(config) && fsdev.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", fsdev.ROMFile)) - } - if fsdev.Transport.isVirtioCCW(config) { - if config.Knobs.IOMMUPlatform { - deviceParams = append(deviceParams, ",iommu_platform=on") - } - deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", fsdev.DevNo)) - } - - fsParams = append(fsParams, string(fsdev.FSDriver)) - fsParams = append(fsParams, fmt.Sprintf("id=%s", fsdev.ID)) - fsParams = append(fsParams, fmt.Sprintf("path=%s", fsdev.Path)) - fsParams = append(fsParams, fmt.Sprintf("security_model=%s", fsdev.SecurityModel)) - - if fsdev.Multidev != "" { - fsParams = append(fsParams, fmt.Sprintf("multidevs=%s", fsdev.Multidev)) - } - - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) - - qemuParams = append(qemuParams, "-fsdev") - qemuParams = append(qemuParams, strings.Join(fsParams, ",")) - - return qemuParams -} - -// deviceName returns the QEMU shared filesystem device name for the current -// combination of driver and transport. -func (fsdev FSDevice) deviceName(config *Config) string { - if fsdev.Transport == "" { - fsdev.Transport = fsdev.Transport.defaultTransport(config) - } - - switch fsdev.Driver { - case Virtio9P: - return Virtio9PTransport[fsdev.Transport] - } - - return string(fsdev.Driver) -} - -// CharDeviceBackend is the character device backend for qemu -type CharDeviceBackend string - -const ( - // Pipe creates a 2 way connection to the guest. - Pipe CharDeviceBackend = "pipe" - - // Socket creates a 2 way stream socket (TCP or Unix). - Socket CharDeviceBackend = "socket" - - // CharConsole sends traffic from the guest to QEMU's standard output. - CharConsole CharDeviceBackend = "console" - - // Serial sends traffic from the guest to a serial device on the host. - Serial CharDeviceBackend = "serial" - - // TTY is an alias for Serial. - TTY CharDeviceBackend = "tty" - - // PTY creates a new pseudo-terminal on the host and connect to it. - PTY CharDeviceBackend = "pty" - - // File sends traffic from the guest to a file on the host. - File CharDeviceBackend = "file" -) - -// CharDevice represents a qemu character device. -type CharDevice struct { - Backend CharDeviceBackend - - // Driver is the qemu device driver - Driver DeviceDriver - - // Bus is the serial bus associated to this device. - Bus string - - // DeviceID is the user defined device ID. - DeviceID string - - ID string - Path string - Name string - - // DisableModern prevents qemu from relying on fast MMIO. - DisableModern bool - - // ROMFile specifies the ROM file being used for this device. - ROMFile string - - // DevNo identifies the ccw devices for s390x architecture - DevNo string - - // Transport is the virtio transport for this device. - Transport VirtioTransport -} - -// VirtioSerialTransport is a map of the virtio-serial device name that -// corresponds to each transport. -var VirtioSerialTransport = map[VirtioTransport]string{ - TransportPCI: "virtio-serial-pci", - TransportCCW: "virtio-serial-ccw", - TransportMMIO: "virtio-serial-device", -} - -// Valid returns true if the CharDevice structure is valid and complete. -func (cdev CharDevice) Valid() bool { - if cdev.ID == "" || cdev.Path == "" { - return false - } - - return true -} - -// QemuParams returns the qemu parameters built out of this character device. -func (cdev CharDevice) QemuParams(config *Config) []string { - var cdevParams []string - var deviceParams []string - var qemuParams []string - - deviceParams = append(deviceParams, cdev.deviceName(config)) - if cdev.Driver == VirtioSerial { - if s := cdev.Transport.disableModern(config, cdev.DisableModern); s != "" { - deviceParams = append(deviceParams, s) - } - } - if cdev.Bus != "" { - deviceParams = append(deviceParams, fmt.Sprintf("bus=%s", cdev.Bus)) - } - deviceParams = append(deviceParams, fmt.Sprintf("chardev=%s", cdev.ID)) - deviceParams = append(deviceParams, fmt.Sprintf("id=%s", cdev.DeviceID)) - if cdev.Name != "" { - deviceParams = append(deviceParams, fmt.Sprintf("name=%s", cdev.Name)) - } - if cdev.Driver == VirtioSerial && cdev.Transport.isVirtioPCI(config) && cdev.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", cdev.ROMFile)) - } - - if cdev.Driver == VirtioSerial && cdev.Transport.isVirtioCCW(config) { - if config.Knobs.IOMMUPlatform { - deviceParams = append(deviceParams, "iommu_platform=on") - } - deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", cdev.DevNo)) - } - - cdevParams = append(cdevParams, string(cdev.Backend)) - cdevParams = append(cdevParams, fmt.Sprintf("id=%s", cdev.ID)) - if cdev.Backend == Socket { - cdevParams = append(cdevParams, fmt.Sprintf("path=%s,server=on,wait=off", cdev.Path)) - } else { - cdevParams = append(cdevParams, fmt.Sprintf("path=%s", cdev.Path)) - } - - // Legacy serial is special. It does not follow the device + driver model - if cdev.Driver != LegacySerial { - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) - } - - qemuParams = append(qemuParams, "-chardev") - qemuParams = append(qemuParams, strings.Join(cdevParams, ",")) - - return qemuParams -} - -// deviceName returns the QEMU device name for the current combination of -// driver and transport. -func (cdev CharDevice) deviceName(config *Config) string { - if cdev.Transport == "" { - cdev.Transport = cdev.Transport.defaultTransport(config) - } - - switch cdev.Driver { - case VirtioSerial: - return VirtioSerialTransport[cdev.Transport] - } - - return string(cdev.Driver) -} - -// NetDeviceType is a qemu networking device type. -type NetDeviceType string - -const ( - // TAP is a TAP networking device type. - TAP NetDeviceType = "tap" - - // MACVTAP is a macvtap networking device type. - MACVTAP NetDeviceType = "macvtap" - - // IPVTAP is a ipvtap virtual networking device type. - IPVTAP NetDeviceType = "ipvtap" - - // VETHTAP is a veth-tap virtual networking device type. - VETHTAP NetDeviceType = "vethtap" - - // VFIO is a direct assigned PCI device or PCI VF - VFIO NetDeviceType = "VFIO" - - // VHOSTUSER is a vhost-user port (socket) - VHOSTUSER NetDeviceType = "vhostuser" -) - -// QemuNetdevParam converts to the QEMU -netdev parameter notation -func (n NetDeviceType) QemuNetdevParam(netdev *NetDevice, config *Config) string { - if netdev.Transport == "" { - netdev.Transport = netdev.Transport.defaultTransport(config) - } - - switch n { - case TAP: - return "tap" - case MACVTAP: - return "tap" - case IPVTAP: - return "tap" - case VETHTAP: - return "tap" // -netdev type=tap -device virtio-net-pci - case VFIO: - if netdev.Transport == TransportMMIO { - log.Fatal("vfio devices are not support with the MMIO transport") - } - return "" // -device vfio-pci (no netdev) - case VHOSTUSER: - if netdev.Transport == TransportCCW { - log.Fatal("vhost-user devices are not supported on IBM Z") - } - return "vhost-user" // -netdev type=vhost-user (no device) - default: - return "" - - } -} - -// QemuDeviceParam converts to the QEMU -device parameter notation -func (n NetDeviceType) QemuDeviceParam(netdev *NetDevice, config *Config) DeviceDriver { - if netdev.Transport == "" { - netdev.Transport = netdev.Transport.defaultTransport(config) - } - - var device string - - switch n { - case TAP: - device = "virtio-net" - case MACVTAP: - device = "virtio-net" - case IPVTAP: - device = "virtio-net" - case VETHTAP: - device = "virtio-net" // -netdev type=tap -device virtio-net-pci - case VFIO: - if netdev.Transport == TransportMMIO { - log.Fatal("vfio devices are not support with the MMIO transport") - } - device = "vfio" // -device vfio-pci (no netdev) - case VHOSTUSER: - if netdev.Transport == TransportCCW { - log.Fatal("vhost-user devices are not supported on IBM Z") - } - return "" // -netdev type=vhost-user (no device) - default: - return "" - } - - switch netdev.Transport { - case TransportPCI: - return DeviceDriver(device + "-pci") - case TransportCCW: - return DeviceDriver(device + "-ccw") - case TransportMMIO: - return DeviceDriver(device + "-device") - default: - return "" - } -} - -// NetDevice represents a guest networking device -type NetDevice struct { - // Type is the netdev type (e.g. tap). - Type NetDeviceType - - // Driver is the qemu device driver - Driver DeviceDriver - - // ID is the netdevice identifier. - ID string - - // IfName is the interface name, - IFName string - - // Bus is the bus path name of a PCI device. - Bus string - - // Addr is the address offset of a PCI device. - Addr string - - // DownScript is the tap interface deconfiguration script. - DownScript string - - // Script is the tap interface configuration script. - Script string - - // FDs represents the list of already existing file descriptors to be used. - // This is mostly useful for mq support. - FDs []*os.File - VhostFDs []*os.File - - // VHost enables virtio device emulation from the host kernel instead of from qemu. - VHost bool - - // MACAddress is the networking device interface MAC address. - MACAddress string - - // DisableModern prevents qemu from relying on fast MMIO. - DisableModern bool - - // ROMFile specifies the ROM file being used for this device. - ROMFile string - - // DevNo identifies the ccw devices for s390x architecture - DevNo string - - // Transport is the virtio transport for this device. - Transport VirtioTransport -} - -// VirtioNetTransport is a map of the virtio-net device name that corresponds -// to each transport. -var VirtioNetTransport = map[VirtioTransport]string{ - TransportPCI: "virtio-net-pci", - TransportCCW: "virtio-net-ccw", - TransportMMIO: "virtio-net-device", -} - -// Valid returns true if the NetDevice structure is valid and complete. -func (netdev NetDevice) Valid() bool { - if netdev.ID == "" || netdev.IFName == "" { - return false - } - - switch netdev.Type { - case TAP: - return true - case MACVTAP: - return true - default: - return false - } -} - -// mqParameter returns the parameters for multi-queue driver. If the driver is a PCI device then the -// vector flag is required. If the driver is a CCW type than the vector flag is not implemented and only -// multi-queue option mq needs to be activated. See comment in libvirt code at -// https://github.com/libvirt/libvirt/blob/6e7e965dcd3d885739129b1454ce19e819b54c25/src/qemu/qemu_command.c#L3633 -func (netdev NetDevice) mqParameter(config *Config) string { - p := []string{"mq=on"} - - if netdev.Transport.isVirtioPCI(config) { - // https://www.linux-kvm.org/page/Multiqueue - // -netdev tap,vhost=on,queues=N - // enable mq and specify msix vectors in qemu cmdline - // (2N+2 vectors, N for tx queues, N for rx queues, 1 for config, and one for possible control vq) - // -device virtio-net-pci,mq=on,vectors=2N+2... - // enable mq in guest by 'ethtool -L eth0 combined $queue_num' - // Clearlinux automatically sets up the queues properly - // The agent implementation should do this to ensure that it is - // always set - vectors := len(netdev.FDs)*2 + 2 - p = append(p, fmt.Sprintf("vectors=%d", vectors)) - } - - return strings.Join(p, ",") -} - -// QemuDeviceParams returns the -device parameters for this network device -func (netdev NetDevice) QemuDeviceParams(config *Config) []string { - var deviceParams []string - - driver := netdev.Type.QemuDeviceParam(&netdev, config) - if driver == "" { - return nil - } - - deviceParams = append(deviceParams, fmt.Sprintf("driver=%s", driver)) - deviceParams = append(deviceParams, fmt.Sprintf("netdev=%s", netdev.ID)) - deviceParams = append(deviceParams, fmt.Sprintf("mac=%s", netdev.MACAddress)) - - if netdev.Bus != "" { - deviceParams = append(deviceParams, fmt.Sprintf("bus=%s", netdev.Bus)) - } - - if netdev.Addr != "" { - addr, err := strconv.Atoi(netdev.Addr) - if err == nil && addr >= 0 { - deviceParams = append(deviceParams, fmt.Sprintf("addr=%x", addr)) - } - } - if s := netdev.Transport.disableModern(config, netdev.DisableModern); s != "" { - deviceParams = append(deviceParams, s) - } - - if len(netdev.FDs) > 0 { - // Note: We are appending to the device params here - deviceParams = append(deviceParams, netdev.mqParameter(config)) - } - - if netdev.Transport.isVirtioPCI(config) && netdev.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", netdev.ROMFile)) - } - - if netdev.Transport.isVirtioCCW(config) { - if config.Knobs.IOMMUPlatform { - deviceParams = append(deviceParams, "iommu_platform=on") - } - deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", netdev.DevNo)) - } - - return deviceParams -} - -// QemuNetdevParams returns the -netdev parameters for this network device -func (netdev NetDevice) QemuNetdevParams(config *Config) []string { - var netdevParams []string - - netdevType := netdev.Type.QemuNetdevParam(&netdev, config) - if netdevType == "" { - return nil - } - - netdevParams = append(netdevParams, netdevType) - netdevParams = append(netdevParams, fmt.Sprintf("id=%s", netdev.ID)) - - if netdev.VHost { - netdevParams = append(netdevParams, "vhost=on") - if len(netdev.VhostFDs) > 0 { - var fdParams []string - qemuFDs := config.appendFDs(netdev.VhostFDs) - for _, fd := range qemuFDs { - fdParams = append(fdParams, fmt.Sprintf("%d", fd)) - } - netdevParams = append(netdevParams, fmt.Sprintf("vhostfds=%s", strings.Join(fdParams, ":"))) - } - } - - if len(netdev.FDs) > 0 { - var fdParams []string - - qemuFDs := config.appendFDs(netdev.FDs) - for _, fd := range qemuFDs { - fdParams = append(fdParams, fmt.Sprintf("%d", fd)) - } - - netdevParams = append(netdevParams, fmt.Sprintf("fds=%s", strings.Join(fdParams, ":"))) - - } else { - netdevParams = append(netdevParams, fmt.Sprintf("ifname=%s", netdev.IFName)) - if netdev.DownScript != "" { - netdevParams = append(netdevParams, fmt.Sprintf("downscript=%s", netdev.DownScript)) - } - if netdev.Script != "" { - netdevParams = append(netdevParams, fmt.Sprintf("script=%s", netdev.Script)) - } - } - return netdevParams -} - -// QemuParams returns the qemu parameters built out of this network device. -func (netdev NetDevice) QemuParams(config *Config) []string { - var netdevParams []string - var deviceParams []string - var qemuParams []string - - // Macvtap can only be connected via fds - if (netdev.Type == MACVTAP) && (len(netdev.FDs) == 0) { - return nil // implicit error - } - - if netdev.Type.QemuNetdevParam(&netdev, config) != "" { - netdevParams = netdev.QemuNetdevParams(config) - if netdevParams != nil { - qemuParams = append(qemuParams, "-netdev") - qemuParams = append(qemuParams, strings.Join(netdevParams, ",")) - } - } - - if netdev.Type.QemuDeviceParam(&netdev, config) != "" { - deviceParams = netdev.QemuDeviceParams(config) - if deviceParams != nil { - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) - } - } - - return qemuParams -} - -// LegacySerialDevice represents a qemu legacy serial device. -type LegacySerialDevice struct { - // ID is the serial device identifier. - // This maps to the char dev associated with the device - // as serial does not have a notion of id - // e.g: - // -chardev stdio,id=char0,mux=on,logfile=serial.log,signal=off -serial chardev:char0 - // -chardev file,id=char0,path=serial.log -serial chardev:char0 - Chardev string -} - -// Valid returns true if the LegacySerialDevice structure is valid and complete. -func (dev LegacySerialDevice) Valid() bool { - return dev.Chardev != "" -} - -// QemuParams returns the qemu parameters built out of this serial device. -func (dev LegacySerialDevice) QemuParams(config *Config) []string { - var deviceParam string - var qemuParams []string - - deviceParam = fmt.Sprintf("chardev:%s", dev.Chardev) - - qemuParams = append(qemuParams, "-serial") - qemuParams = append(qemuParams, deviceParam) - - return qemuParams -} - -/* Not used currently -// deviceName returns the QEMU device name for the current combination of -// driver and transport. -func (dev LegacySerialDevice) deviceName(config *Config) string { - return dev.Chardev -} -*/ - -// SerialDevice represents a qemu serial device. -type SerialDevice struct { - // Driver is the qemu device driver - Driver DeviceDriver - - // ID is the serial device identifier. - ID string - - // DisableModern prevents qemu from relying on fast MMIO. - DisableModern bool - - // ROMFile specifies the ROM file being used for this device. - ROMFile string - - // DevNo identifies the ccw devices for s390x architecture - DevNo string - - // Transport is the virtio transport for this device. - Transport VirtioTransport - - // MaxPorts is the maximum number of ports for this device. - MaxPorts uint -} - -// Valid returns true if the SerialDevice structure is valid and complete. -func (dev SerialDevice) Valid() bool { - if dev.Driver == "" || dev.ID == "" { - return false - } - - return true -} - -// QemuParams returns the qemu parameters built out of this serial device. -func (dev SerialDevice) QemuParams(config *Config) []string { - var deviceParams []string - var qemuParams []string - - deviceParams = append(deviceParams, dev.deviceName(config)) - if s := dev.Transport.disableModern(config, dev.DisableModern); s != "" { - deviceParams = append(deviceParams, s) - } - deviceParams = append(deviceParams, fmt.Sprintf("id=%s", dev.ID)) - if dev.Transport.isVirtioPCI(config) && dev.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", dev.ROMFile)) - if dev.Driver == VirtioSerial && dev.MaxPorts != 0 { - deviceParams = append(deviceParams, fmt.Sprintf("max_ports=%d", dev.MaxPorts)) - } - } - - if dev.Transport.isVirtioCCW(config) { - if config.Knobs.IOMMUPlatform { - deviceParams = append(deviceParams, "iommu_platform=on") - } - deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", dev.DevNo)) - } - - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) - - return qemuParams -} - -// deviceName returns the QEMU device name for the current combination of -// driver and transport. -func (dev SerialDevice) deviceName(config *Config) string { - if dev.Transport == "" { - dev.Transport = dev.Transport.defaultTransport(config) - } - - switch dev.Driver { - case VirtioSerial: - return VirtioSerialTransport[dev.Transport] - } - - return string(dev.Driver) -} - -// BlockDeviceInterface defines the type of interface the device is connected to. -type BlockDeviceInterface string - -// BlockDeviceAIO defines the type of asynchronous I/O the block device should use. -type BlockDeviceAIO string - -// BlockDeviceFormat defines the image format used on a block device. -type BlockDeviceFormat string - -const ( - // NoInterface for block devices with no interfaces. - NoInterface BlockDeviceInterface = "none" - - // SCSI represents a SCSI block device interface. - SCSI BlockDeviceInterface = "scsi" -) - -const ( - // Threads is the pthread asynchronous I/O implementation. - Threads BlockDeviceAIO = "threads" - - // Native is the pthread asynchronous I/O implementation. - Native BlockDeviceAIO = "native" -) - -const ( - // QCOW2 is the Qemu Copy On Write v2 image format. - QCOW2 BlockDeviceFormat = "qcow2" -) - -// BlockDevice represents a qemu block device. -type BlockDevice struct { - Driver DeviceDriver - ID string - File string - Interface BlockDeviceInterface - AIO BlockDeviceAIO - Format BlockDeviceFormat - SCSI bool - WCE bool - - // DisableModern prevents qemu from relying on fast MMIO. - DisableModern bool - - // ROMFile specifies the ROM file being used for this device. - ROMFile string - - // DevNo identifies the ccw devices for s390x architecture - DevNo string - - // ShareRW enables multiple qemu instances to share the File - ShareRW bool - - // ReadOnly sets the block device in readonly mode - ReadOnly bool - - // Transport is the virtio transport for this device. - Transport VirtioTransport -} - -// VirtioBlockTransport is a map of the virtio-blk device name that corresponds -// to each transport. -var VirtioBlockTransport = map[VirtioTransport]string{ - TransportPCI: "virtio-blk-pci", - TransportCCW: "virtio-blk-ccw", - TransportMMIO: "virtio-blk-device", -} - -// Valid returns true if the BlockDevice structure is valid and complete. -func (blkdev BlockDevice) Valid() bool { - if blkdev.Driver == "" || blkdev.ID == "" || blkdev.File == "" { - return false - } - - return true -} - -// QemuParams returns the qemu parameters built out of this block device. -func (blkdev BlockDevice) QemuParams(config *Config) []string { - var blkParams []string - var deviceParams []string - var qemuParams []string - - deviceParams = append(deviceParams, blkdev.deviceName(config)) - if s := blkdev.Transport.disableModern(config, blkdev.DisableModern); s != "" { - deviceParams = append(deviceParams, s) - } - deviceParams = append(deviceParams, fmt.Sprintf("drive=%s", blkdev.ID)) - if !blkdev.SCSI { - deviceParams = append(deviceParams, "scsi=off") - } - - if !blkdev.WCE { - deviceParams = append(deviceParams, "config-wce=off") - } - - if blkdev.Transport.isVirtioPCI(config) && blkdev.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", blkdev.ROMFile)) - } - - if blkdev.Transport.isVirtioCCW(config) { - deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", blkdev.DevNo)) - } - - if blkdev.ShareRW { - deviceParams = append(deviceParams, "share-rw=on") - } - - deviceParams = append(deviceParams, fmt.Sprintf("serial=%s", blkdev.ID)) - - blkParams = append(blkParams, fmt.Sprintf("id=%s", blkdev.ID)) - blkParams = append(blkParams, fmt.Sprintf("file=%s", blkdev.File)) - blkParams = append(blkParams, fmt.Sprintf("aio=%s", blkdev.AIO)) - blkParams = append(blkParams, fmt.Sprintf("format=%s", blkdev.Format)) - blkParams = append(blkParams, fmt.Sprintf("if=%s", blkdev.Interface)) - - if blkdev.ReadOnly { - blkParams = append(blkParams, "readonly=on") - } - - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) - - qemuParams = append(qemuParams, "-drive") - qemuParams = append(qemuParams, strings.Join(blkParams, ",")) - - return qemuParams -} - -// deviceName returns the QEMU device name for the current combination of -// driver and transport. -func (blkdev BlockDevice) deviceName(config *Config) string { - if blkdev.Transport == "" { - blkdev.Transport = blkdev.Transport.defaultTransport(config) - } - - switch blkdev.Driver { - case VirtioBlock: - return VirtioBlockTransport[blkdev.Transport] - } - - return string(blkdev.Driver) -} - -// PVPanicDevice represents a qemu pvpanic device. -type PVPanicDevice struct { - NoShutdown bool -} - -// Valid always returns true for pvpanic device -func (dev PVPanicDevice) Valid() bool { - return true -} - -// QemuParams returns the qemu parameters built out of this serial device. -func (dev PVPanicDevice) QemuParams(config *Config) []string { - if dev.NoShutdown { - return []string{"-device", "pvpanic", "-no-shutdown"} - } - return []string{"-device", "pvpanic"} -} - -// LoaderDevice represents a qemu loader device. -type LoaderDevice struct { - File string - ID string -} - -// Valid returns true if there is a valid structure defined for LoaderDevice -func (dev LoaderDevice) Valid() bool { - if dev.File == "" { - return false - } - - if dev.ID == "" { - return false - } - - return true -} - -// QemuParams returns the qemu parameters built out of this loader device. -func (dev LoaderDevice) QemuParams(config *Config) []string { - var qemuParams []string - var deviceParams []string - - deviceParams = append(deviceParams, "loader") - deviceParams = append(deviceParams, fmt.Sprintf("file=%s", dev.File)) - deviceParams = append(deviceParams, fmt.Sprintf("id=%s", dev.ID)) - - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) - - return qemuParams -} - -// VhostUserDevice represents a qemu vhost-user device meant to be passed -// in to the guest -type VhostUserDevice struct { - SocketPath string //path to vhostuser socket on host - CharDevID string - TypeDevID string //variable QEMU parameter based on value of VhostUserType - Address string //used for MAC address in net case - Tag string //virtio-fs volume id for mounting inside guest - CacheSize uint32 //virtio-fs DAX cache size in MiB - SharedVersions bool //enable virtio-fs shared version metadata - VhostUserType DeviceDriver - - // ROMFile specifies the ROM file being used for this device. - ROMFile string - - // DevNo identifies the CCW device for s390x. - DevNo string - - // Transport is the virtio transport for this device. - Transport VirtioTransport -} - -// VhostUserNetTransport is a map of the virtio-net device name that -// corresponds to each transport. -var VhostUserNetTransport = map[VirtioTransport]string{ - TransportPCI: "virtio-net-pci", - TransportCCW: "virtio-net-ccw", - TransportMMIO: "virtio-net-device", -} - -// VhostUserSCSITransport is a map of the vhost-user-scsi device name that -// corresponds to each transport. -var VhostUserSCSITransport = map[VirtioTransport]string{ - TransportPCI: "vhost-user-scsi-pci", - TransportCCW: "vhost-user-scsi-ccw", - TransportMMIO: "vhost-user-scsi-device", -} - -// VhostUserBlkTransport is a map of the vhost-user-blk device name that -// corresponds to each transport. -var VhostUserBlkTransport = map[VirtioTransport]string{ - TransportPCI: "vhost-user-blk-pci", - TransportCCW: "vhost-user-blk-ccw", - TransportMMIO: "vhost-user-blk-device", -} - -// VhostUserFSTransport is a map of the vhost-user-fs device name that -// corresponds to each transport. -var VhostUserFSTransport = map[VirtioTransport]string{ - TransportPCI: "vhost-user-fs-pci", - TransportCCW: "vhost-user-fs-ccw", - TransportMMIO: "vhost-user-fs-device", -} - -// Valid returns true if there is a valid structure defined for VhostUserDevice -func (vhostuserDev VhostUserDevice) Valid() bool { - - if vhostuserDev.SocketPath == "" || vhostuserDev.CharDevID == "" { - return false - } - - switch vhostuserDev.VhostUserType { - case VhostUserNet: - if vhostuserDev.TypeDevID == "" || vhostuserDev.Address == "" { - return false - } - case VhostUserSCSI: - if vhostuserDev.TypeDevID == "" { - return false - } - case VhostUserBlk: - case VhostUserFS: - if vhostuserDev.Tag == "" { - return false - } - default: - return false - } - - return true -} - -// QemuNetParams builds QEMU netdev and device parameters for a VhostUserNet device -func (vhostuserDev VhostUserDevice) QemuNetParams(config *Config) []string { - var qemuParams []string - var netParams []string - var deviceParams []string - - driver := vhostuserDev.deviceName(config) - if driver == "" { - return nil - } - - netParams = append(netParams, "type=vhost-user") - netParams = append(netParams, fmt.Sprintf("id=%s", vhostuserDev.TypeDevID)) - netParams = append(netParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) - netParams = append(netParams, "vhostforce") - - deviceParams = append(deviceParams, driver) - deviceParams = append(deviceParams, fmt.Sprintf("netdev=%s", vhostuserDev.TypeDevID)) - deviceParams = append(deviceParams, fmt.Sprintf("mac=%s", vhostuserDev.Address)) - - if vhostuserDev.Transport.isVirtioPCI(config) && vhostuserDev.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", vhostuserDev.ROMFile)) - } - - qemuParams = append(qemuParams, "-netdev") - qemuParams = append(qemuParams, strings.Join(netParams, ",")) - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) - - return qemuParams -} - -// QemuSCSIParams builds QEMU device parameters for a VhostUserSCSI device -func (vhostuserDev VhostUserDevice) QemuSCSIParams(config *Config) []string { - var qemuParams []string - var deviceParams []string - - driver := vhostuserDev.deviceName(config) - if driver == "" { - return nil - } - - deviceParams = append(deviceParams, driver) - deviceParams = append(deviceParams, fmt.Sprintf("id=%s", vhostuserDev.TypeDevID)) - deviceParams = append(deviceParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) - - if vhostuserDev.Transport.isVirtioPCI(config) && vhostuserDev.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", vhostuserDev.ROMFile)) - } - - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) - - return qemuParams -} - -// QemuBlkParams builds QEMU device parameters for a VhostUserBlk device -func (vhostuserDev VhostUserDevice) QemuBlkParams(config *Config) []string { - var qemuParams []string - var deviceParams []string - - driver := vhostuserDev.deviceName(config) - if driver == "" { - return nil - } - - deviceParams = append(deviceParams, driver) - deviceParams = append(deviceParams, "logical_block_size=4096") - deviceParams = append(deviceParams, "size=512M") - deviceParams = append(deviceParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) - - if vhostuserDev.Transport.isVirtioPCI(config) && vhostuserDev.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", vhostuserDev.ROMFile)) - } - - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) - - return qemuParams -} - -// QemuFSParams builds QEMU device parameters for a VhostUserFS device -func (vhostuserDev VhostUserDevice) QemuFSParams(config *Config) []string { - var qemuParams []string - var deviceParams []string - - driver := vhostuserDev.deviceName(config) - if driver == "" { - return nil - } - - deviceParams = append(deviceParams, driver) - deviceParams = append(deviceParams, fmt.Sprintf("chardev=%s", vhostuserDev.CharDevID)) - deviceParams = append(deviceParams, fmt.Sprintf("tag=%s", vhostuserDev.Tag)) - if vhostuserDev.CacheSize != 0 { - deviceParams = append(deviceParams, fmt.Sprintf("cache-size=%dM", vhostuserDev.CacheSize)) - } - if vhostuserDev.SharedVersions { - deviceParams = append(deviceParams, "versiontable=/dev/shm/fuse_shared_versions") - } - if vhostuserDev.Transport.isVirtioCCW(config) { - if config.Knobs.IOMMUPlatform { - deviceParams = append(deviceParams, "iommu_platform=on") - } - deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", vhostuserDev.DevNo)) - } - if vhostuserDev.Transport.isVirtioPCI(config) && vhostuserDev.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", vhostuserDev.ROMFile)) - } - - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) - - return qemuParams -} - -// QemuParams returns the qemu parameters built out of this vhostuser device. -func (vhostuserDev VhostUserDevice) QemuParams(config *Config) []string { - var qemuParams []string - var charParams []string - var deviceParams []string - - charParams = append(charParams, "socket") - charParams = append(charParams, fmt.Sprintf("id=%s", vhostuserDev.CharDevID)) - charParams = append(charParams, fmt.Sprintf("path=%s", vhostuserDev.SocketPath)) - - qemuParams = append(qemuParams, "-chardev") - qemuParams = append(qemuParams, strings.Join(charParams, ",")) - - switch vhostuserDev.VhostUserType { - case VhostUserNet: - deviceParams = vhostuserDev.QemuNetParams(config) - case VhostUserSCSI: - deviceParams = vhostuserDev.QemuSCSIParams(config) - case VhostUserBlk: - deviceParams = vhostuserDev.QemuBlkParams(config) - case VhostUserFS: - deviceParams = vhostuserDev.QemuFSParams(config) - default: - return nil - } - - if deviceParams != nil { - return append(qemuParams, deviceParams...) - } - - return nil -} - -// deviceName returns the QEMU device name for the current combination of -// driver and transport. -func (vhostuserDev VhostUserDevice) deviceName(config *Config) string { - if vhostuserDev.Transport == "" { - vhostuserDev.Transport = vhostuserDev.Transport.defaultTransport(config) - } - - switch vhostuserDev.VhostUserType { - case VhostUserNet: - return VhostUserNetTransport[vhostuserDev.Transport] - case VhostUserSCSI: - return VhostUserSCSITransport[vhostuserDev.Transport] - case VhostUserBlk: - return VhostUserBlkTransport[vhostuserDev.Transport] - case VhostUserFS: - return VhostUserFSTransport[vhostuserDev.Transport] - default: - return "" - } -} - -// PCIeRootPortDevice represents a memory balloon device. -type PCIeRootPortDevice struct { - ID string // format: rp{n}, n>=0 - - Bus string // default is pcie.0 - Chassis string // (slot, chassis) pair is mandatory and must be unique for each pcie-root-port, >=0, default is 0x00 - Slot string // >=0, default is 0x00 - - Multifunction bool // true => "on", false => "off", default is off - Addr string // >=0, default is 0x00 - - // The PCIE-PCI bridge can be hot-plugged only into pcie-root-port that has 'bus-reserve' property value to - // provide secondary bus for the hot-plugged bridge. - BusReserve string - Pref64Reserve string // reserve prefetched MMIO aperture, 64-bit - Pref32Reserve string // reserve prefetched MMIO aperture, 32-bit - MemReserve string // reserve non-prefetched MMIO aperture, 32-bit *only* - IOReserve string // IO reservation - - ROMFile string // ROMFile specifies the ROM file being used for this device. - - // Transport is the virtio transport for this device. - Transport VirtioTransport -} - -// QemuParams returns the qemu parameters built out of the PCIeRootPortDevice. -func (b PCIeRootPortDevice) QemuParams(config *Config) []string { - var qemuParams []string - var deviceParams []string - driver := PCIeRootPort - - deviceParams = append(deviceParams, fmt.Sprintf("%s,id=%s", driver, b.ID)) - - if b.Bus == "" { - b.Bus = "pcie.0" - } - deviceParams = append(deviceParams, fmt.Sprintf("bus=%s", b.Bus)) - - if b.Chassis == "" { - b.Chassis = "0x00" - } - deviceParams = append(deviceParams, fmt.Sprintf("chassis=%s", b.Chassis)) - - if b.Slot == "" { - b.Slot = "0x00" - } - deviceParams = append(deviceParams, fmt.Sprintf("slot=%s", b.Slot)) - - multifunction := "off" - if b.Multifunction { - multifunction = "on" - if b.Addr == "" { - b.Addr = "0x00" - } - deviceParams = append(deviceParams, fmt.Sprintf("addr=%s", b.Addr)) - } - deviceParams = append(deviceParams, fmt.Sprintf("multifunction=%v", multifunction)) - - if b.BusReserve != "" { - deviceParams = append(deviceParams, fmt.Sprintf("bus-reserve=%s", b.BusReserve)) - } - - if b.Pref64Reserve != "" { - deviceParams = append(deviceParams, fmt.Sprintf("pref64-reserve=%s", b.Pref64Reserve)) - } - - if b.Pref32Reserve != "" { - deviceParams = append(deviceParams, fmt.Sprintf("pref32-reserve=%s", b.Pref32Reserve)) - } - - if b.MemReserve != "" { - deviceParams = append(deviceParams, fmt.Sprintf("mem-reserve=%s", b.MemReserve)) - } - - if b.IOReserve != "" { - deviceParams = append(deviceParams, fmt.Sprintf("io-reserve=%s", b.IOReserve)) - } - - if b.Transport.isVirtioPCI(config) && b.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", b.ROMFile)) - } - - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) - return qemuParams -} - -// Valid returns true if the PCIeRootPortDevice structure is valid and complete. -func (b PCIeRootPortDevice) Valid() bool { - // the "pref32-reserve" and "pref64-reserve" hints are mutually exclusive. - if b.Pref64Reserve != "" && b.Pref32Reserve != "" { - return false - } - if b.ID == "" { - return false - } - return true -} - -// VFIODevice represents a qemu vfio device meant for direct access by guest OS. -type VFIODevice struct { - // Bus-Device-Function of device - BDF string - - // ROMFile specifies the ROM file being used for this device. - ROMFile string - - // DevNo identifies the ccw devices for s390x architecture - DevNo string - - // VendorID specifies vendor id - VendorID string - - // DeviceID specifies device id - DeviceID string - - // Bus specifies device bus - Bus string - - // Transport is the virtio transport for this device. - Transport VirtioTransport -} - -// VFIODeviceTransport is a map of the vfio device name that corresponds to -// each transport. -var VFIODeviceTransport = map[VirtioTransport]string{ - TransportPCI: "vfio-pci", - TransportCCW: "vfio-ccw", - TransportMMIO: "vfio-device", -} - -// Valid returns true if the VFIODevice structure is valid and complete. -func (vfioDev VFIODevice) Valid() bool { - return vfioDev.BDF != "" -} - -// QemuParams returns the qemu parameters built out of this vfio device. -func (vfioDev VFIODevice) QemuParams(config *Config) []string { - var qemuParams []string - var deviceParams []string - - driver := vfioDev.deviceName(config) - - deviceParams = append(deviceParams, fmt.Sprintf("%s,host=%s", driver, vfioDev.BDF)) - if vfioDev.Transport.isVirtioPCI(config) { - if vfioDev.VendorID != "" { - deviceParams = append(deviceParams, fmt.Sprintf("x-pci-vendor-id=%s", vfioDev.VendorID)) - } - if vfioDev.DeviceID != "" { - deviceParams = append(deviceParams, fmt.Sprintf("x-pci-device-id=%s", vfioDev.DeviceID)) - } - if vfioDev.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", vfioDev.ROMFile)) - } - } - - if vfioDev.Bus != "" { - deviceParams = append(deviceParams, fmt.Sprintf("bus=%s", vfioDev.Bus)) - } - - if vfioDev.Transport.isVirtioCCW(config) { - deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", vfioDev.DevNo)) - } - - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) - - return qemuParams -} - -// deviceName returns the QEMU device name for the current combination of -// driver and transport. -func (vfioDev VFIODevice) deviceName(config *Config) string { - if vfioDev.Transport == "" { - vfioDev.Transport = vfioDev.Transport.defaultTransport(config) - } - - return VFIODeviceTransport[vfioDev.Transport] -} - -// SCSIController represents a SCSI controller device. -type SCSIController struct { - ID string - - // Bus on which the SCSI controller is attached, this is optional - Bus string - - // Addr is the PCI address offset, this is optional - Addr string - - // DisableModern prevents qemu from relying on fast MMIO. - DisableModern bool - - // IOThread is the IO thread on which IO will be handled - IOThread string - - // ROMFile specifies the ROM file being used for this device. - ROMFile string - - // DevNo identifies the ccw devices for s390x architecture - DevNo string - - // Transport is the virtio transport for this device. - Transport VirtioTransport -} - -// SCSIControllerTransport is a map of the virtio-scsi device name that -// corresponds to each transport. -var SCSIControllerTransport = map[VirtioTransport]string{ - TransportPCI: "virtio-scsi-pci", - TransportCCW: "virtio-scsi-ccw", - TransportMMIO: "virtio-scsi-device", -} - -// Valid returns true if the SCSIController structure is valid and complete. -func (scsiCon SCSIController) Valid() bool { - return scsiCon.ID != "" -} - -// QemuParams returns the qemu parameters built out of this SCSIController device. -func (scsiCon SCSIController) QemuParams(config *Config) []string { - var qemuParams []string - var deviceParams []string - - driver := scsiCon.deviceName(config) - deviceParams = append(deviceParams, fmt.Sprintf("%s,id=%s", driver, scsiCon.ID)) - if scsiCon.Bus != "" { - deviceParams = append(deviceParams, fmt.Sprintf("bus=%s", scsiCon.Bus)) - } - if scsiCon.Addr != "" { - deviceParams = append(deviceParams, fmt.Sprintf("addr=%s", scsiCon.Addr)) - } - if s := scsiCon.Transport.disableModern(config, scsiCon.DisableModern); s != "" { - deviceParams = append(deviceParams, s) - } - if scsiCon.IOThread != "" { - deviceParams = append(deviceParams, fmt.Sprintf("iothread=%s", scsiCon.IOThread)) - } - if scsiCon.Transport.isVirtioPCI(config) && scsiCon.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", scsiCon.ROMFile)) - } - - if scsiCon.Transport.isVirtioCCW(config) { - if config.Knobs.IOMMUPlatform { - deviceParams = append(deviceParams, "iommu_platform=on") - } - deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", scsiCon.DevNo)) - } - - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) - - return qemuParams -} - -// deviceName returns the QEMU device name for the current combination of -// driver and transport. -func (scsiCon SCSIController) deviceName(config *Config) string { - if scsiCon.Transport == "" { - scsiCon.Transport = scsiCon.Transport.defaultTransport(config) - } - - return SCSIControllerTransport[scsiCon.Transport] -} - -// BridgeType is the type of the bridge -type BridgeType uint - -const ( - // PCIBridge is a pci bridge - PCIBridge BridgeType = iota - - // PCIEBridge is a pcie bridge - PCIEBridge -) - -// BridgeDevice represents a qemu bridge device like pci-bridge, pxb, etc. -type BridgeDevice struct { - // Type of the bridge - Type BridgeType - - // Bus number where the bridge is plugged, typically pci.0 or pcie.0 - Bus string - - // ID is used to identify the bridge in qemu - ID string - - // Chassis number - Chassis int - - // SHPC is used to enable or disable the standard hot plug controller - SHPC bool - - // PCI Slot - Addr string - - // ROMFile specifies the ROM file being used for this device. - ROMFile string - - // Address range reservations for devices behind the bridge - // NB: strings seem an odd choice, but if they were integers, - // they'd default to 0 by Go's rules in all the existing users - // who don't set them. 0 is a valid value for certain cases, - // but not you want by default. - IOReserve string - MemReserve string - Pref64Reserve string -} - -// Valid returns true if the BridgeDevice structure is valid and complete. -func (bridgeDev BridgeDevice) Valid() bool { - if bridgeDev.Type != PCIBridge && bridgeDev.Type != PCIEBridge { - return false - } - - if bridgeDev.Bus == "" { - return false - } - - if bridgeDev.ID == "" { - return false - } - - return true -} - -// QemuParams returns the qemu parameters built out of this bridge device. -func (bridgeDev BridgeDevice) QemuParams(config *Config) []string { - var qemuParams []string - var deviceParams []string - var driver DeviceDriver - - switch bridgeDev.Type { - case PCIEBridge: - driver = PCIePCIBridgeDriver - deviceParams = append(deviceParams, fmt.Sprintf("%s,bus=%s,id=%s", driver, bridgeDev.Bus, bridgeDev.ID)) - default: - driver = PCIBridgeDriver - shpc := "off" - if bridgeDev.SHPC { - shpc = "on" - } - deviceParams = append(deviceParams, fmt.Sprintf("%s,bus=%s,id=%s,chassis_nr=%d,shpc=%s", driver, bridgeDev.Bus, bridgeDev.ID, bridgeDev.Chassis, shpc)) - } - - if bridgeDev.Addr != "" { - addr, err := strconv.Atoi(bridgeDev.Addr) - if err == nil && addr >= 0 { - deviceParams = append(deviceParams, fmt.Sprintf("addr=%x", addr)) - } - } - - var transport VirtioTransport - if transport.isVirtioPCI(config) && bridgeDev.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", bridgeDev.ROMFile)) - } - - if bridgeDev.IOReserve != "" { - deviceParams = append(deviceParams, fmt.Sprintf("io-reserve=%s", bridgeDev.IOReserve)) - } - if bridgeDev.MemReserve != "" { - deviceParams = append(deviceParams, fmt.Sprintf("mem-reserve=%s", bridgeDev.MemReserve)) - } - if bridgeDev.Pref64Reserve != "" { - deviceParams = append(deviceParams, fmt.Sprintf("pref64-reserve=%s", bridgeDev.Pref64Reserve)) - } - - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) - - return qemuParams -} - -// VSOCKDevice represents a AF_VSOCK socket. -type VSOCKDevice struct { - ID string - - ContextID uint64 - - // VHostFD vhost file descriptor that holds the ContextID - VHostFD *os.File - - // DisableModern prevents qemu from relying on fast MMIO. - DisableModern bool - - // ROMFile specifies the ROM file being used for this device. - ROMFile string - - // DevNo identifies the ccw devices for s390x architecture - DevNo string - - // Transport is the virtio transport for this device. - Transport VirtioTransport -} - -// VSOCKDeviceTransport is a map of the vhost-vsock device name that -// corresponds to each transport. -var VSOCKDeviceTransport = map[VirtioTransport]string{ - TransportPCI: "vhost-vsock-pci", - TransportCCW: "vhost-vsock-ccw", - TransportMMIO: "vhost-vsock-device", -} - -const ( - // MinimalGuestCID is the smallest valid context ID for a guest. - MinimalGuestCID uint64 = 3 - - // MaxGuestCID is the largest valid context ID for a guest. - MaxGuestCID uint64 = 1<<32 - 1 -) - -const ( - // VSOCKGuestCID is the VSOCK guest CID parameter. - VSOCKGuestCID = "guest-cid" -) - -// Valid returns true if the VSOCKDevice structure is valid and complete. -func (vsock VSOCKDevice) Valid() bool { - if vsock.ID == "" || vsock.ContextID < MinimalGuestCID || vsock.ContextID > MaxGuestCID { - return false - } - - return true -} - -// QemuParams returns the qemu parameters built out of the VSOCK device. -func (vsock VSOCKDevice) QemuParams(config *Config) []string { - var deviceParams []string - var qemuParams []string - - driver := vsock.deviceName(config) - deviceParams = append(deviceParams, driver) - if s := vsock.Transport.disableModern(config, vsock.DisableModern); s != "" { - deviceParams = append(deviceParams, s) - } - if vsock.VHostFD != nil { - qemuFDs := config.appendFDs([]*os.File{vsock.VHostFD}) - deviceParams = append(deviceParams, fmt.Sprintf("vhostfd=%d", qemuFDs[0])) - } - deviceParams = append(deviceParams, fmt.Sprintf("id=%s", vsock.ID)) - deviceParams = append(deviceParams, fmt.Sprintf("%s=%d", VSOCKGuestCID, vsock.ContextID)) - - if vsock.Transport.isVirtioPCI(config) && vsock.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", vsock.ROMFile)) - } - - if vsock.Transport.isVirtioCCW(config) { - if config.Knobs.IOMMUPlatform { - deviceParams = append(deviceParams, "iommu_platform=on") - } - deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", vsock.DevNo)) - } - - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) - - return qemuParams -} - -// deviceName returns the QEMU device name for the current combination of -// driver and transport. -func (vsock VSOCKDevice) deviceName(config *Config) string { - if vsock.Transport == "" { - vsock.Transport = vsock.Transport.defaultTransport(config) - } - - return VSOCKDeviceTransport[vsock.Transport] -} - -// RngDevice represents a random number generator device. -type RngDevice struct { - // ID is the device ID - ID string - // Filename is entropy source on the host - Filename string - // MaxBytes is the bytes allowed to guest to get from the host’s entropy per period - MaxBytes uint - // Period is duration of a read period in seconds - Period uint - // ROMFile specifies the ROM file being used for this device. - ROMFile string - // DevNo identifies the ccw devices for s390x architecture - DevNo string - // Transport is the virtio transport for this device. - Transport VirtioTransport -} - -// RngDeviceTransport is a map of the virtio-rng device name that corresponds -// to each transport. -var RngDeviceTransport = map[VirtioTransport]string{ - TransportPCI: "virtio-rng-pci", - TransportCCW: "virtio-rng-ccw", - TransportMMIO: "virtio-rng-device", -} - -// Valid returns true if the RngDevice structure is valid and complete. -func (v RngDevice) Valid() bool { - return v.ID != "" -} - -// QemuParams returns the qemu parameters built out of the RngDevice. -func (v RngDevice) QemuParams(config *Config) []string { - var qemuParams []string - - //-object rng-random,filename=/dev/hwrng,id=rng0 - var objectParams []string - //-device virtio-rng-pci,rng=rng0,max-bytes=1024,period=1000 - var deviceParams []string - - objectParams = append(objectParams, "rng-random") - objectParams = append(objectParams, "id="+v.ID) - - deviceParams = append(deviceParams, v.deviceName(config)) - deviceParams = append(deviceParams, "rng="+v.ID) - - if v.Transport.isVirtioPCI(config) && v.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", v.ROMFile)) - } - - if v.Transport.isVirtioCCW(config) { - if config.Knobs.IOMMUPlatform { - deviceParams = append(deviceParams, "iommu_platform=on") - } - deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", v.DevNo)) - } - - if v.Filename != "" { - objectParams = append(objectParams, "filename="+v.Filename) - } - - if v.MaxBytes > 0 { - deviceParams = append(deviceParams, fmt.Sprintf("max-bytes=%d", v.MaxBytes)) - } - - if v.Period > 0 { - deviceParams = append(deviceParams, fmt.Sprintf("period=%d", v.Period)) - } - - qemuParams = append(qemuParams, "-object") - qemuParams = append(qemuParams, strings.Join(objectParams, ",")) - - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) - - return qemuParams -} - -// deviceName returns the QEMU device name for the current combination of -// driver and transport. -func (v RngDevice) deviceName(config *Config) string { - if v.Transport == "" { - v.Transport = v.Transport.defaultTransport(config) - } - - return RngDeviceTransport[v.Transport] -} - -// BalloonDevice represents a memory balloon device. -type BalloonDevice struct { - DeflateOnOOM bool - DisableModern bool - ID string - - // ROMFile specifies the ROM file being used for this device. - ROMFile string - - // DevNo identifies the ccw devices for s390x architecture - DevNo string - - // Transport is the virtio transport for this device. - Transport VirtioTransport -} - -// BalloonDeviceTransport is a map of the virtio-balloon device name that -// corresponds to each transport. -var BalloonDeviceTransport = map[VirtioTransport]string{ - TransportPCI: "virtio-balloon-pci", - TransportCCW: "virtio-balloon-ccw", - TransportMMIO: "virtio-balloon-device", -} - -// QemuParams returns the qemu parameters built out of the BalloonDevice. -func (b BalloonDevice) QemuParams(config *Config) []string { - var qemuParams []string - var deviceParams []string - - deviceParams = append(deviceParams, b.deviceName(config)) - - if b.ID != "" { - deviceParams = append(deviceParams, "id="+b.ID) - } - - if b.Transport.isVirtioPCI(config) && b.ROMFile != "" { - deviceParams = append(deviceParams, fmt.Sprintf("romfile=%s", b.ROMFile)) - } - - if b.Transport.isVirtioCCW(config) { - deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", b.DevNo)) - } - - if b.DeflateOnOOM { - deviceParams = append(deviceParams, "deflate-on-oom=on") - } else { - deviceParams = append(deviceParams, "deflate-on-oom=off") - } - if s := b.Transport.disableModern(config, b.DisableModern); s != "" { - deviceParams = append(deviceParams, s) - } - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) - - return qemuParams -} - -// Valid returns true if the balloonDevice structure is valid and complete. -func (b BalloonDevice) Valid() bool { - return b.ID != "" -} - -// deviceName returns the QEMU device name for the current combination of -// driver and transport. -func (b BalloonDevice) deviceName(config *Config) string { - if b.Transport == "" { - b.Transport = b.Transport.defaultTransport(config) - } - - return BalloonDeviceTransport[b.Transport] -} - -// IommuDev represents a Intel IOMMU Device -type IommuDev struct { - Intremap bool - DeviceIotlb bool - CachingMode bool -} - -// Valid returns true if the IommuDev is valid -func (dev IommuDev) Valid() bool { - return true -} - -// deviceName the qemu device name -func (dev IommuDev) deviceName() string { - return "intel-iommu" -} - -// QemuParams returns the qemu parameters built out of the IommuDev. -func (dev IommuDev) QemuParams(_ *Config) []string { - var qemuParams []string - var deviceParams []string - - deviceParams = append(deviceParams, dev.deviceName()) - if dev.Intremap { - deviceParams = append(deviceParams, "intremap=on") - } else { - deviceParams = append(deviceParams, "intremap=off") - } - - if dev.DeviceIotlb { - deviceParams = append(deviceParams, "device-iotlb=on") - } else { - deviceParams = append(deviceParams, "device-iotlb=off") - } - - if dev.CachingMode { - deviceParams = append(deviceParams, "caching-mode=on") - } else { - deviceParams = append(deviceParams, "caching-mode=off") - } - - qemuParams = append(qemuParams, "-device") - qemuParams = append(qemuParams, strings.Join(deviceParams, ",")) - return qemuParams -} - -// RTCBaseType is the qemu RTC base time type. -type RTCBaseType string - -// RTCClock is the qemu RTC clock type. -type RTCClock string - -// RTCDriftFix is the qemu RTC drift fix type. -type RTCDriftFix string - -const ( - // UTC is the UTC base time for qemu RTC. - UTC RTCBaseType = "utc" - - // LocalTime is the local base time for qemu RTC. - LocalTime RTCBaseType = "localtime" -) - -const ( - // Host is for using the host clock as a reference. - Host RTCClock = "host" - - // RT is for using the host monotonic clock as a reference. - RT RTCClock = "rt" - - // VM is for using the guest clock as a reference - VM RTCClock = "vm" -) - -const ( - // Slew is the qemu RTC Drift fix mechanism. - Slew RTCDriftFix = "slew" - - // NoDriftFix means we don't want/need to fix qemu's RTC drift. - NoDriftFix RTCDriftFix = "none" -) - -// RTC represents a qemu Real Time Clock configuration. -type RTC struct { - // Base is the RTC start time. - Base RTCBaseType - - // Clock is the is the RTC clock driver. - Clock RTCClock - - // DriftFix is the drift fixing mechanism. - DriftFix RTCDriftFix -} - -// Valid returns true if the RTC structure is valid and complete. -func (rtc RTC) Valid() bool { - if rtc.Clock != Host && rtc.Clock != RT && rtc.Clock != VM { - return false - } - - if rtc.DriftFix != Slew && rtc.DriftFix != NoDriftFix { - return false - } - - return true -} - -// QMPSocketType is the type of socket used for QMP communication. -type QMPSocketType string - -const ( - // Unix socket for QMP. - Unix QMPSocketType = "unix" -) - -// QMPSocket represents a qemu QMP socket configuration. -type QMPSocket struct { - // Type is the socket type (e.g. "unix"). - Type QMPSocketType - - // Name is the socket name. - Name string - - // Server tells if this is a server socket. - Server bool - - // NoWait tells if qemu should block waiting for a client to connect. - NoWait bool -} - -// Valid returns true if the QMPSocket structure is valid and complete. -func (qmp QMPSocket) Valid() bool { - if qmp.Type == "" || qmp.Name == "" { - return false - } - - if qmp.Type != Unix { - return false - } - - return true -} - -// SMP is the multi processors configuration structure. -type SMP struct { - // CPUs is the number of VCPUs made available to qemu. - CPUs uint32 - - // Cores is the number of cores made available to qemu. - Cores uint32 - - // Threads is the number of threads made available to qemu. - Threads uint32 - - // Sockets is the number of sockets made available to qemu. - Sockets uint32 - - // MaxCPUs is the maximum number of VCPUs that a VM can have. - // This value, if non-zero, MUST BE equal to or greater than CPUs - MaxCPUs uint32 -} - -// Memory is the guest memory configuration structure. -type Memory struct { - // Size is the amount of memory made available to the guest. - // It should be suffixed with M or G for sizes in megabytes or - // gigabytes respectively. - Size string - - // Slots is the amount of memory slots made available to the guest. - Slots uint8 - - // MaxMem is the maximum amount of memory that can be made available - // to the guest through e.g. hot pluggable memory. - MaxMem string - - // Path is the file path of the memory device. It points to a local - // file path used by FileBackedMem. - Path string -} - -// Kernel is the guest kernel configuration structure. -type Kernel struct { - // Path is the guest kernel path on the host filesystem. - Path string - - // InitrdPath is the guest initrd path on the host filesystem. - InitrdPath string - - // Params is the kernel parameters string. - Params string -} - -// FwCfg allows QEMU to pass entries to the guest -// File and Str are mutually exclusive -type FwCfg struct { - Name string - File string - Str string -} - -// Valid returns true if the FwCfg structure is valid and complete. -func (fwcfg FwCfg) Valid() bool { - if fwcfg.Name == "" { - return false - } - - if fwcfg.File != "" && fwcfg.Str != "" { - return false - } - - if fwcfg.File == "" && fwcfg.Str == "" { - return false - } - - return true -} - -// QemuParams returns the qemu parameters built out of the FwCfg object -func (fwcfg FwCfg) QemuParams(config *Config) []string { - var fwcfgParams []string - var qemuParams []string - - for _, f := range config.FwCfg { - if f.Name != "" { - fwcfgParams = append(fwcfgParams, fmt.Sprintf("name=%s", f.Name)) - - if f.File != "" { - fwcfgParams = append(fwcfgParams, fmt.Sprintf("file=%s", f.File)) - } - - if f.Str != "" { - fwcfgParams = append(fwcfgParams, fmt.Sprintf("string=%s", f.Str)) - } - } - - qemuParams = append(qemuParams, "-fw_cfg") - qemuParams = append(qemuParams, strings.Join(fwcfgParams, ",")) - } - - return qemuParams -} - -// Knobs regroups a set of qemu boolean settings -type Knobs struct { - // NoUserConfig prevents qemu from loading user config files. - NoUserConfig bool - - // NoDefaults prevents qemu from creating default devices. - NoDefaults bool - - // NoGraphic completely disables graphic output. - NoGraphic bool - - // Daemonize will turn the qemu process into a daemon - Daemonize bool - - // Both HugePages and MemPrealloc require the Memory.Size of the VM - // to be set, as they need to reserve the memory upfront in order - // for the VM to boot without errors. - // - // HugePages always results in memory pre-allocation. - // However the setup is different from normal pre-allocation. - // Hence HugePages has precedence over MemPrealloc - // HugePages will pre-allocate all the RAM from huge pages - HugePages bool - - // MemPrealloc will allocate all the RAM upfront - MemPrealloc bool - - // FileBackedMem requires Memory.Size and Memory.Path of the VM to - // be set. - FileBackedMem bool - - // MemShared will set the memory device as shared. - MemShared bool - - // Mlock will control locking of memory - Mlock bool - - // Stopped will not start guest CPU at startup - Stopped bool - - // Exit instead of rebooting - // Prevents QEMU from rebooting in the event of a Triple Fault. - NoReboot bool - - // Don’t exit QEMU on guest shutdown, but instead only stop the emulation. - NoShutdown bool - - // IOMMUPlatform will enable IOMMU for supported devices - IOMMUPlatform bool -} - -// IOThread allows IO to be performed on a separate thread. -type IOThread struct { - ID string -} - -const ( - // MigrationFD is the migration incoming type based on open file descriptor. - // Skip default 0 so that it must be set on purpose. - MigrationFD = 1 - // MigrationExec is the migration incoming type based on commands. - MigrationExec = 2 - // MigrationDefer is the defer incoming type - MigrationDefer = 3 -) - -// Incoming controls migration source preparation -type Incoming struct { - // Possible values are MigrationFD, MigrationExec - MigrationType int - // Only valid if MigrationType == MigrationFD - FD *os.File - // Only valid if MigrationType == MigrationExec - Exec string -} - -// Config is the qemu configuration structure. -// It allows for passing custom settings and parameters to the qemu API. -type Config struct { - // Path is the qemu binary path. - Path string - - // Ctx is the context used when launching qemu. - Ctx context.Context - - // User ID. - Uid uint32 - // Group ID. - Gid uint32 - // Supplementary group IDs. - Groups []uint32 - - // Name is the qemu guest name - Name string - - // UUID is the qemu process UUID. - UUID string - - // CPUModel is the CPU model to be used by qemu. - CPUModel string - - // SeccompSandbox is the qemu function which enables the seccomp feature - SeccompSandbox string - - // Machine - Machine Machine - - // QMPSockets is a slice of QMP socket description. - QMPSockets []QMPSocket - - // Devices is a list of devices for qemu to create and drive. - Devices []Device - - // RTC is the qemu Real Time Clock configuration - RTC RTC - - // VGA is the qemu VGA mode. - VGA string - - // Kernel is the guest kernel configuration. - Kernel Kernel - - // Memory is the guest memory configuration. - Memory Memory - - // SMP is the quest multi processors configuration. - SMP SMP - - // GlobalParam is the -global parameter. - GlobalParam string - - // Knobs is a set of qemu boolean settings. - Knobs Knobs - - // Bios is the -bios parameter - Bios string - - // PFlash specifies the parallel flash images (-pflash parameter) - PFlash []string - - // Incoming controls migration source preparation - Incoming Incoming - - // fds is a list of open file descriptors to be passed to the spawned qemu process - fds []*os.File - - // FwCfg is the -fw_cfg parameter - FwCfg []FwCfg - - IOThreads []IOThread - - // PidFile is the -pidfile parameter - PidFile string - - // LogFile is the -D parameter - LogFile string - - qemuParams []string -} - -// appendFDs append a list of file descriptors to the qemu configuration and -// returns a slice of offset file descriptors that will be seen by the qemu process. -func (config *Config) appendFDs(fds []*os.File) []int { - var fdInts []int - - oldLen := len(config.fds) - - config.fds = append(config.fds, fds...) - - // The magic 3 offset comes from https://golang.org/src/os/exec/exec.go: - // ExtraFiles specifies additional open files to be inherited by the - // new process. It does not include standard input, standard output, or - // standard error. If non-nil, entry i becomes file descriptor 3+i. - for i := range fds { - fdInts = append(fdInts, oldLen+3+i) - } - - return fdInts -} - -func (config *Config) appendSeccompSandbox() { - if config.SeccompSandbox != "" { - config.qemuParams = append(config.qemuParams, "-sandbox") - config.qemuParams = append(config.qemuParams, config.SeccompSandbox) - } -} - -func (config *Config) appendName() { - if config.Name != "" { - config.qemuParams = append(config.qemuParams, "-name") - config.qemuParams = append(config.qemuParams, config.Name) - } -} - -func (config *Config) appendMachine() { - if config.Machine.Type != "" { - var machineParams []string - - machineParams = append(machineParams, config.Machine.Type) - - if config.Machine.Acceleration != "" { - machineParams = append(machineParams, fmt.Sprintf("accel=%s", config.Machine.Acceleration)) - } - - if config.Machine.Options != "" { - machineParams = append(machineParams, config.Machine.Options) - } - - config.qemuParams = append(config.qemuParams, "-machine") - config.qemuParams = append(config.qemuParams, strings.Join(machineParams, ",")) - } -} - -func (config *Config) appendCPUModel() { - if config.CPUModel != "" { - config.qemuParams = append(config.qemuParams, "-cpu") - config.qemuParams = append(config.qemuParams, config.CPUModel) - } -} - -func (config *Config) appendQMPSockets() { - for _, q := range config.QMPSockets { - if !q.Valid() { - continue - } - - qmpParams := append([]string{}, fmt.Sprintf("%s:%s", q.Type, q.Name)) - if q.Server { - qmpParams = append(qmpParams, "server=on") - if q.NoWait { - qmpParams = append(qmpParams, "wait=off") - } - } - - config.qemuParams = append(config.qemuParams, "-qmp") - config.qemuParams = append(config.qemuParams, strings.Join(qmpParams, ",")) - } -} - -func (config *Config) appendDevices() { - for _, d := range config.Devices { - if !d.Valid() { - continue - } - - config.qemuParams = append(config.qemuParams, d.QemuParams(config)...) - } -} - -func (config *Config) appendUUID() { - if config.UUID != "" { - config.qemuParams = append(config.qemuParams, "-uuid") - config.qemuParams = append(config.qemuParams, config.UUID) - } -} - -func (config *Config) appendMemory() { - if config.Memory.Size != "" { - var memoryParams []string - - memoryParams = append(memoryParams, config.Memory.Size) - - if config.Memory.Slots > 0 { - memoryParams = append(memoryParams, fmt.Sprintf("slots=%d", config.Memory.Slots)) - } - - if config.Memory.MaxMem != "" { - memoryParams = append(memoryParams, fmt.Sprintf("maxmem=%s", config.Memory.MaxMem)) - } - - config.qemuParams = append(config.qemuParams, "-m") - config.qemuParams = append(config.qemuParams, strings.Join(memoryParams, ",")) - } -} - -func (config *Config) appendCPUs() error { - if config.SMP.CPUs > 0 { - var SMPParams []string - - SMPParams = append(SMPParams, fmt.Sprintf("%d", config.SMP.CPUs)) - - if config.SMP.Cores > 0 { - SMPParams = append(SMPParams, fmt.Sprintf("cores=%d", config.SMP.Cores)) - } - - if config.SMP.Threads > 0 { - SMPParams = append(SMPParams, fmt.Sprintf("threads=%d", config.SMP.Threads)) - } - - if config.SMP.Sockets > 0 { - SMPParams = append(SMPParams, fmt.Sprintf("sockets=%d", config.SMP.Sockets)) - } - - if config.SMP.MaxCPUs > 0 { - if config.SMP.MaxCPUs < config.SMP.CPUs { - return fmt.Errorf("MaxCPUs %d must be equal to or greater than CPUs %d", - config.SMP.MaxCPUs, config.SMP.CPUs) - } - SMPParams = append(SMPParams, fmt.Sprintf("maxcpus=%d", config.SMP.MaxCPUs)) - } - - config.qemuParams = append(config.qemuParams, "-smp") - config.qemuParams = append(config.qemuParams, strings.Join(SMPParams, ",")) - } - - return nil -} - -func (config *Config) appendRTC() { - if !config.RTC.Valid() { - return - } - - var RTCParams []string - - RTCParams = append(RTCParams, fmt.Sprintf("base=%s", string(config.RTC.Base))) - - if config.RTC.DriftFix != "" { - RTCParams = append(RTCParams, fmt.Sprintf("driftfix=%s", config.RTC.DriftFix)) - } - - if config.RTC.Clock != "" { - RTCParams = append(RTCParams, fmt.Sprintf("clock=%s", config.RTC.Clock)) - } - - config.qemuParams = append(config.qemuParams, "-rtc") - config.qemuParams = append(config.qemuParams, strings.Join(RTCParams, ",")) -} - -func (config *Config) appendGlobalParam() { - if config.GlobalParam != "" { - config.qemuParams = append(config.qemuParams, "-global") - config.qemuParams = append(config.qemuParams, config.GlobalParam) - } -} - -func (config *Config) appendPFlashParam() { - for _, p := range config.PFlash { - config.qemuParams = append(config.qemuParams, "-pflash") - config.qemuParams = append(config.qemuParams, p) - } -} - -func (config *Config) appendVGA() { - if config.VGA != "" { - config.qemuParams = append(config.qemuParams, "-vga") - config.qemuParams = append(config.qemuParams, config.VGA) - } -} - -func (config *Config) appendKernel() { - if config.Kernel.Path != "" { - config.qemuParams = append(config.qemuParams, "-kernel") - config.qemuParams = append(config.qemuParams, config.Kernel.Path) - - if config.Kernel.InitrdPath != "" { - config.qemuParams = append(config.qemuParams, "-initrd") - config.qemuParams = append(config.qemuParams, config.Kernel.InitrdPath) - } - - if config.Kernel.Params != "" { - config.qemuParams = append(config.qemuParams, "-append") - config.qemuParams = append(config.qemuParams, config.Kernel.Params) - } - } -} - -func (config *Config) appendMemoryKnobs() { - if config.Memory.Size == "" { - return - } - var objMemParam, numaMemParam string - dimmName := "dimm1" - if config.Knobs.HugePages { - objMemParam = "memory-backend-file,id=" + dimmName + ",size=" + config.Memory.Size + ",mem-path=/dev/hugepages" - numaMemParam = "node,memdev=" + dimmName - } else if config.Knobs.FileBackedMem && config.Memory.Path != "" { - objMemParam = "memory-backend-file,id=" + dimmName + ",size=" + config.Memory.Size + ",mem-path=" + config.Memory.Path - numaMemParam = "node,memdev=" + dimmName - } else { - objMemParam = "memory-backend-ram,id=" + dimmName + ",size=" + config.Memory.Size - numaMemParam = "node,memdev=" + dimmName - } - - if config.Knobs.MemShared { - objMemParam += ",share=on" - } - if config.Knobs.MemPrealloc { - objMemParam += ",prealloc=on" - } - config.qemuParams = append(config.qemuParams, "-object") - config.qemuParams = append(config.qemuParams, objMemParam) - - if isDimmSupported(config) { - config.qemuParams = append(config.qemuParams, "-numa") - config.qemuParams = append(config.qemuParams, numaMemParam) - } else { - config.qemuParams = append(config.qemuParams, "-machine") - config.qemuParams = append(config.qemuParams, "memory-backend="+dimmName) - } -} - -func (config *Config) appendKnobs() { - if config.Knobs.NoUserConfig { - config.qemuParams = append(config.qemuParams, "-no-user-config") - } - - if config.Knobs.NoDefaults { - config.qemuParams = append(config.qemuParams, "-nodefaults") - } - - if config.Knobs.NoGraphic { - config.qemuParams = append(config.qemuParams, "-nographic") - } - - if config.Knobs.NoReboot { - config.qemuParams = append(config.qemuParams, "--no-reboot") - } - - if config.Knobs.NoShutdown { - config.qemuParams = append(config.qemuParams, "--no-shutdown") - } - - if config.Knobs.Daemonize { - config.qemuParams = append(config.qemuParams, "-daemonize") - } - - config.appendMemoryKnobs() - - if config.Knobs.Mlock { - config.qemuParams = append(config.qemuParams, "-overcommit") - config.qemuParams = append(config.qemuParams, "mem-lock=on") - } - - if config.Knobs.Stopped { - config.qemuParams = append(config.qemuParams, "-S") - } -} - -func (config *Config) appendBios() { - if config.Bios != "" { - config.qemuParams = append(config.qemuParams, "-bios") - config.qemuParams = append(config.qemuParams, config.Bios) - } -} - -func (config *Config) appendIOThreads() { - for _, t := range config.IOThreads { - if t.ID != "" { - config.qemuParams = append(config.qemuParams, "-object") - config.qemuParams = append(config.qemuParams, fmt.Sprintf("iothread,id=%s", t.ID)) - } - } -} - -func (config *Config) appendIncoming() { - var uri string - switch config.Incoming.MigrationType { - case MigrationExec: - uri = fmt.Sprintf("exec:%s", config.Incoming.Exec) - case MigrationFD: - chFDs := config.appendFDs([]*os.File{config.Incoming.FD}) - uri = fmt.Sprintf("fd:%d", chFDs[0]) - case MigrationDefer: - uri = "defer" - default: - return - } - config.qemuParams = append(config.qemuParams, "-S", "-incoming", uri) -} - -func (config *Config) appendPidFile() { - if config.PidFile != "" { - config.qemuParams = append(config.qemuParams, "-pidfile") - config.qemuParams = append(config.qemuParams, config.PidFile) - } -} - -func (config *Config) appendLogFile() { - if config.LogFile != "" { - config.qemuParams = append(config.qemuParams, "-D") - config.qemuParams = append(config.qemuParams, config.LogFile) - } -} - -func (config *Config) appendFwCfg(logger QMPLog) { - if logger == nil { - logger = qmpNullLogger{} - } - - for _, f := range config.FwCfg { - if !f.Valid() { - logger.Errorf("fw_cfg is not valid: %+v", config.FwCfg) - continue - } - - config.qemuParams = append(config.qemuParams, f.QemuParams(config)...) - } -} - -// LaunchQemu can be used to launch a new qemu instance. -// -// The Config parameter contains a set of qemu parameters and settings. -// -// This function writes its log output via logger parameter. -// -// The function will block until the launched qemu process exits. "", nil -// will be returned if the launch succeeds. Otherwise a string containing -// the contents of stderr + a Go error object will be returned. -func LaunchQemu(config Config, logger QMPLog) (string, error) { - config.appendName() - config.appendUUID() - config.appendMachine() - config.appendCPUModel() - config.appendQMPSockets() - config.appendMemory() - config.appendDevices() - config.appendRTC() - config.appendGlobalParam() - config.appendPFlashParam() - config.appendVGA() - config.appendKnobs() - config.appendKernel() - config.appendBios() - config.appendIOThreads() - config.appendIncoming() - config.appendPidFile() - config.appendLogFile() - config.appendFwCfg(logger) - config.appendSeccompSandbox() - - if err := config.appendCPUs(); err != nil { - return "", err - } - - ctx := config.Ctx - if ctx == nil { - ctx = context.Background() - } - - attr := syscall.SysProcAttr{} - attr.Credential = &syscall.Credential{ - Uid: config.Uid, - Gid: config.Gid, - Groups: config.Groups, - } - - return LaunchCustomQemu(ctx, config.Path, config.qemuParams, - config.fds, &attr, logger) -} - -// LaunchCustomQemu can be used to launch a new qemu instance. -// -// The path parameter is used to pass the qemu executable path. -// -// params is a slice of options to pass to qemu-system-x86_64 and fds is a -// list of open file descriptors that are to be passed to the spawned qemu -// process. The attrs parameter can be used to control aspects of the -// newly created qemu process, such as the user and group under which it -// runs. It may be nil. -// -// This function writes its log output via logger parameter. -// -// The function will block until the launched qemu process exits. "", nil -// will be returned if the launch succeeds. Otherwise a string containing -// the contents of stderr + a Go error object will be returned. -func LaunchCustomQemu(ctx context.Context, path string, params []string, fds []*os.File, - attr *syscall.SysProcAttr, logger QMPLog) (string, error) { - if logger == nil { - logger = qmpNullLogger{} - } - - errStr := "" - - if path == "" { - path = "qemu-system-x86_64" - } - - /* #nosec */ - cmd := exec.CommandContext(ctx, path, params...) - if len(fds) > 0 { - logger.Infof("Adding extra file %v", fds) - cmd.ExtraFiles = fds - } - - cmd.SysProcAttr = attr - - var stderr bytes.Buffer - cmd.Stderr = &stderr - logger.Infof("launching %s with: %v", path, params) - - err := cmd.Run() - if err != nil { - logger.Errorf("Unable to launch %s: %v", path, err) - errStr = stderr.String() - logger.Errorf("%s", errStr) - } - return errStr, err -} diff --git a/src/runtime/vendor/github.com/kata-containers/govmm/qemu/qmp.go b/src/runtime/vendor/github.com/kata-containers/govmm/qemu/qmp.go deleted file mode 100644 index 2e30c2ba9..000000000 --- a/src/runtime/vendor/github.com/kata-containers/govmm/qemu/qmp.go +++ /dev/null @@ -1,1664 +0,0 @@ -/* -// Copyright contributors to the Virtual Machine Manager for Go project -// -// 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. -*/ - -package qemu - -import ( - "bufio" - "container/list" - "encoding/json" - "errors" - "fmt" - "io" - "net" - "os" - "strconv" - "syscall" - "time" - - "context" - "strings" -) - -// QMPLog is a logging interface used by the qemu package to log various -// interesting pieces of information. Rather than introduce a dependency -// on a given logging package, qemu presents this interface that allows -// clients to provide their own logging type which they can use to -// seamlessly integrate qemu's logs into their own logs. A QMPLog -// implementation can be specified in the QMPConfig structure. -type QMPLog interface { - // V returns true if the given argument is less than or equal - // to the implementation's defined verbosity level. - V(int32) bool - - // Infof writes informational output to the log. A newline will be - // added to the output if one is not provided. - Infof(string, ...interface{}) - - // Warningf writes warning output to the log. A newline will be - // added to the output if one is not provided. - Warningf(string, ...interface{}) - - // Errorf writes error output to the log. A newline will be - // added to the output if one is not provided. - Errorf(string, ...interface{}) -} - -type qmpNullLogger struct{} - -func (l qmpNullLogger) V(level int32) bool { - return false -} - -func (l qmpNullLogger) Infof(format string, v ...interface{}) { -} - -func (l qmpNullLogger) Warningf(format string, v ...interface{}) { -} - -func (l qmpNullLogger) Errorf(format string, v ...interface{}) { -} - -// QMPConfig is a configuration structure that can be used to specify a -// logger and a channel to which logs and QMP events are to be sent. If -// neither of these fields are specified, or are set to nil, no logs will be -// written and no QMP events will be reported to the client. -type QMPConfig struct { - // eventCh can be specified by clients who wish to receive QMP - // events. - EventCh chan<- QMPEvent - - // logger is used by the qmpStart function and all the go routines - // it spawns to log information. - Logger QMPLog - - // specify the capacity of buffer used by receive QMP response. - MaxCapacity int -} - -type qmpEventFilter struct { - eventName string - dataKey string - dataValue string -} - -// QMPEvent contains a single QMP event, sent on the QMPConfig.EventCh channel. -type QMPEvent struct { - // The name of the event, e.g., DEVICE_DELETED - Name string - - // The data associated with the event. The contents of this map are - // unprocessed by the qemu package. It is simply the result of - // unmarshalling the QMP json event. Here's an example map - // map[string]interface{}{ - // "driver": "virtio-blk-pci", - // "drive": "drive_3437843748734873483", - // } - Data map[string]interface{} - - // The event's timestamp converted to a time.Time object. - Timestamp time.Time -} - -type qmpResult struct { - response interface{} - err error -} - -type qmpCommand struct { - ctx context.Context - res chan qmpResult - name string - args map[string]interface{} - filter *qmpEventFilter - resultReceived bool - oob []byte -} - -// QMP is a structure that contains the internal state used by startQMPLoop and -// the go routines it spwans. All the contents of this structure are private. -type QMP struct { - cmdCh chan qmpCommand - conn io.ReadWriteCloser - cfg QMPConfig - connectedCh chan<- *QMPVersion - disconnectedCh chan struct{} - version *QMPVersion -} - -// QMPVersion contains the version number and the capabailities of a QEMU -// instance, as reported in the QMP greeting message. -type QMPVersion struct { - Major int - Minor int - Micro int - Capabilities []string -} - -// CPUProperties contains the properties of a CPU instance -type CPUProperties struct { - Node int `json:"node-id"` - Socket int `json:"socket-id"` - Die int `json:"die-id"` - Core int `json:"core-id"` - Thread int `json:"thread-id"` -} - -// HotpluggableCPU represents a hotpluggable CPU -type HotpluggableCPU struct { - Type string `json:"type"` - VcpusCount int `json:"vcpus-count"` - Properties CPUProperties `json:"props"` - QOMPath string `json:"qom-path"` -} - -// MemoryDevicesData cotains the data describes a memory device -type MemoryDevicesData struct { - Slot int `json:"slot"` - Node int `json:"node"` - Addr uint64 `json:"addr"` - Memdev string `json:"memdev"` - ID string `json:"id"` - Hotpluggable bool `json:"hotpluggable"` - Hotplugged bool `json:"hotplugged"` - Size uint64 `json:"size"` -} - -// MemoryDevices represents memory devices of vm -type MemoryDevices struct { - Data MemoryDevicesData `json:"data"` - Type string `json:"type"` -} - -// CPUInfo represents information about each virtual CPU -type CPUInfo struct { - CPU int `json:"CPU"` - Current bool `json:"current"` - Halted bool `json:"halted"` - QomPath string `json:"qom_path"` - Arch string `json:"arch"` - Pc int `json:"pc"` - ThreadID int `json:"thread_id"` - Props CPUProperties `json:"props"` -} - -// CPUInfoFast represents information about each virtual CPU -type CPUInfoFast struct { - CPUIndex int `json:"cpu-index"` - QomPath string `json:"qom-path"` - Arch string `json:"arch"` - ThreadID int `json:"thread-id"` - Target string `json:"target"` - Props CPUProperties `json:"props"` -} - -// MigrationRAM represents migration ram status -type MigrationRAM struct { - Total int64 `json:"total"` - Remaining int64 `json:"remaining"` - Transferred int64 `json:"transferred"` - TotalTime int64 `json:"total-time"` - SetupTime int64 `json:"setup-time"` - ExpectedDowntime int64 `json:"expected-downtime"` - Duplicate int64 `json:"duplicate"` - Normal int64 `json:"normal"` - NormalBytes int64 `json:"normal-bytes"` - DirtySyncCount int64 `json:"dirty-sync-count"` -} - -// MigrationDisk represents migration disk status -type MigrationDisk struct { - Total int64 `json:"total"` - Remaining int64 `json:"remaining"` - Transferred int64 `json:"transferred"` -} - -// MigrationXbzrleCache represents migration XbzrleCache status -type MigrationXbzrleCache struct { - CacheSize int64 `json:"cache-size"` - Bytes int64 `json:"bytes"` - Pages int64 `json:"pages"` - CacheMiss int64 `json:"cache-miss"` - CacheMissRate int64 `json:"cache-miss-rate"` - Overflow int64 `json:"overflow"` -} - -// MigrationStatus represents migration status of a vm -type MigrationStatus struct { - Status string `json:"status"` - Capabilities []map[string]interface{} `json:"capabilities,omitempty"` - RAM MigrationRAM `json:"ram,omitempty"` - Disk MigrationDisk `json:"disk,omitempty"` - XbzrleCache MigrationXbzrleCache `json:"xbzrle-cache,omitempty"` -} - -// SchemaInfo represents all QMP wire ABI -type SchemaInfo struct { - MetaType string `json:"meta-type"` - Name string `json:"name"` -} - -// StatusInfo represents guest running status -type StatusInfo struct { - Running bool `json:"running"` - SingleStep bool `json:"singlestep"` - Status string `json:"status"` -} - -func (q *QMP) readLoop(fromVMCh chan<- []byte) { - scanner := bufio.NewScanner(q.conn) - if q.cfg.MaxCapacity > 0 { - buffer := make([]byte, q.cfg.MaxCapacity) - scanner.Buffer(buffer, q.cfg.MaxCapacity) - } - - for scanner.Scan() { - line := scanner.Bytes() - // Since []byte channel type transfer slice info(include slice underlying array pointer, len, cap) - // between channel sender and receiver. scanner.Bytes() returned slice's underlying array - // may point to data that will be overwritten by a subsequent call to Scan(reference from: - // https://golang.org/pkg/bufio/#Scanner.Bytes), which may make receiver read mixed data, - // so we need to copy line to new allocated space and then send to channel receiver - sendLine := make([]byte, len(line)) - copy(sendLine, line) - - fromVMCh <- sendLine - } - q.cfg.Logger.Infof("scanner return error: %v", scanner.Err()) - close(fromVMCh) -} - -func (q *QMP) processQMPEvent(cmdQueue *list.List, name interface{}, data interface{}, - timestamp interface{}) { - - strname, ok := name.(string) - if !ok { - return - } - - var eventData map[string]interface{} - if data != nil { - eventData, _ = data.(map[string]interface{}) - } - - cmdEl := cmdQueue.Front() - if cmdEl != nil { - cmd := cmdEl.Value.(*qmpCommand) - filter := cmd.filter - if filter != nil { - if filter.eventName == strname { - match := filter.dataKey == "" - if !match && eventData != nil { - match = eventData[filter.dataKey] == filter.dataValue - } - if match { - if cmd.resultReceived { - q.finaliseCommand(cmdEl, cmdQueue, true) - } else { - cmd.filter = nil - } - } - } - } - } - - if q.cfg.EventCh != nil { - ev := QMPEvent{ - Name: strname, - Data: eventData, - } - if timestamp != nil { - timestamp, ok := timestamp.(map[string]interface{}) - if ok { - seconds, _ := timestamp["seconds"].(float64) - microseconds, _ := timestamp["microseconds"].(float64) - ev.Timestamp = time.Unix(int64(seconds), int64(microseconds)) - } - } - - q.cfg.EventCh <- ev - } -} - -func (q *QMP) finaliseCommandWithResponse(cmdEl *list.Element, cmdQueue *list.List, succeeded bool, response interface{}) { - cmd := cmdEl.Value.(*qmpCommand) - cmdQueue.Remove(cmdEl) - select { - case <-cmd.ctx.Done(): - default: - if succeeded { - cmd.res <- qmpResult{response: response} - } else { - cmd.res <- qmpResult{err: fmt.Errorf("QMP command failed: %v", response)} - } - } - if cmdQueue.Len() > 0 { - q.writeNextQMPCommand(cmdQueue) - } -} - -func (q *QMP) finaliseCommand(cmdEl *list.Element, cmdQueue *list.List, succeeded bool) { - q.finaliseCommandWithResponse(cmdEl, cmdQueue, succeeded, nil) -} - -func (q *QMP) errorDesc(errorData interface{}) (string, error) { - // convert error to json - data, err := json.Marshal(errorData) - if err != nil { - return "", fmt.Errorf("unable to extract error information: %v", err) - } - - // see: https://github.com/qemu/qemu/blob/stable-2.12/qapi/qmp-dispatch.c#L125 - var qmpErr map[string]string - // convert json to qmpError - if err = json.Unmarshal(data, &qmpErr); err != nil { - return "", fmt.Errorf("unable to convert json to qmpError: %v", err) - } - - return qmpErr["desc"], nil -} - -func (q *QMP) processQMPInput(line []byte, cmdQueue *list.List) { - var vmData map[string]interface{} - err := json.Unmarshal(line, &vmData) - if err != nil { - q.cfg.Logger.Warningf("Unable to decode response [%s] from VM: %v", - string(line), err) - return - } - if evname, found := vmData["event"]; found { - q.processQMPEvent(cmdQueue, evname, vmData["data"], vmData["timestamp"]) - return - } - - response, succeeded := vmData["return"] - errData, failed := vmData["error"] - - if !succeeded && !failed { - return - } - - cmdEl := cmdQueue.Front() - if cmdEl == nil { - q.cfg.Logger.Warningf("Unexpected command response received [%s] from VM", - string(line)) - return - } - cmd := cmdEl.Value.(*qmpCommand) - if failed || cmd.filter == nil { - if errData != nil { - desc, err := q.errorDesc(errData) - if err != nil { - q.cfg.Logger.Infof("Get error description failed: %v", err) - } else { - response = desc - } - } - q.finaliseCommandWithResponse(cmdEl, cmdQueue, succeeded, response) - } else { - cmd.resultReceived = true - } -} - -func currentCommandDoneCh(cmdQueue *list.List) <-chan struct{} { - cmdEl := cmdQueue.Front() - if cmdEl == nil { - return nil - } - cmd := cmdEl.Value.(*qmpCommand) - return cmd.ctx.Done() -} - -func (q *QMP) writeNextQMPCommand(cmdQueue *list.List) { - cmdEl := cmdQueue.Front() - cmd := cmdEl.Value.(*qmpCommand) - cmdData := make(map[string]interface{}) - cmdData["execute"] = cmd.name - if cmd.args != nil { - cmdData["arguments"] = cmd.args - } - encodedCmd, err := json.Marshal(&cmdData) - if err != nil { - cmd.res <- qmpResult{ - err: fmt.Errorf("unable to marhsall command %s: %v", - cmd.name, err), - } - cmdQueue.Remove(cmdEl) - } - encodedCmd = append(encodedCmd, '\n') - if unixConn, ok := q.conn.(*net.UnixConn); ok && len(cmd.oob) > 0 { - _, _, err = unixConn.WriteMsgUnix(encodedCmd, cmd.oob, nil) - } else { - _, err = q.conn.Write(encodedCmd) - } - - if err != nil { - cmd.res <- qmpResult{ - err: fmt.Errorf("unable to write command to qmp socket %v", err), - } - cmdQueue.Remove(cmdEl) - } -} - -func failOutstandingCommands(cmdQueue *list.List) { - for e := cmdQueue.Front(); e != nil; e = e.Next() { - cmd := e.Value.(*qmpCommand) - select { - case cmd.res <- qmpResult{ - err: errors.New("exitting QMP loop, command cancelled"), - }: - case <-cmd.ctx.Done(): - } - } -} - -func (q *QMP) cancelCurrentCommand(cmdQueue *list.List) { - cmdEl := cmdQueue.Front() - cmd := cmdEl.Value.(*qmpCommand) - if cmd.resultReceived { - q.finaliseCommand(cmdEl, cmdQueue, false) - } else { - cmd.filter = nil - } -} - -func (q *QMP) parseVersion(version []byte) *QMPVersion { - var qmp map[string]interface{} - err := json.Unmarshal(version, &qmp) - if err != nil { - q.cfg.Logger.Errorf("Invalid QMP greeting: %s", string(version)) - return nil - } - - versionMap := qmp - for _, k := range []string{"QMP", "version", "qemu"} { - versionMap, _ = versionMap[k].(map[string]interface{}) - if versionMap == nil { - return nil - } - } - - micro, _ := versionMap["micro"].(float64) - minor, _ := versionMap["minor"].(float64) - major, _ := versionMap["major"].(float64) - capabilities, _ := qmp["QMP"].(map[string]interface{})["capabilities"].([]interface{}) - stringcaps := make([]string, 0, len(capabilities)) - for _, c := range capabilities { - if cap, ok := c.(string); ok { - stringcaps = append(stringcaps, cap) - } - } - return &QMPVersion{Major: int(major), - Minor: int(minor), - Micro: int(micro), - Capabilities: stringcaps, - } -} - -// The qemu package allows multiple QMP commands to be submitted concurrently -// from different Go routines. Unfortunately, QMP doesn't really support parallel -// commands as there is no way reliable way to associate a command response -// with a request. For this reason we need to submit our commands to -// QMP serially. The qemu package performs this serialisation using a -// queue (cmdQueue owned by mainLoop). We use a queue rather than a simple -// mutex so we can support cancelling of commands (see below) and ordered -// execution of commands, i.e., if command B is issued before command C, -// it should be executed before command C even if both commands are initially -// blocked waiting for command A to finish. This would be hard to achieve with -// a simple mutex. -// -// Cancelling is a little tricky. Commands such as ExecuteQMPCapabilities -// can be cancelled by cancelling or timing out their contexts. When a -// command is cancelled the calling function, e.g., ExecuteQMPCapabilities, -// will return but we may not be able to remove the command's entry from -// the command queue or issue the next command. There are two scenarios -// here. -// -// 1. The command has been processed by QMP, i.e., we have received a -// return or an error, but is still blocking as it is waiting for -// an event. For example, the ExecuteDeviceDel blocks until a DEVICE_DELETED -// event is received. When such a command is cancelled we can remove it -// from the queue and start issuing the next command. When the DEVICE_DELETED -// event eventually arrives it will just be ignored. -// -// 2. The command has not been processed by QMP. In this case the command -// needs to remain on the cmdQueue until the response to this command is -// received from QMP. During this time no new commands can be issued. When the -// response is received, it is discarded (as no one is interested in the result -// any more), the entry is removed from the cmdQueue and we can proceed to -// execute the next command. - -func (q *QMP) mainLoop() { - cmdQueue := list.New().Init() - fromVMCh := make(chan []byte) - go q.readLoop(fromVMCh) - - defer func() { - if q.cfg.EventCh != nil { - close(q.cfg.EventCh) - } - /* #nosec */ - _ = q.conn.Close() - <-fromVMCh - failOutstandingCommands(cmdQueue) - close(q.disconnectedCh) - }() - - var cmdDoneCh <-chan struct{} - var version *QMPVersion - ready := false - - for { - select { - case cmd, ok := <-q.cmdCh: - if !ok { - return - } - _ = cmdQueue.PushBack(&cmd) - - // We only want to execute the new cmd if QMP is - // ready and there are no other commands pending. - // If there are commands pending our new command - // will get run when the pending commands complete. - if ready && cmdQueue.Len() == 1 { - q.writeNextQMPCommand(cmdQueue) - cmdDoneCh = currentCommandDoneCh(cmdQueue) - } - - case line, ok := <-fromVMCh: - if !ok { - return - } - - if !ready { - // Not ready yet. Check if line is the QMP version. - // Sometimes QMP events are thrown before the QMP version, - // hence it's not a guarantee that the first data read from - // the channel is the QMP version. - version = q.parseVersion(line) - if version != nil { - q.connectedCh <- version - ready = true - } - // Do not process QMP input to avoid deadlocks. - break - } - - q.processQMPInput(line, cmdQueue) - cmdDoneCh = currentCommandDoneCh(cmdQueue) - - case <-cmdDoneCh: - q.cancelCurrentCommand(cmdQueue) - cmdDoneCh = currentCommandDoneCh(cmdQueue) - } - } -} - -func startQMPLoop(conn io.ReadWriteCloser, cfg QMPConfig, - connectedCh chan<- *QMPVersion, disconnectedCh chan struct{}) *QMP { - q := &QMP{ - cmdCh: make(chan qmpCommand), - conn: conn, - cfg: cfg, - connectedCh: connectedCh, - disconnectedCh: disconnectedCh, - } - go q.mainLoop() - return q -} - -func (q *QMP) executeCommandWithResponse(ctx context.Context, name string, args map[string]interface{}, - oob []byte, filter *qmpEventFilter) (interface{}, error) { - var err error - var response interface{} - resCh := make(chan qmpResult) - select { - case <-q.disconnectedCh: - err = errors.New("exitting QMP loop, command cancelled") - case q.cmdCh <- qmpCommand{ - ctx: ctx, - res: resCh, - name: name, - args: args, - filter: filter, - oob: oob, - }: - } - - if err != nil { - return response, err - } - - select { - case res := <-resCh: - err = res.err - response = res.response - case <-ctx.Done(): - err = ctx.Err() - } - - return response, err -} - -func (q *QMP) executeCommand(ctx context.Context, name string, args map[string]interface{}, - filter *qmpEventFilter) error { - - _, err := q.executeCommandWithResponse(ctx, name, args, nil, filter) - return err -} - -// QMPStart connects to a unix domain socket maintained by a QMP instance. It -// waits to receive the QMP welcome message via the socket and spawns some go -// routines to manage the socket. The function returns a *QMP which can be -// used by callers to send commands to the QEMU instance or to close the -// socket and all the go routines that have been spawned to monitor it. A -// *QMPVersion is also returned. This structure contains the version and -// capabilities information returned by the QEMU instance in its welcome -// message. -// -// socket contains the path to the domain socket. cfg contains some options -// that can be specified by the caller, namely where the qemu package should -// send logs and QMP events. disconnectedCh is a channel that must be supplied -// by the caller. It is closed when an error occurs openning or writing to -// or reading from the unix domain socket. This implies that the QEMU instance -// that opened the socket has closed. -// -// If this function returns without error, callers should call QMP.Shutdown -// when they wish to stop monitoring the QMP instance. This is not strictly -// necessary if the QEMU instance exits and the disconnectedCh is closed, but -// doing so will not cause any problems. -// -// Commands can be sent to the QEMU instance via the QMP.Execute methods. -// These commands are executed serially, even if the QMP.Execute methods -// are called from different go routines. The QMP.Execute methods will -// block until they have received a success or failure message from QMP, -// i.e., {"return": {}} or {"error":{}}, and in some cases certain events -// are received. -// -// QEMU currently requires that the "qmp_capabilties" command is sent before any -// other command. Therefore you must call qmp.ExecuteQMPCapabilities() before -// you execute any other command. -func QMPStart(ctx context.Context, socket string, cfg QMPConfig, disconnectedCh chan struct{}) (*QMP, *QMPVersion, error) { - if cfg.Logger == nil { - cfg.Logger = qmpNullLogger{} - } - dialer := net.Dialer{Cancel: ctx.Done()} - conn, err := dialer.Dial("unix", socket) - if err != nil { - cfg.Logger.Warningf("Unable to connect to unix socket (%s): %v", socket, err) - close(disconnectedCh) - return nil, nil, err - } - - connectedCh := make(chan *QMPVersion) - - q := startQMPLoop(conn, cfg, connectedCh, disconnectedCh) - select { - case <-ctx.Done(): - q.Shutdown() - <-disconnectedCh - return nil, nil, fmt.Errorf("canceled by caller") - case <-disconnectedCh: - return nil, nil, fmt.Errorf("lost connection to VM") - case q.version = <-connectedCh: - if q.version == nil { - return nil, nil, fmt.Errorf("failed to find QMP version information") - } - } - - if q.version.Major < 5 { - return nil, nil, fmt.Errorf("govmm requires qemu version 5.0 or later, this is qemu (%d.%d)", q.version.Major, q.version.Minor) - } - - return q, q.version, nil -} - -// Shutdown closes the domain socket used to monitor a QEMU instance and -// terminates all the go routines spawned by QMPStart to manage that instance. -// QMP.Shutdown does not shut down the running instance. Calling QMP.Shutdown -// will result in the disconnectedCh channel being closed, indicating that we -// have lost connection to the QMP instance. In this case it does not indicate -// that the instance has quit. -// -// QMP.Shutdown should not be called concurrently with other QMP methods. It -// should not be called twice on the same QMP instance. -// -// Calling QMP.Shutdown after the disconnectedCh channel is closed is permitted but -// will not have any effect. -func (q *QMP) Shutdown() { - close(q.cmdCh) -} - -// ExecuteQMPCapabilities executes the qmp_capabilities command on the instance. -func (q *QMP) ExecuteQMPCapabilities(ctx context.Context) error { - return q.executeCommand(ctx, "qmp_capabilities", nil, nil) -} - -// ExecuteStop sends the stop command to the instance. -func (q *QMP) ExecuteStop(ctx context.Context) error { - return q.executeCommand(ctx, "stop", nil, nil) -} - -// ExecuteCont sends the cont command to the instance. -func (q *QMP) ExecuteCont(ctx context.Context) error { - return q.executeCommand(ctx, "cont", nil, nil) -} - -// ExecuteSystemPowerdown sends the system_powerdown command to the instance. -// This function will block until the SHUTDOWN event is received. -func (q *QMP) ExecuteSystemPowerdown(ctx context.Context) error { - filter := &qmpEventFilter{ - eventName: "POWERDOWN", - } - return q.executeCommand(ctx, "system_powerdown", nil, filter) -} - -// ExecuteQuit sends the quit command to the instance, terminating -// the QMP instance immediately. -func (q *QMP) ExecuteQuit(ctx context.Context) error { - return q.executeCommand(ctx, "quit", nil, nil) -} - -func (q *QMP) blockdevAddBaseArgs(driver, device, blockdevID string, ro bool) (map[string]interface{}, map[string]interface{}) { - var args map[string]interface{} - - blockdevArgs := map[string]interface{}{ - "driver": "raw", - "read-only": ro, - "file": map[string]interface{}{ - "driver": driver, - "filename": device, - }, - } - - blockdevArgs["node-name"] = blockdevID - args = blockdevArgs - - return args, blockdevArgs -} - -// ExecuteBlockdevAdd sends a blockdev-add to the QEMU instance. device is the -// path of the device to add, e.g., /dev/rdb0, and blockdevID is an identifier -// used to name the device. As this identifier will be passed directly to QMP, -// it must obey QMP's naming rules, e,g., it must start with a letter. -func (q *QMP) ExecuteBlockdevAdd(ctx context.Context, device, blockdevID string, ro bool) error { - args, _ := q.blockdevAddBaseArgs("host_device", device, blockdevID, ro) - - return q.executeCommand(ctx, "blockdev-add", args, nil) -} - -// ExecuteBlockdevAddWithCache has two more parameters direct and noFlush -// than ExecuteBlockdevAdd. -// They are cache-related options for block devices that are described in -// https://github.com/qemu/qemu/blob/master/qapi/block-core.json. -// direct denotes whether use of O_DIRECT (bypass the host page cache) -// is enabled. noFlush denotes whether flush requests for the device are -// ignored. -func (q *QMP) ExecuteBlockdevAddWithCache(ctx context.Context, device, blockdevID string, direct, noFlush, ro bool) error { - args, blockdevArgs := q.blockdevAddBaseArgs("host_device", device, blockdevID, ro) - - blockdevArgs["cache"] = map[string]interface{}{ - "direct": direct, - "no-flush": noFlush, - } - - return q.executeCommand(ctx, "blockdev-add", args, nil) -} - -// ExecuteBlockdevAddWithDriverCache has three one parameter driver -// than ExecuteBlockdevAddWithCache. -// Parameter driver can set the driver of block device. -func (q *QMP) ExecuteBlockdevAddWithDriverCache(ctx context.Context, driver, device, blockdevID string, direct, noFlush, ro bool) error { - args, blockdevArgs := q.blockdevAddBaseArgs(driver, device, blockdevID, ro) - - blockdevArgs["cache"] = map[string]interface{}{ - "direct": direct, - "no-flush": noFlush, - } - - return q.executeCommand(ctx, "blockdev-add", args, nil) -} - -// ExecuteDeviceAdd adds the guest portion of a device to a QEMU instance -// using the device_add command. blockdevID should match the blockdevID passed -// to a previous call to ExecuteBlockdevAdd. devID is the id of the device to -// add. Both strings must be valid QMP identifiers. driver is the name of the -// driver,e.g., virtio-blk-pci, and bus is the name of the bus. bus is optional. -// shared denotes if the drive can be shared allowing it to be passed more than once. -// disableModern indicates if virtio version 1.0 should be replaced by the -// former version 0.9, as there is a KVM bug that occurs when using virtio -// 1.0 in nested environments. -func (q *QMP) ExecuteDeviceAdd(ctx context.Context, blockdevID, devID, driver, bus, romfile string, shared, disableModern bool) error { - args := map[string]interface{}{ - "id": devID, - "driver": driver, - "drive": blockdevID, - } - - var transport VirtioTransport - - if transport.isVirtioCCW(nil) { - args["devno"] = bus - } else if bus != "" { - args["bus"] = bus - } - - if shared { - args["share-rw"] = "on" - } - if transport.isVirtioPCI(nil) { - args["romfile"] = romfile - - if disableModern { - args["disable-modern"] = disableModern - } - } - - return q.executeCommand(ctx, "device_add", args, nil) -} - -// ExecuteSCSIDeviceAdd adds the guest portion of a block device to a QEMU instance -// using a SCSI driver with the device_add command. blockdevID should match the -// blockdevID passed to a previous call to ExecuteBlockdevAdd. devID is the id of -// the device to add. Both strings must be valid QMP identifiers. driver is the name of the -// scsi driver,e.g., scsi-hd, and bus is the name of a SCSI controller bus. -// scsiID is the SCSI id, lun is logical unit number. scsiID and lun are optional, a negative value -// for scsiID and lun is ignored. shared denotes if the drive can be shared allowing it -// to be passed more than once. -// disableModern indicates if virtio version 1.0 should be replaced by the -// former version 0.9, as there is a KVM bug that occurs when using virtio -// 1.0 in nested environments. -func (q *QMP) ExecuteSCSIDeviceAdd(ctx context.Context, blockdevID, devID, driver, bus, romfile string, scsiID, lun int, shared, disableModern bool) error { - // TBD: Add drivers for scsi passthrough like scsi-generic and scsi-block - drivers := []string{"scsi-hd", "scsi-cd", "scsi-disk"} - - isSCSIDriver := false - for _, d := range drivers { - if driver == d { - isSCSIDriver = true - break - } - } - - if !isSCSIDriver { - return fmt.Errorf("invalid SCSI driver provided %s", driver) - } - - args := map[string]interface{}{ - "id": devID, - "driver": driver, - "drive": blockdevID, - "bus": bus, - } - - if scsiID >= 0 { - args["scsi-id"] = scsiID - } - if lun >= 0 { - args["lun"] = lun - } - if shared { - args["share-rw"] = "on" - } - - return q.executeCommand(ctx, "device_add", args, nil) -} - -// ExecuteBlockdevDel deletes a block device by sending blockdev-del -// command. blockdevID is the id of the block device to be deleted. -// Typically, this will match the id passed to ExecuteBlockdevAdd. It -// must be a valid QMP id. -func (q *QMP) ExecuteBlockdevDel(ctx context.Context, blockdevID string) error { - args := map[string]interface{}{} - - args["node-name"] = blockdevID - return q.executeCommand(ctx, "blockdev-del", args, nil) -} - -// ExecuteChardevDel deletes a char device by sending a chardev-remove command. -// chardevID is the id of the char device to be deleted. Typically, this will -// match the id passed to ExecuteCharDevUnixSocketAdd. It must be a valid QMP id. -func (q *QMP) ExecuteChardevDel(ctx context.Context, chardevID string) error { - args := map[string]interface{}{ - "id": chardevID, - } - - return q.executeCommand(ctx, "chardev-remove", args, nil) -} - -// ExecuteNetdevAdd adds a Net device to a QEMU instance -// using the netdev_add command. netdevID is the id of the device to add. -// Must be valid QMP identifier. -func (q *QMP) ExecuteNetdevAdd(ctx context.Context, netdevType, netdevID, ifname, downscript, script string, queues int) error { - args := map[string]interface{}{ - "type": netdevType, - "id": netdevID, - "ifname": ifname, - "downscript": downscript, - "script": script, - } - if queues > 1 { - args["queues"] = queues - } - - return q.executeCommand(ctx, "netdev_add", args, nil) -} - -// ExecuteNetdevChardevAdd adds a Net device to a QEMU instance -// using the netdev_add command. netdevID is the id of the device to add. -// Must be valid QMP identifier. -func (q *QMP) ExecuteNetdevChardevAdd(ctx context.Context, netdevType, netdevID, chardev string, queues int) error { - args := map[string]interface{}{ - "type": netdevType, - "id": netdevID, - "chardev": chardev, - } - if queues > 1 { - args["queues"] = queues - } - - return q.executeCommand(ctx, "netdev_add", args, nil) -} - -// ExecuteNetdevAddByFds adds a Net device to a QEMU instance -// using the netdev_add command by fds and vhostfds. netdevID is the id of the device to add. -// Must be valid QMP identifier. -func (q *QMP) ExecuteNetdevAddByFds(ctx context.Context, netdevType, netdevID string, fdNames, vhostFdNames []string) error { - fdNameStr := strings.Join(fdNames, ":") - args := map[string]interface{}{ - "type": netdevType, - "id": netdevID, - "fds": fdNameStr, - } - if len(vhostFdNames) > 0 { - vhostFdNameStr := strings.Join(vhostFdNames, ":") - args["vhost"] = true - args["vhostfds"] = vhostFdNameStr - } - - return q.executeCommand(ctx, "netdev_add", args, nil) -} - -// ExecuteNetdevDel deletes a Net device from a QEMU instance -// using the netdev_del command. netdevID is the id of the device to delete. -func (q *QMP) ExecuteNetdevDel(ctx context.Context, netdevID string) error { - args := map[string]interface{}{ - "id": netdevID, - } - return q.executeCommand(ctx, "netdev_del", args, nil) -} - -// ExecuteNetPCIDeviceAdd adds a Net PCI device to a QEMU instance -// using the device_add command. devID is the id of the device to add. -// Must be valid QMP identifier. netdevID is the id of nic added by previous netdev_add. -// queues is the number of queues of a nic. -// disableModern indicates if virtio version 1.0 should be replaced by the -// former version 0.9, as there is a KVM bug that occurs when using virtio -// 1.0 in nested environments. -func (q *QMP) ExecuteNetPCIDeviceAdd(ctx context.Context, netdevID, devID, macAddr, addr, bus, romfile string, queues int, disableModern bool) error { - args := map[string]interface{}{ - "id": devID, - "driver": VirtioNetPCI, - "romfile": romfile, - } - - if bus != "" { - args["bus"] = bus - } - if addr != "" { - args["addr"] = addr - } - if macAddr != "" { - args["mac"] = macAddr - } - if netdevID != "" { - args["netdev"] = netdevID - } - if disableModern { - args["disable-modern"] = disableModern - } - - if queues > 0 { - // (2N+2 vectors, N for tx queues, N for rx queues, 1 for config, and one for possible control vq) - // -device virtio-net-pci,mq=on,vectors=2N+2... - // enable mq in guest by 'ethtool -L eth0 combined $queue_num' - // Clearlinux automatically sets up the queues properly - // The agent implementation should do this to ensure that it is - // always set - args["mq"] = "on" - args["vectors"] = 2*queues + 2 - } - - return q.executeCommand(ctx, "device_add", args, nil) -} - -// ExecuteNetCCWDeviceAdd adds a Net CCW device to a QEMU instance -// using the device_add command. devID is the id of the device to add. -// Must be valid QMP identifier. netdevID is the id of nic added by previous netdev_add. -// queues is the number of queues of a nic. -func (q *QMP) ExecuteNetCCWDeviceAdd(ctx context.Context, netdevID, devID, macAddr, bus string, queues int) error { - args := map[string]interface{}{ - "id": devID, - "driver": VirtioNetCCW, - "netdev": netdevID, - "mac": macAddr, - "devno": bus, - } - - if queues > 0 { - args["mq"] = "on" - } - - return q.executeCommand(ctx, "device_add", args, nil) -} - -// ExecuteDeviceDel deletes guest portion of a QEMU device by sending a -// device_del command. devId is the identifier of the device to delete. -// Typically it would match the devID parameter passed to an earlier call -// to ExecuteDeviceAdd. It must be a valid QMP identidier. -// -// This method blocks until a DEVICE_DELETED event is received for devID. -func (q *QMP) ExecuteDeviceDel(ctx context.Context, devID string) error { - args := map[string]interface{}{ - "id": devID, - } - filter := &qmpEventFilter{ - eventName: "DEVICE_DELETED", - dataKey: "device", - dataValue: devID, - } - return q.executeCommand(ctx, "device_del", args, filter) -} - -// ExecutePCIDeviceAdd is the PCI version of ExecuteDeviceAdd. This function can be used -// to hot plug PCI devices on PCI(E) bridges, unlike ExecuteDeviceAdd this function receive the -// device address on its parent bus. bus is optional. queues specifies the number of queues of -// a block device. shared denotes if the drive can be shared allowing it to be passed more than once. -// disableModern indicates if virtio version 1.0 should be replaced by the -// former version 0.9, as there is a KVM bug that occurs when using virtio -// 1.0 in nested environments. -func (q *QMP) ExecutePCIDeviceAdd(ctx context.Context, blockdevID, devID, driver, addr, bus, romfile string, queues int, shared, disableModern bool) error { - args := map[string]interface{}{ - "id": devID, - "driver": driver, - "drive": blockdevID, - "addr": addr, - } - if bus != "" { - args["bus"] = bus - } - if shared { - args["share-rw"] = "on" - } - if queues > 0 { - args["num-queues"] = strconv.Itoa(queues) - } - - var transport VirtioTransport - - if transport.isVirtioPCI(nil) { - args["romfile"] = romfile - - if disableModern { - args["disable-modern"] = disableModern - } - } - - return q.executeCommand(ctx, "device_add", args, nil) -} - -// ExecutePCIVhostUserDevAdd adds a vhost-user device to a QEMU instance using the device_add command. -// This function can be used to hot plug vhost-user devices on PCI(E) bridges. -// It receives the bus and the device address on its parent bus. bus is optional. -// devID is the id of the device to add.Must be valid QMP identifier. chardevID -// is the QMP identifier of character device using a unix socket as backend. -// driver is the name of vhost-user driver, like vhost-user-blk-pci. -func (q *QMP) ExecutePCIVhostUserDevAdd(ctx context.Context, driver, devID, chardevID, addr, bus string) error { - args := map[string]interface{}{ - "driver": driver, - "id": devID, - "chardev": chardevID, - "addr": addr, - } - - if bus != "" { - args["bus"] = bus - } - - return q.executeCommand(ctx, "device_add", args, nil) -} - -// ExecuteVFIODeviceAdd adds a VFIO device to a QEMU instance using the device_add command. -// devID is the id of the device to add. Must be valid QMP identifier. -// bdf is the PCI bus-device-function of the pci device. -// bus is optional. When hot plugging a PCIe device, the bus can be the ID of the pcie-root-port. -func (q *QMP) ExecuteVFIODeviceAdd(ctx context.Context, devID, bdf, bus, romfile string) error { - var driver string - var transport VirtioTransport - - if transport.isVirtioCCW(nil) { - driver = string(VfioCCW) - } else { - driver = string(VfioPCI) - } - - args := map[string]interface{}{ - "id": devID, - "driver": driver, - "host": bdf, - "romfile": romfile, - } - if bus != "" { - args["bus"] = bus - } - return q.executeCommand(ctx, "device_add", args, nil) -} - -// ExecutePCIVFIODeviceAdd adds a VFIO device to a QEMU instance using the device_add command. -// This function can be used to hot plug VFIO devices on PCI(E) bridges, unlike -// ExecuteVFIODeviceAdd this function receives the bus and the device address on its parent bus. -// bus is optional. devID is the id of the device to add.Must be valid QMP identifier. bdf is the -// PCI bus-device-function of the pci device. -func (q *QMP) ExecutePCIVFIODeviceAdd(ctx context.Context, devID, bdf, addr, bus, romfile string) error { - args := map[string]interface{}{ - "id": devID, - "driver": VfioPCI, - "host": bdf, - "addr": addr, - "romfile": romfile, - } - - if bus != "" { - args["bus"] = bus - } - return q.executeCommand(ctx, "device_add", args, nil) -} - -// ExecutePCIVFIOMediatedDeviceAdd adds a VFIO mediated device to a QEMU instance using the device_add command. -// This function can be used to hot plug VFIO mediated devices on PCI(E) bridges or root bus, unlike -// ExecuteVFIODeviceAdd this function receives the bus and the device address on its parent bus. -// devID is the id of the device to add. Must be valid QMP identifier. sysfsdev is the VFIO mediated device. -// Both bus and addr are optional. If they are both set to be empty, the system will pick up an empty slot on root bus. -func (q *QMP) ExecutePCIVFIOMediatedDeviceAdd(ctx context.Context, devID, sysfsdev, addr, bus, romfile string) error { - args := map[string]interface{}{ - "id": devID, - "driver": VfioPCI, - "sysfsdev": sysfsdev, - "romfile": romfile, - } - - if bus != "" { - args["bus"] = bus - } - if addr != "" { - args["addr"] = addr - } - return q.executeCommand(ctx, "device_add", args, nil) -} - -// ExecuteAPVFIOMediatedDeviceAdd adds a VFIO mediated AP device to a QEMU instance using the device_add command. -func (q *QMP) ExecuteAPVFIOMediatedDeviceAdd(ctx context.Context, sysfsdev string) error { - args := map[string]interface{}{ - "driver": VfioAP, - "sysfsdev": sysfsdev, - } - return q.executeCommand(ctx, "device_add", args, nil) -} - -// isSocketIDSupported returns if the cpu driver supports the socket id option -func isSocketIDSupported(driver string) bool { - if driver == "host-s390x-cpu" || driver == "host-powerpc64-cpu" { - return false - } - return true -} - -// isThreadIDSupported returns if the cpu driver supports the thread id option -func isThreadIDSupported(driver string) bool { - if driver == "host-s390x-cpu" || driver == "host-powerpc64-cpu" { - return false - } - return true -} - -// isDieIDSupported returns if the cpu driver and the qemu version support the die id option -func (q *QMP) isDieIDSupported(driver string) bool { - return driver == "host-x86_64-cpu" -} - -// ExecuteCPUDeviceAdd adds a CPU to a QEMU instance using the device_add command. -// driver is the CPU model, cpuID must be a unique ID to identify the CPU, socketID is the socket number within -// node/board the CPU belongs to, coreID is the core number within socket the CPU belongs to, threadID is the -// thread number within core the CPU belongs to. Note that socketID and threadID are not a requirement for -// architecures like ppc64le. -func (q *QMP) ExecuteCPUDeviceAdd(ctx context.Context, driver, cpuID, socketID, dieID, coreID, threadID, romfile string) error { - args := map[string]interface{}{ - "driver": driver, - "id": cpuID, - "core-id": coreID, - } - - if socketID != "" && isSocketIDSupported(driver) { - args["socket-id"] = socketID - } - - if threadID != "" && isThreadIDSupported(driver) { - args["thread-id"] = threadID - } - - if q.isDieIDSupported(driver) { - if dieID != "" { - args["die-id"] = dieID - } - } - - return q.executeCommand(ctx, "device_add", args, nil) -} - -// ExecuteQueryHotpluggableCPUs returns a slice with the list of hotpluggable CPUs -func (q *QMP) ExecuteQueryHotpluggableCPUs(ctx context.Context) ([]HotpluggableCPU, error) { - response, err := q.executeCommandWithResponse(ctx, "query-hotpluggable-cpus", nil, nil, nil) - if err != nil { - return nil, err - } - - // convert response to json - data, err := json.Marshal(response) - if err != nil { - return nil, fmt.Errorf("unable to extract CPU information: %v", err) - } - - var cpus []HotpluggableCPU - // convert json to []HotpluggableCPU - if err = json.Unmarshal(data, &cpus); err != nil { - return nil, fmt.Errorf("unable to convert json to hotpluggable CPU: %v", err) - } - - return cpus, nil -} - -// ExecSetMigrationCaps sets migration capabilities -func (q *QMP) ExecSetMigrationCaps(ctx context.Context, caps []map[string]interface{}) error { - args := map[string]interface{}{ - "capabilities": caps, - } - - return q.executeCommand(ctx, "migrate-set-capabilities", args, nil) -} - -// ExecSetMigrateArguments sets the command line used for migration -func (q *QMP) ExecSetMigrateArguments(ctx context.Context, url string) error { - args := map[string]interface{}{ - "uri": url, - } - - return q.executeCommand(ctx, "migrate", args, nil) -} - -// ExecQueryMemoryDevices returns a slice with the list of memory devices -func (q *QMP) ExecQueryMemoryDevices(ctx context.Context) ([]MemoryDevices, error) { - response, err := q.executeCommandWithResponse(ctx, "query-memory-devices", nil, nil, nil) - if err != nil { - return nil, err - } - - // convert response to json - data, err := json.Marshal(response) - if err != nil { - return nil, fmt.Errorf("unable to extract memory devices information: %v", err) - } - - var memoryDevices []MemoryDevices - // convert json to []MemoryDevices - if err = json.Unmarshal(data, &memoryDevices); err != nil { - return nil, fmt.Errorf("unable to convert json to memory devices: %v", err) - } - - return memoryDevices, nil -} - -// ExecQueryCpus returns a slice with the list of `CpuInfo` -// Since qemu 2.12, we have `query-cpus-fast` as a better choice in production -// we can still choose `ExecQueryCpus` for compatibility though not recommended. -func (q *QMP) ExecQueryCpus(ctx context.Context) ([]CPUInfo, error) { - response, err := q.executeCommandWithResponse(ctx, "query-cpus", nil, nil, nil) - if err != nil { - return nil, err - } - - // convert response to json - data, err := json.Marshal(response) - if err != nil { - return nil, fmt.Errorf("unable to extract memory devices information: %v", err) - } - - var cpuInfo []CPUInfo - // convert json to []CPUInfo - if err = json.Unmarshal(data, &cpuInfo); err != nil { - return nil, fmt.Errorf("unable to convert json to CPUInfo: %v", err) - } - - return cpuInfo, nil -} - -// ExecQueryCpusFast returns a slice with the list of `CpuInfoFast` -// This is introduced since 2.12, it does not incur a performance penalty and -// should be used in production instead of query-cpus. -func (q *QMP) ExecQueryCpusFast(ctx context.Context) ([]CPUInfoFast, error) { - response, err := q.executeCommandWithResponse(ctx, "query-cpus-fast", nil, nil, nil) - if err != nil { - return nil, err - } - - // convert response to json - data, err := json.Marshal(response) - if err != nil { - return nil, fmt.Errorf("unable to extract memory devices information: %v", err) - } - - var cpuInfoFast []CPUInfoFast - // convert json to []CPUInfoFast - if err = json.Unmarshal(data, &cpuInfoFast); err != nil { - return nil, fmt.Errorf("unable to convert json to CPUInfoFast: %v", err) - } - - return cpuInfoFast, nil -} - -// ExecMemdevAdd adds size of MiB memory device to the guest -func (q *QMP) ExecMemdevAdd(ctx context.Context, qomtype, id, mempath string, size int, share bool, driver, driverID, addr, bus string) error { - args := map[string]interface{}{ - "qom-type": qomtype, - "id": id, - "size": uint64(size) << 20, - } - if mempath != "" { - args["mem-path"] = mempath - } - if share { - args["share"] = true - } - err := q.executeCommand(ctx, "object-add", args, nil) - if err != nil { - return err - } - - defer func() { - if err != nil { - q.cfg.Logger.Errorf("Unable to add memory device %s: %v", id, err) - err = q.executeCommand(ctx, "object-del", map[string]interface{}{"id": id}, nil) - if err != nil { - q.cfg.Logger.Warningf("Unable to clean up memory object %s: %v", id, err) - } - } - }() - - args = map[string]interface{}{ - "driver": driver, - "id": driverID, - "memdev": id, - } - - if bus != "" { - args["bus"] = bus - } - if addr != "" { - args["addr"] = addr - } - - err = q.executeCommand(ctx, "device_add", args, nil) - - return err -} - -// ExecHotplugMemory adds size of MiB memory to the guest -func (q *QMP) ExecHotplugMemory(ctx context.Context, qomtype, id, mempath string, size int, share bool) error { - return q.ExecMemdevAdd(ctx, qomtype, id, mempath, size, share, "pc-dimm", "dimm"+id, "", "") -} - -// ExecuteNVDIMMDeviceAdd adds a block device to a QEMU instance using -// a NVDIMM driver with the device_add command. -// id is the id of the device to add. It must be a valid QMP identifier. -// mempath is the path of the device to add, e.g., /dev/rdb0. size is -// the data size of the device. pmem is to guarantee the persistence of QEMU writes -// to the vNVDIMM backend. -func (q *QMP) ExecuteNVDIMMDeviceAdd(ctx context.Context, id, mempath string, size int64, pmem *bool) error { - args := map[string]interface{}{ - "qom-type": "memory-backend-file", - "id": "nvdimmbackmem" + id, - "mem-path": mempath, - "size": size, - "share": true, - } - - if pmem != nil { - args["pmem"] = *pmem - } - - err := q.executeCommand(ctx, "object-add", args, nil) - if err != nil { - return err - } - - args = map[string]interface{}{ - "driver": "nvdimm", - "id": "nvdimm" + id, - "memdev": "nvdimmbackmem" + id, - } - if err = q.executeCommand(ctx, "device_add", args, nil); err != nil { - q.cfg.Logger.Errorf("Unable to hotplug NVDIMM device: %v", err) - err2 := q.executeCommand(ctx, "object-del", map[string]interface{}{"id": "nvdimmbackmem" + id}, nil) - if err2 != nil { - q.cfg.Logger.Warningf("Unable to clean up memory object: %v", err2) - } - } - - return err -} - -// ExecuteBalloon sets the size of the balloon, hence updates the memory -// allocated for the VM. -func (q *QMP) ExecuteBalloon(ctx context.Context, bytes uint64) error { - args := map[string]interface{}{ - "value": bytes, - } - return q.executeCommand(ctx, "balloon", args, nil) -} - -// ExecutePCIVSockAdd adds a vhost-vsock-pci bus -// disableModern indicates if virtio version 1.0 should be replaced by the -// former version 0.9, as there is a KVM bug that occurs when using virtio -// 1.0 in nested environments. -func (q *QMP) ExecutePCIVSockAdd(ctx context.Context, id, guestCID, vhostfd, addr, bus, romfile string, disableModern bool) error { - args := map[string]interface{}{ - "driver": VHostVSockPCI, - "id": id, - "guest-cid": guestCID, - "vhostfd": vhostfd, - "addr": addr, - "romfile": romfile, - } - - if bus != "" { - args["bus"] = bus - } - - if disableModern { - args["disable-modern"] = disableModern - } - - return q.executeCommand(ctx, "device_add", args, nil) -} - -// ExecuteGetFD sends a file descriptor via SCM rights and assigns it a name -func (q *QMP) ExecuteGetFD(ctx context.Context, fdname string, fd *os.File) error { - oob := syscall.UnixRights(int(fd.Fd())) - args := map[string]interface{}{ - "fdname": fdname, - } - - _, err := q.executeCommandWithResponse(ctx, "getfd", args, oob, nil) - return err -} - -// ExecuteCharDevUnixSocketAdd adds a character device using as backend a unix socket, -// id is an identifier for the device, path specifies the local path of the unix socket, -// wait is to block waiting for a client to connect, server specifies that the socket is a listening socket. -func (q *QMP) ExecuteCharDevUnixSocketAdd(ctx context.Context, id, path string, wait, server bool) error { - data := map[string]interface{}{ - "server": server, - "addr": map[string]interface{}{ - "type": "unix", - "data": map[string]interface{}{ - "path": path, - }, - }, - } - - // wait is only valid for server mode - if server { - data["wait"] = wait - } - - args := map[string]interface{}{ - "id": id, - "backend": map[string]interface{}{ - "type": "socket", - "data": data, - }, - } - return q.executeCommand(ctx, "chardev-add", args, nil) -} - -// ExecuteVirtSerialPortAdd adds a virtserialport. -// id is an identifier for the virtserialport, name is a name for the virtserialport and -// it will be visible in the VM, chardev is the character device id previously added. -func (q *QMP) ExecuteVirtSerialPortAdd(ctx context.Context, id, name, chardev string) error { - args := map[string]interface{}{ - "driver": VirtioSerialPort, - "id": id, - "name": name, - "chardev": chardev, - } - - return q.executeCommand(ctx, "device_add", args, nil) -} - -// ExecuteQueryMigration queries migration progress. -func (q *QMP) ExecuteQueryMigration(ctx context.Context) (MigrationStatus, error) { - response, err := q.executeCommandWithResponse(ctx, "query-migrate", nil, nil, nil) - if err != nil { - return MigrationStatus{}, err - } - - data, err := json.Marshal(response) - if err != nil { - return MigrationStatus{}, fmt.Errorf("unable to extract migrate status information: %v", err) - } - - var status MigrationStatus - if err = json.Unmarshal(data, &status); err != nil { - return MigrationStatus{}, fmt.Errorf("unable to convert migrate status information: %v", err) - } - - return status, nil -} - -// ExecuteMigrationIncoming start migration from incoming uri. -func (q *QMP) ExecuteMigrationIncoming(ctx context.Context, uri string) error { - args := map[string]interface{}{ - "uri": uri, - } - return q.executeCommand(ctx, "migrate-incoming", args, nil) -} - -// ExecQueryQmpSchema query all QMP wire ABI and returns a slice -func (q *QMP) ExecQueryQmpSchema(ctx context.Context) ([]SchemaInfo, error) { - response, err := q.executeCommandWithResponse(ctx, "query-qmp-schema", nil, nil, nil) - if err != nil { - return nil, err - } - - // convert response to json - data, err := json.Marshal(response) - if err != nil { - return nil, fmt.Errorf("unable to extract memory devices information: %v", err) - } - - var schemaInfo []SchemaInfo - if err = json.Unmarshal(data, &schemaInfo); err != nil { - return nil, fmt.Errorf("unable to convert json to schemaInfo: %v", err) - } - - return schemaInfo, nil -} - -// ExecuteQueryStatus queries guest status -func (q *QMP) ExecuteQueryStatus(ctx context.Context) (StatusInfo, error) { - response, err := q.executeCommandWithResponse(ctx, "query-status", nil, nil, nil) - if err != nil { - return StatusInfo{}, err - } - - data, err := json.Marshal(response) - if err != nil { - return StatusInfo{}, fmt.Errorf("unable to extract migrate status information: %v", err) - } - - var status StatusInfo - if err = json.Unmarshal(data, &status); err != nil { - return StatusInfo{}, fmt.Errorf("unable to convert migrate status information: %v", err) - } - - return status, nil -} - -// ExecQomSet qom-set path property value -func (q *QMP) ExecQomSet(ctx context.Context, path, property string, value uint64) error { - args := map[string]interface{}{ - "path": path, - "property": property, - "value": value, - } - - return q.executeCommand(ctx, "qom-set", args, nil) -} - -// ExecQomGet qom-get path property -func (q *QMP) ExecQomGet(ctx context.Context, path, property string) (interface{}, error) { - args := map[string]interface{}{ - "path": path, - "property": property, - } - - response, err := q.executeCommandWithResponse(ctx, "qom-get", args, nil, nil) - if err != nil { - return "", err - } - - return response, nil -} - -// ExecuteDumpGuestMemory dump guest memory to host -func (q *QMP) ExecuteDumpGuestMemory(ctx context.Context, protocol string, paging bool, format string) error { - args := map[string]interface{}{ - "protocol": protocol, - "paging": paging, - "format": format, - } - - return q.executeCommand(ctx, "dump-guest-memory", args, nil) -} diff --git a/src/runtime/vendor/modules.txt b/src/runtime/vendor/modules.txt index 2f0996ab3..f52a619fc 100644 --- a/src/runtime/vendor/modules.txt +++ b/src/runtime/vendor/modules.txt @@ -206,9 +206,6 @@ github.com/hashicorp/go-multierror github.com/intel-go/cpuid # github.com/josharian/intern v1.0.0 github.com/josharian/intern -# github.com/kata-containers/govmm v0.0.0-20220117131932-0781a21804ee -## explicit -github.com/kata-containers/govmm/qemu # github.com/mailru/easyjson v0.7.6 github.com/mailru/easyjson/buffer github.com/mailru/easyjson/jlexer diff --git a/src/runtime/virtcontainers/qemu.go b/src/runtime/virtcontainers/qemu.go index 37a6d4035..b522928a7 100644 --- a/src/runtime/virtcontainers/qemu.go +++ b/src/runtime/virtcontainers/qemu.go @@ -24,7 +24,7 @@ import ( "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/rootless" - govmmQemu "github.com/kata-containers/govmm/qemu" + govmmQemu "github.com/kata-containers/kata-containers/src/runtime/pkg/govmm/qemu" "github.com/opencontainers/selinux/go-selinux/label" "github.com/pkg/errors" "github.com/sirupsen/logrus" diff --git a/src/runtime/virtcontainers/qemu_amd64.go b/src/runtime/virtcontainers/qemu_amd64.go index c1464809a..874b7461d 100644 --- a/src/runtime/virtcontainers/qemu_amd64.go +++ b/src/runtime/virtcontainers/qemu_amd64.go @@ -14,7 +14,7 @@ import ( "github.com/sirupsen/logrus" "github.com/intel-go/cpuid" - govmmQemu "github.com/kata-containers/govmm/qemu" + govmmQemu "github.com/kata-containers/kata-containers/src/runtime/pkg/govmm/qemu" ) type qemuAmd64 struct { diff --git a/src/runtime/virtcontainers/qemu_amd64_test.go b/src/runtime/virtcontainers/qemu_amd64_test.go index be3246f6f..6495b70cb 100644 --- a/src/runtime/virtcontainers/qemu_amd64_test.go +++ b/src/runtime/virtcontainers/qemu_amd64_test.go @@ -12,7 +12,7 @@ import ( "testing" "github.com/intel-go/cpuid" - govmmQemu "github.com/kata-containers/govmm/qemu" + govmmQemu "github.com/kata-containers/kata-containers/src/runtime/pkg/govmm/qemu" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/types" "github.com/stretchr/testify/assert" ) diff --git a/src/runtime/virtcontainers/qemu_arch_base.go b/src/runtime/virtcontainers/qemu_arch_base.go index 97cd6eb83..134525c92 100644 --- a/src/runtime/virtcontainers/qemu_arch_base.go +++ b/src/runtime/virtcontainers/qemu_arch_base.go @@ -14,7 +14,7 @@ import ( "runtime" "strings" - govmmQemu "github.com/kata-containers/govmm/qemu" + govmmQemu "github.com/kata-containers/kata-containers/src/runtime/pkg/govmm/qemu" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/device/config" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/types" diff --git a/src/runtime/virtcontainers/qemu_arch_base_test.go b/src/runtime/virtcontainers/qemu_arch_base_test.go index 67530ba51..b4b808685 100644 --- a/src/runtime/virtcontainers/qemu_arch_base_test.go +++ b/src/runtime/virtcontainers/qemu_arch_base_test.go @@ -13,7 +13,7 @@ import ( "path/filepath" "testing" - govmmQemu "github.com/kata-containers/govmm/qemu" + govmmQemu "github.com/kata-containers/kata-containers/src/runtime/pkg/govmm/qemu" "github.com/stretchr/testify/assert" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/device/config" diff --git a/src/runtime/virtcontainers/qemu_arm64.go b/src/runtime/virtcontainers/qemu_arm64.go index 452493ce1..7fea89a75 100644 --- a/src/runtime/virtcontainers/qemu_arm64.go +++ b/src/runtime/virtcontainers/qemu_arm64.go @@ -12,7 +12,7 @@ import ( "runtime" "time" - govmmQemu "github.com/kata-containers/govmm/qemu" + govmmQemu "github.com/kata-containers/kata-containers/src/runtime/pkg/govmm/qemu" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/types" ) diff --git a/src/runtime/virtcontainers/qemu_arm64_test.go b/src/runtime/virtcontainers/qemu_arm64_test.go index 925b34cdd..9797cf894 100644 --- a/src/runtime/virtcontainers/qemu_arm64_test.go +++ b/src/runtime/virtcontainers/qemu_arm64_test.go @@ -11,7 +11,7 @@ import ( "os" "testing" - govmmQemu "github.com/kata-containers/govmm/qemu" + govmmQemu "github.com/kata-containers/kata-containers/src/runtime/pkg/govmm/qemu" "github.com/stretchr/testify/assert" ) diff --git a/src/runtime/virtcontainers/qemu_ppc64le.go b/src/runtime/virtcontainers/qemu_ppc64le.go index 00fec3529..356261c79 100644 --- a/src/runtime/virtcontainers/qemu_ppc64le.go +++ b/src/runtime/virtcontainers/qemu_ppc64le.go @@ -9,7 +9,7 @@ import ( "fmt" "time" - govmmQemu "github.com/kata-containers/govmm/qemu" + govmmQemu "github.com/kata-containers/kata-containers/src/runtime/pkg/govmm/qemu" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/types" "github.com/sirupsen/logrus" ) diff --git a/src/runtime/virtcontainers/qemu_ppc64le_test.go b/src/runtime/virtcontainers/qemu_ppc64le_test.go index ffe790d8e..7d70c6a40 100644 --- a/src/runtime/virtcontainers/qemu_ppc64le_test.go +++ b/src/runtime/virtcontainers/qemu_ppc64le_test.go @@ -9,7 +9,7 @@ import ( "fmt" "testing" - govmmQemu "github.com/kata-containers/govmm/qemu" + govmmQemu "github.com/kata-containers/kata-containers/src/runtime/pkg/govmm/qemu" "github.com/stretchr/testify/assert" ) diff --git a/src/runtime/virtcontainers/qemu_s390x.go b/src/runtime/virtcontainers/qemu_s390x.go index d6c013156..827ced4b7 100644 --- a/src/runtime/virtcontainers/qemu_s390x.go +++ b/src/runtime/virtcontainers/qemu_s390x.go @@ -10,7 +10,7 @@ import ( "fmt" "time" - govmmQemu "github.com/kata-containers/govmm/qemu" + govmmQemu "github.com/kata-containers/kata-containers/src/runtime/pkg/govmm/qemu" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/device/config" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/types" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/utils" diff --git a/src/runtime/virtcontainers/qemu_s390x_test.go b/src/runtime/virtcontainers/qemu_s390x_test.go index 4db63b6d8..c9e1cc2a3 100644 --- a/src/runtime/virtcontainers/qemu_s390x_test.go +++ b/src/runtime/virtcontainers/qemu_s390x_test.go @@ -10,7 +10,7 @@ import ( "fmt" "testing" - govmmQemu "github.com/kata-containers/govmm/qemu" + govmmQemu "github.com/kata-containers/kata-containers/src/runtime/pkg/govmm/qemu" "github.com/stretchr/testify/assert" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/device/config" diff --git a/src/runtime/virtcontainers/qemu_test.go b/src/runtime/virtcontainers/qemu_test.go index b03f156de..2add4a45c 100644 --- a/src/runtime/virtcontainers/qemu_test.go +++ b/src/runtime/virtcontainers/qemu_test.go @@ -12,7 +12,7 @@ import ( "path/filepath" "testing" - govmmQemu "github.com/kata-containers/govmm/qemu" + govmmQemu "github.com/kata-containers/kata-containers/src/runtime/pkg/govmm/qemu" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/device/config" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/persist" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/types" From de678a3aaa361e5e417abd2fba5581f764b90ffb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Tue, 18 Jan 2022 11:20:11 +0100 Subject: [PATCH 314/385] govmm: Remove non-relevant top files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit govmm, from now on, should follow the same guidelines from contributing, copying, and etc as kata-containers does. The go.mod is not needed anymore as the project lives inside the runtime. Signed-off-by: Fabiano Fidêncio --- src/runtime/pkg/govmm/CONTRIBUTING.md | 96 ------------ src/runtime/pkg/govmm/COPYING | 202 -------------------------- src/runtime/pkg/govmm/README.md | 21 --- src/runtime/pkg/govmm/go.mod | 3 - 4 files changed, 322 deletions(-) delete mode 100644 src/runtime/pkg/govmm/CONTRIBUTING.md delete mode 100644 src/runtime/pkg/govmm/COPYING delete mode 100644 src/runtime/pkg/govmm/README.md delete mode 100644 src/runtime/pkg/govmm/go.mod diff --git a/src/runtime/pkg/govmm/CONTRIBUTING.md b/src/runtime/pkg/govmm/CONTRIBUTING.md deleted file mode 100644 index 451903e0a..000000000 --- a/src/runtime/pkg/govmm/CONTRIBUTING.md +++ /dev/null @@ -1,96 +0,0 @@ -# Contributing to Virtual Machine Manager for Go - -Virtual Machine Manager for Go is an open source project licensed under the [Apache v2 License] (https://opensource.org/licenses/Apache-2.0) - -## Coding Style - -Virtual Machine Manager for Go follows the standard formatting recommendations and language idioms set out -in [Effective Go](https://golang.org/doc/effective_go.html) and in the -[Go Code Review Comments wiki](https://github.com/golang/go/wiki/CodeReviewComments). - -## Certificate of Origin - -In order to get a clear contribution chain of trust we use the [signed-off-by language] (https://01.org/community/signed-process) -used by the Linux kernel project. - -## Patch format - -Beside the signed-off-by footer, we expect each patch to comply with the following format: - -``` -Change summary - -More detailed explanation of your changes: Why and how. -Wrap it to 72 characters. -See [here] (http://chris.beams.io/posts/git-commit/) -for some more good advices. - -Fixes #NUMBER (or URL to the issue) - -Signed-off-by: -``` - -For example: - -``` -Fix poorly named identifiers - -One identifier, fnname, in func.go was poorly named. It has been renamed -to fnName. Another identifier retval was not needed and has been removed -entirely. - -Fixes #1 - -Signed-off-by: Mark Ryan -``` - -## New files - -Each Go source file in the Virtual Machine Manager for Go project must -contain the following header: - -``` -/* -// Copyright contributors to the Virtual Machine Manager for Go project -// -// 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. -*/ -``` - -## Contributors File - -This CONTRIBUTORS.md file is a partial list of contributors to the -Virtual Machine Manager for Go project. To see the full list of -contributors, see the revision history in source control. - -Contributors who wish to be recognized in this file should add -themselves (or their employer, as appropriate). - -## Pull requests - -We accept github pull requests. - -## Quality Controls - -We request you give quality assurance some consideration by: - -* Adding go unit tests for changes where it makes sense. -* Enabling [Travis CI](https://travis-ci.org/kata-containers/govmm) on your github fork of Virtual Machine Manager for Go to get continuous integration feedback on your dev/test branches. - -## Issue tracking - -If you have a problem, please let us know. If it's a bug not already documented, by all means please [open an -issue in github](https://github.com/kata-containers/govmm/issues/new) so we all get visibility -the problem and work toward resolution. - -Any security issues discovered with govmm should be reported by following the instructions on https://01.org/security. diff --git a/src/runtime/pkg/govmm/COPYING b/src/runtime/pkg/govmm/COPYING deleted file mode 100644 index d64569567..000000000 --- a/src/runtime/pkg/govmm/COPYING +++ /dev/null @@ -1,202 +0,0 @@ - - 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 - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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/src/runtime/pkg/govmm/README.md b/src/runtime/pkg/govmm/README.md deleted file mode 100644 index d96c4d9de..000000000 --- a/src/runtime/pkg/govmm/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# Virtual Machine Manager for Go - -[![Go Report Card](https://goreportcard.com/badge/github.com/kata-containers/govmm)](https://goreportcard.com/report/github.com/kata-containers/govmm) -[![Build Status](https://travis-ci.org/kata-containers/govmm.svg?branch=master)](https://travis-ci.org/kata-containers/govmm) -[![GoDoc](https://godoc.org/github.com/kata-containers/govmm/qemu?status.svg)](https://godoc.org/github.com/kata-containers/govmm/qemu) -[![Coverage Status](https://coveralls.io/repos/github/kata-containers/govmm/badge.svg?branch=master)](https://coveralls.io/github/kata-containers/govmm?branch=master) - -Virtual Machine Manager for Go (govmm) is a suite of packages that -provide Go APIs for creating and managing virtual machines. There's -currently support for only one hypervisor, qemu/kvm (version 5.0 and -later), support for which is provided by the -github.com/kata-containers/govmm/qemu package. - -The qemu package provides APIs for launching qemu instances and for -managing those instances via QMP, once launched. VM instances can -be stopped, have devices attached to them and monitored for events -via the qemu APIs. - -The qemu package has no external dependencies apart from the Go -standard library and so is nice and easy to vendor inside other -projects. diff --git a/src/runtime/pkg/govmm/go.mod b/src/runtime/pkg/govmm/go.mod deleted file mode 100644 index 377ac043f..000000000 --- a/src/runtime/pkg/govmm/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/kata-containers/govmm - -go 1.16 From 6dd65779863b331adb4efaf9e17c5118dd55b805 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Wed, 19 Jan 2022 12:16:46 +0100 Subject: [PATCH 315/385] govmm: Ignore govet checks, at least for now MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit govet checks have been ignored on govmm repo, but those are enabled on kata-containers one. So, in order to avoid failing our CIs let's just keep ignoring the checks for the govmm structs and have an issue opened for fixing it whenever someone has cycles to do it. The important bit here is, we're not making anything worse that it already is. :-) Signed-off-by: Fabiano Fidêncio --- src/runtime/pkg/govmm/qemu/qemu.go | 16 ++++++++++++++++ src/runtime/pkg/govmm/qemu/qmp.go | 10 ++++++++++ src/runtime/pkg/govmm/qemu/qmp_test.go | 4 ++++ 3 files changed, 30 insertions(+) diff --git a/src/runtime/pkg/govmm/qemu/qemu.go b/src/runtime/pkg/govmm/qemu/qemu.go index c43ff5795..8e101e9b9 100644 --- a/src/runtime/pkg/govmm/qemu/qemu.go +++ b/src/runtime/pkg/govmm/qemu/qemu.go @@ -250,6 +250,7 @@ const ( ) // Object is a qemu object representation. +// nolint: govet type Object struct { // Driver is the qemu device driver Driver DeviceDriver @@ -439,6 +440,7 @@ const ( ) // FSDevice represents a qemu filesystem configuration. +// nolint: govet type FSDevice struct { // Driver is the qemu device driver Driver DeviceDriver @@ -574,6 +576,7 @@ const ( ) // CharDevice represents a qemu character device. +// nolint: govet type CharDevice struct { Backend CharDeviceBackend @@ -784,6 +787,7 @@ func (n NetDeviceType) QemuDeviceParam(netdev *NetDevice, config *Config) Device } // NetDevice represents a guest networking device +// nolint: govet type NetDevice struct { // Type is the netdev type (e.g. tap). Type NetDeviceType @@ -1041,6 +1045,7 @@ func (dev LegacySerialDevice) deviceName(config *Config) string { */ // SerialDevice represents a qemu serial device. +// nolint: govet type SerialDevice struct { // Driver is the qemu device driver Driver DeviceDriver @@ -1149,6 +1154,7 @@ const ( ) // BlockDevice represents a qemu block device. +// nolint: govet type BlockDevice struct { Driver DeviceDriver ID string @@ -1316,6 +1322,7 @@ func (dev LoaderDevice) QemuParams(config *Config) []string { // VhostUserDevice represents a qemu vhost-user device meant to be passed // in to the guest +// nolint: govet type VhostUserDevice struct { SocketPath string //path to vhostuser socket on host CharDevID string @@ -1567,6 +1574,7 @@ func (vhostuserDev VhostUserDevice) deviceName(config *Config) string { } // PCIeRootPortDevice represents a memory balloon device. +// nolint: govet type PCIeRootPortDevice struct { ID string // format: rp{n}, n>=0 @@ -1747,6 +1755,7 @@ func (vfioDev VFIODevice) deviceName(config *Config) string { } // SCSIController represents a SCSI controller device. +// nolint: govet type SCSIController struct { ID string @@ -1843,6 +1852,7 @@ const ( ) // BridgeDevice represents a qemu bridge device like pci-bridge, pxb, etc. +// nolint: govet type BridgeDevice struct { // Type of the bridge Type BridgeType @@ -1940,6 +1950,7 @@ func (bridgeDev BridgeDevice) QemuParams(config *Config) []string { } // VSOCKDevice represents a AF_VSOCK socket. +// nolint: govet type VSOCKDevice struct { ID string @@ -2036,6 +2047,7 @@ func (vsock VSOCKDevice) deviceName(config *Config) string { } // RngDevice represents a random number generator device. +// nolint: govet type RngDevice struct { // ID is the device ID ID string @@ -2124,6 +2136,7 @@ func (v RngDevice) deviceName(config *Config) string { } // BalloonDevice represents a memory balloon device. +// nolint: govet type BalloonDevice struct { DeflateOnOOM bool DisableModern bool @@ -2358,6 +2371,7 @@ type SMP struct { } // Memory is the guest memory configuration structure. +// nolint: govet type Memory struct { // Size is the amount of memory made available to the guest. // It should be suffixed with M or G for sizes in megabytes or @@ -2505,6 +2519,7 @@ const ( ) // Incoming controls migration source preparation +// nolint: govet type Incoming struct { // Possible values are MigrationFD, MigrationExec MigrationType int @@ -2516,6 +2531,7 @@ type Incoming struct { // Config is the qemu configuration structure. // It allows for passing custom settings and parameters to the qemu API. +// nolint: govet type Config struct { // Path is the qemu binary path. Path string diff --git a/src/runtime/pkg/govmm/qemu/qmp.go b/src/runtime/pkg/govmm/qemu/qmp.go index 2e30c2ba9..83c5293d6 100644 --- a/src/runtime/pkg/govmm/qemu/qmp.go +++ b/src/runtime/pkg/govmm/qemu/qmp.go @@ -96,6 +96,7 @@ type qmpEventFilter struct { } // QMPEvent contains a single QMP event, sent on the QMPConfig.EventCh channel. +// nolint: govet type QMPEvent struct { // The name of the event, e.g., DEVICE_DELETED Name string @@ -118,6 +119,7 @@ type qmpResult struct { err error } +// nolint: govet type qmpCommand struct { ctx context.Context res chan qmpResult @@ -130,6 +132,7 @@ type qmpCommand struct { // QMP is a structure that contains the internal state used by startQMPLoop and // the go routines it spwans. All the contents of this structure are private. +// nolint: govet type QMP struct { cmdCh chan qmpCommand conn io.ReadWriteCloser @@ -141,6 +144,7 @@ type QMP struct { // QMPVersion contains the version number and the capabailities of a QEMU // instance, as reported in the QMP greeting message. +// nolint: govet type QMPVersion struct { Major int Minor int @@ -158,6 +162,7 @@ type CPUProperties struct { } // HotpluggableCPU represents a hotpluggable CPU +// nolint: govet type HotpluggableCPU struct { Type string `json:"type"` VcpusCount int `json:"vcpus-count"` @@ -166,6 +171,7 @@ type HotpluggableCPU struct { } // MemoryDevicesData cotains the data describes a memory device +// nolint: govet type MemoryDevicesData struct { Slot int `json:"slot"` Node int `json:"node"` @@ -178,12 +184,14 @@ type MemoryDevicesData struct { } // MemoryDevices represents memory devices of vm +// nolint: govet type MemoryDevices struct { Data MemoryDevicesData `json:"data"` Type string `json:"type"` } // CPUInfo represents information about each virtual CPU +// nolint: govet type CPUInfo struct { CPU int `json:"CPU"` Current bool `json:"current"` @@ -196,6 +204,7 @@ type CPUInfo struct { } // CPUInfoFast represents information about each virtual CPU +// nolint: govet type CPUInfoFast struct { CPUIndex int `json:"cpu-index"` QomPath string `json:"qom-path"` @@ -252,6 +261,7 @@ type SchemaInfo struct { } // StatusInfo represents guest running status +// nolint: govet type StatusInfo struct { Running bool `json:"running"` SingleStep bool `json:"singlestep"` diff --git a/src/runtime/pkg/govmm/qemu/qmp_test.go b/src/runtime/pkg/govmm/qemu/qmp_test.go index 83259290b..ad3c0092d 100644 --- a/src/runtime/pkg/govmm/qemu/qmp_test.go +++ b/src/runtime/pkg/govmm/qemu/qmp_test.go @@ -61,11 +61,13 @@ func (l qmpTestLogger) Errorf(format string, v ...interface{}) { l.Infof(format, v...) } +// nolint: govet type qmpTestCommand struct { name string args map[string]interface{} } +// nolint: govet type qmpTestEvent struct { name string data map[string]interface{} @@ -73,11 +75,13 @@ type qmpTestEvent struct { after time.Duration } +// nolint: govet type qmpTestResult struct { result string data interface{} } +// nolint: govet type qmpTestCommandBuffer struct { newDataCh chan []byte t *testing.T From 8bcaed0b4f7bb613e1f4a253074ef90c45ae1621 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Wed, 19 Jan 2022 13:16:55 +0100 Subject: [PATCH 316/385] govmm: Adapt license headers to kata-containers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both projects follow the same license, Apache-2.0, but the header saying that comes from govmm is different from the one expected for the tests present on the kata-containers repo. Signed-off-by: Fabiano Fidêncio --- src/runtime/pkg/govmm/qemu/examples_test.go | 13 +------------ src/runtime/pkg/govmm/qemu/image.go | 13 +------------ src/runtime/pkg/govmm/qemu/qemu.go | 13 +------------ src/runtime/pkg/govmm/qemu/qemu_arch_base_test.go | 13 +------------ src/runtime/pkg/govmm/qemu/qemu_s390x_test.go | 13 +------------ src/runtime/pkg/govmm/qemu/qemu_test.go | 13 +------------ src/runtime/pkg/govmm/qemu/qmp.go | 13 +------------ src/runtime/pkg/govmm/qemu/qmp_test.go | 13 +------------ 8 files changed, 8 insertions(+), 96 deletions(-) diff --git a/src/runtime/pkg/govmm/qemu/examples_test.go b/src/runtime/pkg/govmm/qemu/examples_test.go index 22cc0eff3..03e52b87a 100644 --- a/src/runtime/pkg/govmm/qemu/examples_test.go +++ b/src/runtime/pkg/govmm/qemu/examples_test.go @@ -1,18 +1,7 @@ -/* // Copyright contributors to the Virtual Machine Manager for Go project // -// 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 +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ package qemu_test diff --git a/src/runtime/pkg/govmm/qemu/image.go b/src/runtime/pkg/govmm/qemu/image.go index ddee0670e..b17efdd16 100644 --- a/src/runtime/pkg/govmm/qemu/image.go +++ b/src/runtime/pkg/govmm/qemu/image.go @@ -1,18 +1,7 @@ -/* // Copyright contributors to the Virtual Machine Manager for Go project // -// 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 +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ package qemu diff --git a/src/runtime/pkg/govmm/qemu/qemu.go b/src/runtime/pkg/govmm/qemu/qemu.go index 8e101e9b9..0ee8347f2 100644 --- a/src/runtime/pkg/govmm/qemu/qemu.go +++ b/src/runtime/pkg/govmm/qemu/qemu.go @@ -1,18 +1,7 @@ -/* // Copyright contributors to the Virtual Machine Manager for Go project // -// 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 +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ // Package qemu provides methods and types for launching and managing QEMU // instances. Instances can be launched with the LaunchQemu function and diff --git a/src/runtime/pkg/govmm/qemu/qemu_arch_base_test.go b/src/runtime/pkg/govmm/qemu/qemu_arch_base_test.go index 667609707..4ef6e3c4e 100644 --- a/src/runtime/pkg/govmm/qemu/qemu_arch_base_test.go +++ b/src/runtime/pkg/govmm/qemu/qemu_arch_base_test.go @@ -1,21 +1,10 @@ //go:build !s390x // +build !s390x -/* // Copyright contributors to the Virtual Machine Manager for Go project // -// 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 +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ package qemu diff --git a/src/runtime/pkg/govmm/qemu/qemu_s390x_test.go b/src/runtime/pkg/govmm/qemu/qemu_s390x_test.go index 4b99f7ea5..cb7f794e1 100644 --- a/src/runtime/pkg/govmm/qemu/qemu_s390x_test.go +++ b/src/runtime/pkg/govmm/qemu/qemu_s390x_test.go @@ -1,20 +1,9 @@ // +build s390x -/* // Copyright contributors to the Virtual Machine Manager for Go project // -// 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 +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ package qemu diff --git a/src/runtime/pkg/govmm/qemu/qemu_test.go b/src/runtime/pkg/govmm/qemu/qemu_test.go index 2e37b0e16..5b73e9dfc 100644 --- a/src/runtime/pkg/govmm/qemu/qemu_test.go +++ b/src/runtime/pkg/govmm/qemu/qemu_test.go @@ -1,18 +1,7 @@ -/* // Copyright contributors to the Virtual Machine Manager for Go project // -// 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 +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ package qemu diff --git a/src/runtime/pkg/govmm/qemu/qmp.go b/src/runtime/pkg/govmm/qemu/qmp.go index 83c5293d6..9bf091af8 100644 --- a/src/runtime/pkg/govmm/qemu/qmp.go +++ b/src/runtime/pkg/govmm/qemu/qmp.go @@ -1,18 +1,7 @@ -/* // Copyright contributors to the Virtual Machine Manager for Go project // -// 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 +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ package qemu diff --git a/src/runtime/pkg/govmm/qemu/qmp_test.go b/src/runtime/pkg/govmm/qemu/qmp_test.go index ad3c0092d..23114a0d7 100644 --- a/src/runtime/pkg/govmm/qemu/qmp_test.go +++ b/src/runtime/pkg/govmm/qemu/qmp_test.go @@ -1,18 +1,7 @@ -/* // Copyright contributors to the Virtual Machine Manager for Go project // -// 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 +// SPDX-License-Identifier: Apache-2.0 // -// 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. -*/ package qemu From 5ce9011a36a04edc1a6abd0e8db56d066aab3db7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Wed, 19 Jan 2022 22:02:34 +0100 Subject: [PATCH 317/385] govmm: s390x: Skip broken tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For now a bunch of tests are simply not working. Let's skip them all, and re-enable them once kata-containers/kata-containers/issues/3500 gets fixed. Signed-off-by: Fabiano Fidêncio --- src/runtime/pkg/govmm/qemu/qemu_s390x_test.go | 5 ++++- src/runtime/pkg/govmm/qemu/qemu_test.go | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/runtime/pkg/govmm/qemu/qemu_s390x_test.go b/src/runtime/pkg/govmm/qemu/qemu_s390x_test.go index cb7f794e1..be8a3b198 100644 --- a/src/runtime/pkg/govmm/qemu/qemu_s390x_test.go +++ b/src/runtime/pkg/govmm/qemu/qemu_s390x_test.go @@ -13,7 +13,7 @@ import "testing" // See https://wiki.qemu.org/Documentation/Platforms/S390X var ( deviceFSString = "-device virtio-9p-ccw,fsdev=workload9p,mount_tag=rootfs,devno=" + DevNo + " -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none,multidevs=remap" - deviceFSIOMMUString = "-device virtio-9p-ccw,fsdev=workload9p,mount_tag=rootfs,iommu_platform=on,devno=" + DevNo + " -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none,multidevs=remap" + deviceFSIOMMUString = "-device virtio-9p-ccw,fsdev=workload9p,mount_tag=rootfs,iommu_platform=on,devno=" + DevNo + " -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none,multidevs=remap" //nolint deviceNetworkString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef,devno=" + DevNo deviceNetworkStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef,mq=on,devno=" + DevNo deviceSerialString = "-device virtio-serial-ccw,id=serial0,devno=" + DevNo @@ -23,6 +23,7 @@ var ( deviceSCSIControllerBusAddrStr = "-device virtio-scsi-ccw,id=foo,bus=pci.0,addr=00:04.0,iothread=iothread1,devno=" + DevNo deviceBlockString = "-device virtio-blk-ccw,drive=hd0,scsi=off,config-wce=off,devno=" + DevNo + ",share-rw=on,serial=hd0 -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none,readonly" devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff" + devicePCIBridgeStringReserved = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff,io-reserve=4k,mem-reserve=1m,pref64-reserve=1m" devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff" romfile = "" ) @@ -71,6 +72,8 @@ func TestAppendDeviceFSCCW(t *testing.T) { } func TestAppendDeviceFSCCWIOMMU(t *testing.T) { + t.Skip("Skipping on due to: https://github.com/kata-containers/kata-containers/issues/3500") + defaultKnobs := Knobs{ NoUserConfig: true, IOMMUPlatform: true, diff --git a/src/runtime/pkg/govmm/qemu/qemu_test.go b/src/runtime/pkg/govmm/qemu/qemu_test.go index 5b73e9dfc..445bdd089 100644 --- a/src/runtime/pkg/govmm/qemu/qemu_test.go +++ b/src/runtime/pkg/govmm/qemu/qemu_test.go @@ -10,6 +10,7 @@ import ( "io/ioutil" "os" "reflect" + "runtime" "strings" "testing" ) @@ -331,6 +332,10 @@ func TestAppendDeviceSerialPort(t *testing.T) { } func TestAppendDeviceBlock(t *testing.T) { + if runtime.GOARCH == "s390x" { + t.Skip("Skipping on s390x due to: https://github.com/kata-containers/kata-containers/issues/3500") + } + blkdev := BlockDevice{ Driver: VirtioBlock, ID: "hd0", @@ -511,6 +516,9 @@ func TestAppendPCIBridgeDevice(t *testing.T) { } func TestAppendPCIBridgeDeviceWithReservations(t *testing.T) { + if runtime.GOARCH == "s390x" { + t.Skip("Skipping on s390x due to: https://github.com/kata-containers/kata-containers/issues/3500") + } bridge := BridgeDevice{ Type: PCIBridge, From 3924470c8ff3cab4e1e628fc5559e83854f1b479 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Thu, 20 Jan 2022 11:04:14 +0100 Subject: [PATCH 318/385] workflows: Use base instead of head ref for kata-deploy-test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Although I've done tests on my own fork using `head_ref` and those worked, it seems those only worked as the PR was coming from exactly the same repository as the target one. Let's switch to base_ref, instead, which we for sure have as part of our repo. The downside of this is that we run the test with the last merged PR, rather than with the "to-be-approved" PR, but that's a limitation we've always had. Fixes: #3482 Signed-off-by: Fabiano Fidêncio --- .github/workflows/kata-deploy-test.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/kata-deploy-test.yaml b/.github/workflows/kata-deploy-test.yaml index 6b93c1ec9..5e5402395 100644 --- a/.github/workflows/kata-deploy-test.yaml +++ b/.github/workflows/kata-deploy-test.yaml @@ -59,7 +59,7 @@ jobs: - uses: actions/checkout@v2 with: - ref: ${{ steps.refs.outputs.head_ref }} + ref: ${{ steps.refs.outputs.base_ref }} - name: Install docker run: | curl -fsSL https://test.docker.com -o test-docker.sh @@ -96,7 +96,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v2 with: - ref: ${{ steps.refs.outputs.head_ref }} + ref: ${{ steps.refs.outputs.base_ref }} - name: get-artifacts uses: actions/download-artifact@v2 with: @@ -125,7 +125,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v2 with: - ref: ${{ steps.refs.outputs.head_ref }} + ref: ${{ steps.refs.outputs.base_ref }} - name: get-kata-tarball uses: actions/download-artifact@v2 with: From 0338fc657f2dadc37379c97a3d41f43a60467e74 Mon Sep 17 00:00:00 2001 From: "James O. D. Hunt" Date: Thu, 20 Jan 2022 14:01:24 +0000 Subject: [PATCH 319/385] docs: Redirect glossary to the wiki Whilst we work to update the [copy of the glossary currently hosted in the wiki](https://github.com/kata-containers/kata-containers/wiki/Glossary), update the in-tree glossary doc to refer to that wiki version. Fixes: #3505. Signed-off-by: James O. D. Hunt --- Glossary.md | 93 +---------------------------------------------------- 1 file changed, 1 insertion(+), 92 deletions(-) diff --git a/Glossary.md b/Glossary.md index 1fba2b00d..ecb69be30 100644 --- a/Glossary.md +++ b/Glossary.md @@ -1,94 +1,3 @@ # Glossary -[A](#a), [B](#b), [C](#c), [D](#d), [E](#e), [F](#f), [G](#g), [H](#h), [I](#i), [J](#j), [K](#k), [L](#l), [M](#m), [N](#n), [O](#o), [P](#p), [Q](#q), [R](#r), [S](#s), [T](#t), [U](#u), [V](#v), [W](#w), [X](#x), [Y](#y), [Z](#z) - -## A - -### Auto Scaling -a method used in cloud computing, whereby the amount of computational resources in a server farm, typically measured in terms of the number of active servers, which vary automatically based on the load on the farm. - -## B - -## C - -### Container Security Solutions -The process of implementing security tools and policies that will give you the assurance that everything in your container is running as intended, and only as intended. - -### Container Software -A standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. - -### Container Runtime Interface -A plugin interface which enables Kubelet to use a wide variety of container runtimes, without the need to recompile. - -### Container Virtualization -A container is a virtual runtime environment that runs on top of a single operating system (OS) kernel and emulates an operating system rather than the underlying hardware. - -## D - -## E - -## F - -## G - -## H - -## I - -### Infrastructure Architecture -A structured and modern approach for supporting an organization and facilitating innovation within an enterprise. - -## J - -## K - -### Kata Containers -Kata containers is an open source project delivering increased container security and Workload isolation through an implementation of lightweight virtual machines. - -## L - -## M - -## N - -## O - -## P - -### Pod Containers -A Group of one or more containers , with shared storage/network, and a specification for how to run the containers. - -### Private Cloud -A computing model that offers a proprietary environment dedicated to a single business entity. - -### Public Cloud -Computing services offered by third-party providers over the public Internet, making them available to anyone who wants to use or purchase them. - -## Q - -## R - -## S - -### Serverless Containers -An architecture in which code is executed on-demand. Serverless workloads are typically in the cloud, but on-premises serverless platforms exist, too. - -## T - -## U - -## V - -### Virtual Machine Monitor -Computer software, firmware or hardware that creates and runs virtual machines. - -### Virtual Machine Software -A software program or operating system that not only exhibits the behavior of a separate computer, but is also capable of performing tasks such as running applications and programs like a separate computer. - -## W - -## X - -## Y - -## Z +See the [project glossary hosted in the wiki](https://github.com/kata-containers/kata-containers/wiki/Glossary). From df6ae1e789b95a757842b645217eecc24587f40d Mon Sep 17 00:00:00 2001 From: Manabu Sugimoto Date: Thu, 20 Jan 2022 23:47:04 +0900 Subject: [PATCH 320/385] osbuilder: Remove libseccomp from Dockerfile Remove the libseccomp package from Dockerfile of `alpine` and `clearlinux` because the libseccomp library is installed by the `ci/install_libseccomp.sh` script when building the kata-agent. Fixes: #3508 Signed-off-by: Manabu Sugimoto --- tools/osbuilder/rootfs-builder/alpine/Dockerfile.in | 2 -- tools/osbuilder/rootfs-builder/clearlinux/Dockerfile.in | 2 -- 2 files changed, 4 deletions(-) diff --git a/tools/osbuilder/rootfs-builder/alpine/Dockerfile.in b/tools/osbuilder/rootfs-builder/alpine/Dockerfile.in index 70c339b54..802506d09 100644 --- a/tools/osbuilder/rootfs-builder/alpine/Dockerfile.in +++ b/tools/osbuilder/rootfs-builder/alpine/Dockerfile.in @@ -19,8 +19,6 @@ RUN apk update && apk add \ gcc \ git \ libc-dev \ - libseccomp \ - libseccomp-dev \ linux-headers \ m4 \ make \ diff --git a/tools/osbuilder/rootfs-builder/clearlinux/Dockerfile.in b/tools/osbuilder/rootfs-builder/clearlinux/Dockerfile.in index 422a12747..b38990a9e 100644 --- a/tools/osbuilder/rootfs-builder/clearlinux/Dockerfile.in +++ b/tools/osbuilder/rootfs-builder/clearlinux/Dockerfile.in @@ -24,8 +24,6 @@ RUN dnf -y update && dnf install -y \ glibc-headers \ glibc-static \ glibc-utils \ - libseccomp \ - libseccomp-devel \ libstdc++-devel \ libstdc++-static \ m4 \ From 9c2f1de16da2be984c5f7aa9b01e86f43fa861b7 Mon Sep 17 00:00:00 2001 From: Gabriela Cervantes Date: Thu, 20 Jan 2022 17:47:27 +0000 Subject: [PATCH 321/385] docs: Remove kata-pkgsync reference Now that kata-pkgsync has been removed, this PR removes the reference in the documentation. Fixes #3513 Signed-off-by: Gabriela Cervantes --- tools/packaging/Makefile | 5 +---- tools/packaging/README.md | 4 ---- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/tools/packaging/Makefile b/tools/packaging/Makefile index 651e2f201..a2668ff76 100644 --- a/tools/packaging/Makefile +++ b/tools/packaging/Makefile @@ -31,7 +31,4 @@ snap: $(YQ) fi snapcraft -d -cmd-kata-pkgsync: - @make -C $(MK_DIR)/cmd/kata-pkgsync - -.PHONY: test-static-build snap cmd-kata-pkgsync +.PHONY: test-static-build snap diff --git a/tools/packaging/README.md b/tools/packaging/README.md index 66cf59d75..19d0978d4 100644 --- a/tools/packaging/README.md +++ b/tools/packaging/README.md @@ -36,10 +36,6 @@ See [the release documentation](release). See the [scripts documentation](scripts). -## Sync packages - -See [the `kata-pkgsync` documentation](cmd/kata-pkgsync). - ## Credits Kata Containers packaging uses [packagecloud](https://packagecloud.io) for From 7e15e99d5ff35fe4d1137592103fe878dc0fdab4 Mon Sep 17 00:00:00 2001 From: Bo Chen Date: Thu, 20 Jan 2022 17:43:14 -0800 Subject: [PATCH 322/385] versions: Upgrade to Cloud Hypervisor v21.0 Highlights from the Cloud Hypervisor release v21.0: 1) Efficient Local Live Migration (for Live Upgrade); 2) Recommended Kernel is Now 5.15; 3) Bug fixes on OpenAPI yaml spec file, avoid deadlock for live-migration, etc. Details can be found: https://github.com/cloud-hypervisor/cloud-hypervisor/releases/tag/v21.0 Fixes: #3519 Signed-off-by: Bo Chen --- versions.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions.yaml b/versions.yaml index ab364dab1..50b12a2d6 100644 --- a/versions.yaml +++ b/versions.yaml @@ -75,7 +75,7 @@ assets: url: "https://github.com/cloud-hypervisor/cloud-hypervisor" uscan-url: >- https://github.com/cloud-hypervisor/cloud-hypervisor/tags.*/v?(\d\S+)\.tar\.gz - version: "v20.2" + version: "v21.0" firecracker: description: "Firecracker micro-VMM" From 2d799cbfa3f1b13281bb57311d724d25f65ee890 Mon Sep 17 00:00:00 2001 From: Bo Chen Date: Thu, 20 Jan 2022 17:48:10 -0800 Subject: [PATCH 323/385] virtcontainers: clh: Re-generate the client code This patch re-generates the client code for Cloud Hypervisor v21.0. Note: The client code of cloud-hypervisor's (CLH) OpenAPI is automatically generated by openapi-generator [1-2]. [1] https://github.com/OpenAPITools/openapi-generator [2] https://github.com/kata-containers/kata-containers/blob/main/src/runtime/virtcontainers/pkg/cloud-hypervisor/README.md Signed-off-by: Bo Chen --- .../client/.openapi-generator/FILES | 4 + .../pkg/cloud-hypervisor/client/README.md | 4 + .../cloud-hypervisor/client/api/openapi.yaml | 80 +++++-- .../cloud-hypervisor/client/api_default.go | 200 ++++++++++++++++++ .../client/docs/DefaultApi.md | 126 +++++++++++ .../cloud-hypervisor/client/docs/NetConfig.md | 28 +-- .../client/docs/ReceiveMigrationData.md | 56 +++++ .../client/docs/SendMigrationData.md | 82 +++++++ .../client/model_net_config.go | 38 ++-- .../client/model_receive_migration_data.go | 113 ++++++++++ .../client/model_send_migration_data.go | 149 +++++++++++++ .../cloud-hypervisor/cloud-hypervisor.yaml | 49 ++++- 12 files changed, 875 insertions(+), 54 deletions(-) create mode 100644 src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/ReceiveMigrationData.md create mode 100644 src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/SendMigrationData.md create mode 100644 src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_receive_migration_data.go create mode 100644 src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_send_migration_data.go diff --git a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/.openapi-generator/FILES b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/.openapi-generator/FILES index 44ecb19df..22dad792f 100644 --- a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/.openapi-generator/FILES +++ b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/.openapi-generator/FILES @@ -27,8 +27,10 @@ docs/NumaDistance.md docs/PciDeviceInfo.md docs/PmemConfig.md docs/RateLimiterConfig.md +docs/ReceiveMigrationData.md docs/RestoreConfig.md docs/RngConfig.md +docs/SendMigrationData.md docs/SgxEpcConfig.md docs/TokenBucket.md docs/VmAddDevice.md @@ -63,8 +65,10 @@ model_numa_distance.go model_pci_device_info.go model_pmem_config.go model_rate_limiter_config.go +model_receive_migration_data.go model_restore_config.go model_rng_config.go +model_send_migration_data.go model_sgx_epc_config.go model_token_bucket.go model_vm_add_device.go diff --git a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/README.md b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/README.md index f29bcf958..b9829e33e 100644 --- a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/README.md +++ b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/README.md @@ -95,10 +95,12 @@ Class | Method | HTTP request | Description *DefaultApi* | [**VmAddVsockPut**](docs/DefaultApi.md#vmaddvsockput) | **Put** /vm.add-vsock | Add a new vsock device to the VM *DefaultApi* | [**VmCountersGet**](docs/DefaultApi.md#vmcountersget) | **Get** /vm.counters | Get counters from the VM *DefaultApi* | [**VmInfoGet**](docs/DefaultApi.md#vminfoget) | **Get** /vm.info | Returns general information about the cloud-hypervisor Virtual Machine (VM) instance. +*DefaultApi* | [**VmReceiveMigrationPut**](docs/DefaultApi.md#vmreceivemigrationput) | **Put** /vm.receive-migration | Receive a VM migration from URL *DefaultApi* | [**VmRemoveDevicePut**](docs/DefaultApi.md#vmremovedeviceput) | **Put** /vm.remove-device | Remove a device from the VM *DefaultApi* | [**VmResizePut**](docs/DefaultApi.md#vmresizeput) | **Put** /vm.resize | Resize the VM *DefaultApi* | [**VmResizeZonePut**](docs/DefaultApi.md#vmresizezoneput) | **Put** /vm.resize-zone | Resize a memory zone *DefaultApi* | [**VmRestorePut**](docs/DefaultApi.md#vmrestoreput) | **Put** /vm.restore | Restore a VM from a snapshot. +*DefaultApi* | [**VmSendMigrationPut**](docs/DefaultApi.md#vmsendmigrationput) | **Put** /vm.send-migration | Send a VM migration to URL *DefaultApi* | [**VmSnapshotPut**](docs/DefaultApi.md#vmsnapshotput) | **Put** /vm.snapshot | Returns a VM snapshot. *DefaultApi* | [**VmmPingGet**](docs/DefaultApi.md#vmmpingget) | **Get** /vmm.ping | Ping the VMM to check for API server availability @@ -125,8 +127,10 @@ Class | Method | HTTP request | Description - [PciDeviceInfo](docs/PciDeviceInfo.md) - [PmemConfig](docs/PmemConfig.md) - [RateLimiterConfig](docs/RateLimiterConfig.md) + - [ReceiveMigrationData](docs/ReceiveMigrationData.md) - [RestoreConfig](docs/RestoreConfig.md) - [RngConfig](docs/RngConfig.md) + - [SendMigrationData](docs/SendMigrationData.md) - [SgxEpcConfig](docs/SgxEpcConfig.md) - [TokenBucket](docs/TokenBucket.md) - [VmAddDevice](docs/VmAddDevice.md) diff --git a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/api/openapi.yaml b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/api/openapi.yaml index fd963b0f4..a00924ac5 100644 --- a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/api/openapi.yaml +++ b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/api/openapi.yaml @@ -329,6 +329,36 @@ paths: description: The VM instance could not be restored because it is already created. summary: Restore a VM from a snapshot. + /vm.receive-migration: + put: + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ReceiveMigrationData' + description: The URL for the reception of migration state + required: true + responses: + "204": + description: The VM migration was successfully received. + "500": + description: The VM migration could not be received. + summary: Receive a VM migration from URL + /vm.send-migration: + put: + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SendMigrationData' + description: The URL for sending the migration state + required: true + responses: + "204": + description: The VM migration was successfully sent. + "500": + description: The VM migration could not be sent. + summary: Send a VM migration to URL components: schemas: VmmPingResponse: @@ -564,12 +594,12 @@ components: pci_segment: 6 vhost_mode: Client iommu: false + fds: + - 3 + - 3 vhost_socket: vhost_socket vhost_user: false id: id - fd: - - 3 - - 3 mask: 255.255.255.0 - tap: tap num_queues: 9 @@ -588,12 +618,12 @@ components: pci_segment: 6 vhost_mode: Client iommu: false + fds: + - 3 + - 3 vhost_socket: vhost_socket vhost_user: false id: id - fd: - - 3 - - 3 mask: 255.255.255.0 device_tree: key: @@ -892,12 +922,12 @@ components: pci_segment: 6 vhost_mode: Client iommu: false + fds: + - 3 + - 3 vhost_socket: vhost_socket vhost_user: false id: id - fd: - - 3 - - 3 mask: 255.255.255.0 - tap: tap num_queues: 9 @@ -916,12 +946,12 @@ components: pci_segment: 6 vhost_mode: Client iommu: false + fds: + - 3 + - 3 vhost_socket: vhost_socket vhost_user: false id: id - fd: - - 3 - - 3 mask: 255.255.255.0 properties: cpus: @@ -1326,16 +1356,15 @@ components: pci_segment: 6 vhost_mode: Client iommu: false + fds: + - 3 + - 3 vhost_socket: vhost_socket vhost_user: false id: id - fd: - - 3 - - 3 mask: 255.255.255.0 properties: tap: - default: "" type: string ip: default: 192.168.249.1 @@ -1364,7 +1393,7 @@ components: type: string id: type: string - fd: + fds: items: format: int32 type: integer @@ -1691,3 +1720,20 @@ components: required: - source_url type: object + ReceiveMigrationData: + example: + receiver_url: receiver_url + properties: + receiver_url: + type: string + type: object + SendMigrationData: + example: + destination_url: destination_url + local: true + properties: + destination_url: + type: string + local: + type: boolean + type: object diff --git a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/api_default.go b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/api_default.go index 725b83c22..9c696060e 100644 --- a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/api_default.go +++ b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/api_default.go @@ -1694,6 +1694,106 @@ func (a *DefaultApiService) VmInfoGetExecute(r ApiVmInfoGetRequest) (VmInfo, *_n return localVarReturnValue, localVarHTTPResponse, nil } +type ApiVmReceiveMigrationPutRequest struct { + ctx _context.Context + ApiService *DefaultApiService + receiveMigrationData *ReceiveMigrationData +} + +// The URL for the reception of migration state +func (r ApiVmReceiveMigrationPutRequest) ReceiveMigrationData(receiveMigrationData ReceiveMigrationData) ApiVmReceiveMigrationPutRequest { + r.receiveMigrationData = &receiveMigrationData + return r +} + +func (r ApiVmReceiveMigrationPutRequest) Execute() (*_nethttp.Response, error) { + return r.ApiService.VmReceiveMigrationPutExecute(r) +} + +/* +VmReceiveMigrationPut Receive a VM migration from URL + + @param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiVmReceiveMigrationPutRequest +*/ +func (a *DefaultApiService) VmReceiveMigrationPut(ctx _context.Context) ApiVmReceiveMigrationPutRequest { + return ApiVmReceiveMigrationPutRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +func (a *DefaultApiService) VmReceiveMigrationPutExecute(r ApiVmReceiveMigrationPutRequest) (*_nethttp.Response, error) { + var ( + localVarHTTPMethod = _nethttp.MethodPut + localVarPostBody interface{} + localVarFormFileName string + localVarFileName string + localVarFileBytes []byte + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultApiService.VmReceiveMigrationPut") + if err != nil { + return nil, GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/vm.receive-migration" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := _neturl.Values{} + localVarFormParams := _neturl.Values{} + if r.receiveMigrationData == nil { + return nil, reportError("receiveMigrationData is required and must be specified") + } + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + // body params + localVarPostBody = r.receiveMigrationData + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) + if err != nil { + return nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarHTTPResponse, err + } + + localVarBody, err := _ioutil.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = _ioutil.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + return localVarHTTPResponse, newErr + } + + return localVarHTTPResponse, nil +} + type ApiVmRemoveDevicePutRequest struct { ctx _context.Context ApiService *DefaultApiService @@ -2094,6 +2194,106 @@ func (a *DefaultApiService) VmRestorePutExecute(r ApiVmRestorePutRequest) (*_net return localVarHTTPResponse, nil } +type ApiVmSendMigrationPutRequest struct { + ctx _context.Context + ApiService *DefaultApiService + sendMigrationData *SendMigrationData +} + +// The URL for sending the migration state +func (r ApiVmSendMigrationPutRequest) SendMigrationData(sendMigrationData SendMigrationData) ApiVmSendMigrationPutRequest { + r.sendMigrationData = &sendMigrationData + return r +} + +func (r ApiVmSendMigrationPutRequest) Execute() (*_nethttp.Response, error) { + return r.ApiService.VmSendMigrationPutExecute(r) +} + +/* +VmSendMigrationPut Send a VM migration to URL + + @param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiVmSendMigrationPutRequest +*/ +func (a *DefaultApiService) VmSendMigrationPut(ctx _context.Context) ApiVmSendMigrationPutRequest { + return ApiVmSendMigrationPutRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +func (a *DefaultApiService) VmSendMigrationPutExecute(r ApiVmSendMigrationPutRequest) (*_nethttp.Response, error) { + var ( + localVarHTTPMethod = _nethttp.MethodPut + localVarPostBody interface{} + localVarFormFileName string + localVarFileName string + localVarFileBytes []byte + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultApiService.VmSendMigrationPut") + if err != nil { + return nil, GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/vm.send-migration" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := _neturl.Values{} + localVarFormParams := _neturl.Values{} + if r.sendMigrationData == nil { + return nil, reportError("sendMigrationData is required and must be specified") + } + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + // body params + localVarPostBody = r.sendMigrationData + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) + if err != nil { + return nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarHTTPResponse, err + } + + localVarBody, err := _ioutil.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = _ioutil.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + return localVarHTTPResponse, newErr + } + + return localVarHTTPResponse, nil +} + type ApiVmSnapshotPutRequest struct { ctx _context.Context ApiService *DefaultApiService diff --git a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/DefaultApi.md b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/DefaultApi.md index 1fa82cc9b..3c2c8821d 100644 --- a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/DefaultApi.md +++ b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/DefaultApi.md @@ -21,10 +21,12 @@ Method | HTTP request | Description [**VmAddVsockPut**](DefaultApi.md#VmAddVsockPut) | **Put** /vm.add-vsock | Add a new vsock device to the VM [**VmCountersGet**](DefaultApi.md#VmCountersGet) | **Get** /vm.counters | Get counters from the VM [**VmInfoGet**](DefaultApi.md#VmInfoGet) | **Get** /vm.info | Returns general information about the cloud-hypervisor Virtual Machine (VM) instance. +[**VmReceiveMigrationPut**](DefaultApi.md#VmReceiveMigrationPut) | **Put** /vm.receive-migration | Receive a VM migration from URL [**VmRemoveDevicePut**](DefaultApi.md#VmRemoveDevicePut) | **Put** /vm.remove-device | Remove a device from the VM [**VmResizePut**](DefaultApi.md#VmResizePut) | **Put** /vm.resize | Resize the VM [**VmResizeZonePut**](DefaultApi.md#VmResizeZonePut) | **Put** /vm.resize-zone | Resize a memory zone [**VmRestorePut**](DefaultApi.md#VmRestorePut) | **Put** /vm.restore | Restore a VM from a snapshot. +[**VmSendMigrationPut**](DefaultApi.md#VmSendMigrationPut) | **Put** /vm.send-migration | Send a VM migration to URL [**VmSnapshotPut**](DefaultApi.md#VmSnapshotPut) | **Put** /vm.snapshot | Returns a VM snapshot. [**VmmPingGet**](DefaultApi.md#VmmPingGet) | **Get** /vmm.ping | Ping the VMM to check for API server availability @@ -1050,6 +1052,68 @@ No authorization required [[Back to README]](../README.md) +## VmReceiveMigrationPut + +> VmReceiveMigrationPut(ctx).ReceiveMigrationData(receiveMigrationData).Execute() + +Receive a VM migration from URL + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "./openapi" +) + +func main() { + receiveMigrationData := *openapiclient.NewReceiveMigrationData() // ReceiveMigrationData | The URL for the reception of migration state + + configuration := openapiclient.NewConfiguration() + api_client := openapiclient.NewAPIClient(configuration) + resp, r, err := api_client.DefaultApi.VmReceiveMigrationPut(context.Background()).ReceiveMigrationData(receiveMigrationData).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `DefaultApi.VmReceiveMigrationPut``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiVmReceiveMigrationPutRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **receiveMigrationData** | [**ReceiveMigrationData**](ReceiveMigrationData.md) | The URL for the reception of migration state | + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + ## VmRemoveDevicePut > VmRemoveDevicePut(ctx).VmRemoveDevice(vmRemoveDevice).Execute() @@ -1298,6 +1362,68 @@ No authorization required [[Back to README]](../README.md) +## VmSendMigrationPut + +> VmSendMigrationPut(ctx).SendMigrationData(sendMigrationData).Execute() + +Send a VM migration to URL + +### Example + +```go +package main + +import ( + "context" + "fmt" + "os" + openapiclient "./openapi" +) + +func main() { + sendMigrationData := *openapiclient.NewSendMigrationData() // SendMigrationData | The URL for sending the migration state + + configuration := openapiclient.NewConfiguration() + api_client := openapiclient.NewAPIClient(configuration) + resp, r, err := api_client.DefaultApi.VmSendMigrationPut(context.Background()).SendMigrationData(sendMigrationData).Execute() + if err != nil { + fmt.Fprintf(os.Stderr, "Error when calling `DefaultApi.VmSendMigrationPut``: %v\n", err) + fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) + } +} +``` + +### Path Parameters + + + +### Other Parameters + +Other parameters are passed through a pointer to a apiVmSendMigrationPutRequest struct via the builder pattern + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **sendMigrationData** | [**SendMigrationData**](SendMigrationData.md) | The URL for sending the migration state | + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: Not defined + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) +[[Back to Model list]](../README.md#documentation-for-models) +[[Back to README]](../README.md) + + ## VmSnapshotPut > VmSnapshotPut(ctx).VmSnapshotConfig(vmSnapshotConfig).Execute() diff --git a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/NetConfig.md b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/NetConfig.md index 6d7fc78de..ff4f2dcfb 100644 --- a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/NetConfig.md +++ b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/NetConfig.md @@ -4,7 +4,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**Tap** | Pointer to **string** | | [optional] [default to ""] +**Tap** | Pointer to **string** | | [optional] **Ip** | Pointer to **string** | | [optional] [default to "192.168.249.1"] **Mask** | Pointer to **string** | | [optional] [default to "255.255.255.0"] **Mac** | Pointer to **string** | | [optional] @@ -15,7 +15,7 @@ Name | Type | Description | Notes **VhostSocket** | Pointer to **string** | | [optional] **VhostMode** | Pointer to **string** | | [optional] [default to "Client"] **Id** | Pointer to **string** | | [optional] -**Fd** | Pointer to **[]int32** | | [optional] +**Fds** | Pointer to **[]int32** | | [optional] **PciSegment** | Pointer to **int32** | | [optional] **RateLimiterConfig** | Pointer to [**RateLimiterConfig**](RateLimiterConfig.md) | | [optional] @@ -313,30 +313,30 @@ SetId sets Id field to given value. HasId returns a boolean if a field has been set. -### GetFd +### GetFds -`func (o *NetConfig) GetFd() []int32` +`func (o *NetConfig) GetFds() []int32` -GetFd returns the Fd field if non-nil, zero value otherwise. +GetFds returns the Fds field if non-nil, zero value otherwise. -### GetFdOk +### GetFdsOk -`func (o *NetConfig) GetFdOk() (*[]int32, bool)` +`func (o *NetConfig) GetFdsOk() (*[]int32, bool)` -GetFdOk returns a tuple with the Fd field if it's non-nil, zero value otherwise +GetFdsOk returns a tuple with the Fds field if it's non-nil, zero value otherwise and a boolean to check if the value has been set. -### SetFd +### SetFds -`func (o *NetConfig) SetFd(v []int32)` +`func (o *NetConfig) SetFds(v []int32)` -SetFd sets Fd field to given value. +SetFds sets Fds field to given value. -### HasFd +### HasFds -`func (o *NetConfig) HasFd() bool` +`func (o *NetConfig) HasFds() bool` -HasFd returns a boolean if a field has been set. +HasFds returns a boolean if a field has been set. ### GetPciSegment diff --git a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/ReceiveMigrationData.md b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/ReceiveMigrationData.md new file mode 100644 index 000000000..652bf96bc --- /dev/null +++ b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/ReceiveMigrationData.md @@ -0,0 +1,56 @@ +# ReceiveMigrationData + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ReceiverUrl** | Pointer to **string** | | [optional] + +## Methods + +### NewReceiveMigrationData + +`func NewReceiveMigrationData() *ReceiveMigrationData` + +NewReceiveMigrationData instantiates a new ReceiveMigrationData object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewReceiveMigrationDataWithDefaults + +`func NewReceiveMigrationDataWithDefaults() *ReceiveMigrationData` + +NewReceiveMigrationDataWithDefaults instantiates a new ReceiveMigrationData object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetReceiverUrl + +`func (o *ReceiveMigrationData) GetReceiverUrl() string` + +GetReceiverUrl returns the ReceiverUrl field if non-nil, zero value otherwise. + +### GetReceiverUrlOk + +`func (o *ReceiveMigrationData) GetReceiverUrlOk() (*string, bool)` + +GetReceiverUrlOk returns a tuple with the ReceiverUrl field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetReceiverUrl + +`func (o *ReceiveMigrationData) SetReceiverUrl(v string)` + +SetReceiverUrl sets ReceiverUrl field to given value. + +### HasReceiverUrl + +`func (o *ReceiveMigrationData) HasReceiverUrl() bool` + +HasReceiverUrl returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/SendMigrationData.md b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/SendMigrationData.md new file mode 100644 index 000000000..03edd489e --- /dev/null +++ b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/docs/SendMigrationData.md @@ -0,0 +1,82 @@ +# SendMigrationData + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**DestinationUrl** | Pointer to **string** | | [optional] +**Local** | Pointer to **bool** | | [optional] + +## Methods + +### NewSendMigrationData + +`func NewSendMigrationData() *SendMigrationData` + +NewSendMigrationData instantiates a new SendMigrationData object +This constructor will assign default values to properties that have it defined, +and makes sure properties required by API are set, but the set of arguments +will change when the set of required properties is changed + +### NewSendMigrationDataWithDefaults + +`func NewSendMigrationDataWithDefaults() *SendMigrationData` + +NewSendMigrationDataWithDefaults instantiates a new SendMigrationData object +This constructor will only assign default values to properties that have it defined, +but it doesn't guarantee that properties required by API are set + +### GetDestinationUrl + +`func (o *SendMigrationData) GetDestinationUrl() string` + +GetDestinationUrl returns the DestinationUrl field if non-nil, zero value otherwise. + +### GetDestinationUrlOk + +`func (o *SendMigrationData) GetDestinationUrlOk() (*string, bool)` + +GetDestinationUrlOk returns a tuple with the DestinationUrl field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetDestinationUrl + +`func (o *SendMigrationData) SetDestinationUrl(v string)` + +SetDestinationUrl sets DestinationUrl field to given value. + +### HasDestinationUrl + +`func (o *SendMigrationData) HasDestinationUrl() bool` + +HasDestinationUrl returns a boolean if a field has been set. + +### GetLocal + +`func (o *SendMigrationData) GetLocal() bool` + +GetLocal returns the Local field if non-nil, zero value otherwise. + +### GetLocalOk + +`func (o *SendMigrationData) GetLocalOk() (*bool, bool)` + +GetLocalOk returns a tuple with the Local field if it's non-nil, zero value otherwise +and a boolean to check if the value has been set. + +### SetLocal + +`func (o *SendMigrationData) SetLocal(v bool)` + +SetLocal sets Local field to given value. + +### HasLocal + +`func (o *SendMigrationData) HasLocal() bool` + +HasLocal returns a boolean if a field has been set. + + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_net_config.go b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_net_config.go index 473c55441..72bdb5422 100644 --- a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_net_config.go +++ b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_net_config.go @@ -27,7 +27,7 @@ type NetConfig struct { VhostSocket *string `json:"vhost_socket,omitempty"` VhostMode *string `json:"vhost_mode,omitempty"` Id *string `json:"id,omitempty"` - Fd *[]int32 `json:"fd,omitempty"` + Fds *[]int32 `json:"fds,omitempty"` PciSegment *int32 `json:"pci_segment,omitempty"` RateLimiterConfig *RateLimiterConfig `json:"rate_limiter_config,omitempty"` } @@ -38,8 +38,6 @@ type NetConfig struct { // will change when the set of required properties is changed func NewNetConfig() *NetConfig { this := NetConfig{} - var tap string = "" - this.Tap = &tap var ip string = "192.168.249.1" this.Ip = &ip var mask string = "255.255.255.0" @@ -62,8 +60,6 @@ func NewNetConfig() *NetConfig { // but it doesn't guarantee that properties required by API are set func NewNetConfigWithDefaults() *NetConfig { this := NetConfig{} - var tap string = "" - this.Tap = &tap var ip string = "192.168.249.1" this.Ip = &ip var mask string = "255.255.255.0" @@ -433,36 +429,36 @@ func (o *NetConfig) SetId(v string) { o.Id = &v } -// GetFd returns the Fd field value if set, zero value otherwise. -func (o *NetConfig) GetFd() []int32 { - if o == nil || o.Fd == nil { +// GetFds returns the Fds field value if set, zero value otherwise. +func (o *NetConfig) GetFds() []int32 { + if o == nil || o.Fds == nil { var ret []int32 return ret } - return *o.Fd + return *o.Fds } -// GetFdOk returns a tuple with the Fd field value if set, nil otherwise +// GetFdsOk returns a tuple with the Fds field value if set, nil otherwise // and a boolean to check if the value has been set. -func (o *NetConfig) GetFdOk() (*[]int32, bool) { - if o == nil || o.Fd == nil { +func (o *NetConfig) GetFdsOk() (*[]int32, bool) { + if o == nil || o.Fds == nil { return nil, false } - return o.Fd, true + return o.Fds, true } -// HasFd returns a boolean if a field has been set. -func (o *NetConfig) HasFd() bool { - if o != nil && o.Fd != nil { +// HasFds returns a boolean if a field has been set. +func (o *NetConfig) HasFds() bool { + if o != nil && o.Fds != nil { return true } return false } -// SetFd gets a reference to the given []int32 and assigns it to the Fd field. -func (o *NetConfig) SetFd(v []int32) { - o.Fd = &v +// SetFds gets a reference to the given []int32 and assigns it to the Fds field. +func (o *NetConfig) SetFds(v []int32) { + o.Fds = &v } // GetPciSegment returns the PciSegment field value if set, zero value otherwise. @@ -564,8 +560,8 @@ func (o NetConfig) MarshalJSON() ([]byte, error) { if o.Id != nil { toSerialize["id"] = o.Id } - if o.Fd != nil { - toSerialize["fd"] = o.Fd + if o.Fds != nil { + toSerialize["fds"] = o.Fds } if o.PciSegment != nil { toSerialize["pci_segment"] = o.PciSegment diff --git a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_receive_migration_data.go b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_receive_migration_data.go new file mode 100644 index 000000000..fd7e6eff7 --- /dev/null +++ b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_receive_migration_data.go @@ -0,0 +1,113 @@ +/* +Cloud Hypervisor API + +Local HTTP based API for managing and inspecting a cloud-hypervisor virtual machine. + +API version: 0.3.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package openapi + +import ( + "encoding/json" +) + +// ReceiveMigrationData struct for ReceiveMigrationData +type ReceiveMigrationData struct { + ReceiverUrl *string `json:"receiver_url,omitempty"` +} + +// NewReceiveMigrationData instantiates a new ReceiveMigrationData object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewReceiveMigrationData() *ReceiveMigrationData { + this := ReceiveMigrationData{} + return &this +} + +// NewReceiveMigrationDataWithDefaults instantiates a new ReceiveMigrationData object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewReceiveMigrationDataWithDefaults() *ReceiveMigrationData { + this := ReceiveMigrationData{} + return &this +} + +// GetReceiverUrl returns the ReceiverUrl field value if set, zero value otherwise. +func (o *ReceiveMigrationData) GetReceiverUrl() string { + if o == nil || o.ReceiverUrl == nil { + var ret string + return ret + } + return *o.ReceiverUrl +} + +// GetReceiverUrlOk returns a tuple with the ReceiverUrl field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ReceiveMigrationData) GetReceiverUrlOk() (*string, bool) { + if o == nil || o.ReceiverUrl == nil { + return nil, false + } + return o.ReceiverUrl, true +} + +// HasReceiverUrl returns a boolean if a field has been set. +func (o *ReceiveMigrationData) HasReceiverUrl() bool { + if o != nil && o.ReceiverUrl != nil { + return true + } + + return false +} + +// SetReceiverUrl gets a reference to the given string and assigns it to the ReceiverUrl field. +func (o *ReceiveMigrationData) SetReceiverUrl(v string) { + o.ReceiverUrl = &v +} + +func (o ReceiveMigrationData) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.ReceiverUrl != nil { + toSerialize["receiver_url"] = o.ReceiverUrl + } + return json.Marshal(toSerialize) +} + +type NullableReceiveMigrationData struct { + value *ReceiveMigrationData + isSet bool +} + +func (v NullableReceiveMigrationData) Get() *ReceiveMigrationData { + return v.value +} + +func (v *NullableReceiveMigrationData) Set(val *ReceiveMigrationData) { + v.value = val + v.isSet = true +} + +func (v NullableReceiveMigrationData) IsSet() bool { + return v.isSet +} + +func (v *NullableReceiveMigrationData) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableReceiveMigrationData(val *ReceiveMigrationData) *NullableReceiveMigrationData { + return &NullableReceiveMigrationData{value: val, isSet: true} +} + +func (v NullableReceiveMigrationData) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableReceiveMigrationData) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_send_migration_data.go b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_send_migration_data.go new file mode 100644 index 000000000..11f913bf0 --- /dev/null +++ b/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/model_send_migration_data.go @@ -0,0 +1,149 @@ +/* +Cloud Hypervisor API + +Local HTTP based API for managing and inspecting a cloud-hypervisor virtual machine. + +API version: 0.3.0 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package openapi + +import ( + "encoding/json" +) + +// SendMigrationData struct for SendMigrationData +type SendMigrationData struct { + DestinationUrl *string `json:"destination_url,omitempty"` + Local *bool `json:"local,omitempty"` +} + +// NewSendMigrationData instantiates a new SendMigrationData object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewSendMigrationData() *SendMigrationData { + this := SendMigrationData{} + return &this +} + +// NewSendMigrationDataWithDefaults instantiates a new SendMigrationData object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewSendMigrationDataWithDefaults() *SendMigrationData { + this := SendMigrationData{} + return &this +} + +// GetDestinationUrl returns the DestinationUrl field value if set, zero value otherwise. +func (o *SendMigrationData) GetDestinationUrl() string { + if o == nil || o.DestinationUrl == nil { + var ret string + return ret + } + return *o.DestinationUrl +} + +// GetDestinationUrlOk returns a tuple with the DestinationUrl field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *SendMigrationData) GetDestinationUrlOk() (*string, bool) { + if o == nil || o.DestinationUrl == nil { + return nil, false + } + return o.DestinationUrl, true +} + +// HasDestinationUrl returns a boolean if a field has been set. +func (o *SendMigrationData) HasDestinationUrl() bool { + if o != nil && o.DestinationUrl != nil { + return true + } + + return false +} + +// SetDestinationUrl gets a reference to the given string and assigns it to the DestinationUrl field. +func (o *SendMigrationData) SetDestinationUrl(v string) { + o.DestinationUrl = &v +} + +// GetLocal returns the Local field value if set, zero value otherwise. +func (o *SendMigrationData) GetLocal() bool { + if o == nil || o.Local == nil { + var ret bool + return ret + } + return *o.Local +} + +// GetLocalOk returns a tuple with the Local field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *SendMigrationData) GetLocalOk() (*bool, bool) { + if o == nil || o.Local == nil { + return nil, false + } + return o.Local, true +} + +// HasLocal returns a boolean if a field has been set. +func (o *SendMigrationData) HasLocal() bool { + if o != nil && o.Local != nil { + return true + } + + return false +} + +// SetLocal gets a reference to the given bool and assigns it to the Local field. +func (o *SendMigrationData) SetLocal(v bool) { + o.Local = &v +} + +func (o SendMigrationData) MarshalJSON() ([]byte, error) { + toSerialize := map[string]interface{}{} + if o.DestinationUrl != nil { + toSerialize["destination_url"] = o.DestinationUrl + } + if o.Local != nil { + toSerialize["local"] = o.Local + } + return json.Marshal(toSerialize) +} + +type NullableSendMigrationData struct { + value *SendMigrationData + isSet bool +} + +func (v NullableSendMigrationData) Get() *SendMigrationData { + return v.value +} + +func (v *NullableSendMigrationData) Set(val *SendMigrationData) { + v.value = val + v.isSet = true +} + +func (v NullableSendMigrationData) IsSet() bool { + return v.isSet +} + +func (v *NullableSendMigrationData) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableSendMigrationData(val *SendMigrationData) *NullableSendMigrationData { + return &NullableSendMigrationData{value: val, isSet: true} +} + +func (v NullableSendMigrationData) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableSendMigrationData) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/src/runtime/virtcontainers/pkg/cloud-hypervisor/cloud-hypervisor.yaml b/src/runtime/virtcontainers/pkg/cloud-hypervisor/cloud-hypervisor.yaml index 163d811ed..476c179fe 100644 --- a/src/runtime/virtcontainers/pkg/cloud-hypervisor/cloud-hypervisor.yaml +++ b/src/runtime/virtcontainers/pkg/cloud-hypervisor/cloud-hypervisor.yaml @@ -349,6 +349,38 @@ paths: 404: description: The VM instance could not be restored because it is already created. + /vm.receive-migration: + put: + summary: Receive a VM migration from URL + requestBody: + description: The URL for the reception of migration state + content: + application/json: + schema: + $ref: '#/components/schemas/ReceiveMigrationData' + required: true + responses: + 204: + description: The VM migration was successfully received. + 500: + description: The VM migration could not be received. + + /vm.send-migration: + put: + summary: Send a VM migration to URL + requestBody: + description: The URL for sending the migration state + content: + application/json: + schema: + $ref: '#/components/schemas/SendMigrationData' + required: true + responses: + 204: + description: The VM migration was successfully sent. + 500: + description: The VM migration could not be sent. + components: schemas: @@ -712,7 +744,6 @@ components: properties: tap: type: string - default: "" ip: type: string default: "192.168.249.1" @@ -740,7 +771,7 @@ components: default: "Client" id: type: string - fd: + fds: type: array items: type: integer @@ -998,3 +1029,17 @@ components: type: string prefault: type: boolean + + ReceiveMigrationData: + type: object + properties: + receiver_url: + type: string + + SendMigrationData: + type: object + properties: + destination_url: + type: string + local: + type: boolean From f52ce302bcf2b99689141f273e46886359b34a98 Mon Sep 17 00:00:00 2001 From: Amulya Meka Date: Fri, 21 Jan 2022 06:49:50 +0000 Subject: [PATCH 324/385] runtime: rectify passing empty options to -ldflags When no options are passed to -ldflags, it passes incorrect values(in this case, $BUILDFLAGS) to it. Fix passing empty values by passing $KATA_LDFLAGS in quotes. Fixes: #3521 Signed-off-by: Amulya Meka --- src/runtime/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/runtime/Makefile b/src/runtime/Makefile index e09a999b5..52e6ff51d 100644 --- a/src/runtime/Makefile +++ b/src/runtime/Makefile @@ -553,10 +553,10 @@ endef GENERATED_FILES += pkg/katautils/config-settings.go $(RUNTIME_OUTPUT): $(SOURCES) $(GENERATED_FILES) $(MAKEFILE_LIST) | show-summary - $(QUIET_BUILD)(cd $(RUNTIME_DIR) && go build -ldflags $(KATA_LDFLAGS) $(BUILDFLAGS) -o $@ .) + $(QUIET_BUILD)(cd $(RUNTIME_DIR) && go build -ldflags "$(KATA_LDFLAGS)" $(BUILDFLAGS) -o $@ .) $(SHIMV2_OUTPUT): $(SOURCES) $(GENERATED_FILES) $(MAKEFILE_LIST) - $(QUIET_BUILD)(cd $(SHIMV2_DIR)/ && go build -ldflags $(KATA_LDFLAGS) $(BUILDFLAGS) -o $@ .) + $(QUIET_BUILD)(cd $(SHIMV2_DIR)/ && go build -ldflags "$(KATA_LDFLAGS)" $(BUILDFLAGS) -o $@ .) $(MONITOR_OUTPUT): $(SOURCES) $(GENERATED_FILES) $(MAKEFILE_LIST) .git-commit $(QUIET_BUILD)(cd $(MONITOR_DIR)/ && CGO_ENABLED=0 go build \ From d23f2eb0f088b5e5dcc2e7a8f11b1c5ee8d1b992 Mon Sep 17 00:00:00 2001 From: Jakob Naucke Date: Thu, 20 Jan 2022 13:45:03 +0100 Subject: [PATCH 325/385] govmm: Revert "govmm: s390x: Skip broken tests" This reverts commit 5ce9011a36a04edc1a6abd0e8db56d066aab3db7. Signed-off-by: Jakob Naucke --- src/runtime/pkg/govmm/qemu/qemu_s390x_test.go | 5 +---- src/runtime/pkg/govmm/qemu/qemu_test.go | 8 -------- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/src/runtime/pkg/govmm/qemu/qemu_s390x_test.go b/src/runtime/pkg/govmm/qemu/qemu_s390x_test.go index be8a3b198..cb7f794e1 100644 --- a/src/runtime/pkg/govmm/qemu/qemu_s390x_test.go +++ b/src/runtime/pkg/govmm/qemu/qemu_s390x_test.go @@ -13,7 +13,7 @@ import "testing" // See https://wiki.qemu.org/Documentation/Platforms/S390X var ( deviceFSString = "-device virtio-9p-ccw,fsdev=workload9p,mount_tag=rootfs,devno=" + DevNo + " -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none,multidevs=remap" - deviceFSIOMMUString = "-device virtio-9p-ccw,fsdev=workload9p,mount_tag=rootfs,iommu_platform=on,devno=" + DevNo + " -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none,multidevs=remap" //nolint + deviceFSIOMMUString = "-device virtio-9p-ccw,fsdev=workload9p,mount_tag=rootfs,iommu_platform=on,devno=" + DevNo + " -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none,multidevs=remap" deviceNetworkString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef,devno=" + DevNo deviceNetworkStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef,mq=on,devno=" + DevNo deviceSerialString = "-device virtio-serial-ccw,id=serial0,devno=" + DevNo @@ -23,7 +23,6 @@ var ( deviceSCSIControllerBusAddrStr = "-device virtio-scsi-ccw,id=foo,bus=pci.0,addr=00:04.0,iothread=iothread1,devno=" + DevNo deviceBlockString = "-device virtio-blk-ccw,drive=hd0,scsi=off,config-wce=off,devno=" + DevNo + ",share-rw=on,serial=hd0 -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none,readonly" devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff" - devicePCIBridgeStringReserved = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff,io-reserve=4k,mem-reserve=1m,pref64-reserve=1m" devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff" romfile = "" ) @@ -72,8 +71,6 @@ func TestAppendDeviceFSCCW(t *testing.T) { } func TestAppendDeviceFSCCWIOMMU(t *testing.T) { - t.Skip("Skipping on due to: https://github.com/kata-containers/kata-containers/issues/3500") - defaultKnobs := Knobs{ NoUserConfig: true, IOMMUPlatform: true, diff --git a/src/runtime/pkg/govmm/qemu/qemu_test.go b/src/runtime/pkg/govmm/qemu/qemu_test.go index 445bdd089..5b73e9dfc 100644 --- a/src/runtime/pkg/govmm/qemu/qemu_test.go +++ b/src/runtime/pkg/govmm/qemu/qemu_test.go @@ -10,7 +10,6 @@ import ( "io/ioutil" "os" "reflect" - "runtime" "strings" "testing" ) @@ -332,10 +331,6 @@ func TestAppendDeviceSerialPort(t *testing.T) { } func TestAppendDeviceBlock(t *testing.T) { - if runtime.GOARCH == "s390x" { - t.Skip("Skipping on s390x due to: https://github.com/kata-containers/kata-containers/issues/3500") - } - blkdev := BlockDevice{ Driver: VirtioBlock, ID: "hd0", @@ -516,9 +511,6 @@ func TestAppendPCIBridgeDevice(t *testing.T) { } func TestAppendPCIBridgeDeviceWithReservations(t *testing.T) { - if runtime.GOARCH == "s390x" { - t.Skip("Skipping on s390x due to: https://github.com/kata-containers/kata-containers/issues/3500") - } bridge := BridgeDevice{ Type: PCIBridge, From dc285ab1d7c4048d1142275b77f14c5c2d4aea13 Mon Sep 17 00:00:00 2001 From: Jakob Naucke Date: Thu, 20 Jan 2022 13:45:03 +0100 Subject: [PATCH 326/385] govmm: Remove unnecessary comma in iommu_platform in FSDevice.QemuParams for VirtioCCW. Forgotten in ff34d283dbfa21e568647c4f9fbb4200987b7ad3, also fixes a test. Fixes: #3500 Signed-off-by: Jakob Naucke --- src/runtime/pkg/govmm/qemu/qemu.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/runtime/pkg/govmm/qemu/qemu.go b/src/runtime/pkg/govmm/qemu/qemu.go index 0ee8347f2..2409cd8e9 100644 --- a/src/runtime/pkg/govmm/qemu/qemu.go +++ b/src/runtime/pkg/govmm/qemu/qemu.go @@ -500,7 +500,7 @@ func (fsdev FSDevice) QemuParams(config *Config) []string { } if fsdev.Transport.isVirtioCCW(config) { if config.Knobs.IOMMUPlatform { - deviceParams = append(deviceParams, ",iommu_platform=on") + deviceParams = append(deviceParams, "iommu_platform=on") } deviceParams = append(deviceParams, fmt.Sprintf("devno=%s", fsdev.DevNo)) } From 79ecebb280eeb1477314b56ee92373922af1c9bb Mon Sep 17 00:00:00 2001 From: Jakob Naucke Date: Thu, 20 Jan 2022 13:45:03 +0100 Subject: [PATCH 327/385] govmm: TestAppendPCIBridgeDevice et al. on !s390x s390x uses CCW, also fixes a lint failure about undeclared variables on s390x. Signed-off-by: Jakob Naucke --- .../pkg/govmm/qemu/qemu_arch_base_test.go | 47 ++++++++++++++++++- src/runtime/pkg/govmm/qemu/qemu_s390x_test.go | 4 -- src/runtime/pkg/govmm/qemu/qemu_test.go | 46 ------------------ 3 files changed, 46 insertions(+), 51 deletions(-) diff --git a/src/runtime/pkg/govmm/qemu/qemu_arch_base_test.go b/src/runtime/pkg/govmm/qemu/qemu_arch_base_test.go index 4ef6e3c4e..23d226e5a 100644 --- a/src/runtime/pkg/govmm/qemu/qemu_arch_base_test.go +++ b/src/runtime/pkg/govmm/qemu/qemu_arch_base_test.go @@ -1,4 +1,3 @@ -//go:build !s390x // +build !s390x // Copyright contributors to the Virtual Machine Manager for Go project @@ -91,6 +90,52 @@ func TestAppendVirtioBalloon(t *testing.T) { } +func TestAppendPCIBridgeDevice(t *testing.T) { + + bridge := BridgeDevice{ + Type: PCIBridge, + ID: "mybridge", + Bus: "/pci-bus/pcie.0", + Addr: "255", + Chassis: 5, + SHPC: true, + ROMFile: romfile, + } + + testAppend(bridge, devicePCIBridgeString, t) +} + +func TestAppendPCIBridgeDeviceWithReservations(t *testing.T) { + + bridge := BridgeDevice{ + Type: PCIBridge, + ID: "mybridge", + Bus: "/pci-bus/pcie.0", + Addr: "255", + Chassis: 5, + SHPC: false, + ROMFile: romfile, + IOReserve: "4k", + MemReserve: "1m", + Pref64Reserve: "1m", + } + + testAppend(bridge, devicePCIBridgeStringReserved, t) +} + +func TestAppendPCIEBridgeDevice(t *testing.T) { + + bridge := BridgeDevice{ + Type: PCIEBridge, + ID: "mybridge", + Bus: "/pci-bus/pcie.0", + Addr: "255", + ROMFile: "efi-virtio.rom", + } + + testAppend(bridge, devicePCIEBridgeString, t) +} + func TestAppendDevicePCIeRootPort(t *testing.T) { var pcieRootPortID string diff --git a/src/runtime/pkg/govmm/qemu/qemu_s390x_test.go b/src/runtime/pkg/govmm/qemu/qemu_s390x_test.go index cb7f794e1..19e8d4a15 100644 --- a/src/runtime/pkg/govmm/qemu/qemu_s390x_test.go +++ b/src/runtime/pkg/govmm/qemu/qemu_s390x_test.go @@ -1,5 +1,3 @@ -// +build s390x - // Copyright contributors to the Virtual Machine Manager for Go project // // SPDX-License-Identifier: Apache-2.0 @@ -22,8 +20,6 @@ var ( deviceSCSIControllerStr = "-device virtio-scsi-ccw,id=foo,devno=" + DevNo deviceSCSIControllerBusAddrStr = "-device virtio-scsi-ccw,id=foo,bus=pci.0,addr=00:04.0,iothread=iothread1,devno=" + DevNo deviceBlockString = "-device virtio-blk-ccw,drive=hd0,scsi=off,config-wce=off,devno=" + DevNo + ",share-rw=on,serial=hd0 -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none,readonly" - devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff" - devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff" romfile = "" ) diff --git a/src/runtime/pkg/govmm/qemu/qemu_test.go b/src/runtime/pkg/govmm/qemu/qemu_test.go index 5b73e9dfc..0c8ab0c59 100644 --- a/src/runtime/pkg/govmm/qemu/qemu_test.go +++ b/src/runtime/pkg/govmm/qemu/qemu_test.go @@ -495,52 +495,6 @@ func TestAppendDeviceSCSIController(t *testing.T) { testAppend(scsiCon, deviceSCSIControllerBusAddrStr, t) } -func TestAppendPCIBridgeDevice(t *testing.T) { - - bridge := BridgeDevice{ - Type: PCIBridge, - ID: "mybridge", - Bus: "/pci-bus/pcie.0", - Addr: "255", - Chassis: 5, - SHPC: true, - ROMFile: romfile, - } - - testAppend(bridge, devicePCIBridgeString, t) -} - -func TestAppendPCIBridgeDeviceWithReservations(t *testing.T) { - - bridge := BridgeDevice{ - Type: PCIBridge, - ID: "mybridge", - Bus: "/pci-bus/pcie.0", - Addr: "255", - Chassis: 5, - SHPC: false, - ROMFile: romfile, - IOReserve: "4k", - MemReserve: "1m", - Pref64Reserve: "1m", - } - - testAppend(bridge, devicePCIBridgeStringReserved, t) -} - -func TestAppendPCIEBridgeDevice(t *testing.T) { - - bridge := BridgeDevice{ - Type: PCIEBridge, - ID: "mybridge", - Bus: "/pci-bus/pcie.0", - Addr: "255", - ROMFile: "efi-virtio.rom", - } - - testAppend(bridge, devicePCIEBridgeString, t) -} - func TestAppendEmptyDevice(t *testing.T) { device := SerialDevice{} From 4a428fd1c509d745bfb325ffa0725c503a804f7a Mon Sep 17 00:00:00 2001 From: Jakob Naucke Date: Thu, 20 Jan 2022 13:45:03 +0100 Subject: [PATCH 328/385] govmm: readonly=on in s390x blkdev test Forgotten in b17f07395cbaacbfb53ee0f14933738d8dee60f1, also fixes a test. Signed-off-by: Jakob Naucke --- src/runtime/pkg/govmm/qemu/qemu_s390x_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/runtime/pkg/govmm/qemu/qemu_s390x_test.go b/src/runtime/pkg/govmm/qemu/qemu_s390x_test.go index 19e8d4a15..90dbecca1 100644 --- a/src/runtime/pkg/govmm/qemu/qemu_s390x_test.go +++ b/src/runtime/pkg/govmm/qemu/qemu_s390x_test.go @@ -19,7 +19,7 @@ var ( deviceVFIOString = "-device vfio-ccw,host=02:10.0,devno=" + DevNo deviceSCSIControllerStr = "-device virtio-scsi-ccw,id=foo,devno=" + DevNo deviceSCSIControllerBusAddrStr = "-device virtio-scsi-ccw,id=foo,bus=pci.0,addr=00:04.0,iothread=iothread1,devno=" + DevNo - deviceBlockString = "-device virtio-blk-ccw,drive=hd0,scsi=off,config-wce=off,devno=" + DevNo + ",share-rw=on,serial=hd0 -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none,readonly" + deviceBlockString = "-device virtio-blk-ccw,drive=hd0,scsi=off,config-wce=off,devno=" + DevNo + ",share-rw=on,serial=hd0 -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none,readonly=on" romfile = "" ) From 2f37165f4679c4801db7b84811564c19dbee99d3 Mon Sep 17 00:00:00 2001 From: Jakob Naucke Date: Thu, 20 Jan 2022 13:45:03 +0100 Subject: [PATCH 329/385] govmm: Unite VirtioNet tests no explicit PCI test, just switch path depending on architecture (CCW for s390x, PCI for others). Also fixes an unknown variable error. Signed-off-by: Jakob Naucke --- .../pkg/govmm/qemu/qemu_arch_base_test.go | 4 +- src/runtime/pkg/govmm/qemu/qemu_test.go | 78 +++---------------- 2 files changed, 13 insertions(+), 69 deletions(-) diff --git a/src/runtime/pkg/govmm/qemu/qemu_arch_base_test.go b/src/runtime/pkg/govmm/qemu/qemu_arch_base_test.go index 23d226e5a..4d343eedc 100644 --- a/src/runtime/pkg/govmm/qemu/qemu_arch_base_test.go +++ b/src/runtime/pkg/govmm/qemu/qemu_arch_base_test.go @@ -11,8 +11,8 @@ import "testing" var ( deviceFSString = "-device virtio-9p-pci,disable-modern=true,fsdev=workload9p,mount_tag=rootfs,romfile=efi-virtio.rom -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none,multidevs=remap" - deviceNetworkString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,disable-modern=true,romfile=efi-virtio.rom" - deviceNetworkStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,disable-modern=true,mq=on,vectors=6,romfile=efi-virtio.rom" + deviceNetworkString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true,romfile=efi-virtio.rom" + deviceNetworkStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true,mq=on,vectors=6,romfile=efi-virtio.rom" deviceSerialString = "-device virtio-serial-pci,disable-modern=true,id=serial0,romfile=efi-virtio.rom,max_ports=2" deviceVhostUserNetString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -netdev type=vhost-user,id=net1,chardev=char1,vhostforce -device virtio-net-pci,netdev=net1,mac=00:11:22:33:44:55,romfile=efi-virtio.rom" deviceVSOCKString = "-device vhost-vsock-pci,disable-modern=true,id=vhost-vsock-pci0,guest-cid=4,romfile=efi-virtio.rom" diff --git a/src/runtime/pkg/govmm/qemu/qemu_test.go b/src/runtime/pkg/govmm/qemu/qemu_test.go index 0c8ab0c59..ae4030fb7 100644 --- a/src/runtime/pkg/govmm/qemu/qemu_test.go +++ b/src/runtime/pkg/govmm/qemu/qemu_test.go @@ -17,11 +17,6 @@ import ( const agentUUID = "4cb19522-1e18-439a-883a-f9b2a3a95f5e" const volumeUUID = "67d86208-b46c-4465-9018-e14187d4010" -var ( - deviceNetworkPCIString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true,romfile=efi-virtio.rom" - deviceNetworkPCIStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true,mq=on,vectors=6,romfile=efi-virtio.rom" -) - const DevNo = "fe.1.1234" func testAppend(structure interface{}, expected string, t *testing.T) { @@ -177,10 +172,13 @@ func TestAppendDeviceNetwork(t *testing.T) { VHost: true, MACAddress: "01:02:de:ad:be:ef", DisableModern: true, - ROMFile: "efi-virtio.rom", + ROMFile: romfile, } - if netdev.Transport.isVirtioCCW(nil) { + if netdev.Transport.isVirtioPCI(nil) { + netdev.Bus = "/pci-bus/pcie.0" + netdev.Addr = "255" + } else if netdev.Transport.isVirtioCCW(nil) { netdev.DevNo = DevNo } @@ -209,73 +207,19 @@ func TestAppendDeviceNetworkMq(t *testing.T) { VHost: true, MACAddress: "01:02:de:ad:be:ef", DisableModern: true, - ROMFile: "efi-virtio.rom", + ROMFile: romfile, } - if netdev.Transport.isVirtioCCW(nil) { + + if netdev.Transport.isVirtioPCI(nil) { + netdev.Bus = "/pci-bus/pcie.0" + netdev.Addr = "255" + } else if netdev.Transport.isVirtioCCW(nil) { netdev.DevNo = DevNo } testAppend(netdev, deviceNetworkStringMq, t) } -func TestAppendDeviceNetworkPCI(t *testing.T) { - - netdev := NetDevice{ - Driver: VirtioNet, - Type: TAP, - ID: "tap0", - IFName: "ceth0", - Bus: "/pci-bus/pcie.0", - Addr: "255", - Script: "no", - DownScript: "no", - VHost: true, - MACAddress: "01:02:de:ad:be:ef", - DisableModern: true, - ROMFile: romfile, - } - - if !netdev.Transport.isVirtioPCI(nil) { - t.Skip("Test valid only for PCI devices") - } - - testAppend(netdev, deviceNetworkPCIString, t) -} - -func TestAppendDeviceNetworkPCIMq(t *testing.T) { - foo, _ := ioutil.TempFile(os.TempDir(), "govmm-qemu-test") - bar, _ := ioutil.TempFile(os.TempDir(), "govmm-qemu-test") - - defer func() { - _ = foo.Close() - _ = bar.Close() - _ = os.Remove(foo.Name()) - _ = os.Remove(bar.Name()) - }() - - netdev := NetDevice{ - Driver: VirtioNet, - Type: TAP, - ID: "tap0", - IFName: "ceth0", - Bus: "/pci-bus/pcie.0", - Addr: "255", - Script: "no", - DownScript: "no", - FDs: []*os.File{foo, bar}, - VHost: true, - MACAddress: "01:02:de:ad:be:ef", - DisableModern: true, - ROMFile: romfile, - } - - if !netdev.Transport.isVirtioPCI(nil) { - t.Skip("Test valid only for PCI devices") - } - - testAppend(netdev, deviceNetworkPCIStringMq, t) -} - var deviceLegacySerialString = "-serial chardev:tlserial0" func TestAppendLegacySerial(t *testing.T) { From 5643c6dcae0ddee00f47494651ba5b4e8b3abf9b Mon Sep 17 00:00:00 2001 From: Peng Tao Date: Wed, 19 Jan 2022 10:17:42 +0800 Subject: [PATCH 330/385] runtime: update runc and image-spec dependencies To address two depbot security warnings. Fixes: #3475 Signed-off-by: Peng Tao --- src/runtime/go.mod | 4 ++- src/runtime/go.sum | 10 +++----- .../image-spec/specs-go/v1/annotations.go | 6 ----- .../image-spec/specs-go/v1/config.go | 11 -------- .../image-spec/specs-go/v1/mediatype.go | 9 ------- .../image-spec/specs-go/version.go | 2 +- .../runc/libcontainer/cgroups/fs/cpu.go | 24 ++++++++++++++++-- .../runc/libcontainer/cgroups/fs2/hugetlb.go | 5 +--- .../libcontainer/cgroups/systemd/common.go | 12 +++++++-- .../runc/libcontainer/cgroups/systemd/dbus.go | 6 ++++- .../runc/libcontainer/cgroups/systemd/v1.go | 25 +++++++++++++------ .../runc/libcontainer/cgroups/systemd/v2.go | 8 +++--- .../runc/libcontainer/configs/cgroup_linux.go | 12 +++++++++ src/runtime/vendor/modules.txt | 8 +++--- 14 files changed, 85 insertions(+), 57 deletions(-) diff --git a/src/runtime/go.mod b/src/runtime/go.mod index ab3fdcbc1..07d393227 100644 --- a/src/runtime/go.mod +++ b/src/runtime/go.mod @@ -29,6 +29,7 @@ require ( github.com/hashicorp/go-multierror v1.0.0 github.com/intel-go/cpuid v0.0.0-20210602155658-5747e5cec0d9 github.com/mdlayher/vsock v0.0.0-20191108225356-d9c65923cb8f + github.com/opencontainers/image-spec v1.0.2 // indirect github.com/opencontainers/runc v1.0.3 github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 github.com/opencontainers/selinux v1.8.2 @@ -58,7 +59,8 @@ require ( ) replace ( - github.com/opencontainers/runc => github.com/opencontainers/runc v1.0.1 + github.com/opencontainers/image-spec => github.com/opencontainers/image-spec v1.0.2 + github.com/opencontainers/runc => github.com/opencontainers/runc v1.0.3 github.com/uber-go/atomic => go.uber.org/atomic v1.5.1 google.golang.org/genproto => google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 ) diff --git a/src/runtime/go.sum b/src/runtime/go.sum index da4fcc3fe..3bc3ba026 100644 --- a/src/runtime/go.sum +++ b/src/runtime/go.sum @@ -691,12 +691,10 @@ github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQ github.com/opencontainers/go-digest v1.0.0-rc1.0.20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.0.2-0.20211117181255-693428a734f5 h1:q37d91F6BO4Jp1UqWiun0dUFYaqv6WsKTLTCaWv+8LY= -github.com/opencontainers/image-spec v1.0.2-0.20211117181255-693428a734f5/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/runc v1.0.1 h1:G18PGckGdAm3yVQRWDVQ1rLSLntiniKJ0cNRT2Tm5gs= -github.com/opencontainers/runc v1.0.1/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= +github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= +github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/runc v1.0.3 h1:1hbqejyQWCJBvtKAfdO0b1FmaEf2z/bxnjqbARass5k= +github.com/opencontainers/runc v1.0.3/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= diff --git a/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/annotations.go b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/annotations.go index 581cf7cdf..35d810895 100644 --- a/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/annotations.go +++ b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/annotations.go @@ -53,10 +53,4 @@ const ( // AnnotationDescription is the annotation key for the human-readable description of the software packaged in the image. AnnotationDescription = "org.opencontainers.image.description" - - // AnnotationBaseImageDigest is the annotation key for the digest of the image's base image. - AnnotationBaseImageDigest = "org.opencontainers.image.base.digest" - - // AnnotationBaseImageName is the annotation key for the image reference of the image's base image. - AnnotationBaseImageName = "org.opencontainers.image.base.name" ) diff --git a/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/config.go b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/config.go index ffff4b6d1..fe799bd69 100644 --- a/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/config.go +++ b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/config.go @@ -89,20 +89,9 @@ type Image struct { // Architecture is the CPU architecture which the binaries in this image are built to run on. Architecture string `json:"architecture"` - // Variant is the variant of the specified CPU architecture which image binaries are intended to run on. - Variant string `json:"variant,omitempty"` - // OS is the name of the operating system which the image is built to run on. OS string `json:"os"` - // OSVersion is an optional field specifying the operating system - // version, for example on Windows `10.0.14393.1066`. - OSVersion string `json:"os.version,omitempty"` - - // OSFeatures is an optional field specifying an array of strings, - // each listing a required OS feature (for example on Windows `win32k`). - OSFeatures []string `json:"os.features,omitempty"` - // Config defines the execution parameters which should be used as a base when running a container using the image. Config ImageConfig `json:"config,omitempty"` diff --git a/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/mediatype.go b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/mediatype.go index 4f35ac134..bad7bb97f 100644 --- a/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/mediatype.go +++ b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/v1/mediatype.go @@ -34,10 +34,6 @@ const ( // referenced by the manifest. MediaTypeImageLayerGzip = "application/vnd.oci.image.layer.v1.tar+gzip" - // MediaTypeImageLayerZstd is the media type used for zstd compressed - // layers referenced by the manifest. - MediaTypeImageLayerZstd = "application/vnd.oci.image.layer.v1.tar+zstd" - // MediaTypeImageLayerNonDistributable is the media type for layers referenced by // the manifest but with distribution restrictions. MediaTypeImageLayerNonDistributable = "application/vnd.oci.image.layer.nondistributable.v1.tar" @@ -47,11 +43,6 @@ const ( // restrictions. MediaTypeImageLayerNonDistributableGzip = "application/vnd.oci.image.layer.nondistributable.v1.tar+gzip" - // MediaTypeImageLayerNonDistributableZstd is the media type for zstd - // compressed layers referenced by the manifest but with distribution - // restrictions. - MediaTypeImageLayerNonDistributableZstd = "application/vnd.oci.image.layer.nondistributable.v1.tar+zstd" - // MediaTypeImageConfig specifies the media type for the image configuration. MediaTypeImageConfig = "application/vnd.oci.image.config.v1+json" ) diff --git a/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/version.go b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/version.go index 31f99cf64..0d9543f16 100644 --- a/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/version.go +++ b/src/runtime/vendor/github.com/opencontainers/image-spec/specs-go/version.go @@ -25,7 +25,7 @@ const ( VersionPatch = 2 // VersionDev indicates development branch. Releases will be empty string. - VersionDev = "-dev" + VersionDev = "" ) // Version is the specification version that the package types support. diff --git a/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/cpu.go b/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/cpu.go index 31c1c874e..7ca8b8a8d 100644 --- a/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/cpu.go +++ b/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/cpu.go @@ -4,6 +4,7 @@ package fs import ( "bufio" + "errors" "fmt" "os" "strconv" @@ -11,6 +12,7 @@ import ( "github.com/opencontainers/runc/libcontainer/cgroups" "github.com/opencontainers/runc/libcontainer/cgroups/fscommon" "github.com/opencontainers/runc/libcontainer/configs" + "golang.org/x/sys/unix" ) type CpuGroup struct{} @@ -71,15 +73,33 @@ func (s *CpuGroup) Set(path string, r *configs.Resources) error { return fmt.Errorf("the minimum allowed cpu-shares is %d", sharesRead) } } + + var period string if r.CpuPeriod != 0 { - if err := cgroups.WriteFile(path, "cpu.cfs_period_us", strconv.FormatUint(r.CpuPeriod, 10)); err != nil { - return err + period = strconv.FormatUint(r.CpuPeriod, 10) + if err := cgroups.WriteFile(path, "cpu.cfs_period_us", period); err != nil { + // Sometimes when the period to be set is smaller + // than the current one, it is rejected by the kernel + // (EINVAL) as old_quota/new_period exceeds the parent + // cgroup quota limit. If this happens and the quota is + // going to be set, ignore the error for now and retry + // after setting the quota. + if !errors.Is(err, unix.EINVAL) || r.CpuQuota == 0 { + return err + } + } else { + period = "" } } if r.CpuQuota != 0 { if err := cgroups.WriteFile(path, "cpu.cfs_quota_us", strconv.FormatInt(r.CpuQuota, 10)); err != nil { return err } + if period != "" { + if err := cgroups.WriteFile(path, "cpu.cfs_period_us", period); err != nil { + return err + } + } } return s.SetRtSched(path, r) } diff --git a/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/hugetlb.go b/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/hugetlb.go index 3f513975b..96390a224 100644 --- a/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/hugetlb.go +++ b/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs2/hugetlb.go @@ -30,10 +30,7 @@ func setHugeTlb(dirPath string, r *configs.Resources) error { } func statHugeTlb(dirPath string, stats *cgroups.Stats) error { - hugePageSizes, err := cgroups.GetHugePageSize() - if err != nil { - return errors.Wrap(err, "failed to fetch hugetlb info") - } + hugePageSizes, _ := cgroups.GetHugePageSize() hugetlbStats := cgroups.HugetlbStats{} for _, pagesize := range hugePageSizes { diff --git a/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/common.go b/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/common.go index 3506c8274..06c6c2e95 100644 --- a/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/common.go +++ b/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/common.go @@ -310,6 +310,14 @@ func getUnitName(c *configs.Cgroup) string { return c.Name } +// This code should be in sync with getUnitName. +func getUnitType(unitName string) string { + if strings.HasSuffix(unitName, ".slice") { + return "Slice" + } + return "Scope" +} + // isDbusError returns true if the error is a specific dbus error. func isDbusError(err error, name string) bool { if err != nil { @@ -388,10 +396,10 @@ func resetFailedUnit(cm *dbusConnManager, name string) { } } -func getUnitProperty(cm *dbusConnManager, unitName string, propertyName string) (*systemdDbus.Property, error) { +func getUnitTypeProperty(cm *dbusConnManager, unitName string, unitType string, propertyName string) (*systemdDbus.Property, error) { var prop *systemdDbus.Property err := cm.retryOnDisconnect(func(c *systemdDbus.Conn) (Err error) { - prop, Err = c.GetUnitPropertyContext(context.TODO(), unitName, propertyName) + prop, Err = c.GetUnitTypePropertyContext(context.TODO(), unitName, unitType, propertyName) return Err }) return prop, err diff --git a/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/dbus.go b/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/dbus.go index a70a9df43..069056455 100644 --- a/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/dbus.go +++ b/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/dbus.go @@ -4,6 +4,7 @@ package systemd import ( "context" + "fmt" "sync" systemdDbus "github.com/coreos/go-systemd/v22/dbus" @@ -54,7 +55,10 @@ func (d *dbusConnManager) getConnection() (*systemdDbus.Conn, error) { conn, err := d.newConnection() if err != nil { - return nil, err + // When dbus-user-session is not installed, we can't detect whether we should try to connect to user dbus or system dbus, so d.dbusRootless is set to false. + // This may fail with a cryptic error "read unix @->/run/systemd/private: read: connection reset by peer: unknown." + // https://github.com/moby/moby/issues/42793 + return nil, fmt.Errorf("failed to connect to dbus (hint: for rootless containers, maybe you need to install dbus-user-session package, see https://github.com/opencontainers/runc/blob/master/docs/cgroup-v2.md): %w", err) } dbusC = conn return conn, nil diff --git a/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/v1.go b/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/v1.go index 1a8e1e3c6..cd4720c5d 100644 --- a/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/v1.go +++ b/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/v1.go @@ -6,6 +6,7 @@ import ( "errors" "os" "path/filepath" + "reflect" "strings" "sync" @@ -345,6 +346,11 @@ func (m *legacyManager) freezeBeforeSet(unitName string, r *configs.Resources) ( // Special case for SkipDevices, as used by Kubernetes to create pod // cgroups with allow-all device policy). if r.SkipDevices { + if r.SkipFreezeOnSet { + // Both needsFreeze and needsThaw are false. + return + } + // No need to freeze if SkipDevices is set, and either // (1) systemd unit does not (yet) exist, or // (2) it has DevicePolicy=auto and empty DeviceAllow list. @@ -353,15 +359,20 @@ func (m *legacyManager) freezeBeforeSet(unitName string, r *configs.Resources) ( // a non-existent unit returns default properties, // and settings in (2) are the defaults. // - // Do not return errors from getUnitProperty, as they alone + // Do not return errors from getUnitTypeProperty, as they alone // should not prevent Set from working. - devPolicy, e := getUnitProperty(m.dbus, unitName, "DevicePolicy") + + unitType := getUnitType(unitName) + + devPolicy, e := getUnitTypeProperty(m.dbus, unitName, unitType, "DevicePolicy") if e == nil && devPolicy.Value == dbus.MakeVariant("auto") { - devAllow, e := getUnitProperty(m.dbus, unitName, "DeviceAllow") - if e == nil && devAllow.Value == dbus.MakeVariant([]deviceAllowEntry{}) { - needsFreeze = false - needsThaw = false - return + devAllow, e := getUnitTypeProperty(m.dbus, unitName, unitType, "DeviceAllow") + if e == nil { + if rv := reflect.ValueOf(devAllow.Value.Value()); rv.Kind() == reflect.Slice && rv.Len() == 0 { + needsFreeze = false + needsThaw = false + return + } } } } diff --git a/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/v2.go b/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/v2.go index 8176ce5b2..55273b722 100644 --- a/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/v2.go +++ b/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/v2.go @@ -5,7 +5,6 @@ package systemd import ( "fmt" "math" - "os" "path/filepath" "strconv" "strings" @@ -307,9 +306,10 @@ func (m *unifiedManager) Destroy() error { return err } - // XXX this is probably not needed, systemd should handle it - err := os.Remove(m.path) - if err != nil && !os.IsNotExist(err) { + // systemd 239 do not remove sub-cgroups. + err := cgroups.RemovePath(m.path) + // cgroups.RemovePath has handled ErrNotExist + if err != nil { return err } diff --git a/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/configs/cgroup_linux.go b/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/configs/cgroup_linux.go index a1e7f0afd..5ea9d940c 100644 --- a/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/configs/cgroup_linux.go +++ b/src/runtime/vendor/github.com/opencontainers/runc/libcontainer/configs/cgroup_linux.go @@ -131,4 +131,16 @@ type Resources struct { // // NOTE it is impossible to start a container which has this flag set. SkipDevices bool `json:"-"` + + // SkipFreezeOnSet is a flag for cgroup manager to skip the cgroup + // freeze when setting resources. Only applicable to systemd legacy + // (i.e. cgroup v1) manager (which uses freeze by default to avoid + // spurious permission errors caused by systemd inability to update + // device rules in a non-disruptive manner). + // + // If not set, a few methods (such as looking into cgroup's + // devices.list and querying the systemd unit properties) are used + // during Set() to figure out whether the freeze is required. Those + // methods may be relatively slow, thus this flag. + SkipFreezeOnSet bool `json:"-"` } diff --git a/src/runtime/vendor/modules.txt b/src/runtime/vendor/modules.txt index f52a619fc..f663a8033 100644 --- a/src/runtime/vendor/modules.txt +++ b/src/runtime/vendor/modules.txt @@ -221,10 +221,11 @@ github.com/mitchellh/mapstructure github.com/moby/sys/mountinfo # github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/go-digest -# github.com/opencontainers/image-spec v1.0.2-0.20211117181255-693428a734f5 +# github.com/opencontainers/image-spec v1.0.2 => github.com/opencontainers/image-spec v1.0.2 +## explicit github.com/opencontainers/image-spec/specs-go github.com/opencontainers/image-spec/specs-go/v1 -# github.com/opencontainers/runc v1.0.3 => github.com/opencontainers/runc v1.0.1 +# github.com/opencontainers/runc v1.0.3 => github.com/opencontainers/runc v1.0.3 ## explicit github.com/opencontainers/runc/libcontainer/cgroups github.com/opencontainers/runc/libcontainer/cgroups/devices @@ -457,6 +458,7 @@ k8s.io/apimachinery/pkg/api/resource # k8s.io/cri-api v0.23.0-alpha.4 ## explicit k8s.io/cri-api/pkg/apis/runtime/v1alpha2 -# github.com/opencontainers/runc => github.com/opencontainers/runc v1.0.1 +# github.com/opencontainers/image-spec => github.com/opencontainers/image-spec v1.0.2 +# github.com/opencontainers/runc => github.com/opencontainers/runc v1.0.3 # github.com/uber-go/atomic => go.uber.org/atomic v1.5.1 # google.golang.org/genproto => google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 From 4fc4c76b874782aaa8003639d723444d5993b0bd Mon Sep 17 00:00:00 2001 From: Binbin Zhang Date: Fri, 24 Dec 2021 15:58:53 +0800 Subject: [PATCH 331/385] agent: Fix execute_hook() args error 1. The hook.args[0] is the hook binary name which shouldn't be included in the Command.args. 2. Add new unit tests Fixes: #2610 Signed-off-by: Binbin Zhang --- src/agent/rustjail/src/container.rs | 72 +++++++++++++++++++++++++---- 1 file changed, 63 insertions(+), 9 deletions(-) diff --git a/src/agent/rustjail/src/container.rs b/src/agent/rustjail/src/container.rs index afee02840..7037bb469 100644 --- a/src/agent/rustjail/src/container.rs +++ b/src/agent/rustjail/src/container.rs @@ -1482,7 +1482,12 @@ async fn execute_hook(logger: &Logger, h: &Hook, st: &OCIState) -> Result<()> { return Err(anyhow!(nix::Error::EINVAL)); } - let args = h.args.clone(); + let mut args = h.args.clone(); + // the hook.args[0] is the hook binary name which shouldn't be included + // in the Command.args + if args.len() > 1 { + args.remove(0); + } let env: HashMap = h .env .iter() @@ -1529,7 +1534,7 @@ async fn execute_hook(logger: &Logger, h: &Hook, st: &OCIState) -> Result<()> { // Close stdin so that hook program could receive EOF child.stdin.take(); - // read something from stdout for debug + // read something from stdout and stderr for debug let mut out = String::new(); child .stdout @@ -1540,6 +1545,16 @@ async fn execute_hook(logger: &Logger, h: &Hook, st: &OCIState) -> Result<()> { .unwrap(); info!(logger, "child stdout: {}", out.as_str()); + let mut err = String::new(); + child + .stderr + .as_mut() + .unwrap() + .read_to_string(&mut err) + .await + .unwrap(); + info!(logger, "child stderr: {}", err.as_str()); + match child.wait().await { Ok(exit) => { let code = exit @@ -1547,7 +1562,10 @@ async fn execute_hook(logger: &Logger, h: &Hook, st: &OCIState) -> Result<()> { .ok_or_else(|| anyhow!("hook exit status has no status code"))?; if code != 0 { - error!(logger, "hook {} exit status is {}", &path, code); + error!( + logger, + "hook {} exit status is {}, error message is {}", &path, code, err + ); return Err(anyhow!(nix::Error::UnknownErrno)); } @@ -1624,13 +1642,44 @@ mod tests { #[tokio::test] async fn test_execute_hook() { - let xargs = which("xargs").await; + let temp_file = "/tmp/test_execute_hook"; + + let touch = which("touch").await; + + defer!(fs::remove_file(temp_file).unwrap();); execute_hook( &slog_scope::logger(), &Hook { - path: xargs, - args: vec![], + path: touch, + args: vec!["touch".to_string(), temp_file.to_string()], + env: vec![], + timeout: Some(10), + }, + &OCIState { + version: "1.2.3".to_string(), + id: "321".to_string(), + status: ContainerState::Running, + pid: 2, + bundle: "".to_string(), + annotations: Default::default(), + }, + ) + .await + .unwrap(); + + assert_eq!(Path::new(&temp_file).exists(), true); + } + + #[tokio::test] + async fn test_execute_hook_with_error() { + let ls = which("ls").await; + + let res = execute_hook( + &slog_scope::logger(), + &Hook { + path: ls, + args: vec!["ls".to_string(), "/tmp/not-exist".to_string()], env: vec![], timeout: None, }, @@ -1643,8 +1692,13 @@ mod tests { annotations: Default::default(), }, ) - .await - .unwrap() + .await; + + let expected_err = nix::Error::UnknownErrno; + assert_eq!( + res.unwrap_err().downcast::().unwrap(), + expected_err + ); } #[tokio::test] @@ -1655,7 +1709,7 @@ mod tests { &slog_scope::logger(), &Hook { path: sleep, - args: vec!["2".to_string()], + args: vec!["sleep".to_string(), "2".to_string()], env: vec![], timeout: Some(1), }, From 1721197934f4ae8dc24ee61399588903f305347f Mon Sep 17 00:00:00 2001 From: Jakob Naucke Date: Fri, 21 Jan 2022 12:49:56 +0100 Subject: [PATCH 332/385] ci: Pass function arguments in static-checks.sh e.g. when called from the tests repo Fixes: #3525 Signed-off-by: Jakob Naucke --- ci/lib.sh | 2 +- ci/static-checks.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/lib.sh b/ci/lib.sh index 3c64db595..02e43aec3 100644 --- a/ci/lib.sh +++ b/ci/lib.sh @@ -36,7 +36,7 @@ run_static_checks() # Make sure we have the targeting branch git remote set-branches --add origin "${branch}" git fetch -a - bash "$tests_repo_dir/.ci/static-checks.sh" "github.com/kata-containers/kata-containers" + bash "$tests_repo_dir/.ci/static-checks.sh" "$@" } run_go_test() diff --git a/ci/static-checks.sh b/ci/static-checks.sh index df4b6df31..4297206d8 100755 --- a/ci/static-checks.sh +++ b/ci/static-checks.sh @@ -9,4 +9,4 @@ set -e cidir=$(dirname "$0") source "${cidir}/lib.sh" -run_static_checks +run_static_checks "${@:-github.com/kata-containers/kata-containers}" From 7af40fbc66b937b667a63d857e1f169d409fe223 Mon Sep 17 00:00:00 2001 From: Gabriela Cervantes Date: Mon, 24 Jan 2022 16:08:51 +0000 Subject: [PATCH 333/385] docs: Remove docker run, sysctl and docker daemon limitations This PR removes the docker run and sysctl limitation reference for kata 2.0 as well as docker daemon limitation as currently for kata we are not supporting docker and this reference belonged to kata 1.0 Fixes #3545 Signed-off-by: Gabriela Cervantes --- docs/Limitations.md | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/docs/Limitations.md b/docs/Limitations.md index a8fe6f546..9ffd5833a 100644 --- a/docs/Limitations.md +++ b/docs/Limitations.md @@ -104,31 +104,6 @@ set the size of the `/dev/shm tmpfs` within the container. It is possible to pas See issue https://github.com/kata-containers/kata-containers/issues/21 for more information. -### docker run and sysctl - -The `docker run --sysctl` feature is not implemented. At the runtime -level, this equates to the `linux.sysctl` OCI configuration. Docker -allows configuring the sysctl settings that support namespacing. From a security and isolation point of view, it might make sense to set them in the VM, which isolates sysctl settings. Also, given that each Kata Container has its own kernel, we can support setting of sysctl settings that are not namespaced. In some cases, we might need to support configuring some of the settings on both the host side Kata Container namespace and the Kata Containers kernel. - -See issue https://github.com/kata-containers/runtime/issues/185 for more information. - -## Docker daemon features - -Some features enabled or implemented via the -[`dockerd` daemon](https://docs.docker.com/config/daemon/) configuration are not yet -implemented. - -### SELinux support - -The `dockerd` configuration option `"selinux-enabled": true` is not presently implemented -in Kata Containers. Enabling this option causes an OCI runtime error. - -See issue https://github.com/kata-containers/runtime/issues/784 for more information. - -The consequence of this is that the [Docker --security-opt is only partially supported](#docker---security-opt-option-partially-supported). - -Kubernetes [SELinux labels](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#assign-selinux-labels-to-a-container) will also not be applied. - # Architectural limitations This section lists items that might not be fixed due to fundamental From fc0e095180e1d8ce7a12f0b2bb2e2e0b5f956531 Mon Sep 17 00:00:00 2001 From: Braden Rayhorn Date: Mon, 24 Jan 2022 13:30:32 -0600 Subject: [PATCH 334/385] runtime: fix handling container spec's memory limit The OCI container spec specifies a limit of -1 signifies unlimited memory. Update the sandbox memory calculator to reflect this part of the spec. Fixes: #3512 Signed-off-by: Braden Rayhorn --- src/runtime/virtcontainers/sandbox.go | 2 +- src/runtime/virtcontainers/sandbox_test.go | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/runtime/virtcontainers/sandbox.go b/src/runtime/virtcontainers/sandbox.go index 3574d28ea..0bd9c1db5 100644 --- a/src/runtime/virtcontainers/sandbox.go +++ b/src/runtime/virtcontainers/sandbox.go @@ -1989,7 +1989,7 @@ func (s *Sandbox) calculateSandboxMemory() (int64, bool, int64) { if m := c.Resources.Memory; m != nil { currentLimit := int64(0) - if m.Limit != nil { + if m.Limit != nil && *m.Limit > 0 { currentLimit = *m.Limit memorySandbox += currentLimit } diff --git a/src/runtime/virtcontainers/sandbox_test.go b/src/runtime/virtcontainers/sandbox_test.go index bfec3f686..2dda62a41 100644 --- a/src/runtime/virtcontainers/sandbox_test.go +++ b/src/runtime/virtcontainers/sandbox_test.go @@ -178,6 +178,20 @@ func TestCalculateSandboxMem(t *testing.T) { } } +func TestCalculateSandboxMemHandlesNegativeLimits(t *testing.T) { + sandbox := &Sandbox{} + sandbox.config = &SandboxConfig{} + container := newTestContainerConfigNoop("cont-00001") + limit := int64(-1) + container.Resources.Memory = &specs.LinuxMemory{Limit: &limit} + + sandbox.config.Containers = []ContainerConfig{container} + mem, needSwap, swap := sandbox.calculateSandboxMemory() + assert.Equal(t, mem, int64(0)) + assert.Equal(t, needSwap, false) + assert.Equal(t, swap, int64(0)) +} + func TestCreateSandboxEmptyID(t *testing.T) { hConfig := newHypervisorConfig(nil, nil) _, err := testCreateSandbox(t, "", MockHypervisor, hConfig, NetworkConfig{}, nil, nil) From 75ae53619662e9e8c1c296f6ba2db067c551f2a2 Mon Sep 17 00:00:00 2001 From: Archana Shinde Date: Tue, 25 Jan 2022 17:04:27 +0530 Subject: [PATCH 335/385] docs: Update networking details in the architecture doc Updated the doc to clarify certain networking details and external links to some of the networking terms used. Fixes #3308 Signed-off-by: Archana Shinde --- docs/design/architecture/networking.md | 39 +++++++++++++------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/docs/design/architecture/networking.md b/docs/design/architecture/networking.md index 80a6b7d27..ab056849c 100644 --- a/docs/design/architecture/networking.md +++ b/docs/design/architecture/networking.md @@ -1,36 +1,37 @@ # Networking -See the [networking document](networking.md). - -Containers will typically live in their own, possibly shared, networking namespace. +Containers typically live in their own, possibly shared, networking namespace. At some point in a container lifecycle, container engines will set up that namespace -to add the container to a network which is isolated from the host network, but -which is shared between containers +to add the container to a network which is isolated from the host network. -In order to do so, container engines will usually add one end of a virtual -ethernet (`veth`) pair into the container networking namespace. The other end of -the `veth` pair is added to the host networking namespace. +In order to setup the network for a container, container engines call into a +networking plugin. The network plugin will usually create a virtual +ethernet (`veth`) pair adding one end of the `veth` pair into the container +networking namespace, while the other end of the `veth` pair is added to the +host networking namespace. This is a very namespace-centric approach as many hypervisors or VM Managers (VMMs) such as `virt-manager` cannot handle `veth` -interfaces. Typically, `TAP` interfaces are created for VM -connectivity. +interfaces. Typically, [`TAP`](https://www.kernel.org/doc/Documentation/networking/tuntap.txt) +interfaces are created for VM connectivity. To overcome incompatibility between typical container engines expectations and virtual machines, Kata Containers networking transparently connects `veth` -interfaces with `TAP` ones using Traffic Control: +interfaces with `TAP` ones using [Traffic Control](https://man7.org/linux/man-pages/man8/tc.8.html): ![Kata Containers networking](../arch-images/network.png) -With a TC filter in place, a redirection is created between the container network and the -virtual machine. As an example, the CNI may create a device, `eth0`, in the container's network -namespace, which is a VETH device. Kata Containers will create a tap device for the VM, `tap0_kata`, -and setup a TC redirection filter to mirror traffic from `eth0`'s ingress to `tap0_kata`'s egress, -and a second to mirror traffic from `tap0_kata`'s ingress to `eth0`'s egress. +With a TC filter rules in place, a redirection is created between the container network + and the virtual machine. As an example, the network plugin may place a device, +`eth0`, in the container's network namespace, which is one end of a VETH device. +Kata Containers will create a tap device for the VM, `tap0_kata`, +and setup a TC redirection filter to redirect traffic from `eth0`'s ingress to `tap0_kata`'s egress, +and a second TC filter to redirect traffic from `tap0_kata`'s ingress to `eth0`'s egress. -Kata Containers maintains support for MACVTAP, which was an earlier implementation used in Kata. TC-filter -is the default because it allows for simpler configuration, better CNI plugin compatibility, and performance -on par with MACVTAP. +Kata Containers maintains support for MACVTAP, which was an earlier implementation used in Kata. +With this method, Kata created a MACVTAP device to connect directly to the `eth0` device. +TC-filter is the default because it allows for simpler configuration, better CNI plugin +compatibility, and performance on par with MACVTAP. Kata Containers has deprecated support for bridge due to lacking performance relative to TC-filter and MACVTAP. From c3e97a0a22475bfd3d94b23813f3edbfd740f048 Mon Sep 17 00:00:00 2001 From: Eric Ernst Date: Wed, 15 Dec 2021 16:45:58 -0800 Subject: [PATCH 336/385] config: updates to configuration clh, fc toml template There's some cruft -- let's update to reflect reality, and ensure that we match what is expected. Signed-off-by: Eric Ernst --- src/runtime/config/configuration-clh.toml.in | 9 +-------- src/runtime/config/configuration-fc.toml.in | 2 +- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/runtime/config/configuration-clh.toml.in b/src/runtime/config/configuration-clh.toml.in index 8bb8f3341..733a4e2a2 100644 --- a/src/runtime/config/configuration-clh.toml.in +++ b/src/runtime/config/configuration-clh.toml.in @@ -180,13 +180,6 @@ block_device_driver = "virtio-blk" # the container network interface # Options: # -# - bridged (Deprecated) -# Uses a linux bridge to interconnect the container interface to -# the VM. Works for most cases except macvlan and ipvlan. -# ***NOTE: This feature has been deprecated with plans to remove this -# feature in the future. Please use other network models listed below. -# -# # - macvtap # Used when the Container network interface can be bridged using # macvtap. @@ -224,7 +217,7 @@ disable_guest_seccomp=@DEFDISABLEGUESTSECCOMP@ # If enabled, the runtime will not create a network namespace for shim and hypervisor processes. # This option may have some potential impacts to your host. It should only be used when you know what you're doing. -# `disable_new_netns` conflicts with `internetworking_model=bridged` and `internetworking_model=macvtap`. It works only +# `disable_new_netns` conflicts with `internetworking_model=tcfilter` and `internetworking_model=macvtap`. It works only # with `internetworking_model=none`. The tap device will be in the host network namespace and can connect to a bridge # (like OVS) directly. # (default: false) diff --git a/src/runtime/config/configuration-fc.toml.in b/src/runtime/config/configuration-fc.toml.in index 1b63d219d..83176131a 100644 --- a/src/runtime/config/configuration-fc.toml.in +++ b/src/runtime/config/configuration-fc.toml.in @@ -332,7 +332,7 @@ disable_guest_seccomp=@DEFDISABLEGUESTSECCOMP@ # (default: false) #disable_new_netns = true -# if enable, the runtime will add all the kata processes inside one dedicated cgroup. +# if enabled, the runtime will add all the kata processes inside one dedicated cgroup. # The container cgroups in the host are not created, just one single cgroup per sandbox. # The runtime caller is free to restrict or collect cgroup stats of the overall Kata sandbox. # The sandbox cgroup path is the parent cgroup of a container with the PodSandbox annotation. From 13eb1f81b91d3ee13390d26dfe7a30ac2daaac25 Mon Sep 17 00:00:00 2001 From: Eric Ernst Date: Wed, 12 Jan 2022 00:00:30 -0800 Subject: [PATCH 337/385] docs: describe vCPU handling when hotplug is unavailable Describe the static_sandbox_resource_mgmt flag, and how this applies to configurations that do not utilize hotplug. Signed-off-by: Eric Ernst --- docs/design/vcpu-handling.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/docs/design/vcpu-handling.md b/docs/design/vcpu-handling.md index bb29efa1b..d5f5e3b10 100644 --- a/docs/design/vcpu-handling.md +++ b/docs/design/vcpu-handling.md @@ -157,6 +157,32 @@ docker run --cpus 4 -ti debian bash -c "nproc; cat /sys/fs/cgroup/cpu,cpuacct/cp 400000 # cfs quota ``` +## Virtual CPU handling without hotplug + +In some cases, the hardware and/or software architecture being utilized does not support +hotplug. For example, Firecracker VMM does not support CPU or memory hotplug. Similarly, +the current Linux Kernel for aarch64 does not support CPU or memory hotplug. To appropriately +size the virtual machine for the workload within the container or pod, we provide a `static_sandbox_resource_mgmt` +flag within the Kata Containers configuration. When this is set, the runtime will: + - Size the VM based on the workload requirements as well as the `default_vcpus` option specified in the configuration. + - Not resize the virtual machine after it has been launched. + +VM size determination varies depending on the type of container being run, and may not always +be available. If workload sizing information is not available, the virtual machine will be started with the +`default_vcpus`. + +In the case of a pod, the initial sandbox container (pause container) typically doesn't contain any resource +information in its runtime `spec`. It is possible that the upper layer runtime +(i.e. containerd or CRI-O) may pass sandbox sizing annotations within the pause container's +`spec`. If these are provided, we will use this to appropriately size the VM. In particular, +we'll calculate the number of CPUs required for the workload and augment this by `default_vcpus` +configuration option, and use this for the virtual machine size. + +In the case of a single container (i.e., not a pod), if the container specifies resource requirements, +the container's `spec` will provide the sizing information directly. If these are set, we will +calculate the number of CPUs required for the workload and augment this by `default_vcpus` +configuration option, and use this for the virtual machine size. + [1]: https://docs.docker.com/config/containers/resource_constraints/#cpu [2]: https://kubernetes.io/docs/tasks/configure-pod-container/assign-cpu-resource From 8cde54131af6f036e390e7cf8a44c9b8d70d2ff8 Mon Sep 17 00:00:00 2001 From: Eric Ernst Date: Wed, 15 Dec 2021 16:45:58 -0800 Subject: [PATCH 338/385] runtime: introduce static sandbox resource management There are software and hardware architectures which do not support dynamically adjusting the CPU and memory resources associated with a sandbox. For these, today, they rely on "default CPU" and "default memory" configuration options for the runtime, either set by annotation or by the configuration toml on disk. In the case of a single container (launched by ctr, or something like "docker run"), we could allow for sizing the VM correctly, since all of the information is already available to us at creation time. In the sandbox / pod container case, it is possible for the upper layer container runtime (ie, containerd or crio) could send a specific annotation indicating the total workload resource requirements associated with the sandbox creation request. In the case of sizing information not being provided, we will follow same behavior as today: start the VM with (just) the default CPU/memory. If this information is provided, we'll track this as Workload specific resources, and track default sizing information as Base resources. We will update the hypervisor configuration to utilize Base+Workload resources, thus starting the VM with the appropriate amount of CPU and memory. In this scenario (we start the VM with the "right" amount of CPU/Memory), we do not want to update the VM resources when containers are added, or adjusted in size. This functionality is introduced behind a configuration flag, `static_sandbox_resource_mgmt`. This is defaulted to false for all configurations except Firecracker, which is set to true. This'll greatly improve UX for folks who are utilizing Kata with a VMM or hardware architecture that doesn't support hotplug. Note, users will still be unable to do in place vertical pod autoscaling or other dynamic container/pod sizing with this enabled. Fixes: #3264 Signed-off-by: Eric Ernst --- src/runtime/Makefile | 5 + src/runtime/config/configuration-clh.toml.in | 9 ++ src/runtime/config/configuration-fc.toml.in | 9 ++ src/runtime/config/configuration-qemu.toml.in | 9 ++ src/runtime/pkg/containerd-shim-v2/create.go | 14 ++ src/runtime/pkg/katautils/config.go | 28 ++-- src/runtime/pkg/oci/utils.go | 125 ++++++++++++++- src/runtime/pkg/oci/utils_test.go | 146 ++++++++++++++++++ src/runtime/virtcontainers/sandbox.go | 22 ++- 9 files changed, 352 insertions(+), 15 deletions(-) diff --git a/src/runtime/Makefile b/src/runtime/Makefile index e09a999b5..ad84739d2 100644 --- a/src/runtime/Makefile +++ b/src/runtime/Makefile @@ -187,6 +187,8 @@ DEFVFIOMODE := guest-kernel # Default cgroup model DEFSANDBOXCGROUPONLY ?= false +DEFSTATICRESOURCEMGMT ?= false + DEFBINDMOUNTS := [] # Features @@ -279,6 +281,7 @@ ifneq (,$(FCCMD)) # firecracker-specific options (all should be suffixed by "_FC") DEFBLOCKSTORAGEDRIVER_FC := virtio-mmio DEFNETWORKMODEL_FC := tcfilter + DEFSTATICRESOURCEMGMT_FC = true KERNELTYPE_FC = uncompressed KERNEL_NAME_FC = $(call MAKE_KERNEL_NAME,$(KERNELTYPE_FC)) KERNELPATH_FC = $(KERNELDIR)/$(KERNEL_NAME_FC) @@ -449,6 +452,8 @@ USER_VARS += DEFMSIZE9P USER_VARS += DEFENTROPYSOURCE USER_VARS += DEFVALIDENTROPYSOURCES USER_VARS += DEFSANDBOXCGROUPONLY +USER_VARS += DEFSTATICRESOURCEMGMT +USER_VARS += DEFSTATICRESOURCEMGMT_FC USER_VARS += DEFBINDMOUNTS USER_VARS += DEFVFIOMODE USER_VARS += FEATURE_SELINUX diff --git a/src/runtime/config/configuration-clh.toml.in b/src/runtime/config/configuration-clh.toml.in index 733a4e2a2..7f06dd8eb 100644 --- a/src/runtime/config/configuration-clh.toml.in +++ b/src/runtime/config/configuration-clh.toml.in @@ -231,6 +231,15 @@ disable_guest_seccomp=@DEFDISABLEGUESTSECCOMP@ # See: https://pkg.go.dev/github.com/kata-containers/kata-containers/src/runtime/virtcontainers#ContainerType sandbox_cgroup_only=@DEFSANDBOXCGROUPONLY@ +# If enabled, the runtime will attempt to determine appropriate sandbox size (memory, CPU) before booting the virtual machine. In +# this case, the runtime will not dynamically update the amount of memory and CPU in the virtual machine. This is generally helpful +# when a hardware architecture or hypervisor solutions is utilized which does not support CPU and/or memory hotplug. +# Compatibility for determining appropriate sandbox (VM) size: +# - When running with pods, sandbox sizing information will only be available if using Kubernetes >= 1.23 and containerd >= 1.6. CRI-O +# does not yet support sandbox sizing annotations. +# - When running single containers using a tool like ctr, container sizing information will be available. +static_sandbox_resource_mgmt=@DEFSTATICRESOURCEMGMT@ + # If specified, sandbox_bind_mounts identifieds host paths to be mounted (ro) into the sandboxes shared path. # This is only valid if filesystem sharing is utilized. The provided path(s) will be bindmounted into the shared fs directory. # If defaults are utilized, these mounts should be available in the guest at `/run/kata-containers/shared/containers/sandbox-mounts` diff --git a/src/runtime/config/configuration-fc.toml.in b/src/runtime/config/configuration-fc.toml.in index 83176131a..ad3e5c672 100644 --- a/src/runtime/config/configuration-fc.toml.in +++ b/src/runtime/config/configuration-fc.toml.in @@ -340,6 +340,15 @@ disable_guest_seccomp=@DEFDISABLEGUESTSECCOMP@ # See: https://pkg.go.dev/github.com/kata-containers/kata-containers/src/runtime/virtcontainers#ContainerType sandbox_cgroup_only=@DEFSANDBOXCGROUPONLY@ +# If enabled, the runtime will attempt to determine appropriate sandbox size (memory, CPU) before booting the virtual machine. In +# this case, the runtime will not dynamically update the amount of memory and CPU in the virtual machine. This is generally helpful +# when a hardware architecture or hypervisor solutions is utilized which does not support CPU and/or memory hotplug. +# Compatibility for determining appropriate sandbox (VM) size: +# - When running with pods, sandbox sizing information will only be available if using Kubernetes >= 1.23 and containerd >= 1.6. CRI-O +# does not yet support sandbox sizing annotations. +# - When running single containers using a tool like ctr, container sizing information will be available. +static_sandbox_resource_mgmt=@DEFSTATICRESOURCEMGMT_FC@ + # Enabled experimental feature list, format: ["a", "b"]. # Experimental features are features not stable enough for production, # they may break compatibility, and are prepared for a big version bump. diff --git a/src/runtime/config/configuration-qemu.toml.in b/src/runtime/config/configuration-qemu.toml.in index 2f6600fc8..c27e94bb3 100644 --- a/src/runtime/config/configuration-qemu.toml.in +++ b/src/runtime/config/configuration-qemu.toml.in @@ -516,6 +516,15 @@ disable_guest_seccomp=@DEFDISABLEGUESTSECCOMP@ # See: https://pkg.go.dev/github.com/kata-containers/kata-containers/src/runtime/virtcontainers#ContainerType sandbox_cgroup_only=@DEFSANDBOXCGROUPONLY@ +# If enabled, the runtime will attempt to determine appropriate sandbox size (memory, CPU) before booting the virtual machine. In +# this case, the runtime will not dynamically update the amount of memory and CPU in the virtual machine. This is generally helpful +# when a hardware architecture or hypervisor solutions is utilized which does not support CPU and/or memory hotplug. +# Compatibility for determining appropriate sandbox (VM) size: +# - When running with pods, sandbox sizing information will only be available if using Kubernetes >= 1.23 and containerd >= 1.6. CRI-O +# does not yet support sandbox sizing annotations. +# - When running single containers using a tool like ctr, container sizing information will be available. +static_sandbox_resource_mgmt=@DEFSTATICRESOURCEMGMT@ + # If specified, sandbox_bind_mounts identifieds host paths to be mounted (ro) into the sandboxes shared path. # This is only valid if filesystem sharing is utilized. The provided path(s) will be bindmounted into the shared fs directory. # If defaults are utilized, these mounts should be available in the guest at `/run/kata-containers/shared/containers/sandbox-mounts` diff --git a/src/runtime/pkg/containerd-shim-v2/create.go b/src/runtime/pkg/containerd-shim-v2/create.go index ae47bb249..ef9374686 100644 --- a/src/runtime/pkg/containerd-shim-v2/create.go +++ b/src/runtime/pkg/containerd-shim-v2/create.go @@ -103,6 +103,20 @@ func create(ctx context.Context, s *service, r *taskAPI.CreateTaskRequest) (*con s.ctx = newCtx defer span.End() + // Sandbox sizing information *may* be provided in two scenarios: + // 1. The upper layer runtime (ie, containerd or crio) provide sandbox sizing information as an annotation + // in the 'sandbox container's' spec. This would typically be a scenario where as part of a create sandbox + // request the upper layer runtime receives this information as part of a pod, and makes it available to us + // for sizing purposes. + // 2. If this is not a sandbox infrastructure container, but instead a standalone single container (analogous to "docker run..."), + // then the container spec itself will contain appropriate sizing information for the entire sandbox (since it is + // a single container. + if containerType == vc.PodSandbox { + s.config.SandboxCPUs, s.config.SandboxMemMB = oci.CalculateSandboxSizing(ociSpec) + } else { + s.config.SandboxCPUs, s.config.SandboxMemMB = oci.CalculateContainerSizing(ociSpec) + } + if rootFs.Mounted, err = checkAndMount(s, r); err != nil { return nil, err } diff --git a/src/runtime/pkg/katautils/config.go b/src/runtime/pkg/katautils/config.go index 20ed1b695..67fc685dc 100644 --- a/src/runtime/pkg/katautils/config.go +++ b/src/runtime/pkg/katautils/config.go @@ -137,19 +137,20 @@ type hypervisor struct { } type runtime struct { - InterNetworkModel string `toml:"internetworking_model"` - JaegerEndpoint string `toml:"jaeger_endpoint"` - JaegerUser string `toml:"jaeger_user"` - JaegerPassword string `toml:"jaeger_password"` - VfioMode string `toml:"vfio_mode"` - SandboxBindMounts []string `toml:"sandbox_bind_mounts"` - Experimental []string `toml:"experimental"` - Debug bool `toml:"enable_debug"` - Tracing bool `toml:"enable_tracing"` - DisableNewNetNs bool `toml:"disable_new_netns"` - DisableGuestSeccomp bool `toml:"disable_guest_seccomp"` - SandboxCgroupOnly bool `toml:"sandbox_cgroup_only"` - EnablePprof bool `toml:"enable_pprof"` + InterNetworkModel string `toml:"internetworking_model"` + JaegerEndpoint string `toml:"jaeger_endpoint"` + JaegerUser string `toml:"jaeger_user"` + JaegerPassword string `toml:"jaeger_password"` + VfioMode string `toml:"vfio_mode"` + SandboxBindMounts []string `toml:"sandbox_bind_mounts"` + Experimental []string `toml:"experimental"` + Debug bool `toml:"enable_debug"` + Tracing bool `toml:"enable_tracing"` + DisableNewNetNs bool `toml:"disable_new_netns"` + DisableGuestSeccomp bool `toml:"disable_guest_seccomp"` + SandboxCgroupOnly bool `toml:"sandbox_cgroup_only"` + StaticSandboxResourceMgmt bool `toml:"static_sandbox_resource_mgmt"` + EnablePprof bool `toml:"enable_pprof"` } type agent struct { @@ -1125,6 +1126,7 @@ func LoadConfiguration(configPath string, ignoreLogging bool) (resolvedConfigPat config.DisableGuestSeccomp = tomlConf.Runtime.DisableGuestSeccomp + config.StaticSandboxResourceMgmt = tomlConf.Runtime.StaticSandboxResourceMgmt config.SandboxCgroupOnly = tomlConf.Runtime.SandboxCgroupOnly config.DisableNewNetNs = tomlConf.Runtime.DisableNewNetNs config.EnablePprof = tomlConf.Runtime.EnablePprof diff --git a/src/runtime/pkg/oci/utils.go b/src/runtime/pkg/oci/utils.go index 71a116f45..63c052caf 100644 --- a/src/runtime/pkg/oci/utils.go +++ b/src/runtime/pkg/oci/utils.go @@ -24,11 +24,13 @@ import ( "k8s.io/apimachinery/pkg/api/resource" vc "github.com/kata-containers/kata-containers/src/runtime/virtcontainers" + "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/device/config" exp "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/experimental" vcAnnotations "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/annotations" dockershimAnnotations "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/annotations/dockershim" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/types" + vcutils "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/utils" ) type annotationContainerType struct { @@ -125,7 +127,16 @@ type RuntimeConfig struct { //Determines if seccomp should be applied inside guest DisableGuestSeccomp bool - //Determines if create a netns for hypervisor process + // Sandbox sizing information which, if provided, indicates the size of + // the sandbox needed for the workload(s) + SandboxCPUs uint32 + SandboxMemMB uint32 + + // Determines if we should attempt to size the VM at boot time and skip + // any later resource updates. + StaticSandboxResourceMgmt bool + + // Determines if create a netns for hypervisor process DisableNewNetNs bool //Determines kata processes are managed only in sandbox cgroup @@ -873,6 +884,13 @@ func SandboxConfig(ocispec specs.Spec, runtime RuntimeConfig, bundlePath, cid, c vcAnnotations.BundlePathKey: bundlePath, }, + SandboxResources: vc.SandboxResourceSizing{ + WorkloadCPUs: runtime.SandboxCPUs, + WorkloadMemMB: runtime.SandboxMemMB, + }, + + StaticResourceMgmt: runtime.StaticSandboxResourceMgmt, + ShmSize: shmSize, VfioMode: runtime.VfioMode, @@ -894,6 +912,25 @@ func SandboxConfig(ocispec specs.Spec, runtime RuntimeConfig, bundlePath, cid, c return vc.SandboxConfig{}, err } + // If we are utilizing static resource management for the sandbox, ensure that the hypervisor is started + // with the base number of CPU/memory (which is equal to the default CPU/memory specified for the runtime + // configuration or annotations) as well as any specified workload resources. + if sandboxConfig.StaticResourceMgmt { + sandboxConfig.SandboxResources.BaseCPUs = sandboxConfig.HypervisorConfig.NumVCPUs + sandboxConfig.SandboxResources.BaseMemMB = sandboxConfig.HypervisorConfig.MemorySize + + sandboxConfig.HypervisorConfig.NumVCPUs += sandboxConfig.SandboxResources.WorkloadCPUs + sandboxConfig.HypervisorConfig.MemorySize += sandboxConfig.SandboxResources.WorkloadMemMB + + ociLog.WithFields(logrus.Fields{ + "workload cpu": sandboxConfig.SandboxResources.WorkloadCPUs, + "default cpu": sandboxConfig.SandboxResources.BaseCPUs, + "workload mem in MB": sandboxConfig.SandboxResources.WorkloadMemMB, + "default mem": sandboxConfig.SandboxResources.BaseMemMB, + }).Debugf("static resources set") + + } + return sandboxConfig, nil } @@ -1046,3 +1083,89 @@ func (a *annotationConfiguration) setUintWithCheck(f func(uint64) error) error { } return nil } + +// CalculateSandboxSizing will calculate the number of CPUs and amount of Memory that should +// be added to the VM if sandbox annotations are provided with this sizing details +func CalculateSandboxSizing(spec *specs.Spec) (numCPU, memSizeMB uint32) { + var memory, quota int64 + var period uint64 + var err error + + if spec == nil || spec.Annotations == nil { + return 0, 0 + } + + // For each annotation, if it isn't defined, or if there's an error in parsing, we'll log + // a warning and continue the calculation with 0 value. We expect values like, + // Annotations[SandboxMem] = "1048576" + // Annotations[SandboxCPUPeriod] = "100000" + // Annotations[SandboxCPUQuota] = "220000" + // ... to result in VM resources of 1 (MB) for memory, and 3 for CPU (2200 mCPU rounded up to 3). + annotation, ok := spec.Annotations[ctrAnnotations.SandboxCPUPeriod] + if ok { + period, err = strconv.ParseUint(annotation, 10, 32) + if err != nil { + ociLog.Warningf("sandbox-sizing: failure to parse SandboxCPUPeriod: %s", annotation) + period = 0 + } + } + + annotation, ok = spec.Annotations[ctrAnnotations.SandboxCPUQuota] + if ok { + quota, err = strconv.ParseInt(annotation, 10, 32) + if err != nil { + ociLog.Warningf("sandbox-sizing: failure to parse SandboxCPUQuota: %s", annotation) + quota = 0 + } + } + + annotation, ok = spec.Annotations[ctrAnnotations.SandboxMem] + if ok { + memory, err = strconv.ParseInt(annotation, 10, 32) + if err != nil { + ociLog.Warningf("sandbox-sizing: failure to parse SandboxMem: %s", annotation) + memory = 0 + } + } + + return calculateVMResources(period, quota, memory) +} + +// CalculateContainerSizing will calculate the number of CPUs and amount of memory that is needed +// based on the provided LinuxResources +func CalculateContainerSizing(spec *specs.Spec) (numCPU, memSizeMB uint32) { + var memory, quota int64 + var period uint64 + + if spec == nil || spec.Linux == nil || spec.Linux.Resources == nil { + return 0, 0 + } + + resources := spec.Linux.Resources + + if resources.CPU != nil && resources.CPU.Quota != nil && resources.CPU.Period != nil { + quota = *resources.CPU.Quota + period = *resources.CPU.Period + } + + if resources.Memory != nil && resources.Memory.Limit != nil { + memory = *resources.Memory.Limit + } + + return calculateVMResources(period, quota, memory) +} + +func calculateVMResources(period uint64, quota int64, memory int64) (numCPU, memSizeMB uint32) { + numCPU = vcutils.CalculateVCpusFromMilliCpus(vcutils.CalculateMilliCPUs(quota, period)) + + if memory < 0 { + // While spec allows for a negative value to indicate unconstrained, we don't + // see this in practice. Since we rely only on default memory if the workload + // is unconstrained, we will treat as 0 for VM resource accounting. + ociLog.Infof("memory limit provided < 0, treating as 0 MB for VM sizing: %d", memory) + memSizeMB = 0 + } else { + memSizeMB = uint32(memory / 1024 / 1024) + } + return numCPU, memSizeMB +} diff --git a/src/runtime/pkg/oci/utils_test.go b/src/runtime/pkg/oci/utils_test.go index 95e962542..ea8128ed2 100644 --- a/src/runtime/pkg/oci/utils_test.go +++ b/src/runtime/pkg/oci/utils_test.go @@ -1061,3 +1061,149 @@ func TestParseAnnotationBoolConfiguration(t *testing.T) { } } } + +func getCtrResourceSpec(memory, quota int64, period uint64) *specs.Spec { + return &specs.Spec{ + Linux: &specs.Linux{ + Resources: &specs.LinuxResources{ + CPU: &specs.LinuxCPU{ + Quota: "a, + Period: &period, + }, + Memory: &specs.LinuxMemory{ + Limit: &memory, + }, + }, + }, + } + +} + +func makeSizingAnnotations(memory, quota, period string) *specs.Spec { + spec := specs.Spec{ + Annotations: make(map[string]string), + } + spec.Annotations[ctrAnnotations.SandboxCPUPeriod] = period + spec.Annotations[ctrAnnotations.SandboxCPUQuota] = quota + spec.Annotations[ctrAnnotations.SandboxMem] = memory + + return &spec +} + +func TestCalculateContainerSizing(t *testing.T) { + assert := assert.New(t) + + testCases := []struct { + spec *specs.Spec + expectedCPU uint32 + expectedMem uint32 + }{ + { + spec: nil, + expectedCPU: 0, + expectedMem: 0, + }, + { + spec: &specs.Spec{}, + expectedCPU: 0, + expectedMem: 0, + }, + { + spec: &specs.Spec{ + Linux: &specs.Linux{ + Resources: &specs.LinuxResources{ + CPU: &specs.LinuxCPU{}, + Memory: &specs.LinuxMemory{}, + }, + }, + }, + expectedCPU: 0, + expectedMem: 0, + }, + { + spec: getCtrResourceSpec(1024*1024, 200, 100), + expectedCPU: 2, + expectedMem: 1, + }, + { + spec: getCtrResourceSpec(1024*1024*1024, 200, 1), + expectedCPU: 200, + expectedMem: 1024, + }, + { + spec: getCtrResourceSpec(-1*1024*1024*1024, 200, 1), + expectedCPU: 200, + expectedMem: 0, + }, + { + spec: getCtrResourceSpec(0, 10, 0), + expectedCPU: 0, + expectedMem: 0, + }, + { + spec: getCtrResourceSpec(-1, 10, 1), + expectedCPU: 10, + expectedMem: 0, + }, + } + + for _, tt := range testCases { + + cpu, mem := CalculateContainerSizing(tt.spec) + assert.Equal(tt.expectedCPU, cpu, "unexpected CPU") + assert.Equal(tt.expectedMem, mem, "unexpected memory") + } +} + +func TestCalculateSandboxSizing(t *testing.T) { + assert := assert.New(t) + + testCases := []struct { + spec *specs.Spec + expectedCPU uint32 + expectedMem uint32 + }{ + { + spec: nil, + expectedCPU: 0, + expectedMem: 0, + }, + { + spec: &specs.Spec{}, + expectedCPU: 0, + expectedMem: 0, + }, + { + spec: makeSizingAnnotations("1048576", "200", "100"), + expectedCPU: 2, + expectedMem: 1, + }, + { + spec: makeSizingAnnotations("1024", "200", "1"), + expectedCPU: 200, + expectedMem: 0, + }, + { + spec: makeSizingAnnotations("foobar", "200", "spaghetti"), + expectedCPU: 0, + expectedMem: 0, + }, + { + spec: makeSizingAnnotations("-1048576", "-100", "1"), + expectedCPU: 0, + expectedMem: 0, + }, + { + spec: makeSizingAnnotations("-1", "100", "1"), + expectedCPU: 100, + expectedMem: 0, + }, + } + + for _, tt := range testCases { + + cpu, mem := CalculateSandboxSizing(tt.spec) + assert.Equal(tt.expectedCPU, cpu, "unexpected CPU") + assert.Equal(tt.expectedMem, mem, "unexpected memory") + } +} diff --git a/src/runtime/virtcontainers/sandbox.go b/src/runtime/virtcontainers/sandbox.go index 3574d28ea..6dabac5e1 100644 --- a/src/runtime/virtcontainers/sandbox.go +++ b/src/runtime/virtcontainers/sandbox.go @@ -99,6 +99,17 @@ type SandboxStats struct { Cpus int } +type SandboxResourceSizing struct { + // The number of CPUs required for the sandbox workload(s) + WorkloadCPUs uint32 + // The base number of CPUs for the VM that are assigned as overhead + BaseCPUs uint32 + // The amount of memory required for the sandbox workload(s) + WorkloadMemMB uint32 + // The base amount of memory required for that VM that is assigned as overhead + BaseMemMB uint32 +} + // SandboxConfig is a Sandbox configuration. type SandboxConfig struct { // Volumes is a list of shared volumes between the host and the Sandbox. @@ -132,6 +143,11 @@ type SandboxConfig struct { HypervisorConfig HypervisorConfig + SandboxResources SandboxResourceSizing + + // StaticResourceMgmt indicates if the shim should rely on statically sizing the sandbox (VM) + StaticResourceMgmt bool + ShmSize uint64 VfioMode config.VFIOModeType @@ -1573,7 +1589,7 @@ func (s *Sandbox) createContainers(ctx context.Context) error { } // Update resources after having added containers to the sandbox, since - // container status is requiered to know if more resources should be added. + // container status is required to know if more resources should be added. if err := s.updateResources(ctx); err != nil { return err } @@ -1909,6 +1925,10 @@ func (s *Sandbox) updateResources(ctx context.Context) error { return fmt.Errorf("sandbox config is nil") } + if s.config.StaticResourceMgmt { + s.Logger().Debug("no resources updated: static resource management is set") + return nil + } sandboxVCPUs, err := s.calculateSandboxCPUs() if err != nil { return err From aa3fae1397203f3aad559ef50945c5dc4ba702e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Wed, 26 Jan 2022 20:38:31 +0100 Subject: [PATCH 339/385] kata-deploy: Fix the tag replacement logic MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When building a non-stable release, the tag is **always** "latest¨, instead of the version. The same magic done for setting the correct tags up should be done for replacing the tag on the kata-deploy and kata-cleanup yaml files, as part of the kata-deploy test. Fixes: #3559 Signed-off-by: Fabiano Fidêncio --- tools/packaging/kata-deploy/action/test-kata.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tools/packaging/kata-deploy/action/test-kata.sh b/tools/packaging/kata-deploy/action/test-kata.sh index defc67268..7484ee36d 100755 --- a/tools/packaging/kata-deploy/action/test-kata.sh +++ b/tools/packaging/kata-deploy/action/test-kata.sh @@ -99,6 +99,14 @@ function test_kata() { YAMLPATH="./tools/packaging/kata-deploy/" VERSION=$(cat ./VERSION) + # kata-deploy.yaml and kata-cleanup.yaml do not have tags for the non-stable releases, thus + # in this cases, let's ensure we use "latest" as version. + # For more details, please, see: + # https://github.com/kata-containers/kata-containers/blob/f7c7dc8d33288e588b284ae4820df342aa8e2d74/tools/packaging/release/update-repository-version.sh#L143-L179 + if [[ $VERSION =~ "alpha"|"rc" ]]; + then + VERSION="latest" + fi # This action could be called in two contexts: # 1. Packaging workflows: testing in packaging repository, where we assume yaml/packaging From 7c956e0d27f6b91af6a10d388596fda146243cd2 Mon Sep 17 00:00:00 2001 From: "James O. D. Hunt" Date: Fri, 28 Jan 2022 10:39:51 +0000 Subject: [PATCH 340/385] virtcontainers: Enable initrd for Cloud Hypervisor Since CH has supported booting with an initramfs since version 0.7.0 [1], allow an `initrd=` to be specified. Fixes: #3566. [1] - https://github.com/cloud-hypervisor/cloud-hypervisor/releases/tag/v0.7.0 Signed-off-by: James O. D. Hunt --- src/runtime/pkg/katautils/config.go | 9 ++---- src/runtime/virtcontainers/clh.go | 24 ++++++++++---- src/runtime/virtcontainers/clh_test.go | 32 +++++++++++++++++++ .../virtcontainers/virtcontainers_test.go | 2 ++ 4 files changed, 53 insertions(+), 14 deletions(-) diff --git a/src/runtime/pkg/katautils/config.go b/src/runtime/pkg/katautils/config.go index 67fc685dc..495404667 100644 --- a/src/runtime/pkg/katautils/config.go +++ b/src/runtime/pkg/katautils/config.go @@ -778,14 +778,9 @@ func newClhHypervisorConfig(h hypervisor) (vc.HypervisorConfig, error) { return vc.HypervisorConfig{}, err } - if initrd != "" { + if image == "" && initrd == "" { return vc.HypervisorConfig{}, - errors.New("having an initrd defined in the configuration file is not supported") - } - - if image == "" { - return vc.HypervisorConfig{}, - errors.New("image must be defined in the configuration file") + errors.New("image or initrd must be defined in the configuration file") } firmware, err := h.firmware() diff --git a/src/runtime/virtcontainers/clh.go b/src/runtime/virtcontainers/clh.go index a3cdf02f6..da6e73e3e 100644 --- a/src/runtime/virtcontainers/clh.go +++ b/src/runtime/virtcontainers/clh.go @@ -284,16 +284,26 @@ func (clh *cloudHypervisor) CreateVM(ctx context.Context, id string, networkNS N return err } - if imagePath == "" { - return errors.New("image path is empty") + initrdPath, err := clh.config.InitrdAssetPath() + if err != nil { + return err } - pmem := chclient.NewPmemConfig(imagePath) - *pmem.DiscardWrites = true - if clh.vmconfig.Pmem != nil { - *clh.vmconfig.Pmem = append(*clh.vmconfig.Pmem, *pmem) + if imagePath != "" { + pmem := chclient.NewPmemConfig(imagePath) + *pmem.DiscardWrites = true + + if clh.vmconfig.Pmem != nil { + *clh.vmconfig.Pmem = append(*clh.vmconfig.Pmem, *pmem) + } else { + clh.vmconfig.Pmem = &[]chclient.PmemConfig{*pmem} + } + } else if initrdPath != "" { + initrd := chclient.NewInitramfsConfig(initrdPath) + + clh.vmconfig.SetInitramfs(*initrd) } else { - clh.vmconfig.Pmem = &[]chclient.PmemConfig{*pmem} + return errors.New("no image or initrd specified") } // Use serial port as the guest console only in debug mode, diff --git a/src/runtime/virtcontainers/clh_test.go b/src/runtime/virtcontainers/clh_test.go index b0de2ae9b..f9452cbd3 100644 --- a/src/runtime/virtcontainers/clh_test.go +++ b/src/runtime/virtcontainers/clh_test.go @@ -229,11 +229,43 @@ func TestCloudHypervisorCleanupVM(t *testing.T) { assert.True(os.IsNotExist(err), "persist.GetDriver() unexpected error") } +func TestClhCreateVMWithInitrd(t *testing.T) { + assert := assert.New(t) + + clhConfig, err := newClhConfig() + assert.NoError(err) + clhConfig.ImagePath = "" + clhConfig.InitrdPath = testClhInitrdPath + + store, err := persist.GetDriver() + assert.NoError(err) + + clhConfig.VMStorePath = store.RunVMStoragePath() + clhConfig.RunStorePath = store.RunStoragePath() + + clh := &cloudHypervisor{ + config: clhConfig, + } + + sandbox := &Sandbox{ + ctx: context.Background(), + id: "testSandbox", + config: &SandboxConfig{ + HypervisorConfig: clhConfig, + }, + } + + err = clh.CreateVM(context.Background(), sandbox.id, NetworkNamespace{}, &sandbox.config.HypervisorConfig) + assert.NoError(err) + assert.Exactly(clhConfig, clh.config) +} + func TestClhCreateVM(t *testing.T) { assert := assert.New(t) clhConfig, err := newClhConfig() assert.NoError(err) + assert.NotEmpty(clhConfig.ImagePath) store, err := persist.GetDriver() assert.NoError(err) diff --git a/src/runtime/virtcontainers/virtcontainers_test.go b/src/runtime/virtcontainers/virtcontainers_test.go index 84f0387dd..cb03e2351 100644 --- a/src/runtime/virtcontainers/virtcontainers_test.go +++ b/src/runtime/virtcontainers/virtcontainers_test.go @@ -44,6 +44,7 @@ var testQemuImagePath = "" var testQemuPath = "" var testClhKernelPath = "" var testClhImagePath = "" +var testClhInitrdPath = "" var testClhPath = "" var testAcrnKernelPath = "" var testAcrnImagePath = "" @@ -157,6 +158,7 @@ func TestMain(m *testing.M) { testVirtiofsdPath = filepath.Join(testDir, testBundle, testVirtiofsd) testClhKernelPath = filepath.Join(testDir, testBundle, testKernel) testClhImagePath = filepath.Join(testDir, testBundle, testImage) + testClhInitrdPath = filepath.Join(testDir, testBundle, testInitrd) testClhPath = filepath.Join(testDir, testBundle, testHypervisor) setupClh() From 14e7f52a91635c1c78560eea9f833bc8278e3ca5 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Thu, 25 Nov 2021 10:50:53 +0100 Subject: [PATCH 341/385] virtcontainers: Split the rootless package into OS specific parts Move the netns specific bits into a Linux specific file. Fixes: #3607 Signed-off-by: Samuel Ortiz Signed-off-by: Eric Ernst --- .../virtcontainers/pkg/rootless/rootless.go | 118 -------------- .../pkg/rootless/rootless_linux.go | 145 ++++++++++++++++++ 2 files changed, 145 insertions(+), 118 deletions(-) create mode 100644 src/runtime/virtcontainers/pkg/rootless/rootless_linux.go diff --git a/src/runtime/virtcontainers/pkg/rootless/rootless.go b/src/runtime/virtcontainers/pkg/rootless/rootless.go index 62a13675f..fd17ccb32 100644 --- a/src/runtime/virtcontainers/pkg/rootless/rootless.go +++ b/src/runtime/virtcontainers/pkg/rootless/rootless.go @@ -21,20 +21,11 @@ package rootless import ( "context" - "crypto/rand" - "fmt" "os" - "path/filepath" - "runtime" - "strings" "sync" - "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/utils" - - "github.com/containernetworking/plugins/pkg/ns" "github.com/opencontainers/runc/libcontainer/userns" "github.com/sirupsen/logrus" - "golang.org/x/sys/unix" ) var ( @@ -93,112 +84,3 @@ func isRootlessFunc() bool { func GetRootlessDir() string { return rootlessDir } - -// Creates a new persistent network namespace and returns an object -// representing that namespace, without switching to it -func NewNS() (ns.NetNS, error) { - nsRunDir := filepath.Join(GetRootlessDir(), "netns") - - b := make([]byte, 16) - _, err := rand.Reader.Read(b) - if err != nil { - return nil, fmt.Errorf("failed to generate random netns name: %v", err) - } - - // Create the directory for mounting network namespaces - // This needs to be a shared mountpoint in case it is mounted in to - // other namespaces (containers) - err = utils.MkdirAllWithInheritedOwner(nsRunDir, 0755) - if err != nil { - return nil, err - } - - nsName := fmt.Sprintf("net-%x-%x-%x-%x-%x", b[0:4], b[4:6], b[6:8], b[8:10], b[10:]) - - // create an empty file at the mount point - nsPath := filepath.Join(nsRunDir, nsName) - mountPointFd, err := os.Create(nsPath) - if err != nil { - return nil, err - } - if err := mountPointFd.Close(); err != nil { - return nil, err - } - - // Ensure the mount point is cleaned up on errors; if the namespace - // was successfully mounted this will have no effect because the file - // is in-use - defer func() { - _ = os.RemoveAll(nsPath) - }() - - var wg sync.WaitGroup - wg.Add(1) - - // do namespace work in a dedicated goroutine, so that we can safely - // Lock/Unlock OSThread without upsetting the lock/unlock state of - // the caller of this function - go (func() { - defer wg.Done() - runtime.LockOSThread() - // Don't unlock. By not unlocking, golang will kill the OS thread when the - // goroutine is done (for go1.10+) - - threadNsPath := getCurrentThreadNetNSPath() - - var origNS ns.NetNS - origNS, err = ns.GetNS(threadNsPath) - if err != nil { - rootlessLog.Warnf("cannot open current network namespace %s: %q", threadNsPath, err) - return - } - defer func() { - if err := origNS.Close(); err != nil { - rootlessLog.Errorf("unable to close namespace: %q", err) - } - }() - - // create a new netns on the current thread - err = unix.Unshare(unix.CLONE_NEWNET) - if err != nil { - rootlessLog.Warnf("cannot create a new network namespace: %q", err) - return - } - - // Put this thread back to the orig ns, since it might get reused (pre go1.10) - defer func() { - if err := origNS.Set(); err != nil { - if IsRootless() && strings.Contains(err.Error(), "operation not permitted") { - // When running in rootless mode it will fail to re-join - // the network namespace owned by root on the host. - return - } - rootlessLog.Warnf("unable to reset namespace: %q", err) - } - }() - - // bind mount the netns from the current thread (from /proc) onto the - // mount point. This causes the namespace to persist, even when there - // are no threads in the ns. - err = unix.Mount(threadNsPath, nsPath, "none", unix.MS_BIND, "") - if err != nil { - err = fmt.Errorf("failed to bind mount ns at %s: %v", nsPath, err) - } - })() - wg.Wait() - - if err != nil { - unix.Unmount(nsPath, unix.MNT_DETACH) - return nil, fmt.Errorf("failed to create namespace: %v", err) - } - - return ns.GetNS(nsPath) -} - -// getCurrentThreadNetNSPath copied from pkg/ns -func getCurrentThreadNetNSPath() string { - // /proc/self/ns/net returns the namespace of the main thread, not - // of whatever thread this goroutine is running on. Make sure we - // use the thread's net namespace since the thread is switching around - return fmt.Sprintf("/proc/%d/task/%d/ns/net", os.Getpid(), unix.Gettid()) -} diff --git a/src/runtime/virtcontainers/pkg/rootless/rootless_linux.go b/src/runtime/virtcontainers/pkg/rootless/rootless_linux.go new file mode 100644 index 000000000..5d86045fa --- /dev/null +++ b/src/runtime/virtcontainers/pkg/rootless/rootless_linux.go @@ -0,0 +1,145 @@ +// +// Copyright (c) 2019 Intel Corporation +// +// SPDX-License-Identifier: Apache-2.0 +// + +// Copyright 2015-2019 CNI authors +// +// 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. + +package rootless + +import ( + "crypto/rand" + "fmt" + "os" + "path/filepath" + "runtime" + "strings" + "sync" + + "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/utils" + + "github.com/containernetworking/plugins/pkg/ns" + "golang.org/x/sys/unix" +) + +// Creates a new persistent network namespace and returns an object +// representing that namespace, without switching to it +func NewNS() (ns.NetNS, error) { + nsRunDir := filepath.Join(GetRootlessDir(), "netns") + + b := make([]byte, 16) + _, err := rand.Reader.Read(b) + if err != nil { + return nil, fmt.Errorf("failed to generate random netns name: %v", err) + } + + // Create the directory for mounting network namespaces + // This needs to be a shared mountpoint in case it is mounted in to + // other namespaces (containers) + err = utils.MkdirAllWithInheritedOwner(nsRunDir, 0755) + if err != nil { + return nil, err + } + + nsName := fmt.Sprintf("net-%x-%x-%x-%x-%x", b[0:4], b[4:6], b[6:8], b[8:10], b[10:]) + + // create an empty file at the mount point + nsPath := filepath.Join(nsRunDir, nsName) + mountPointFd, err := os.Create(nsPath) + if err != nil { + return nil, err + } + if err := mountPointFd.Close(); err != nil { + return nil, err + } + + // Ensure the mount point is cleaned up on errors; if the namespace + // was successfully mounted this will have no effect because the file + // is in-use + defer func() { + _ = os.RemoveAll(nsPath) + }() + + var wg sync.WaitGroup + wg.Add(1) + + // do namespace work in a dedicated goroutine, so that we can safely + // Lock/Unlock OSThread without upsetting the lock/unlock state of + // the caller of this function + go (func() { + defer wg.Done() + runtime.LockOSThread() + // Don't unlock. By not unlocking, golang will kill the OS thread when the + // goroutine is done (for go1.10+) + + threadNsPath := getCurrentThreadNetNSPath() + + var origNS ns.NetNS + origNS, err = ns.GetNS(threadNsPath) + if err != nil { + rootlessLog.Warnf("cannot open current network namespace %s: %q", threadNsPath, err) + return + } + defer func() { + if err := origNS.Close(); err != nil { + rootlessLog.Errorf("unable to close namespace: %q", err) + } + }() + + // create a new netns on the current thread + err = unix.Unshare(unix.CLONE_NEWNET) + if err != nil { + rootlessLog.Warnf("cannot create a new network namespace: %q", err) + return + } + + // Put this thread back to the orig ns, since it might get reused (pre go1.10) + defer func() { + if err := origNS.Set(); err != nil { + if IsRootless() && strings.Contains(err.Error(), "operation not permitted") { + // When running in rootless mode it will fail to re-join + // the network namespace owned by root on the host. + return + } + rootlessLog.Warnf("unable to reset namespace: %q", err) + } + }() + + // bind mount the netns from the current thread (from /proc) onto the + // mount point. This causes the namespace to persist, even when there + // are no threads in the ns. + err = unix.Mount(threadNsPath, nsPath, "none", unix.MS_BIND, "") + if err != nil { + err = fmt.Errorf("failed to bind mount ns at %s: %v", nsPath, err) + } + })() + wg.Wait() + + if err != nil { + unix.Unmount(nsPath, unix.MNT_DETACH) + return nil, fmt.Errorf("failed to create namespace: %v", err) + } + + return ns.GetNS(nsPath) +} + +// getCurrentThreadNetNSPath copied from pkg/ns +func getCurrentThreadNetNSPath() string { + // /proc/self/ns/net returns the namespace of the main thread, not + // of whatever thread this goroutine is running on. Make sure we + // use the thread's net namespace since the thread is switching around + return fmt.Sprintf("/proc/%d/task/%d/ns/net", os.Getpid(), unix.Gettid()) +} From bcce1a1911fea04b4c19ad8f3d10cb3a3e423391 Mon Sep 17 00:00:00 2001 From: bin Date: Sat, 29 Jan 2022 09:20:30 +0800 Subject: [PATCH 342/385] versions: update Rust to 1.58.1 Update Rust to 1.58.1 to fix CVE-2022-21658. Fixes: #3570 Signed-off-by: bin --- src/agent/rustjail/src/container.rs | 4 ++-- src/agent/rustjail/src/mount.rs | 2 +- src/agent/src/namespace.rs | 7 +------ src/agent/src/sandbox.rs | 5 +---- src/agent/src/watcher.rs | 2 +- versions.yaml | 4 ++-- 6 files changed, 8 insertions(+), 16 deletions(-) diff --git a/src/agent/rustjail/src/container.rs b/src/agent/rustjail/src/container.rs index afee02840..5c3245c3f 100644 --- a/src/agent/rustjail/src/container.rs +++ b/src/agent/rustjail/src/container.rs @@ -685,8 +685,8 @@ fn do_init_child(cwfd: RawFd) -> Result<()> { Mode::from_bits_truncate(0), )?; unistd::close(fifofd)?; - let mut buf: &mut [u8] = &mut [0]; - unistd::read(fd, &mut buf)?; + let buf: &mut [u8] = &mut [0]; + unistd::read(fd, buf)?; } // With NoNewPrivileges, we should set seccomp as close to diff --git a/src/agent/rustjail/src/mount.rs b/src/agent/rustjail/src/mount.rs index 883ad6144..e8ddb3a6b 100644 --- a/src/agent/rustjail/src/mount.rs +++ b/src/agent/rustjail/src/mount.rs @@ -728,7 +728,7 @@ fn secure_join(rootfs: &str, unsafe_path: &str) -> String { path.push(it); if let Ok(v) = path.read_link() { if v.is_absolute() { - path = PathBuf::from(format!("{}{}", rootfs, v.to_str().unwrap().to_string())); + path = PathBuf::from(format!("{}{}", rootfs, v.to_str().unwrap())); } else { path.pop(); for it in v.iter() { diff --git a/src/agent/src/namespace.rs b/src/agent/src/namespace.rs index fd8bfbec2..dc6ebe63b 100644 --- a/src/agent/src/namespace.rs +++ b/src/agent/src/namespace.rs @@ -23,12 +23,7 @@ pub const NSTYPEPID: &str = "pid"; #[instrument] pub fn get_current_thread_ns_path(ns_type: &str) -> String { - format!( - "/proc/{}/task/{}/ns/{}", - getpid().to_string(), - gettid().to_string(), - ns_type - ) + format!("/proc/{}/task/{}/ns/{}", getpid(), gettid(), ns_type) } #[derive(Debug)] diff --git a/src/agent/src/sandbox.rs b/src/agent/src/sandbox.rs index 8cede6a44..4dfb2eda5 100644 --- a/src/agent/src/sandbox.rs +++ b/src/agent/src/sandbox.rs @@ -436,11 +436,8 @@ fn online_cpus(logger: &Logger, num: i32) -> Result { r"cpu[0-9]+", num - onlined_count, ); - if r.is_err() { - return r; - } - onlined_count += r.unwrap(); + onlined_count += r?; if onlined_count == num { info!(logger, "online {} CPU(s) after {} retries", num, i); return Ok(num); diff --git a/src/agent/src/watcher.rs b/src/agent/src/watcher.rs index 2476ac23c..597c0a834 100644 --- a/src/agent/src/watcher.rs +++ b/src/agent/src/watcher.rs @@ -284,7 +284,7 @@ impl Storage { .with_context(|| { format!( "Failed to strip prefix: {} - {}", - source_file_path.as_ref().display().to_string(), + source_file_path.as_ref().display(), &self.source_mount_point.display() ) })?; diff --git a/versions.yaml b/versions.yaml index 50b12a2d6..ec0c070a5 100644 --- a/versions.yaml +++ b/versions.yaml @@ -260,12 +260,12 @@ languages: rust: description: "Rust language" notes: "'version' is the default minimum version used by this project." - version: "1.45.0" + version: "1.58.1" meta: description: | 'newest-version' is the latest version known to work when building Kata - newest-version: "1.54.0" + newest-version: "1.58.1" specs: description: "Details of important specifications" From 5083ae65a09e9cea17af22b390e4f5c0e6b3b1ac Mon Sep 17 00:00:00 2001 From: Tim Zhang Date: Fri, 28 Jan 2022 18:24:23 +0800 Subject: [PATCH 343/385] workflows: stop checking revert commit The commit message of a revert commit usually generated by `git revert`, we should consider this as legal. Consider the commit as the merge commit if the subject starts with 'Reject "' Follow the pr kata-containers/tests/#3938, the suttle diffrence is we skip all commit checks for revert commit including fixes checking and subsystem checking. Because the commit was reverted must have passed the check so the revert-commit should have the Fixes and Subsystem. Fixes: #3568 Fixes: kata-containers/tests#3934 Signed-off-by: Tim Zhang --- .github/workflows/commit-message-check.yaml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/commit-message-check.yaml b/.github/workflows/commit-message-check.yaml index 7abb5d851..294e983ae 100644 --- a/.github/workflows/commit-message-check.yaml +++ b/.github/workflows/commit-message-check.yaml @@ -22,9 +22,15 @@ jobs: - name: Get PR Commits if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }} id: 'get-pr-commits' - uses: tim-actions/get-pr-commits@v1.0.0 + uses: tim-actions/get-pr-commits@v1.2.0 with: token: ${{ secrets.GITHUB_TOKEN }} + # Filter out revert commits + # The format of a revert commit is as follows: + # + # Revert "" + # + filter_out_pattern: '^Revert "' - name: DCO Check if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }} From 26e08b273c54c2e218c246ddb8228276f9e6a026 Mon Sep 17 00:00:00 2001 From: Snir Sheriber Date: Tue, 1 Feb 2022 11:36:28 +0200 Subject: [PATCH 344/385] release: Kata Containers 2.4.0-alpha2 - virtcontainers: Enable initrd for Cloud Hypervisor - versions: update Rust to 1.58.1 - Sandbox sizing feature - kata-deploy: Fix the tag replacement logic - docs: Update networking details in the architecture doc - Fix and re-enable s390x GoVMM tests - runtime: fix handling container spec's memory limit - ci: Pass function arguments in static-checks.sh - docs: Remove docker run and sysctl limitation - runtime: update runc and image-spec dependencies - agent: resolve unused variables in tests - Upgrade to Cloud Hypervisor v21.0 - runtime: rectify passing empty options to -ldflags - osbuilder: Remove libseccomp from Dockerfile - agent: fix the issue of creating new namespaces for agent - docs: Remove kata-pkgsync reference - docs: Redirect glossary to the wiki - workflows: Use base instead of head ref for kata-deploy-test - govmm: Use it from our own repo - tools: Fix groupname if it differs from username - workflows: Fix typo in kata-deploy-push action - release: Escape backticks in Libseccomp Notices - packaging: Remove kata-pkgsync tool - govmm: Bring the project in - version: bump to kubernetes 1.23 - vendor: update govmm - workflows: Ensure force-skip-ci skips all actions - runtime: -Wl,--s390-pgste for s390x - workflows: Use the correct branch ref on test kata-deploy - update apiVersion - scripts: Use shebang /usr/bin/env bash - packaging: Make kernel config accessible to guest - docs: fix a typo in host-cgroups.md doc - qemu: add support for SGX - experimentally enable the vcpu-hotplug for arm in qemu side - Remove all the non-tested rootfs - docs: Remove ccloudvm reference - runtime: Provide protection for shared data - kata-deploy: validate conf file can be created - runtime: it should rollback when failed in Sandbox AddInterface - libs: add some generated files to .gitignore - runtime: close span before return from function in case of error - packaging: Remove ccloudvm instructions and script - docs: Default machine type is q35 meanwhile - CI: Revert "CI: Switch to a mirror as gnu.org is down" - agent: fix the broken protobuf generation code - packaging: Remove obs packages testing for kata 2.0 - runtime: Remove docker comments for kata 2.0 configuration.tomls - docs: fix agent proto file path - qemu: update readonly flag for block devices - qemu: only set wait parameter for server mode socket based char device - qemu: Fix 32 bit int overflow in test file - qemu: Add support for legacy serial device - qemu: Remove -realtime in favor of -overcommit - Add clean shutdown support - govmm/qemu: Let IO/memory reservations be specified for bridge devices - QMP: Add ExecuteBlockdevAddWithDriverCache - qemu: Fix iommu_platform for CCW - qemu: Add credentials to qemu Cmd - Don't use deprecated 'props' argument to QMP 'object-add' - Use 'host_device' driver for blockdev backends - add support for "sandbox" feature to qemu - qemu: support read-only nvdimm - Support golang 1.16 - qemu: Consistent parameter building - qemu: Allow hot-plugging memory devices on PCI bridges - qemu: Add support for PEF - qemu: Add support for Secure Execution - qemu: VhostUserDevice CCW device numbers - qmp: remove chatty log - Fix qemu commandline issue with empty romfile - qemu: add support for tdx-guest object - qemu: Append memory backend for non-DIMM setups - qemu: add support for device loaders - qemu: support QEMU 6 - qmp: Add ro argument for block-device hotplug funcs - qemu: add arm64 to support list of dimm - qemu: enable "-pflash" - qemu: add pvpanic and dump guest memory support - Add serial ID to blk device - Make fw_cfg a slice - contributors: remove CONTRIBUTORS.md file - misc: Update for new GitHub organisation name - qemu: add fw_cfg flag to config - Add qom-get function - typo fix - Add support for hot-plugging IBM Adjunct Processor (AP) devices - github: enable github actions - travis: Run coveralls after success - qemu: add iommu_platform knob for qemuParams - qemu: Add NoReboot config Knob for qemuParams - Add multidevs option to fsdev - qemu/qmp: use boolean type for the vhost - qemu: add IOMMU Device - Enable Numa support for Power (ppc64le) architecture - qemu: Add max_ports option to virtio-serial device - Add rt clock definition for rtc clock in qemu - qemu: Add microvm machine type support - qemu: add pmem flag to memory-backend-file - Refactor code to support multiple virtio transports at runtime - qemu: Don't set ".cache-size=" when CacheSize is 0 - qemu: Add pcie-root-port device support. - qmp: Add ExecMemdevAdd and ExecQomSet API - qmp: add ExecutePCIVhostUserDevAdd and ExecuteChardevDel to hotplug vhost-user device - s390x: add s390x travis support - virtio-blk: Add support for share-rw flag - s390x: dimm not supported - improve qemu interaction - qmp: support command 'query-qmp-schema' - qmp: add checks for the CPU toplogy - qemu: support x86 SMP die - Support x-pci-vendor-id and x-pci-device-id pass to qemu - Support for virtio-blk-ccw - Allow sharing of memory backend file - qemu: add migration incoming defer support - qmp: add virtio-blk multiqueue - qemu: fix the issue of wrong driver for VirtioBlock - qemu: use MiB instead of Gib for virtio-fs cache size - qemu/qmp: re-implement mainLoop - qemu/qmp: fix readLoop() reuse scanner.Bytes() underlying array problem - govmm: add VhostUserFS vhost-user device type - qmp: Conditionally pass threadID and socketID when CPU device add - Fix travis - qmp: Add nvdimm support - qemu: Allow disable-modern option from QMP - qmp: Output error detail when execute QMP command failed - Run tests for the s390x build - Contributors: Add Clare Chen to CONTRIBUTORS.md - Verify govmm builds on s390x - Contributors: Add my name - qemu: Add s390x support - Update file headers , CONTRIBUTING.md and add CONTRIBUTORS.md - qmp: fix mem-path properties for hotplug memory. - qemu: change Context ID for Vsock to uint64 - qemu/qmp: preparation for s390x support - qemu/qmp: add new function ExecuteBlockdevAddWithCache - qemu: add support for pidfile option - qemu: Fix virtio-net-pci QMP command - qemu: Add support for romfile option - Update guidelines on security issue reporting - qemu: Add virtio-balloon device suppport. - qemu: Show full path to qemu binary at launch time - qemu: Fix the support of PCIe bridge - qmp: add ExecuteQueryMigration - qemu: skip setting system memory if it is set via dimm device - qmp: add "query-cpus" support - qemu/qmp: add vfio mediated device support on root bus - qemu/image: Reduce permissions of .iso creation dir - qemu/qmp: nic can works without vhost - qemu: Add rng device . - qemu/qmp: support query-memory-devices qmp command. - govmm: modify govmm to be compatible with qemu 2.8 - qemu/qmp: support hotplug a nic whose qdisc is mq - qmp: Remind users that you must first call ExecuteQMPCapabilities() - qemu/qmp: Add netdev_add with chardev support - Add some negative test cases - qemu: Use the supplied context.Context for launching - disk: Add --share-rw option for hotplugging disks - qemu/qmp: add vfio mediated device support - qemu: Do not try and generate invalid RTC parameters - qemu/qmp: add addr and bus to hotplug vsock devices - qemu/qmp: add function for hotplug network by fds - qemu/qmp: implement functions to hotplug chardevs and serial ports - qemu: add vhostfd and disable-modern to vsock hotplug - Add two additional static analysis tools to the travis builds - qemu/qmp: implement function for hotplug network - qemu: add vhostfd and disable-modern to vhost-vsock-pci - qemu/qmp: implement function to hotplug vsock-pci - Add APIs to enable vm templating - qemu: Add qemu parameter for PCI address for a bridge. - Add ability to associate a SCSI controller device with an iothread - qemu: add initrd support - qemu: add DisableModern to SCSIController - qemu: add extra options for the machine type - scsi: Add function to send device_add qmp command for a scsi device - Compute coverage statistics for unit tests in Travis builds - scsi: Add a scsi controller device - qemu: Add VSOCK support - Vhost-user: add block device support - qemu: Add maxcpus attribute to -smp - Add badges to the README.md file - Enable Travis builds - qemu: introduce vhost-user handling bcce1a19 versions: update Rust to 1.58.1 7c956e0d virtcontainers: Enable initrd for Cloud Hypervisor aa3fae13 kata-deploy: Fix the tag replacement logic 8cde5413 runtime: introduce static sandbox resource management 13eb1f81 docs: describe vCPU handling when hotplug is unavailable c3e97a0a config: updates to configuration clh, fc toml template 75ae5361 docs: Update networking details in the architecture doc fc0e0951 runtime: fix handling container spec's memory limit 7af40fbc docs: Remove docker run, sysctl and docker daemon limitations 17211979 ci: Pass function arguments in static-checks.sh 5643c6dc runtime: update runc and image-spec dependencies 2f37165f govmm: Unite VirtioNet tests 4a428fd1 govmm: readonly=on in s390x blkdev test 79ecebb2 govmm: TestAppendPCIBridgeDevice et al. on !s390x dc285ab1 govmm: Remove unnecessary comma in iommu_platform d23f2eb0 govmm: Revert "govmm: s390x: Skip broken tests" f52ce302 runtime: rectify passing empty options to -ldflags 2d799cbf virtcontainers: clh: Re-generate the client code 7e15e99d versions: Upgrade to Cloud Hypervisor v21.0 9c2f1de1 docs: Remove kata-pkgsync reference df6ae1e7 osbuilder: Remove libseccomp from Dockerfile 0338fc65 docs: Redirect glossary to the wiki 3924470c workflows: Use base instead of head ref for kata-deploy-test 5ce9011a govmm: s390x: Skip broken tests 8bcaed0b govmm: Adapt license headers to kata-containers 6dd65779 govmm: Ignore govet checks, at least for now de678a3a govmm: Remove non-relevant top files ec6655af govmm: Use govmm from our own pkg 8cc088b5 packaging: Remove kata-pkgsync tool a8b66de5 release: Escape backticks in Libseccomp Notices c3785f66 workflows: Fix typo in kata-deploy-push action f4a4c3c7 version: bump to kubernetes 1.23 49223e67 runtime: remove enable_swap option 7a879164 workflows: Ensure a label change re-triggers the actions d87ab14f workflows: Ensure force-skip-ci skips all actions 5285ac2b runtime: -Wl,--s390-pgste for s390x fc646434 workflows: Use the correct branch ref on test kata-deploy e347694f tools: Fix groupname if it differs from username 41e0c414 vendor: update govmm a5829a29 docs: fix a typo in host-cgroups.md doc 92773170 agent: resolve unused variables in tests 8939b0f8 qemu: add support for SGX 2d0ec00a Qemu: Enable the vcpu-hotplug for arm e22a4e2a packaging: Make kernel config accessible to guest adffd3f8 scripts: Use shebang /usr/bin/env bash e4b7a12b qat: Add Debian to the distro examples 6979d5be osbuilder: Remove gentoo rootfs-builder 22c1a093 osbuilder: Remove suse rootfs-builder 85dd5873 osbuilder: Remove fedora rootfs-builder 06fae29f osbuilder: Remove centos rootfs-builder 01005c5a docs: Remove ccloudvm reference 878ab93c runtime: Provide protection for shared data ac7acbf8 kata-deploy: validate conf file can be created 7e2bc4d7 packaging: Remove ccloudvm instructions and script 85f5ae19 runtime: close span before return from function in case of error 106df33f libs: add some generated files to .gitignore b133a236 runtime: it should rollback when failed in Sandbox AddInterface 7f546748 CI: Revert "CI: Switch to a mirror as gnu.org is down" c486c2ca agent: fix the broken protobuf generation code f6cdf464 docs: Default machine type is q35 meanwhile b48322d4 packaging: Remove obs packages testing for kata 2.0 ad16d75c runtime: Remove docker comments for kata 2.0 configuration.tomls 905e124b docs: fix agent proto file path ea1a1738 agent: fix the issue of creating new namespaces for agent b17f0739 qemu: update readonly flag for block devices b5b9de1d kata-deploy: Update API Version of RuntimeClass to v1 f971801b qemu: only set wait parameter for server mode socket based char device 82cc01d2 qemu: Fix 32 bit int overflow in test file 1d1a2313 qemu: Add support for legacy serial device 9a2bbeda qemu: Remove -realtime in favor of -overcommit fe83c208 qemu: Add support for --no-shutdown Knob 1ed52714 qmp: wait for POWERDOWN event in ExecuteSystemPowerdown() de039da2 govmm/qemu: Let IO/memory reservations be specified for bridge devices 5c7998db QMP: Add ExecuteBlockdevAddWithDriverCache 3a9a6749 qemu: Add credentials to qemu Cmd d27256f8 qmp: Don't use deprecated 'props' field for object-add d8cdf9aa qemu: Drop support for versions older than 5.0 18352c36 qemu: Fix iommu_platform for vhost user CCW 1b021929 Use 'host_device' driver for blockdev backends 9518675e add support for "sandbox" feature to qemu 335fa816 qemu: fix golangci-lint errors 61b63787 .github/workflows: reimplement github actions CI 9d6e7970 go: support go modules 0d21263a qemu: support read-only nvdimm ff34d283 qemu: Consistent parameter building 0e19ffb6 qemu: Allow hot-plugging memory devices on PCI bridges c135681d qemu: Add support for PEF 03b55ea5 qemu: Add support for Secure Execution 7a367dc0 qemu: Simplify (Object).Valid() a6cec2d3 qemu: add support for SevGuest object abd3c7ea qemu: VhostUserDevice CCW device numbers 3eaeda7f qemu: Refactor vhostuserDev.QemuParams 511cf58b Fix qemu commandline issue with empty romfile b3eac95b qmp: remove frequent, chatty log 31418940 qemu: add support for tdx-guest object 4b136f3f qemu: Append memory backend for non-DIMM setups 6213dea4 qemu: support QEMU 6 0d47025d qemu: add support for device loaders e2eb549f qmp: Add ro argument for block-device hotplug funcs 0592c825 qemu: add arm64 to support list of dimm 2079c15c qemu: enable "-pflash" b8cd7059 qmp: add dump-guest-memory support d7836877 qemu: add pvpanic device to get GUEST_PANICKED event 43d774d2 Add serial to blk device 8cb8b24c Make fw_cfg a slice cb0d3391 contributors: remove CONTRIBUTORS.md file 29ba5a90 qemu: add fw_cfg flag to config 9f309c2a misc: Update for new GitHub organisation name 3d46d08a Add qom-get function 39c372a2 Add support for hot-plugging IBM VFIO-AP devices f5bdd53c travis: disable amd64 jobs 1af1c0d7 github: enable github actions 4831c6e0 travis: Run coveralls after success cf0f05d2 qemu: add iommu_platform knob for qemuParams 6645baf2 qemu: Add NoReboot config Knob for qemuParams abca6f3c Add multidevs option to fsdev cc538766 qemu/qmp: use boolean type for the vhost e57e86e2 qemu: add IOMMU Device b2aa0225 Enable Numa support for Power (ppc64le) architecture 29529a5d Add rt clock definition for rtc clock in qemu 0e98b613 qemu: Add max_ports option to virtio-serial device 787c86b7 qemu: Add microvm machine type support 5378725f qemu: add pmem flag to memory-backend-file 3700c55d qemu: add block device readonly support 88a25a2d Refactor code to support multiple virtio transports at runtime 2ee53b00 qemu: Don't set ".cache-size=" when CacheSize is 0 f1252f6e qemu: Add pcie-root-port device support. 6667f4e9 qmp_test: Add TestExecMemdevAdd and TestExecQomSet 201fd0ae qmp: Add ExecMemdevAdd and ExecQomSet API e04be2cc qmp: add ExecutePCIVhostUserDevAdd API 13aeba09 qmp: support command 'chardev-remove' 6d6b2d88 s390x: add s390x travis support 175ac499 typo fix cb9f640b virtio-blk: Add support for share-rw flag 9463486d s390x: dimm not supported 164bd8cd test/fmt: drop extra newlines 73555a40 qmp: add query-status API 234e0edf qemu: fix memory prealloc handling 30bfcaaa qemu: add debug logfile 79e0d533 qmp: support command 'query-qmp-schema' 68cdf64f test: add cpu topology tests e0cf9d5c qmp: add checks for the CPU toplogy a5c11908 qemu: support x86 SMP die 8fd28e23 Support x-pci-vendor-id and x-pci-device-id pass to qemu 713d0d94 s390x: add virtio-blk-ccw type 65cc343f test: add devno in the tests for s390x 9cf98da0 s390x: add devno support 0c900f59 Allow sharing of memory backend file f695ddf8 qemu: add migration incoming defer support f0f18dd0 qmp: add virtio-blk multiqueue 7d3deea4 qemu: Add a virtio-blk-pci device driver support 058cda06 qemu: use MiB instead of Gib for virtio-fs cache size 694a7b1c qemu/qmp: re-implement mainLoop 5712b119 qemu/qmp: fix readLoop() reuse scanner.Bytes() underlying array problem 3c84b1da govmm: add VhostUserFS vhost-user device type 4692f6b9 qmp: Conditionally pass threadID and socketID when CPU device add 1f51b438 Update the versions of Go used to build GoVMM ad310f9f Fix staticcheck S1023 932fdc7f Fix staticcheck S1023 cb2ce933 Fix staticcheck S1008 f0172cd2 Fix staticcheck (S1002) 5f2e630b Fix staticcheck (S1025) 4beea513 Fix staticcheck (ST1005) errors 97fc3435 contributors: add my name c891f5f8 qmp: Add nvdimm support f9b31c0f qemu: Allow disable-modern option from QMP d6173077 Run tests for the s390x build b36b5a8f Contributors: Add Clare Chen to CONTRIBUTORS.md b41939c6 Contributors: Add my name dab4cf1d qmp: Add tests 5ea6da14 Verify govmm builds on s390x ee75813a contributors: add my name c80fc3b1 qemu: Add s390x support ca477a18 Update source file headers e68e0056 Update the CONTRIBUTING.md 2b7db547 Add the CONTRIBUTORS.md file b3b765cb qemu: test Valid for Vsock for Context ID 3becff5f qemu: change of ContextID from uint32 to uint64 f30fd135 qmp: Output error detail when execute QMP command failed 7da6a4c7 qmp: fix mem-path properties for hotplug memory. e4892e33 qemu/qmp: preparation for s390x support 110d2fa0 qemu/qmp: add new function ExecuteBlockdevAddWithCache a0b0c86e qmp_test: Change QMP version from 2.6 to 2.9 10c36a13 qemu: add support for pidfile option 9c819db5 qemu: Fix virtio-net-pci QMP command 7fdfc6a4 qemu: Add support for romfile option e74de3c7 Update guidelines on security issue reporting ec83abe6 qemu: Add virtio-balloon device suppport. 46970781 qemu: Show full path to qemu binary at launch time ef725050 qemu: Fix the support of PCIe bridge 56f645ea qmp: add ExecuteQueryMigration a429677a govmm: fix memory prealloc 1130aab8 qmp: add "query-cpus" support de5d2788 qemu/qmp: add vfio mediated device support on root bus de00d7a6 qemu/image: Reduce permissions of .iso creation dir 1a1fee75 qemu/qmp: nic can works without vhost 6c3d84ea qemu: Add virtio RNG device. b16291cf qemu/qmp: support query-memory-devices qmp command. ce070d11 govmm: modify govmm to be compatible with qemu 2.8 0286ff9e qemu/qmp: support hotplug a nic whose qdisc is mq 8515ae48 qmp: Remind users that you must first call ExecuteQMPCapabilities() 21504d31 qemu/qmp: Add netdev_add with chardev support ed34f616 Add some negative test cases for qmp.go 17cacc72 Add negative test cases for qemu.go 2706a07b qemu: Use the supplied context.Context for launching e46092e0 qemu: Do not try and generate invalid RTC parameters fcaf61dc qemu/qmp: add vfio mediated device support 4461c459 disk: Add --share-rw option for hotplugging disks 68519998 qemu/qmp: add addr and bus to hotplug vsock devices 10efa841 qemu/qmp: add function for hotplug network by fds 80ed88ed qemu/qmp: implement function to hotplug serial ports ca46f21f qemu/qmp: implement function to hotplug character devices 03f1a1c3 qemu/qmp: implement getfd 84b212f1 qemu: add vhostfd and disable-modern to vsock hotplug 12dfa872 qemu/qmp: implement function for hotplug network 3830b441 qemu: add vhostfd and disable-modern to vhost-vsock-pci f700a97b qemu/qmp: implement function to hotplug vsock-pci 4ca232ec qmp_test: Fix Warning and Error level logs 430e72c6 qemu,qmp: Enable gas security checker ffc06e6b qemu,qmp: Add staticcheck to travis and fix errors 54caf781 qmp: add hotplug memory e66a9b48 qemu: add appendMemoryKnobs helper 8aeca153 qmp: add migrate set arguments a03d4968 qmp: add set migration capabilities 0ace4176 qemu: allow to set migration incoming 723bc5f3 qemu: allow to create a stopped guest 283d7df9 qemu: add file backed memory device support 30aeacb8 qemu: Add qemu parameter for PCI address for a bridge. 9130f375 scsi: Allow scsi controller to associate with an IO thread. a54de183 iothread: Add ability to configure iothreads 0c0ec8f3 qemu: add initrd support 68f30718 qemu: add DisableModern to SCSIController 693d9548 qemu: add options for the machine type 3273aafd scsi: Add function to send device_add qmp command for a scsi device 6d198b8a Compute coverage statistics for unit tests in Travis builds 3a31da32 scsi: Add a scsi controller device 5316779d qemu: Add VSOCK support f5655366 vhost-user: add blk device support e9e27673 vhost-user: updating comments for accuracy, rename device field 8fe57236 qemu: Add maxcpus attribute to -smp 3baa7765 Add badges to the README.md file d74e3b66 Fix errcheck failures in the unit tests db60e32f Enable Travis builds 9cb47fc0 Add .gitignore file. a8aaf534 Add project documentation 57aafb56 Remove all references to and dependencies on ciao 27709fce Move files to the qemu folder 48feb29f qemu: introduce vhost-user handling b8ddd244 qemu: Add function to list hotpluggable CPUs 8c428ed7 qemu: Add function to hotplug CPUs 24b14059 qemu: Add functions to process QMP response e39da6ca qmp: Add support for hot plugging VFIO devices on PCI(E) bridges bc030d13 qemu: Add a SysProcAttr parameter to CreateCloudInitISO 11977072 qemu: Add a SysProcAttr parameter to LaunchCustomQemu b639da45 qemu: Add function to hotplug vfio device 7e5614b8 Networking: Add vhost fd support 14316ce0 qemu/qmp: Implement function to hot plug PCI devices 83485dc9 qemu: Implement Bridge struct cfa8a995 Networking: Add support for handling macvtap interfaces 83126d3e bios: add support for custom bios 3da2ef9d QEMU: Knobs: Huge Page Support: Add support for huge pages 9bfa7927 vfio: Add ability to pass VFIO devices to qemu a70ffd19 Build: Fix the build after repo move. 0c206170 Knobs: Modify the behaviour of the Mlock knob. ddee41d5 QEMU: Enable realtime options 4ecb9de5 qemu: Add support for memory pre-allocation 1fbe6c5d qmp: Update block device deletion for newer versions of qemu e74aeef1 qemu: Add disable-modern option for virtio devices 8d617ff5 qemu: Update virtio-net-pci command line 25a2dc8f qemu: Update blockdev-add qmp command to support newer qemu versions d4f77103 misc: Remove some of the code flagged by unused linter a1600dc1 misc: Remove unused fields identified by structcheck 58a835e6 misc: Remove unused variables identified by varcheck d48b5b5f qemu: Add PCI option to the NetDevice a84228ae qemu: Document how cancelling works. 1e7202a5 qemu: Fix spelling error in qmp_test.go c6f33453 qemu: Fix command cancelling. a8a798b0 qemu, ciao-launcher: Move ConfigDrive ISO creation code to qemu 30cf1163 Add missing bus parameter for a CharDevice 2aa5f5a3 qemu: Add support for serial port addition 6fe338d6 qemu: Support creating multiple QMP sockets 992b861e qemu: Add the daemonize qemu option to the Knobs structure 997cb233 qemu: Remove dead code e555f565 qemu: Add support for socket based consoles eae8fae0 qemu: Fix security model typo db067857 qemu: Make Config's FDs field private 12f6ebe3 qemu: Embed the qemu parameters into the Config structure e193a77b qemu: Add support for block devices 3908185c qemu: Add MACVTAP support 6d7dfa04 qemu: Get rid of the Driver structure cc9cb33a qemu: Add QMPSocket specific type 2d736d71 qemu: Add RTC specific types e543c338 qemu: Probe each qemu device with a driver eda8607c qemu: Add netdev options to the Device structure 4780e237 qemu: Add multi-queue and vhost definitions to NetDevice 137e7c72 qemu: Add a NetDevice slice to the Config structure c0e2aaca qemu: Add one unit test for the Config strings 5ba8ef79 qemu: Add QMP socket unit tests 7b2f7eb5 qemu: Add Memory and SMP unit tests 2ea9b9a3 qemu: Add a Kernel unit test 8e495f6e qemu: Add a Knobs unit test 8aeb3d45 qemu: Add an Object unit test 38e041dc qemu: Add Device unit tests 54d32c24 qemu: Add parameters adding unit tests ebfa382d qemu: Add a Knobs field to the Config structure fe1bdcd2 qemu: Remove the extra parameters field from the Config structure 15bce61a qemu: Group all machine configurations into one structure d94b5af8 qemu: Add a VGA parameter field to the Config structure 4892d041 qemu: Add a Global parameter field to the Config structure 612a5a9e qemu: Add a RTC field to the Config structure c63ec096 qemu: Add a SMP field to the Config structure 7cf386a8 qemu: Add a Memory field to the Config structure b198bc67 qemu: Add a UUID field to the Config structure 6239e846 qemu: Add a Character Devices slice field to the Config structure 73e2d53c qemu: Add a Filesystem Devices slice field to the Config structure 518ba627 qemu: Add a Kernel field to the Config structure b973bc59 qemu: Add an Object slice field to the Config structure 8744dfe8 qemu: Add a Device slice field to the Config structure 5458de70 qemu: Add a QMP socket field to the Config structure 17118270 qemu: Add qemu's name to the Config structure 37a1f500 qemu: Add configuration structure to simplify LaunchQemu 5ccbaf2b ciao-launcher, qemu: Upgrade to new context package. f5720198 qemu: Use null QMP logger when the logger parameter is nil 7d4199a4 qemu: Fix ineffassign error 7f50a415 qemu: Fix a silly bug in LaunchQemu fc6bf8cf qemu: Add package documentation 306f54a9 ciao-launcher, qemu: Move launchQemu to qemu 344aa22b qemu: Add the qemu package Signed-off-by: Snir Sheriber --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 3aba74f03..171f1d5b9 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.4.0-alpha1 +2.4.0-alpha2 From 63eb1158909ea40fbff63ce900be24220ee2130a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Wed, 19 Jan 2022 09:55:05 +0100 Subject: [PATCH 345/385] versions: bump CRI-O to its 1.23 release MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As done for kubernetes, CRI-O should also be bumped to its 1.23 release so those are in sync. Fixes: #3481 Signed-off-by: Fabiano Fidêncio --- versions.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions.yaml b/versions.yaml index ec0c070a5..c6bb63d03 100644 --- a/versions.yaml +++ b/versions.yaml @@ -179,7 +179,7 @@ externals: description: | OCI-based Kubernetes Container Runtime Interface implementation url: "https://github.com/cri-o/cri-o" - branch: "release-1.22" + branch: "release-1.23" containerd: description: | From 903a6a455df3c4e145f722516c741d4b47bb9ff6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Wed, 19 Jan 2022 09:56:17 +0100 Subject: [PATCH 346/385] versions: Bump critools to its 1.23 release MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit critools v1.23.0 has been released a few days ago. As we're already bumping kubernetes, and CRI-O, let's also update critools. Signed-off-by: Fabiano Fidêncio --- versions.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions.yaml b/versions.yaml index c6bb63d03..d19438f31 100644 --- a/versions.yaml +++ b/versions.yaml @@ -194,7 +194,7 @@ externals: critools: description: "CLI tool for Container Runtime Interface (CRI)" url: "https://github.com/kubernetes-sigs/cri-tools" - version: "1.22.0" + version: "1.23.0" gperf: description: "GNU gperf is a perfect hash function generator" From 5861e52f8d0e67b46442de44bdfeac61f24fb43c Mon Sep 17 00:00:00 2001 From: Gabriela Cervantes Date: Tue, 1 Feb 2022 16:29:06 +0000 Subject: [PATCH 347/385] docs: Remove Zun documentation with kata containers This PR removes the zun documentation use case with kata containers mainly because is not longer valid as it is using as a reference docker with clear containers 2.0 which are not longer being supported and it is also using docker to test kata with openstack zun and docker is also not supported. Fixes #3581 Signed-off-by: Gabriela Cervantes --- docs/README.md | 1 - docs/use-cases/zun_kata.md | 121 ------------------------------------- 2 files changed, 122 deletions(-) delete mode 100644 docs/use-cases/zun_kata.md diff --git a/docs/README.md b/docs/README.md index 7eb65a210..5ccddda8b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -28,7 +28,6 @@ See the [howto documentation](how-to). ## Kata Use-Cases * [GPU Passthrough with Kata](./use-cases/GPU-passthrough-and-Kata.md) -* [OpenStack Zun with Kata Containers](./use-cases/zun_kata.md) * [SR-IOV with Kata](./use-cases/using-SRIOV-and-kata.md) * [Intel QAT with Kata](./use-cases/using-Intel-QAT-and-kata.md) * [VPP with Kata](./use-cases/using-vpp-and-kata.md) diff --git a/docs/use-cases/zun_kata.md b/docs/use-cases/zun_kata.md deleted file mode 100644 index 19560c99a..000000000 --- a/docs/use-cases/zun_kata.md +++ /dev/null @@ -1,121 +0,0 @@ -# OpenStack Zun DevStack working with Kata Containers - -## Introduction - -This guide describes how to get Kata Containers to work with OpenStack Zun -using DevStack on Ubuntu 16.04. Running DevStack with this guide will setup -Docker and Clear Containers 2.0, which you replace with Kata Containers. -Currently, the instructions are based on the following links: - -- https://docs.openstack.org/zun/latest/contributor/quickstart.html - -- https://docs.openstack.org/zun/latest/admin/clear-containers.html - -## Install Git to use with DevStack - -```sh -$ sudo apt install git -``` - -## Setup OpenStack DevStack -The following commands will sync DevStack from GitHub, create your -`local.conf` file, assign your host IP to this file, enable Clear -Containers, start DevStack, and set the environment variables to use -`zun` on the command line. - -```sh -$ sudo mkdir -p /opt/stack -$ sudo chown $USER /opt/stack -$ git clone https://github.com/openstack-dev/devstack /opt/stack/devstack -$ HOST_IP="$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/')" -$ git clone https://github.com/openstack/zun /opt/stack/zun -$ cat /opt/stack/zun/devstack/local.conf.sample \ -$ | sed "s/HOST_IP=.*/HOST_IP=$HOST_IP/" \ -$ > /opt/stack/devstack/local.conf -$ sed -i "s/KURYR_CAPABILITY_SCOPE=.*/KURYR_CAPABILITY_SCOPE=local/" /opt/stack/devstack/local.conf -$ echo "ENABLE_CLEAR_CONTAINER=true" >> /opt/stack/devstack/local.conf -$ echo "enable_plugin zun-ui https://git.openstack.org/openstack/zun-ui" >> /opt/stack/devstack/local.conf -$ /opt/stack/devstack/stack.sh -$ source /opt/stack/devstack/openrc admin admin -``` - -The previous commands start OpenStack DevStack with Zun support. You can test -it using `runc` as shown by the following commands to make sure everything -installed correctly and is working. - -```sh -$ zun run --name test cirros ping -c 4 8.8.8.8 -$ zun list -$ zun logs test -$ zun delete test -``` - -## Install Kata Containers - -Follow [these instructions](../install/README.md) -to install the Kata Containers components. - -## Update Docker with new Kata Containers runtime - -The following commands replace the Clear Containers 2.x runtime setup with -DevStack, with Kata Containers: - -```sh -$ sudo sed -i 's/"cor"/"kata-runtime"/' /etc/docker/daemon.json -$ sudo sed -i 's/"\/usr\/bin\/cc-oci-runtime"/"\/usr\/bin\/kata-runtime"/' /etc/docker/daemon.json -$ sudo systemctl daemon-reload -$ sudo systemctl restart docker -``` - -## Test that everything works in both Docker and OpenStack Zun - -```sh -$ sudo docker run -ti --runtime kata-runtime busybox sh -$ zun run --name kata --runtime kata-runtime cirros ping -c 4 8.8.8.8 -$ zun list -$ zun logs kata -$ zun delete kata -``` - -## Stop DevStack and clean up system (Optional) - -```sh -$ /opt/stack/devstack/unstack.sh -$ /opt/stack/devstack/clean.sh -``` - -## Restart DevStack and reset CC 2.x runtime to `kata-runtime` - -Run the following commands if you already setup Kata Containers and want to -restart DevStack: - -```sh -$ /opt/stack/devstack/unstack.sh -$ /opt/stack/devstack/clean.sh -$ /opt/stack/devstack/stack.sh -$ source /opt/stack/devstack/openrc admin admin -$ sudo sed -i 's/"cor"/"kata-runtime"/' /etc/docker/daemon.json -$ sudo sed -i 's/"\/usr\/bin\/cc-oci-runtime"/"\/usr\/bin\/kata-runtime"/' /etc/docker/daemon.json -$ sudo systemctl daemon-reload -$ sudo systemctl restart docker -``` - -![Kata Zun image 1](./images/kata-zun1.png) - -Figure 1: Create a BusyBox container image - -![Kata Zun image 2](./images/kata-zun2.png) - -Figure 2: Select `kata-runtime` to use - -![Kata Zun image 3](./images/kata-zun3.png) - -Figure 3: Two BusyBox containers successfully launched - -![Kata Zun image 4](./images/kata-zun4.png) - -Figure 4: Test connectivity between Kata Containers - -![Kata Zun image 5](./images/kata-zun5.png) - -Figure 5: CLI for Zun From 1cc1c8d05801d7e74de57dd68a266c8317b00ede Mon Sep 17 00:00:00 2001 From: Gabriela Cervantes Date: Tue, 1 Feb 2022 18:13:22 +0000 Subject: [PATCH 348/385] docs: Remove images from Zun documentation This PR removes the images belonged to the Zun documentation at the use cases directory. Signed-off-by: Gabriela Cervantes --- docs/use-cases/images/kata-zun1.png | Bin 115606 -> 0 bytes docs/use-cases/images/kata-zun2.png | Bin 116289 -> 0 bytes docs/use-cases/images/kata-zun3.png | Bin 102066 -> 0 bytes docs/use-cases/images/kata-zun4.png | Bin 256474 -> 0 bytes docs/use-cases/images/kata-zun5.png | Bin 78538 -> 0 bytes 5 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/use-cases/images/kata-zun1.png delete mode 100644 docs/use-cases/images/kata-zun2.png delete mode 100644 docs/use-cases/images/kata-zun3.png delete mode 100644 docs/use-cases/images/kata-zun4.png delete mode 100644 docs/use-cases/images/kata-zun5.png diff --git a/docs/use-cases/images/kata-zun1.png b/docs/use-cases/images/kata-zun1.png deleted file mode 100644 index b16d9e9ee5ec14b9d31d4cadaabf1f4c4fe3e756..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115606 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

%iegIECWCcrLa~zp3n1G9zq7ebu{68ddu-| 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

I9slA`;X)%^b&k7hW>-Zaw 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 diff --git a/docs/use-cases/images/kata-zun2.png b/docs/use-cases/images/kata-zun2.png deleted file mode 100644 index af5ddbd9defd1ed26ad9da9e02085709fca8e7b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116289 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 diff --git a/docs/use-cases/images/kata-zun3.png b/docs/use-cases/images/kata-zun3.png deleted file mode 100644 index 9a3a604e9e6f499a76a4d9e7874740af02f81eeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102066 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 diff --git a/docs/use-cases/images/kata-zun4.png b/docs/use-cases/images/kata-zun4.png deleted file mode 100644 index 144ca764de9dade1add8f9aa786bf4d43fcfe362..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256474 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 kewm%?F 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%0AW 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 Date: Tue, 1 Feb 2022 10:53:28 -0800 Subject: [PATCH 349/385] kata-deploy: for testing, make sure we use the PR branch Since we are already checking that only an admin is triggering the job, let's go ahead and make sure we are testing against the PR itself. This will ensure that we are exercising changes to kata-deploy tooling, which is important for this test. While at it, cleanup and simplify some of the tarball creation. Fixes: #3586 Signed-off-by: Eric Ernst --- .github/workflows/kata-deploy-test.yaml | 62 +++++++++++-------------- 1 file changed, 26 insertions(+), 36 deletions(-) diff --git a/.github/workflows/kata-deploy-test.yaml b/.github/workflows/kata-deploy-test.yaml index 5e5402395..c0a9b98b3 100644 --- a/.github/workflows/kata-deploy-test.yaml +++ b/.github/workflows/kata-deploy-test.yaml @@ -48,18 +48,16 @@ jobs: - rootfs-initrd - shim-v2 steps: - # As Github action event `issue_comment` does not provide the right ref - # (commit/branch) to be tested, let's use this third part action to work - # this limitation around. - - name: resolve pr refs - id: refs - uses: kata-containers/resolve-pr-refs@v0.0.3 - with: - token: ${{ secrets.GITHUB_TOKEN }} - + - name: get-PR-ref + id: get-PR-ref + run: | + ref=$(cat $GITHUB_EVENT_PATH | jq -r '.issue.pull_request.url' | sed 's#^.*\/pulls#refs\/pull#' | sed 's#$#\/merge#') + echo "reference for PR: " ${ref} + echo "##[set-output name=pr-ref;]${ref}" - uses: actions/checkout@v2 with: - ref: ${{ steps.refs.outputs.base_ref }} + ref: ${{ steps.get-PR-ref.outputs.pr-ref }} + - name: Install docker run: | curl -fsSL https://test.docker.com -o test-docker.sh @@ -86,17 +84,15 @@ jobs: runs-on: ubuntu-latest needs: build-asset steps: - # As Github action event `issue_comment` does not provide the right ref - # (commit/branch) to be tested, let's use this third part action to work - # this limitation around. - - name: resolve pr refs - id: refs - uses: kata-containers/resolve-pr-refs@v0.0.3 - with: - token: ${{ secrets.GITHUB_TOKEN }} + - name: get-PR-ref + id: get-PR-ref + run: | + ref=$(cat $GITHUB_EVENT_PATH | jq -r '.issue.pull_request.url' | sed 's#^.*\/pulls#refs\/pull#' | sed 's#$#\/merge#') + echo "reference for PR: " ${ref} + echo "##[set-output name=pr-ref;]${ref}" - uses: actions/checkout@v2 with: - ref: ${{ steps.refs.outputs.base_ref }} + ref: ${{ steps.get-PR-ref.outputs.pr-ref }} - name: get-artifacts uses: actions/download-artifact@v2 with: @@ -115,17 +111,15 @@ jobs: needs: create-kata-tarball runs-on: ubuntu-latest steps: - # As Github action event `issue_comment` does not provide the right ref - # (commit/branch) to be tested, let's use this third part action to work - # this limitation around. - - name: resolve pr refs - id: refs - uses: kata-containers/resolve-pr-refs@v0.0.3 - with: - token: ${{ secrets.GITHUB_TOKEN }} + - name: get-PR-ref + id: get-PR-ref + run: | + ref=$(cat $GITHUB_EVENT_PATH | jq -r '.issue.pull_request.url' | sed 's#^.*\/pulls#refs\/pull#' | sed 's#$#\/merge#') + echo "reference for PR: " ${ref} + echo "##[set-output name=pr-ref;]${ref}" - uses: actions/checkout@v2 with: - ref: ${{ steps.refs.outputs.base_ref }} + ref: ${{ steps.get-PR-ref.outputs.pr-ref }} - name: get-kata-tarball uses: actions/download-artifact@v2 with: @@ -133,18 +127,14 @@ jobs: - name: build-and-push-kata-deploy-ci id: build-and-push-kata-deploy-ci run: | - tag=$(echo $GITHUB_REF | cut -d/ -f3-) - pushd $GITHUB_WORKSPACE - git checkout $tag - pkg_sha=$(git rev-parse HEAD) - popd + PR_SHA=$(git log --format=format:%H -n1) mv kata-static.tar.xz $GITHUB_WORKSPACE/tools/packaging/kata-deploy/kata-static.tar.xz - docker build --build-arg KATA_ARTIFACTS=kata-static.tar.xz -t quay.io/kata-containers/kata-deploy-ci:$pkg_sha $GITHUB_WORKSPACE/tools/packaging/kata-deploy + docker build --build-arg KATA_ARTIFACTS=kata-static.tar.xz -t quay.io/kata-containers/kata-deploy-ci:$PR_SHA $GITHUB_WORKSPACE/tools/packaging/kata-deploy docker login -u ${{ secrets.QUAY_DEPLOYER_USERNAME }} -p ${{ secrets.QUAY_DEPLOYER_PASSWORD }} quay.io - docker push quay.io/kata-containers/kata-deploy-ci:$pkg_sha + docker push quay.io/kata-containers/kata-deploy-ci:$PR_SHA mkdir -p packaging/kata-deploy ln -s $GITHUB_WORKSPACE/tools/packaging/kata-deploy/action packaging/kata-deploy/action - echo "::set-output name=PKG_SHA::${pkg_sha}" + echo "::set-output name=PKG_SHA::${PR_SHA}" - name: test-kata-deploy-ci-in-aks uses: ./packaging/kata-deploy/action with: From 1f29478b09d7bbae41607faa53404ca395779c6f Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Tue, 1 Feb 2022 11:19:21 -0600 Subject: [PATCH 350/385] runtime: suppport split firmware firmware can be split into FIRMWARE_VARS.fd (UEFI variables as configuration) and FIRMWARE_CODE.fd (UEFI program image). UEFI variables can be customized per each user while UEFI code is kept same. fixes #3583 Signed-off-by: Julio Montes --- docs/how-to/how-to-set-sandbox-config-kata.md | 2 + src/runtime/Makefile | 2 + src/runtime/config/configuration-qemu.toml.in | 6 +++ src/runtime/pkg/govmm/qemu/qemu.go | 8 ++++ .../pkg/katautils/config-settings.go.in | 1 + src/runtime/pkg/katautils/config.go | 23 ++++++++++- src/runtime/pkg/katautils/config_test.go | 39 ++++++++++++++++--- src/runtime/virtcontainers/hypervisor.go | 10 +++++ src/runtime/virtcontainers/hypervisor_test.go | 5 ++- .../pkg/annotations/annotations.go | 7 ++++ src/runtime/virtcontainers/qemu.go | 7 +++- src/runtime/virtcontainers/qemu_amd64.go | 15 +++---- src/runtime/virtcontainers/qemu_amd64_test.go | 10 ++--- src/runtime/virtcontainers/qemu_arch_base.go | 4 +- src/runtime/virtcontainers/qemu_arm64.go | 2 +- src/runtime/virtcontainers/qemu_arm64_test.go | 10 ++--- src/runtime/virtcontainers/qemu_ppc64le.go | 2 +- .../virtcontainers/qemu_ppc64le_test.go | 10 ++--- src/runtime/virtcontainers/qemu_s390x.go | 2 +- src/runtime/virtcontainers/qemu_s390x_test.go | 10 ++--- src/runtime/virtcontainers/types/asset.go | 5 +++ .../virtcontainers/types/asset_test.go | 2 + 22 files changed, 140 insertions(+), 42 deletions(-) diff --git a/docs/how-to/how-to-set-sandbox-config-kata.md b/docs/how-to/how-to-set-sandbox-config-kata.md index a8a7f855e..28d5ea788 100644 --- a/docs/how-to/how-to-set-sandbox-config-kata.md +++ b/docs/how-to/how-to-set-sandbox-config-kata.md @@ -62,6 +62,8 @@ There are several kinds of Kata configurations and they are listed below. | `io.katacontainers.config.hypervisor.file_mem_backend` (R) | string | file based memory backend root directory | | `io.katacontainers.config.hypervisor.firmware_hash` | string | container firmware SHA-512 hash value | | `io.katacontainers.config.hypervisor.firmware` | string | the guest firmware that will run the container VM | +| `io.katacontainers.config.hypervisor.firmware_volume_hash` | string | container firmware volume SHA-512 hash value | +| `io.katacontainers.config.hypervisor.firmware_volume` | string | the guest firmware volume that will be passed to the container VM | | `io.katacontainers.config.hypervisor.guest_hook_path` | string | the path within the VM that will be used for drop in hooks | | `io.katacontainers.config.hypervisor.hotplug_vfio_on_root_bus` | `boolean` | indicate if devices need to be hotplugged on the root bus instead of a bridge| | `io.katacontainers.config.hypervisor.hypervisor_hash` | string | container hypervisor binary SHA-512 hash value | diff --git a/src/runtime/Makefile b/src/runtime/Makefile index b31977f64..f936bd796 100644 --- a/src/runtime/Makefile +++ b/src/runtime/Makefile @@ -104,6 +104,7 @@ KERNELDIR := $(PKGDATADIR) IMAGEPATH := $(PKGDATADIR)/$(IMAGENAME) FIRMWAREPATH := +FIRMWAREVOLUMEPATH := # Name of default configuration file the runtime will use. CONFIG_FILE = configuration.toml @@ -393,6 +394,7 @@ USER_VARS += KERNELPATH_CLH USER_VARS += KERNELPATH_FC USER_VARS += KERNELVIRTIOFSPATH USER_VARS += FIRMWAREPATH +USER_VARS += FIRMWAREVOLUMEPATH USER_VARS += MACHINEACCELERATORS USER_VARS += CPUFEATURES USER_VARS += DEFMACHINETYPE_CLH diff --git a/src/runtime/config/configuration-qemu.toml.in b/src/runtime/config/configuration-qemu.toml.in index c27e94bb3..45d830aa3 100644 --- a/src/runtime/config/configuration-qemu.toml.in +++ b/src/runtime/config/configuration-qemu.toml.in @@ -56,6 +56,12 @@ kernel_params = "@KERNELPARAMS@" # If you want that qemu uses the default firmware leave this option empty firmware = "@FIRMWAREPATH@" +# Path to the firmware volume. +# firmware TDVF or OVMF can be split into FIRMWARE_VARS.fd (UEFI variables +# as configuration) and FIRMWARE_CODE.fd (UEFI program image). UEFI variables +# can be customized per each user while UEFI code is kept same. +firmware_volume = "@FIRMWAREVOLUMEPATH@" + # Machine accelerators # comma-separated list of machine accelerators to pass to the hypervisor. # For example, `machine_accelerators = "nosmm,nosmbus,nosata,nopit,static-prt,nofw"` diff --git a/src/runtime/pkg/govmm/qemu/qemu.go b/src/runtime/pkg/govmm/qemu/qemu.go index 2409cd8e9..ea3f1311a 100644 --- a/src/runtime/pkg/govmm/qemu/qemu.go +++ b/src/runtime/pkg/govmm/qemu/qemu.go @@ -266,6 +266,11 @@ type Object struct { // File is the device file File string + // FirmwareVolume is the configuration volume for the firmware + // it can be used to split the TDVF/OVMF UEFI firmware in UEFI variables + // and UEFI program image. + FirmwareVolume string + // CBitPos is the location of the C-bit in a guest page table entry // This is only relevant for sev-guest objects CBitPos uint32 @@ -341,6 +346,9 @@ func (object Object) QemuParams(config *Config) []string { deviceParams = append(deviceParams, string(object.Driver)) deviceParams = append(deviceParams, fmt.Sprintf("id=%s", object.DeviceID)) deviceParams = append(deviceParams, fmt.Sprintf("file=%s", object.File)) + if object.FirmwareVolume != "" { + deviceParams = append(deviceParams, fmt.Sprintf("config-firmware-volume=%s", object.FirmwareVolume)) + } case SEVGuest: objectParams = append(objectParams, string(object.Type)) objectParams = append(objectParams, fmt.Sprintf("id=%s", object.ID)) diff --git a/src/runtime/pkg/katautils/config-settings.go.in b/src/runtime/pkg/katautils/config-settings.go.in index 7c26607db..09d6b5f30 100644 --- a/src/runtime/pkg/katautils/config-settings.go.in +++ b/src/runtime/pkg/katautils/config-settings.go.in @@ -45,6 +45,7 @@ var defaultImagePath = "/usr/share/kata-containers/kata-containers.img" var defaultKernelPath = "/usr/share/kata-containers/vmlinuz.container" var defaultInitrdPath = "/usr/share/kata-containers/kata-containers-initrd.img" var defaultFirmwarePath = "" +var defaultFirmwareVolumePath = "" var defaultMachineAccelerators = "" var defaultCPUFeatures = "" var systemdUnitName = "kata-containers.target" diff --git a/src/runtime/pkg/katautils/config.go b/src/runtime/pkg/katautils/config.go index 495404667..c49f77309 100644 --- a/src/runtime/pkg/katautils/config.go +++ b/src/runtime/pkg/katautils/config.go @@ -1,4 +1,4 @@ -// Copyright (c) 2018-2021 Intel Corporation +// Copyright (c) 2018-2022 Intel Corporation // Copyright (c) 2018 HyperHQ Inc. // // SPDX-License-Identifier: Apache-2.0 @@ -79,6 +79,7 @@ type hypervisor struct { Initrd string `toml:"initrd"` Image string `toml:"image"` Firmware string `toml:"firmware"` + FirmwareVolume string `toml:"firmware_volume"` MachineAccelerators string `toml:"machine_accelerators"` CPUFeatures string `toml:"cpu_features"` KernelParams string `toml:"kernel_params"` @@ -234,6 +235,19 @@ func (h hypervisor) firmware() (string, error) { return ResolvePath(p) } +func (h hypervisor) firmwareVolume() (string, error) { + p := h.FirmwareVolume + + if p == "" { + if defaultFirmwareVolumePath == "" { + return "", nil + } + p = defaultFirmwareVolumePath + } + + return ResolvePath(p) +} + func (h hypervisor) PFlash() ([]string, error) { pflashes := h.PFlashList @@ -602,6 +616,11 @@ func newQemuHypervisorConfig(h hypervisor) (vc.HypervisorConfig, error) { return vc.HypervisorConfig{}, err } + firmwareVolume, err := h.firmwareVolume() + if err != nil { + return vc.HypervisorConfig{}, err + } + machineAccelerators := h.machineAccelerators() cpuFeatures := h.cpuFeatures() kernelParams := h.kernelParams() @@ -644,6 +663,7 @@ func newQemuHypervisorConfig(h hypervisor) (vc.HypervisorConfig, error) { InitrdPath: initrd, ImagePath: image, FirmwarePath: firmware, + FirmwareVolumePath: firmwareVolume, PFlash: pflashes, MachineAccelerators: machineAccelerators, CPUFeatures: cpuFeatures, @@ -998,6 +1018,7 @@ func GetDefaultHypervisorConfig() vc.HypervisorConfig { ImagePath: defaultImagePath, InitrdPath: defaultInitrdPath, FirmwarePath: defaultFirmwarePath, + FirmwareVolumePath: defaultFirmwareVolumePath, MachineAccelerators: defaultMachineAccelerators, CPUFeatures: defaultCPUFeatures, HypervisorMachineType: defaultMachineType, diff --git a/src/runtime/pkg/katautils/config_test.go b/src/runtime/pkg/katautils/config_test.go index ac0c4ee03..5bfd61250 100644 --- a/src/runtime/pkg/katautils/config_test.go +++ b/src/runtime/pkg/katautils/config_test.go @@ -1249,6 +1249,32 @@ func TestDefaultFirmware(t *testing.T) { defaultFirmwarePath = oldDefaultFirmwarePath } +func TestDefaultFirmwareVolume(t *testing.T) { + assert := assert.New(t) + + // save default firmware path + oldDefaultFirmwareVolumePath := defaultFirmwareVolumePath + + f, err := os.CreateTemp(os.TempDir(), "vol") + assert.NoError(err) + assert.NoError(f.Close()) + defer os.RemoveAll(f.Name()) + + h := hypervisor{} + defaultFirmwareVolumePath = "" + p, err := h.firmwareVolume() + assert.NoError(err) + assert.Empty(p) + + defaultFirmwareVolumePath = f.Name() + p, err = h.firmwareVolume() + assert.NoError(err) + assert.NotEmpty(p) + + // restore default firmware volume path + defaultFirmwarePath = oldDefaultFirmwareVolumePath +} + func TestDefaultMachineAccelerators(t *testing.T) { assert := assert.New(t) machineAccelerators := "abc,123,rgb" @@ -1355,12 +1381,13 @@ func TestUpdateRuntimeConfigurationVMConfig(t *testing.T) { tomlConf := tomlConfig{ Hypervisor: map[string]hypervisor{ qemuHypervisorTableType: { - NumVCPUs: int32(vcpus), - MemorySize: mem, - Path: "/", - Kernel: "/", - Image: "/", - Firmware: "/", + NumVCPUs: int32(vcpus), + MemorySize: mem, + Path: "/", + Kernel: "/", + Image: "/", + Firmware: "/", + FirmwareVolume: "/", }, }, } diff --git a/src/runtime/virtcontainers/hypervisor.go b/src/runtime/virtcontainers/hypervisor.go index 39f7a8b74..1a2b8025d 100644 --- a/src/runtime/virtcontainers/hypervisor.go +++ b/src/runtime/virtcontainers/hypervisor.go @@ -276,6 +276,9 @@ type HypervisorConfig struct { // FirmwarePath is the bios host path FirmwarePath string + // FirmwareVolumePath is the configuration volume path for the firmware + FirmwareVolumePath string + // MachineAccelerators are machine specific accelerators MachineAccelerators string @@ -639,6 +642,8 @@ func (conf *HypervisorConfig) assetPath(t types.AssetType) (string, error) { return conf.JailerPath, nil case types.FirmwareAsset: return conf.FirmwarePath, nil + case types.FirmwareVolumeAsset: + return conf.FirmwareVolumePath, nil default: return "", fmt.Errorf("Unknown asset type %v", t) } @@ -703,6 +708,11 @@ func (conf *HypervisorConfig) FirmwareAssetPath() (string, error) { return conf.assetPath(types.FirmwareAsset) } +// FirmwareVolumeAssetPath returns the guest firmware volume path +func (conf *HypervisorConfig) FirmwareVolumeAssetPath() (string, error) { + return conf.assetPath(types.FirmwareVolumeAsset) +} + func appendParam(params []Param, parameter string, value string) []Param { return append(params, Param{parameter, value}) } diff --git a/src/runtime/virtcontainers/hypervisor_test.go b/src/runtime/virtcontainers/hypervisor_test.go index bdfe0c179..f8bbbd330 100644 --- a/src/runtime/virtcontainers/hypervisor_test.go +++ b/src/runtime/virtcontainers/hypervisor_test.go @@ -488,8 +488,9 @@ func TestAssetPath(t *testing.T) { ImagePath: "/" + "io.katacontainers.config.hypervisor.image", InitrdPath: "/" + "io.katacontainers.config.hypervisor.initrd", - FirmwarePath: "/" + "io.katacontainers.config.hypervisor.firmware", - JailerPath: "/" + "io.katacontainers.config.hypervisor.jailer_path", + FirmwarePath: "/" + "io.katacontainers.config.hypervisor.firmware", + FirmwareVolumePath: "/" + "io.katacontainers.config.hypervisor.firmware_volume", + JailerPath: "/" + "io.katacontainers.config.hypervisor.jailer_path", } for _, asset := range types.AssetTypes() { diff --git a/src/runtime/virtcontainers/pkg/annotations/annotations.go b/src/runtime/virtcontainers/pkg/annotations/annotations.go index 517a3ac89..5bd9b26db 100644 --- a/src/runtime/virtcontainers/pkg/annotations/annotations.go +++ b/src/runtime/virtcontainers/pkg/annotations/annotations.go @@ -55,6 +55,10 @@ const ( // FirmwarePath is a sandbox annotation for passing a per container path pointing at the guest firmware that will run the container VM. FirmwarePath = kataAnnotHypervisorPrefix + "firmware" + // FirmwareVolumePath is a sandbox annotation for passing a per container path pointing at the guest firmware volume + // that will be passed to the container VM. + FirmwareVolumePath = kataAnnotHypervisorPrefix + "firmware_volume" + // KernelHash is a sandbox annotation for passing a container kernel image SHA-512 hash value. KernelHash = kataAnnotHypervisorPrefix + "kernel_hash" @@ -76,6 +80,9 @@ const ( // FirmwareHash is an sandbox annotation for passing a container guest firmware SHA-512 hash value. FirmwareHash = kataAnnotHypervisorPrefix + "firmware_hash" + // FirmwareVolumeHash is an sandbox annotation for passing a container guest firmware volume SHA-512 hash value. + FirmwareVolumeHash = kataAnnotHypervisorPrefix + "firmware_volume_hash" + // AssetHashType is the hash type used for assets verification AssetHashType = kataAnnotationsPrefix + "asset_hash_type" diff --git a/src/runtime/virtcontainers/qemu.go b/src/runtime/virtcontainers/qemu.go index b522928a7..28b97dfba 100644 --- a/src/runtime/virtcontainers/qemu.go +++ b/src/runtime/virtcontainers/qemu.go @@ -575,6 +575,11 @@ func (q *qemu) CreateVM(ctx context.Context, id string, networkNS NetworkNamespa return err } + firmwareVolumePath, err := q.config.FirmwareVolumeAssetPath() + if err != nil { + return err + } + pflash, err := q.arch.getPFlash() if err != nil { return err @@ -610,7 +615,7 @@ func (q *qemu) CreateVM(ctx context.Context, id string, networkNS NetworkNamespa PidFile: filepath.Join(q.config.VMStorePath, q.id, "pid"), } - qemuConfig.Devices, qemuConfig.Bios, err = q.arch.appendProtectionDevice(qemuConfig.Devices, firmwarePath) + qemuConfig.Devices, qemuConfig.Bios, err = q.arch.appendProtectionDevice(qemuConfig.Devices, firmwarePath, firmwareVolumePath) if err != nil { return err } diff --git a/src/runtime/virtcontainers/qemu_amd64.go b/src/runtime/virtcontainers/qemu_amd64.go index 874b7461d..b2d6b2004 100644 --- a/src/runtime/virtcontainers/qemu_amd64.go +++ b/src/runtime/virtcontainers/qemu_amd64.go @@ -232,19 +232,20 @@ func (q *qemuAmd64) enableProtection() error { } // append protection device -func (q *qemuAmd64) appendProtectionDevice(devices []govmmQemu.Device, firmware string) ([]govmmQemu.Device, string, error) { +func (q *qemuAmd64) appendProtectionDevice(devices []govmmQemu.Device, firmware, firmwareVolume string) ([]govmmQemu.Device, string, error) { switch q.protection { case tdxProtection: id := q.devLoadersCount q.devLoadersCount += 1 return append(devices, govmmQemu.Object{ - Driver: govmmQemu.Loader, - Type: govmmQemu.TDXGuest, - ID: "tdx", - DeviceID: fmt.Sprintf("fd%d", id), - Debug: false, - File: firmware, + Driver: govmmQemu.Loader, + Type: govmmQemu.TDXGuest, + ID: "tdx", + DeviceID: fmt.Sprintf("fd%d", id), + Debug: false, + File: firmware, + FirmwareVolume: firmwareVolume, }), "", nil case sevProtection: return append(devices, diff --git a/src/runtime/virtcontainers/qemu_amd64_test.go b/src/runtime/virtcontainers/qemu_amd64_test.go index 6495b70cb..a992b1497 100644 --- a/src/runtime/virtcontainers/qemu_amd64_test.go +++ b/src/runtime/virtcontainers/qemu_amd64_test.go @@ -252,7 +252,7 @@ func TestQemuAmd64AppendProtectionDevice(t *testing.T) { firmware := "tdvf.fd" var bios string var err error - devices, bios, err = amd64.appendProtectionDevice(devices, firmware) + devices, bios, err = amd64.appendProtectionDevice(devices, firmware, "") assert.NoError(err) // non-protection @@ -260,20 +260,20 @@ func TestQemuAmd64AppendProtectionDevice(t *testing.T) { // pef protection amd64.(*qemuAmd64).protection = pefProtection - devices, bios, err = amd64.appendProtectionDevice(devices, firmware) + devices, bios, err = amd64.appendProtectionDevice(devices, firmware, "") assert.Error(err) assert.Empty(bios) // Secure Execution protection amd64.(*qemuAmd64).protection = seProtection - devices, bios, err = amd64.appendProtectionDevice(devices, firmware) + devices, bios, err = amd64.appendProtectionDevice(devices, firmware, "") assert.Error(err) assert.Empty(bios) // sev protection amd64.(*qemuAmd64).protection = sevProtection - devices, bios, err = amd64.appendProtectionDevice(devices, firmware) + devices, bios, err = amd64.appendProtectionDevice(devices, firmware, "") assert.NoError(err) assert.Empty(bios) @@ -293,7 +293,7 @@ func TestQemuAmd64AppendProtectionDevice(t *testing.T) { // tdxProtection amd64.(*qemuAmd64).protection = tdxProtection - devices, bios, err = amd64.appendProtectionDevice(devices, firmware) + devices, bios, err = amd64.appendProtectionDevice(devices, firmware, "") assert.NoError(err) assert.Empty(bios) diff --git a/src/runtime/virtcontainers/qemu_arch_base.go b/src/runtime/virtcontainers/qemu_arch_base.go index 134525c92..e800199eb 100644 --- a/src/runtime/virtcontainers/qemu_arch_base.go +++ b/src/runtime/virtcontainers/qemu_arch_base.go @@ -147,7 +147,7 @@ type qemuArch interface { // This implementation is architecture specific, some archs may need // a firmware, returns a string containing the path to the firmware that should // be used with the -bios option, ommit -bios option if the path is empty. - appendProtectionDevice(devices []govmmQemu.Device, firmware string) ([]govmmQemu.Device, string, error) + appendProtectionDevice(devices []govmmQemu.Device, firmware, firmwareVolume string) ([]govmmQemu.Device, string, error) } // Kind of guest protection @@ -845,7 +845,7 @@ func (q *qemuArchBase) setPFlash(p []string) { } // append protection device -func (q *qemuArchBase) appendProtectionDevice(devices []govmmQemu.Device, firmware string) ([]govmmQemu.Device, string, error) { +func (q *qemuArchBase) appendProtectionDevice(devices []govmmQemu.Device, firmware, firmwareVolume string) ([]govmmQemu.Device, string, error) { hvLogger.WithField("arch", runtime.GOARCH).Warnf("Confidential Computing has not been implemented for this architecture") return devices, firmware, nil } diff --git a/src/runtime/virtcontainers/qemu_arm64.go b/src/runtime/virtcontainers/qemu_arm64.go index 7fea89a75..ee07b3241 100644 --- a/src/runtime/virtcontainers/qemu_arm64.go +++ b/src/runtime/virtcontainers/qemu_arm64.go @@ -169,7 +169,7 @@ func (q *qemuArm64) enableProtection() error { return nil } -func (q *qemuArm64) appendProtectionDevice(devices []govmmQemu.Device, firmware string) ([]govmmQemu.Device, string, error) { +func (q *qemuArm64) appendProtectionDevice(devices []govmmQemu.Device, firmware, firmwareVolume string) ([]govmmQemu.Device, string, error) { err := q.enableProtection() hvLogger.WithField("arch", runtime.GOARCH).Warnf("%v", err) return devices, firmware, err diff --git a/src/runtime/virtcontainers/qemu_arm64_test.go b/src/runtime/virtcontainers/qemu_arm64_test.go index 9797cf894..2766ae44a 100644 --- a/src/runtime/virtcontainers/qemu_arm64_test.go +++ b/src/runtime/virtcontainers/qemu_arm64_test.go @@ -179,35 +179,35 @@ func TestQemuArm64AppendProtectionDevice(t *testing.T) { var err error // no protection - devices, bios, err = arm64.appendProtectionDevice(devices, firmware) + devices, bios, err = arm64.appendProtectionDevice(devices, firmware, "") assert.Empty(devices) assert.Empty(bios) assert.NoError(err) // PEF protection arm64.(*qemuArm64).protection = pefProtection - devices, bios, err = arm64.appendProtectionDevice(devices, firmware) + devices, bios, err = arm64.appendProtectionDevice(devices, firmware, "") assert.Empty(devices) assert.Empty(bios) assert.NoError(err) // Secure Execution protection arm64.(*qemuArm64).protection = seProtection - devices, bios, err = arm64.appendProtectionDevice(devices, firmware) + devices, bios, err = arm64.appendProtectionDevice(devices, firmware, "") assert.Empty(devices) assert.Empty(bios) assert.NoError(err) // SEV protection arm64.(*qemuArm64).protection = sevProtection - devices, bios, err = arm64.appendProtectionDevice(devices, firmware) + devices, bios, err = arm64.appendProtectionDevice(devices, firmware, "") assert.Empty(devices) assert.Empty(bios) assert.NoError(err) // TDX protection arm64.(*qemuArm64).protection = tdxProtection - devices, bios, err = arm64.appendProtectionDevice(devices, firmware) + devices, bios, err = arm64.appendProtectionDevice(devices, firmware, "") assert.Empty(devices) assert.Empty(bios) assert.NoError(err) diff --git a/src/runtime/virtcontainers/qemu_ppc64le.go b/src/runtime/virtcontainers/qemu_ppc64le.go index 356261c79..eef94bde9 100644 --- a/src/runtime/virtcontainers/qemu_ppc64le.go +++ b/src/runtime/virtcontainers/qemu_ppc64le.go @@ -154,7 +154,7 @@ func (q *qemuPPC64le) enableProtection() error { } // append protection device -func (q *qemuPPC64le) appendProtectionDevice(devices []govmmQemu.Device, firmware string) ([]govmmQemu.Device, string, error) { +func (q *qemuPPC64le) appendProtectionDevice(devices []govmmQemu.Device, firmware, firmwareVolume string) ([]govmmQemu.Device, string, error) { switch q.protection { case pefProtection: return append(devices, diff --git a/src/runtime/virtcontainers/qemu_ppc64le_test.go b/src/runtime/virtcontainers/qemu_ppc64le_test.go index 7d70c6a40..978e1b0ec 100644 --- a/src/runtime/virtcontainers/qemu_ppc64le_test.go +++ b/src/runtime/virtcontainers/qemu_ppc64le_test.go @@ -58,7 +58,7 @@ func TestQemuPPC64leAppendProtectionDevice(t *testing.T) { var devices []govmmQemu.Device var bios, firmware string var err error - devices, bios, err = ppc64le.appendProtectionDevice(devices, firmware) + devices, bios, err = ppc64le.appendProtectionDevice(devices, firmware, "") assert.NoError(err) //no protection @@ -66,25 +66,25 @@ func TestQemuPPC64leAppendProtectionDevice(t *testing.T) { //Secure Execution protection ppc64le.(*qemuPPC64le).protection = seProtection - devices, bios, err = ppc64le.appendProtectionDevice(devices, firmware) + devices, bios, err = ppc64le.appendProtectionDevice(devices, firmware, "") assert.Error(err) assert.Empty(bios) //SEV protection ppc64le.(*qemuPPC64le).protection = sevProtection - devices, bios, err = ppc64le.appendProtectionDevice(devices, firmware) + devices, bios, err = ppc64le.appendProtectionDevice(devices, firmware, "") assert.Error(err) assert.Empty(bios) //TDX protection ppc64le.(*qemuPPC64le).protection = tdxProtection - devices, bios, err = ppc64le.appendProtectionDevice(devices, firmware) + devices, bios, err = ppc64le.appendProtectionDevice(devices, firmware, "") assert.Error(err) assert.Empty(bios) //PEF protection ppc64le.(*qemuPPC64le).protection = pefProtection - devices, bios, err = ppc64le.appendProtectionDevice(devices, firmware) + devices, bios, err = ppc64le.appendProtectionDevice(devices, firmware, "") assert.NoError(err) assert.Empty(bios) diff --git a/src/runtime/virtcontainers/qemu_s390x.go b/src/runtime/virtcontainers/qemu_s390x.go index 827ced4b7..fa15c759f 100644 --- a/src/runtime/virtcontainers/qemu_s390x.go +++ b/src/runtime/virtcontainers/qemu_s390x.go @@ -333,7 +333,7 @@ func (q *qemuS390x) enableProtection() error { // appendProtectionDevice appends a QEMU object for Secure Execution. // Takes devices and returns updated version. Takes BIOS and returns it (no modification on s390x). -func (q *qemuS390x) appendProtectionDevice(devices []govmmQemu.Device, firmware string) ([]govmmQemu.Device, string, error) { +func (q *qemuS390x) appendProtectionDevice(devices []govmmQemu.Device, firmware, firmwareVolume string) ([]govmmQemu.Device, string, error) { switch q.protection { case seProtection: return append(devices, diff --git a/src/runtime/virtcontainers/qemu_s390x_test.go b/src/runtime/virtcontainers/qemu_s390x_test.go index c9e1cc2a3..f207a0c91 100644 --- a/src/runtime/virtcontainers/qemu_s390x_test.go +++ b/src/runtime/virtcontainers/qemu_s390x_test.go @@ -109,7 +109,7 @@ func TestQemuS390xAppendProtectionDevice(t *testing.T) { var devices []govmmQemu.Device var bios, firmware string var err error - devices, bios, err = s390x.appendProtectionDevice(devices, firmware) + devices, bios, err = s390x.appendProtectionDevice(devices, firmware, "") assert.NoError(err) // no protection @@ -117,26 +117,26 @@ func TestQemuS390xAppendProtectionDevice(t *testing.T) { // PEF protection s390x.(*qemuS390x).protection = pefProtection - devices, bios, err = s390x.appendProtectionDevice(devices, firmware) + devices, bios, err = s390x.appendProtectionDevice(devices, firmware, "") assert.Error(err) assert.Empty(bios) // TDX protection s390x.(*qemuS390x).protection = tdxProtection - devices, bios, err = s390x.appendProtectionDevice(devices, firmware) + devices, bios, err = s390x.appendProtectionDevice(devices, firmware, "") assert.Error(err) assert.Empty(bios) // SEV protection s390x.(*qemuS390x).protection = sevProtection - devices, bios, err = s390x.appendProtectionDevice(devices, firmware) + devices, bios, err = s390x.appendProtectionDevice(devices, firmware, "") assert.Error(err) assert.Empty(bios) // Secure Execution protection s390x.(*qemuS390x).protection = seProtection - devices, bios, err = s390x.appendProtectionDevice(devices, firmware) + devices, bios, err = s390x.appendProtectionDevice(devices, firmware, "") assert.NoError(err) assert.Empty(bios) diff --git a/src/runtime/virtcontainers/types/asset.go b/src/runtime/virtcontainers/types/asset.go index 4268e7ec9..3b00b5a20 100644 --- a/src/runtime/virtcontainers/types/asset.go +++ b/src/runtime/virtcontainers/types/asset.go @@ -39,6 +39,8 @@ const ( // FirmwareAsset is a firmware asset. FirmwareAsset AssetType = "firmware" + + FirmwareVolumeAsset AssetType = "firmware_volume" ) // AssetTypes returns a list of all known asset types. @@ -47,6 +49,7 @@ const ( func AssetTypes() []AssetType { return []AssetType{ FirmwareAsset, + FirmwareVolumeAsset, HypervisorAsset, HypervisorCtlAsset, ImageAsset, @@ -89,6 +92,8 @@ func (t AssetType) Annotations() (string, string, error) { return annotations.JailerPath, annotations.JailerHash, nil case FirmwareAsset: return annotations.FirmwarePath, annotations.FirmwareHash, nil + case FirmwareVolumeAsset: + return annotations.FirmwareVolumePath, annotations.FirmwareVolumeHash, nil } return "", "", fmt.Errorf("Wrong asset type %s", t) diff --git a/src/runtime/virtcontainers/types/asset_test.go b/src/runtime/virtcontainers/types/asset_test.go index c8135be2d..d93278d3e 100644 --- a/src/runtime/virtcontainers/types/asset_test.go +++ b/src/runtime/virtcontainers/types/asset_test.go @@ -118,6 +118,7 @@ func TestAssetNew(t *testing.T) { {annotations.HypervisorCtlPath, annotations.HypervisorCtlHash, HypervisorCtlAsset, assetContentHash, false, false}, {annotations.JailerPath, annotations.JailerHash, JailerAsset, assetContentHash, false, false}, {annotations.FirmwarePath, annotations.FirmwareHash, FirmwareAsset, assetContentHash, false, false}, + {annotations.FirmwareVolumePath, annotations.FirmwareVolumeHash, FirmwareVolumeAsset, assetContentHash, false, false}, // Failure with incorrect hash {annotations.KernelPath, annotations.KernelHash, KernelAsset, assetContentWrongHash, true, false}, @@ -127,6 +128,7 @@ func TestAssetNew(t *testing.T) { {annotations.HypervisorCtlPath, annotations.HypervisorCtlHash, HypervisorCtlAsset, assetContentWrongHash, true, false}, {annotations.JailerPath, annotations.JailerHash, JailerAsset, assetContentWrongHash, true, false}, {annotations.FirmwarePath, annotations.FirmwareHash, FirmwareAsset, assetContentWrongHash, true, false}, + {annotations.FirmwareVolumePath, annotations.FirmwareVolumeHash, FirmwareVolumeAsset, assetContentWrongHash, true, false}, // Other failures {annotations.KernelPath, annotations.KernelHash, ImageAsset, assetContentHash, false, true}, From 89047901b364c308321aede5a88e50059e7ebbfb Mon Sep 17 00:00:00 2001 From: Eric Ernst Date: Tue, 1 Feb 2022 13:51:45 -0800 Subject: [PATCH 351/385] kata-deploy-push: only run if PR modifying tools path Since we are using this to exercise any changes to osbuilder or packaging scripts, let's make sure that we only run the test in that case. Similarly, don't run for every single push. Just run this workflow for pull requests. Fixes: #3594 Signed-off-by: Eric Ernst --- .github/workflows/kata-deploy-push.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/kata-deploy-push.yaml b/.github/workflows/kata-deploy-push.yaml index 0de874930..52fde686d 100644 --- a/.github/workflows/kata-deploy-push.yaml +++ b/.github/workflows/kata-deploy-push.yaml @@ -9,7 +9,9 @@ on: - synchronize - labeled - unlabeled - push: + paths: + - tools/** + - versions.yaml jobs: build-asset: From a9bebb31692de53dea9ef998f07300ad2fd35dd3 Mon Sep 17 00:00:00 2001 From: Wainer dos Santos Moschetta Date: Wed, 2 Feb 2022 19:50:01 -0300 Subject: [PATCH 352/385] openshift-ci: switch to CentOS Stream The build root container is switched from CentOS 8 to Stream 8 as the former reached EOL. Fixes #3605 Signed-off-by: Wainer dos Santos Moschetta --- ci/openshift-ci/images/Dockerfile.buildroot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/openshift-ci/images/Dockerfile.buildroot b/ci/openshift-ci/images/Dockerfile.buildroot index 712c39ad9..ce338ac14 100644 --- a/ci/openshift-ci/images/Dockerfile.buildroot +++ b/ci/openshift-ci/images/Dockerfile.buildroot @@ -4,7 +4,7 @@ # # This is the build root image for Kata Containers on OpenShift CI. # -FROM registry.centos.org/centos:8 +FROM quay.io/centos/centos:stream8 RUN yum -y update && \ yum -y install \ From 88a70d32ba5d3833ae84c8f65dd89fa17e3d0b1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Thu, 3 Feb 2022 22:24:03 +0100 Subject: [PATCH 353/385] Revert "workflows: Ensure a label change re-triggers the actions" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 7a879164bd2fa1a7aad7954a2fda8374e8af9968, as it's been proved that re-triggering the checks at every single change is more painful than having to close / re-open a PR in case we ever use the `force-skip-ci` label again. Fixes: #2804 Signed-off-by: Fabiano Fidêncio --- .github/workflows/commit-message-check.yaml | 2 -- .github/workflows/kata-deploy-push.yaml | 2 -- .github/workflows/move-issues-to-in-progress.yaml | 2 -- .github/workflows/snap.yaml | 2 -- .github/workflows/static-checks.yaml | 2 -- 5 files changed, 10 deletions(-) diff --git a/.github/workflows/commit-message-check.yaml b/.github/workflows/commit-message-check.yaml index 294e983ae..b76484b97 100644 --- a/.github/workflows/commit-message-check.yaml +++ b/.github/workflows/commit-message-check.yaml @@ -5,8 +5,6 @@ on: - opened - reopened - synchronize - - labeled - - unlabeled env: error_msg: |+ diff --git a/.github/workflows/kata-deploy-push.yaml b/.github/workflows/kata-deploy-push.yaml index 52fde686d..88030b8e9 100644 --- a/.github/workflows/kata-deploy-push.yaml +++ b/.github/workflows/kata-deploy-push.yaml @@ -7,8 +7,6 @@ on: - edited - reopened - synchronize - - labeled - - unlabeled paths: - tools/** - versions.yaml diff --git a/.github/workflows/move-issues-to-in-progress.yaml b/.github/workflows/move-issues-to-in-progress.yaml index ab97e2de9..0e15abaea 100644 --- a/.github/workflows/move-issues-to-in-progress.yaml +++ b/.github/workflows/move-issues-to-in-progress.yaml @@ -10,8 +10,6 @@ on: types: - opened - reopened - - labeled - - unlabeled jobs: move-linked-issues-to-in-progress: diff --git a/.github/workflows/snap.yaml b/.github/workflows/snap.yaml index 5ec399e83..ec968dc48 100644 --- a/.github/workflows/snap.yaml +++ b/.github/workflows/snap.yaml @@ -6,8 +6,6 @@ on: - synchronize - reopened - edited - - labeled - - unlabeled jobs: test: diff --git a/.github/workflows/static-checks.yaml b/.github/workflows/static-checks.yaml index 25618ff85..cc6a7149c 100644 --- a/.github/workflows/static-checks.yaml +++ b/.github/workflows/static-checks.yaml @@ -5,8 +5,6 @@ on: - edited - reopened - synchronize - - labeled - - unlabeled name: Static checks jobs: From 496bc10de29b889a44ca0baba970a6cb3270f624 Mon Sep 17 00:00:00 2001 From: Snir Sheriber Date: Thu, 3 Feb 2022 15:17:06 +0200 Subject: [PATCH 354/385] tools: check for yq before using it as get_from_kata_deps may be called from scripts that does not install_yq Signed-off-by: Snir Sheriber --- tools/packaging/scripts/lib.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/packaging/scripts/lib.sh b/tools/packaging/scripts/lib.sh index 1ed7b5003..8f4ba5e1c 100644 --- a/tools/packaging/scripts/lib.sh +++ b/tools/packaging/scripts/lib.sh @@ -36,6 +36,7 @@ get_from_kata_deps() { local dependency="$1" versions_file="${this_script_dir}/../../../versions.yaml" + command -v yq &> /dev/null || die 'yq command is not in your $PATH' result=$("yq" read -X "$versions_file" "$dependency") [ "$result" = "null" ] && result="" echo "$result" From 007221875e79a1b3c89ae26b7825a97f78cce005 Mon Sep 17 00:00:00 2001 From: Snir Sheriber Date: Thu, 3 Feb 2022 15:20:16 +0200 Subject: [PATCH 355/385] docs: update Release-Process.md with a reminder to test kata-deploy Fixes: #3611 Signed-off-by: Snir Sheriber --- docs/Release-Process.md | 1 + tools/packaging/scripts/lib.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/Release-Process.md b/docs/Release-Process.md index 5d6e913e8..3fc2f324a 100644 --- a/docs/Release-Process.md +++ b/docs/Release-Process.md @@ -48,6 +48,7 @@ ### Merge all bump version Pull requests - The above step will create a GitHub pull request in the Kata projects. Trigger the CI using `/test` command on each bump Pull request. + - Trigger the test-kata-deploy workflow on the kata-containers repository bump Pull request using `/test_kata_deploy` (monitor under the "action" tab). - Check any failures and fix if needed. - Work with the Kata approvers to verify that the CI works and the pull requests are merged. diff --git a/tools/packaging/scripts/lib.sh b/tools/packaging/scripts/lib.sh index 8f4ba5e1c..d53159a8c 100644 --- a/tools/packaging/scripts/lib.sh +++ b/tools/packaging/scripts/lib.sh @@ -36,7 +36,7 @@ get_from_kata_deps() { local dependency="$1" versions_file="${this_script_dir}/../../../versions.yaml" - command -v yq &> /dev/null || die 'yq command is not in your $PATH' + command -v yq &>/dev/null || die 'yq command is not in your $PATH' result=$("yq" read -X "$versions_file" "$dependency") [ "$result" = "null" ] && result="" echo "$result" From 419d813427734c42b6a4a057af9c8c54c024f36c Mon Sep 17 00:00:00 2001 From: Jianyong Wu Date: Mon, 22 Nov 2021 16:49:09 +0800 Subject: [PATCH 356/385] snap: update qemu version to 6.1.0 for arm Update qemu version of snap for arm to 6.1.0 thus the arch specific qemu version for arm needs clean up. Fixes: #3627 Signed-off-by: Jianyong Wu --- snap/snapcraft.yaml | 23 +++++------------------ versions.yaml | 6 ------ 2 files changed, 5 insertions(+), 24 deletions(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index bd75f9205..d8819736f 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -262,24 +262,11 @@ parts: kata_dir=${GOPATH}/src/github.com/${SNAPCRAFT_PROJECT_NAME}/${SNAPCRAFT_PROJECT_NAME} versions_file="${kata_dir}/versions.yaml" - # arch-specific definition - case "$(uname -m)" in - "aarch64") - branch="$(${yq} r ${versions_file} assets.hypervisor.qemu.architecture.aarch64.version)" - url="$(${yq} r ${versions_file} assets.hypervisor.qemu.url)" - commit="$(${yq} r ${versions_file} assets.hypervisor.qemu.architecture.aarch64.commit)" - patches_dir="${kata_dir}/tools/packaging/qemu/patches/$(echo ${branch} | sed -e 's/.[[:digit:]]*$//' -e 's/^v//').x" - patches_version_dir="${kata_dir}/tools/packaging/qemu/patches/tag_patches/${branch}" - ;; - - *) - branch="$(${yq} r ${versions_file} assets.hypervisor.qemu.version)" - url="$(${yq} r ${versions_file} assets.hypervisor.qemu.url)" - commit="" - patches_dir="${kata_dir}/tools/packaging/qemu/patches/$(echo ${branch} | sed -e 's/.[[:digit:]]*$//' -e 's/^v//').x" - patches_version_dir="${kata_dir}/tools/packaging/qemu/patches/tag_patches/${branch}" - ;; - esac + branch="$(${yq} r ${versions_file} assets.hypervisor.qemu.version)" + url="$(${yq} r ${versions_file} assets.hypervisor.qemu.url)" + commit="" + patches_dir="${kata_dir}/tools/packaging/qemu/patches/$(echo ${branch} | sed -e 's/.[[:digit:]]*$//' -e 's/^v//').x" + patches_version_dir="${kata_dir}/tools/packaging/qemu/patches/tag_patches/${branch}" # download source qemu_dir=${SNAPCRAFT_STAGE}/qemu diff --git a/versions.yaml b/versions.yaml index ec0c070a5..8e8ee9b36 100644 --- a/versions.yaml +++ b/versions.yaml @@ -98,12 +98,6 @@ assets: uscan-url: >- https://github.com/qemu/qemu/tags .*/v?(\d\S+)\.tar\.gz - architecture: - aarch64: - version: "v5.1.0" - branch: "master" - tag: "v5.1.0" - commit: "d0ed6a69d399ae193959225cdeaa9382746c91cc" qemu-experimental: description: "QEMU with virtiofs support" From 5ef522f7c3b1840d5c58a5670e7818bed184f8a6 Mon Sep 17 00:00:00 2001 From: Pierre Kohler Date: Tue, 7 Dec 2021 11:52:53 +0100 Subject: [PATCH 357/385] runtime: check kvm module `sev` correctly Runtime now accepts both `1` and `Y` as valid values for kvm_amd module parameter kvm_amd.sev. Fixes #3273 Signed-off-by: Pierre Kohler --- src/runtime/virtcontainers/hypervisor_amd64.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/runtime/virtcontainers/hypervisor_amd64.go b/src/runtime/virtcontainers/hypervisor_amd64.go index e74183d56..97a30ea01 100644 --- a/src/runtime/virtcontainers/hypervisor_amd64.go +++ b/src/runtime/virtcontainers/hypervisor_amd64.go @@ -18,9 +18,9 @@ func availableGuestProtection() (guestProtection, error) { if d, err := os.Stat(tdxSysFirmwareDir); (err == nil && d.IsDir()) || flags[tdxCPUFlag] { return tdxProtection, nil } - // SEV is supported and enabled when the kvm module `sev` parameter is set to `1` + // SEV is supported and enabled when the kvm module `sev` parameter is set to `1` (or `Y` for linux >= 5.12) if _, err := os.Stat(sevKvmParameterPath); err == nil { - if c, err := os.ReadFile(sevKvmParameterPath); err == nil && len(c) > 0 && c[0] == '1' { + if c, err := os.ReadFile(sevKvmParameterPath); err == nil && len(c) > 0 && (c[0] == '1' || c[0] == 'Y') { return sevProtection, nil } } From 8f48e283251f478c940283c608096be91bafae46 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Thu, 4 Nov 2021 13:23:46 +0100 Subject: [PATCH 358/385] virtcontainers: Expand the Network structure For simplicity sake, there should only be one networking structure per sandbox, as opposed to two (Network and NetworkingNamespace) currently. This commit start expanding the Network structure in order to eventually make it the single representation of a virtcontainers sandbox networking. Signed-off-by: Samuel Ortiz --- src/runtime/virtcontainers/network.go | 344 ++++++++++++++------------ src/runtime/virtcontainers/sandbox.go | 14 +- 2 files changed, 196 insertions(+), 162 deletions(-) diff --git a/src/runtime/virtcontainers/network.go b/src/runtime/virtcontainers/network.go index e6c681daa..b30415816 100644 --- a/src/runtime/virtcontainers/network.go +++ b/src/runtime/virtcontainers/network.go @@ -186,6 +186,189 @@ func networkLogger() *logrus.Entry { return virtLog.WithField("subsystem", "network") } +// Network represents a sandbox networking setup. +type Network struct { + NetNSPath string + InterworkingModel NetInterworkingModel + NetNSCreated bool + + Endpoints []Endpoint + NetmonPID int +} + +func NewNetwork(config *NetworkConfig) (*Network, error) { + if config == nil { + return nil, fmt.Errorf("Missing network configuration") + } + + return &Network{ + config.NetNSPath, + config.InterworkingModel, + config.NetNsCreated, + []Endpoint{}, + 0, + }, nil +} + +var networkTrace = getNetworkTrace("") + +func (n *Network) trace(ctx context.Context, name string) (otelTrace.Span, context.Context) { + return networkTrace(ctx, name, nil) +} + +func getNetworkTrace(networkType EndpointType) func(ctx context.Context, name string, endpoint interface{}) (otelTrace.Span, context.Context) { + return func(ctx context.Context, name string, endpoint interface{}) (otelTrace.Span, context.Context) { + span, ctx := katatrace.Trace(ctx, networkLogger(), name, networkTracingTags) + if networkType != "" { + katatrace.AddTags(span, "type", string(networkType)) + } + if endpoint != nil { + katatrace.AddTags(span, "endpoint", endpoint) + } + return span, ctx + } +} + +func closeSpan(span otelTrace.Span, err error) { + if err != nil { + katatrace.AddTags(span, "error", err.Error()) + } + span.End() +} + +// Run runs a callback in the specified network namespace. +func (n *Network) Run(ctx context.Context, _ string, cb func() error) error { + span, _ := n.trace(ctx, "Run") + defer span.End() + + return doNetNS(n.NetNSPath, func(_ ns.NetNS) error { + return cb() + }) +} + +// Add adds all needed interfaces inside the network namespace. +func (n *Network) Add(ctx context.Context, config *NetworkConfig, s *Sandbox, hotplug bool) ([]Endpoint, error) { + span, ctx := n.trace(ctx, "Add") + katatrace.AddTags(span, "type", n.InterworkingModel.GetModel()) + defer span.End() + + endpoints, err := createEndpointsFromScan(n.NetNSPath, config) + if err != nil { + return endpoints, err + } + katatrace.AddTags(span, "endpoints", endpoints, "hotplug", hotplug) + + err = doNetNS(n.NetNSPath, func(_ ns.NetNS) error { + for _, endpoint := range endpoints { + networkLogger().WithField("endpoint-type", endpoint.Type()).WithField("hotplug", hotplug).Info("Attaching endpoint") + if hotplug { + if err := endpoint.HotAttach(ctx, s.hypervisor); err != nil { + return err + } + } else { + if err := endpoint.Attach(ctx, s); err != nil { + return err + } + } + + if !s.hypervisor.IsRateLimiterBuiltin() { + rxRateLimiterMaxRate := s.hypervisor.HypervisorConfig().RxRateLimiterMaxRate + if rxRateLimiterMaxRate > 0 { + networkLogger().Info("Add Rx Rate Limiter") + if err := addRxRateLimiter(endpoint, rxRateLimiterMaxRate); err != nil { + return err + } + } + txRateLimiterMaxRate := s.hypervisor.HypervisorConfig().TxRateLimiterMaxRate + if txRateLimiterMaxRate > 0 { + networkLogger().Info("Add Tx Rate Limiter") + if err := addTxRateLimiter(endpoint, txRateLimiterMaxRate); err != nil { + return err + } + } + } + } + + return nil + }) + if err != nil { + return []Endpoint{}, err + } + + n.Endpoints = append(n.Endpoints, endpoints...) + + networkLogger().Debug("Network added") + + return endpoints, nil +} + +func (n *Network) PostAdd(ctx context.Context, _ *NetworkNamespace, hotplug bool) error { + if hotplug { + return nil + } + + if n.Endpoints == nil { + return nil + } + + endpoints := n.Endpoints + + for _, endpoint := range endpoints { + netPair := endpoint.NetworkPair() + if netPair == nil { + continue + } + if netPair.VhostFds != nil { + for _, VhostFd := range netPair.VhostFds { + VhostFd.Close() + } + } + } + + return nil +} + +// Remove network endpoints in the network namespace. It also deletes the network +// namespace in case the namespace has been created by us. +func (n *Network) Remove(ctx context.Context, _ *NetworkNamespace, hypervisor Hypervisor) error { + span, ctx := n.trace(ctx, "Remove") + defer span.End() + + for _, endpoint := range n.Endpoints { + if endpoint.GetRxRateLimiter() { + networkLogger().WithField("endpoint-type", endpoint.Type()).Info("Deleting rx rate limiter") + // Deleting rx rate limiter should enter the network namespace. + if err := removeRxRateLimiter(endpoint, n.NetNSPath); err != nil { + return err + } + } + + if endpoint.GetTxRateLimiter() { + networkLogger().WithField("endpoint-type", endpoint.Type()).Info("Deleting tx rate limiter") + // Deleting tx rate limiter should enter the network namespace. + if err := removeTxRateLimiter(endpoint, n.NetNSPath); err != nil { + return err + } + } + + // Detach for an endpoint should enter the network namespace + // if required. + networkLogger().WithField("endpoint-type", endpoint.Type()).Info("Detaching endpoint") + if err := endpoint.Detach(ctx, n.NetNSCreated, n.NetNSPath); err != nil { + return err + } + } + + networkLogger().Debug("Network removed") + + if n.NetNSCreated { + networkLogger().Infof("Network namespace %q deleted", n.NetNSPath) + return deleteNetNS(n.NetNSPath) + } + + return nil +} + // NetworkNamespace contains all data related to its network namespace. type NetworkNamespace struct { NetNsPath string @@ -1155,167 +1338,6 @@ func createEndpoint(netInfo NetworkInfo, idx int, model NetInterworkingModel, li return endpoint, err } -// Network is the virtcontainer network structure -type Network struct { -} - -var networkTrace = getNetworkTrace("") - -func (n *Network) trace(ctx context.Context, name string) (otelTrace.Span, context.Context) { - return networkTrace(ctx, name, nil) -} - -func getNetworkTrace(networkType EndpointType) func(ctx context.Context, name string, endpoint interface{}) (otelTrace.Span, context.Context) { - return func(ctx context.Context, name string, endpoint interface{}) (otelTrace.Span, context.Context) { - span, ctx := katatrace.Trace(ctx, networkLogger(), name, networkTracingTags) - if networkType != "" { - katatrace.AddTags(span, "type", string(networkType)) - } - if endpoint != nil { - katatrace.AddTags(span, "endpoint", endpoint) - } - return span, ctx - } -} - -func closeSpan(span otelTrace.Span, err error) { - if err != nil { - katatrace.AddTags(span, "error", err.Error()) - } - span.End() -} - -// Run runs a callback in the specified network namespace. -func (n *Network) Run(ctx context.Context, networkNSPath string, cb func() error) error { - span, _ := n.trace(ctx, "Run") - defer span.End() - - return doNetNS(networkNSPath, func(_ ns.NetNS) error { - return cb() - }) -} - -// Add adds all needed interfaces inside the network namespace. -func (n *Network) Add(ctx context.Context, config *NetworkConfig, s *Sandbox, hotplug bool) ([]Endpoint, error) { - span, ctx := n.trace(ctx, "Add") - katatrace.AddTags(span, "type", config.InterworkingModel.GetModel()) - defer span.End() - - endpoints, err := createEndpointsFromScan(config.NetNSPath, config) - if err != nil { - return endpoints, err - } - katatrace.AddTags(span, "endpoints", endpoints, "hotplug", hotplug) - - err = doNetNS(config.NetNSPath, func(_ ns.NetNS) error { - for _, endpoint := range endpoints { - networkLogger().WithField("endpoint-type", endpoint.Type()).WithField("hotplug", hotplug).Info("Attaching endpoint") - if hotplug { - if err := endpoint.HotAttach(ctx, s.hypervisor); err != nil { - return err - } - } else { - if err := endpoint.Attach(ctx, s); err != nil { - return err - } - } - - if !s.hypervisor.IsRateLimiterBuiltin() { - rxRateLimiterMaxRate := s.hypervisor.HypervisorConfig().RxRateLimiterMaxRate - if rxRateLimiterMaxRate > 0 { - networkLogger().Info("Add Rx Rate Limiter") - if err := addRxRateLimiter(endpoint, rxRateLimiterMaxRate); err != nil { - return err - } - } - txRateLimiterMaxRate := s.hypervisor.HypervisorConfig().TxRateLimiterMaxRate - if txRateLimiterMaxRate > 0 { - networkLogger().Info("Add Tx Rate Limiter") - if err := addTxRateLimiter(endpoint, txRateLimiterMaxRate); err != nil { - return err - } - } - } - } - - return nil - }) - if err != nil { - return []Endpoint{}, err - } - - networkLogger().Debug("Network added") - - return endpoints, nil -} - -func (n *Network) PostAdd(ctx context.Context, ns *NetworkNamespace, hotplug bool) error { - if hotplug { - return nil - } - - if ns.Endpoints == nil { - return nil - } - - endpoints := ns.Endpoints - - for _, endpoint := range endpoints { - netPair := endpoint.NetworkPair() - if netPair == nil { - continue - } - if netPair.VhostFds != nil { - for _, VhostFd := range netPair.VhostFds { - VhostFd.Close() - } - } - } - - return nil -} - -// Remove network endpoints in the network namespace. It also deletes the network -// namespace in case the namespace has been created by us. -func (n *Network) Remove(ctx context.Context, ns *NetworkNamespace, hypervisor Hypervisor) error { - span, ctx := n.trace(ctx, "Remove") - defer span.End() - - for _, endpoint := range ns.Endpoints { - if endpoint.GetRxRateLimiter() { - networkLogger().WithField("endpoint-type", endpoint.Type()).Info("Deleting rx rate limiter") - // Deleting rx rate limiter should enter the network namespace. - if err := removeRxRateLimiter(endpoint, ns.NetNsPath); err != nil { - return err - } - } - - if endpoint.GetTxRateLimiter() { - networkLogger().WithField("endpoint-type", endpoint.Type()).Info("Deleting tx rate limiter") - // Deleting tx rate limiter should enter the network namespace. - if err := removeTxRateLimiter(endpoint, ns.NetNsPath); err != nil { - return err - } - } - - // Detach for an endpoint should enter the network namespace - // if required. - networkLogger().WithField("endpoint-type", endpoint.Type()).Info("Detaching endpoint") - if err := endpoint.Detach(ctx, ns.NetNsCreated, ns.NetNsPath); err != nil { - return err - } - } - - networkLogger().Debug("Network removed") - - if ns.NetNsCreated { - networkLogger().Infof("Network namespace %q deleted", ns.NetNsPath) - return deleteNetNS(ns.NetNsPath) - } - - return nil -} - // func addRxRateLmiter implements tc-based rx rate limiter to control network I/O inbound traffic // on VM level for hypervisors which don't implement rate limiter in itself, like qemu, etc. func addRxRateLimiter(endpoint Endpoint, maxRate uint64) error { diff --git a/src/runtime/virtcontainers/sandbox.go b/src/runtime/virtcontainers/sandbox.go index 7426c607d..47eb393d0 100644 --- a/src/runtime/virtcontainers/sandbox.go +++ b/src/runtime/virtcontainers/sandbox.go @@ -208,7 +208,7 @@ type Sandbox struct { id string - network Network + network *Network state types.SandboxState @@ -521,6 +521,11 @@ func newSandbox(ctx context.Context, sandboxConfig SandboxConfig, factory Factor return nil, err } + network, err := NewNetwork(&sandboxConfig.NetworkConfig) + if err != nil { + return nil, err + } + s := &Sandbox{ id: sandboxConfig.ID, factory: factory, @@ -534,6 +539,7 @@ func newSandbox(ctx context.Context, sandboxConfig SandboxConfig, factory Factor wg: &sync.WaitGroup{}, shmSize: sandboxConfig.ShmSize, sharePidNs: sandboxConfig.SharePidNs, + network: network, networkNS: NetworkNamespace{NetNsPath: sandboxConfig.NetworkConfig.NetNSPath}, ctx: ctx, swapDeviceNum: 0, @@ -803,6 +809,12 @@ func (s *Sandbox) createNetwork(ctx context.Context) error { span, ctx := katatrace.Trace(ctx, s.Logger(), "createNetwork", sandboxTracingTags, map[string]string{"sandbox_id": s.id}) defer span.End() + network, err := NewNetwork(&s.config.NetworkConfig) + if err != nil { + return err + } + + s.network = network s.networkNS = NetworkNamespace{ NetNsPath: s.config.NetworkConfig.NetNSPath, NetNsCreated: s.config.NetworkConfig.NetNsCreated, From 2edea883698bddcc2b17f24ac3c516382027d753 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Thu, 4 Nov 2021 13:34:08 +0100 Subject: [PATCH 359/385] virtcontainers: Make the Network structure manage endpoints Endpoints creations, attachement and hotplug are bound to the networking namespace described through the Network structure. Making them Network methods is natural and simplifies the code. Signed-off-by: Samuel Ortiz --- src/runtime/virtcontainers/network.go | 340 ++++++++++++++++---------- src/runtime/virtcontainers/sandbox.go | 17 +- 2 files changed, 211 insertions(+), 146 deletions(-) diff --git a/src/runtime/virtcontainers/network.go b/src/runtime/virtcontainers/network.go index b30415816..dc664dcc1 100644 --- a/src/runtime/virtcontainers/network.go +++ b/src/runtime/virtcontainers/network.go @@ -236,6 +236,208 @@ func closeSpan(span otelTrace.Span, err error) { span.End() } +func (n *Network) attachEndpoint(ctx context.Context, s *Sandbox, netInfo NetworkInfo, link netlink.Link, hotplug bool) (Endpoint, error) { + var endpoint Endpoint + // TODO: This is the incoming interface + // based on the incoming interface we should create + // an appropriate EndPoint based on interface type + // This should be a switch + + // Check if interface is a physical interface. Do not create + // tap interface/bridge if it is. + isPhysical, err := isPhysicalIface(netInfo.Iface.Name) + if err != nil { + return nil, err + } + + if isPhysical { + networkLogger().WithField("interface", netInfo.Iface.Name).Info("Physical network interface found") + endpoint, err = createPhysicalEndpoint(netInfo) + } else { + var socketPath string + idx := len(n.Endpoints) + + // Check if this is a dummy interface which has a vhost-user socket associated with it + socketPath, err = vhostUserSocketPath(netInfo) + if err != nil { + return nil, err + } + + if socketPath != "" { + networkLogger().WithField("interface", netInfo.Iface.Name).Info("VhostUser network interface found") + endpoint, err = createVhostUserEndpoint(netInfo, socketPath) + } else if netInfo.Iface.Type == "macvlan" { + networkLogger().Infof("macvlan interface found") + endpoint, err = createMacvlanNetworkEndpoint(idx, netInfo.Iface.Name, n.InterworkingModel) + } else if netInfo.Iface.Type == "macvtap" { + networkLogger().Infof("macvtap interface found") + endpoint, err = createMacvtapNetworkEndpoint(netInfo) + } else if netInfo.Iface.Type == "tap" { + networkLogger().Info("tap interface found") + endpoint, err = createTapNetworkEndpoint(idx, netInfo.Iface.Name) + } else if netInfo.Iface.Type == "tuntap" { + if link != nil { + switch link.(*netlink.Tuntap).Mode { + case 0: + // mount /sys/class/net to get links + return nil, fmt.Errorf("Network device mode not determined correctly. Mount sysfs in caller") + case 1: + return nil, fmt.Errorf("tun networking device not yet supported") + case 2: + networkLogger().Info("tuntap tap interface found") + endpoint, err = createTuntapNetworkEndpoint(idx, netInfo.Iface.Name, netInfo.Iface.HardwareAddr, n.InterworkingModel) + default: + return nil, fmt.Errorf("tuntap network %v mode unsupported", link.(*netlink.Tuntap).Mode) + } + } + } else if netInfo.Iface.Type == "veth" { + networkLogger().Info("veth interface found") + endpoint, err = createVethNetworkEndpoint(idx, netInfo.Iface.Name, n.InterworkingModel) + } else if netInfo.Iface.Type == "ipvlan" { + networkLogger().Info("ipvlan interface found") + endpoint, err = createIPVlanNetworkEndpoint(idx, netInfo.Iface.Name) + } else { + return nil, fmt.Errorf("Unsupported network interface: %s", netInfo.Iface.Type) + } + } + + endpoint.SetProperties(netInfo) + + if err := doNetNS(n.NetNSPath, func(_ ns.NetNS) error { + networkLogger().WithField("endpoint-type", endpoint.Type()).WithField("hotplug", hotplug).Info("Attaching endpoint") + if hotplug { + if err := endpoint.HotAttach(ctx, s.hypervisor); err != nil { + return err + } + } else { + if err := endpoint.Attach(ctx, s); err != nil { + return err + } + } + + if !s.hypervisor.IsRateLimiterBuiltin() { + rxRateLimiterMaxRate := s.hypervisor.HypervisorConfig().RxRateLimiterMaxRate + if rxRateLimiterMaxRate > 0 { + networkLogger().Info("Add Rx Rate Limiter") + if err := addRxRateLimiter(endpoint, rxRateLimiterMaxRate); err != nil { + return err + } + } + txRateLimiterMaxRate := s.hypervisor.HypervisorConfig().TxRateLimiterMaxRate + if txRateLimiterMaxRate > 0 { + networkLogger().Info("Add Tx Rate Limiter") + if err := addTxRateLimiter(endpoint, txRateLimiterMaxRate); err != nil { + return err + } + } + } + + return nil + }); err != nil { + return nil, err + } + + n.Endpoints = append(n.Endpoints, endpoint) + + return endpoint, nil +} + +func (n *Network) detachEndpoint(ctx context.Context, s *Sandbox, idx int, hotplug bool) error { + if idx > len(n.Endpoints)-1 { + return fmt.Errorf("Enpoint index overflow") + } + + endpoint := n.Endpoints[idx] + + if endpoint.GetRxRateLimiter() { + networkLogger().WithField("endpoint-type", endpoint.Type()).Info("Deleting rx rate limiter") + // Deleting rx rate limiter should enter the network namespace. + if err := removeRxRateLimiter(endpoint, n.NetNSPath); err != nil { + return err + } + } + + if endpoint.GetTxRateLimiter() { + networkLogger().WithField("endpoint-type", endpoint.Type()).Info("Deleting tx rate limiter") + // Deleting tx rate limiter should enter the network namespace. + if err := removeTxRateLimiter(endpoint, n.NetNSPath); err != nil { + return err + } + } + + // Detach for an endpoint should enter the network namespace + // if required. + networkLogger().WithField("endpoint-type", endpoint.Type()).Info("Detaching endpoint") + if hotplug && s != nil { + if err := endpoint.HotDetach(ctx, s.hypervisor, n.NetNSCreated, n.NetNSPath); err != nil { + return err + } + } else { + if err := endpoint.Detach(ctx, n.NetNSCreated, n.NetNSPath); err != nil { + return err + } + } + + n.Endpoints = append(n.Endpoints[:idx], n.Endpoints[idx+1:]...) + + return nil +} + +// Scan the networking namespace through netlink and then: +// 1. Create the endpoints for the relevant interfaces found there. +// 2. Attach them to the VM. +func (n *Network) attachEndpoints(ctx context.Context, s *Sandbox, hotplug bool) error { + netnsHandle, err := netns.GetFromPath(n.NetNSPath) + if err != nil { + return err + } + defer netnsHandle.Close() + + netlinkHandle, err := netlink.NewHandleAt(netnsHandle) + if err != nil { + return err + } + defer netlinkHandle.Close() + + linkList, err := netlinkHandle.LinkList() + if err != nil { + return err + } + + for _, link := range linkList { + netInfo, err := networkInfoFromLink(netlinkHandle, link) + if err != nil { + return err + } + + // Ignore unconfigured network interfaces. These are + // either base tunnel devices that are not namespaced + // like gre0, gretap0, sit0, ipip0, tunl0 or incorrectly + // setup interfaces. + if len(netInfo.Addrs) == 0 { + continue + } + + // Skip any loopback interfaces: + if (netInfo.Iface.Flags & net.FlagLoopback) != 0 { + continue + } + + _, err = n.attachEndpoint(ctx, s, netInfo, link, hotplug) + if err != nil { + return err + } + } + + sort.Slice(n.Endpoints, func(i, j int) bool { + return n.Endpoints[i].Name() < n.Endpoints[j].Name() + }) + + networkLogger().WithField("endpoints", n.Endpoints).Info("Endpoints found after scan") + + return nil +} + // Run runs a callback in the specified network namespace. func (n *Network) Run(ctx context.Context, _ string, cb func() error) error { span, _ := n.trace(ctx, "Run") @@ -252,54 +454,14 @@ func (n *Network) Add(ctx context.Context, config *NetworkConfig, s *Sandbox, ho katatrace.AddTags(span, "type", n.InterworkingModel.GetModel()) defer span.End() - endpoints, err := createEndpointsFromScan(n.NetNSPath, config) - if err != nil { - return endpoints, err - } - katatrace.AddTags(span, "endpoints", endpoints, "hotplug", hotplug) - - err = doNetNS(n.NetNSPath, func(_ ns.NetNS) error { - for _, endpoint := range endpoints { - networkLogger().WithField("endpoint-type", endpoint.Type()).WithField("hotplug", hotplug).Info("Attaching endpoint") - if hotplug { - if err := endpoint.HotAttach(ctx, s.hypervisor); err != nil { - return err - } - } else { - if err := endpoint.Attach(ctx, s); err != nil { - return err - } - } - - if !s.hypervisor.IsRateLimiterBuiltin() { - rxRateLimiterMaxRate := s.hypervisor.HypervisorConfig().RxRateLimiterMaxRate - if rxRateLimiterMaxRate > 0 { - networkLogger().Info("Add Rx Rate Limiter") - if err := addRxRateLimiter(endpoint, rxRateLimiterMaxRate); err != nil { - return err - } - } - txRateLimiterMaxRate := s.hypervisor.HypervisorConfig().TxRateLimiterMaxRate - if txRateLimiterMaxRate > 0 { - networkLogger().Info("Add Tx Rate Limiter") - if err := addTxRateLimiter(endpoint, txRateLimiterMaxRate); err != nil { - return err - } - } - } - } - - return nil - }) - if err != nil { - return []Endpoint{}, err + if err := n.attachEndpoints(ctx, s, hotplug); err != nil { + return n.Endpoints, err } - n.Endpoints = append(n.Endpoints, endpoints...) - + katatrace.AddTags(span, "endpoints", n.Endpoints, "hotplug", hotplug) networkLogger().Debug("Network added") - return endpoints, nil + return n.Endpoints, nil } func (n *Network) PostAdd(ctx context.Context, _ *NetworkNamespace, hotplug bool) error { @@ -334,27 +496,8 @@ func (n *Network) Remove(ctx context.Context, _ *NetworkNamespace, hypervisor Hy span, ctx := n.trace(ctx, "Remove") defer span.End() - for _, endpoint := range n.Endpoints { - if endpoint.GetRxRateLimiter() { - networkLogger().WithField("endpoint-type", endpoint.Type()).Info("Deleting rx rate limiter") - // Deleting rx rate limiter should enter the network namespace. - if err := removeRxRateLimiter(endpoint, n.NetNSPath); err != nil { - return err - } - } - - if endpoint.GetTxRateLimiter() { - networkLogger().WithField("endpoint-type", endpoint.Type()).Info("Deleting tx rate limiter") - // Deleting tx rate limiter should enter the network namespace. - if err := removeTxRateLimiter(endpoint, n.NetNSPath); err != nil { - return err - } - } - - // Detach for an endpoint should enter the network namespace - // if required. - networkLogger().WithField("endpoint-type", endpoint.Type()).Info("Detaching endpoint") - if err := endpoint.Detach(ctx, n.NetNSCreated, n.NetNSPath); err != nil { + for i, _ := range n.Endpoints { + if err := n.detachEndpoint(ctx, nil, i, false); err != nil { return err } } @@ -1204,73 +1347,6 @@ func networkInfoFromLink(handle *netlink.Handle, link netlink.Link) (NetworkInfo }, nil } -func createEndpointsFromScan(networkNSPath string, config *NetworkConfig) ([]Endpoint, error) { - var endpoints []Endpoint - - netnsHandle, err := netns.GetFromPath(networkNSPath) - if err != nil { - return []Endpoint{}, err - } - defer netnsHandle.Close() - - netlinkHandle, err := netlink.NewHandleAt(netnsHandle) - if err != nil { - return []Endpoint{}, err - } - defer netlinkHandle.Close() - - linkList, err := netlinkHandle.LinkList() - if err != nil { - return []Endpoint{}, err - } - - idx := 0 - for _, link := range linkList { - var ( - endpoint Endpoint - errCreate error - ) - - netInfo, err := networkInfoFromLink(netlinkHandle, link) - if err != nil { - return []Endpoint{}, err - } - - // Ignore unconfigured network interfaces. These are - // either base tunnel devices that are not namespaced - // like gre0, gretap0, sit0, ipip0, tunl0 or incorrectly - // setup interfaces. - if len(netInfo.Addrs) == 0 { - continue - } - - // Skip any loopback interfaces: - if (netInfo.Iface.Flags & net.FlagLoopback) != 0 { - continue - } - - if err := doNetNS(networkNSPath, func(_ ns.NetNS) error { - endpoint, errCreate = createEndpoint(netInfo, idx, config.InterworkingModel, link) - return errCreate - }); err != nil { - return []Endpoint{}, err - } - - endpoint.SetProperties(netInfo) - endpoints = append(endpoints, endpoint) - - idx++ - } - - sort.Slice(endpoints, func(i, j int) bool { - return endpoints[i].Name() < endpoints[j].Name() - }) - - networkLogger().WithField("endpoints", endpoints).Info("Endpoints found after scan") - - return endpoints, nil -} - func createEndpoint(netInfo NetworkInfo, idx int, model NetInterworkingModel, link netlink.Link) (Endpoint, error) { var endpoint Endpoint // TODO: This is the incoming interface diff --git a/src/runtime/virtcontainers/sandbox.go b/src/runtime/virtcontainers/sandbox.go index 47eb393d0..e1e455011 100644 --- a/src/runtime/virtcontainers/sandbox.go +++ b/src/runtime/virtcontainers/sandbox.go @@ -20,7 +20,6 @@ import ( "sync" "syscall" - "github.com/containernetworking/plugins/pkg/ns" specs "github.com/opencontainers/runtime-spec/specs-go" "github.com/pkg/errors" "github.com/sirupsen/logrus" @@ -884,22 +883,14 @@ func (s *Sandbox) AddInterface(ctx context.Context, inf *pbTypes.Interface) (*pb return nil, err } - endpoint, err := createEndpoint(netInfo, len(s.networkNS.Endpoints), s.config.NetworkConfig.InterworkingModel, nil) + endpoint, err := s.network.attachEndpoint(ctx, s, netInfo, nil, true) if err != nil { return nil, err } - endpoint.SetProperties(netInfo) - if err := doNetNS(s.networkNS.NetNsPath, func(_ ns.NetNS) error { - s.Logger().WithField("endpoint-type", endpoint.Type()).Info("Hot attaching endpoint") - return endpoint.HotAttach(ctx, s.hypervisor) - }); err != nil { - return nil, err - } - defer func() { if err != nil { - if errDetach := endpoint.HotDetach(ctx, s.hypervisor, s.networkNS.NetNsCreated, s.networkNS.NetNsPath); errDetach != nil { + if errDetach := s.network.detachEndpoint(ctx, s, len(s.network.Endpoints)-1, true); err != nil { s.Logger().WithField("endpoint-type", endpoint.Type()).WithError(errDetach).Error("rollback hot attaching endpoint failed") } } @@ -913,7 +904,6 @@ func (s *Sandbox) AddInterface(ctx context.Context, inf *pbTypes.Interface) (*pb } // Update the sandbox storage - s.networkNS.Endpoints = append(s.networkNS.Endpoints, endpoint) if err = s.Save(); err != nil { return nil, err } @@ -926,10 +916,9 @@ func (s *Sandbox) RemoveInterface(ctx context.Context, inf *pbTypes.Interface) ( for i, endpoint := range s.networkNS.Endpoints { if endpoint.HardwareAddr() == inf.HwAddr { s.Logger().WithField("endpoint-type", endpoint.Type()).Info("Hot detaching endpoint") - if err := endpoint.HotDetach(ctx, s.hypervisor, s.networkNS.NetNsCreated, s.networkNS.NetNsPath); err != nil { + if err := s.network.detachEndpoint(ctx, s, i, true); err != nil { return inf, err } - s.networkNS.Endpoints = append(s.networkNS.Endpoints[:i], s.networkNS.Endpoints[i+1:]...) if err := s.Save(); err != nil { return inf, err From d7b67a7d1a2e17308a86392d4d52d72fcdb527f8 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Sat, 6 Nov 2021 06:56:50 +0100 Subject: [PATCH 360/385] virtcontainers: Network API cleanups and simplifications Remove unused parameters. Reduce the number of parameters by deriving some of them (e.g. a networking config) from their outer structure (e.g. a Sandbox reference). Signed-off-by: Samuel Ortiz --- src/runtime/virtcontainers/network.go | 8 ++++---- src/runtime/virtcontainers/sandbox.go | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/runtime/virtcontainers/network.go b/src/runtime/virtcontainers/network.go index dc664dcc1..d2f7af072 100644 --- a/src/runtime/virtcontainers/network.go +++ b/src/runtime/virtcontainers/network.go @@ -439,7 +439,7 @@ func (n *Network) attachEndpoints(ctx context.Context, s *Sandbox, hotplug bool) } // Run runs a callback in the specified network namespace. -func (n *Network) Run(ctx context.Context, _ string, cb func() error) error { +func (n *Network) Run(ctx context.Context, cb func() error) error { span, _ := n.trace(ctx, "Run") defer span.End() @@ -449,7 +449,7 @@ func (n *Network) Run(ctx context.Context, _ string, cb func() error) error { } // Add adds all needed interfaces inside the network namespace. -func (n *Network) Add(ctx context.Context, config *NetworkConfig, s *Sandbox, hotplug bool) ([]Endpoint, error) { +func (n *Network) Add(ctx context.Context, s *Sandbox, hotplug bool) ([]Endpoint, error) { span, ctx := n.trace(ctx, "Add") katatrace.AddTags(span, "type", n.InterworkingModel.GetModel()) defer span.End() @@ -464,7 +464,7 @@ func (n *Network) Add(ctx context.Context, config *NetworkConfig, s *Sandbox, ho return n.Endpoints, nil } -func (n *Network) PostAdd(ctx context.Context, _ *NetworkNamespace, hotplug bool) error { +func (n *Network) PostAdd(ctx context.Context, hotplug bool) error { if hotplug { return nil } @@ -492,7 +492,7 @@ func (n *Network) PostAdd(ctx context.Context, _ *NetworkNamespace, hotplug bool // Remove network endpoints in the network namespace. It also deletes the network // namespace in case the namespace has been created by us. -func (n *Network) Remove(ctx context.Context, _ *NetworkNamespace, hypervisor Hypervisor) error { +func (n *Network) Remove(ctx context.Context) error { span, ctx := n.trace(ctx, "Remove") defer span.End() diff --git a/src/runtime/virtcontainers/sandbox.go b/src/runtime/virtcontainers/sandbox.go index e1e455011..2a07362a2 100644 --- a/src/runtime/virtcontainers/sandbox.go +++ b/src/runtime/virtcontainers/sandbox.go @@ -825,7 +825,7 @@ func (s *Sandbox) createNetwork(ctx context.Context) error { // after vm is started. if s.factory == nil { // Add the network - endpoints, err := s.network.Add(ctx, &s.config.NetworkConfig, s, false) + endpoints, err := s.network.Add(ctx, s, false) if err != nil { return err } @@ -836,14 +836,14 @@ func (s *Sandbox) createNetwork(ctx context.Context) error { } func (s *Sandbox) postCreatedNetwork(ctx context.Context) error { - return s.network.PostAdd(ctx, &s.networkNS, s.factory != nil) + return s.network.PostAdd(ctx, s.factory != nil) } func (s *Sandbox) removeNetwork(ctx context.Context) error { span, ctx := katatrace.Trace(ctx, s.Logger(), "removeNetwork", sandboxTracingTags, map[string]string{"sandbox_id": s.id}) defer span.End() - return s.network.Remove(ctx, &s.networkNS, s.hypervisor) + return s.network.Remove(ctx) } func (s *Sandbox) generateNetInfo(inf *pbTypes.Interface) (NetworkInfo, error) { @@ -1173,7 +1173,7 @@ func (s *Sandbox) startVM(ctx context.Context) (err error) { } }() - if err := s.network.Run(ctx, s.networkNS.NetNsPath, func() error { + if err := s.network.Run(ctx, func() error { if s.factory != nil { vm, err := s.factory.GetVM(ctx, VMConfig{ HypervisorType: s.config.HypervisorType, @@ -1195,7 +1195,7 @@ func (s *Sandbox) startVM(ctx context.Context) (err error) { // In case of vm factory, network interfaces are hotplugged // after vm is started. if s.factory != nil { - endpoints, err := s.network.Add(ctx, &s.config.NetworkConfig, s, true) + endpoints, err := s.network.Add(ctx, s, true) if err != nil { return err } From 844eb6199202c63c87b086cee8390dccf043b297 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Sat, 6 Nov 2021 07:13:38 +0100 Subject: [PATCH 361/385] virtcontainers: Have CreateVM use a Network reference We are replacing the NetworkingNamespace structure with the Network one, so we should have the hypervisor interface switching to it as well. Signed-off-by: Samuel Ortiz --- src/runtime/virtcontainers/acrn.go | 2 +- src/runtime/virtcontainers/acrn_test.go | 4 ++- src/runtime/virtcontainers/clh.go | 2 +- src/runtime/virtcontainers/clh_test.go | 10 ++++++-- src/runtime/virtcontainers/fc.go | 4 +-- src/runtime/virtcontainers/hypervisor.go | 2 +- src/runtime/virtcontainers/mock_hypervisor.go | 2 +- .../virtcontainers/mock_hypervisor_test.go | 7 ++++-- src/runtime/virtcontainers/network.go | 12 ++++++++- src/runtime/virtcontainers/qemu.go | 2 +- src/runtime/virtcontainers/qemu_test.go | 25 +++++++++++++------ src/runtime/virtcontainers/sandbox.go | 2 +- src/runtime/virtcontainers/vm.go | 7 +++++- 13 files changed, 58 insertions(+), 23 deletions(-) diff --git a/src/runtime/virtcontainers/acrn.go b/src/runtime/virtcontainers/acrn.go index db0f6491a..d97cf2a0c 100644 --- a/src/runtime/virtcontainers/acrn.go +++ b/src/runtime/virtcontainers/acrn.go @@ -356,7 +356,7 @@ func (a *Acrn) setConfig(config *HypervisorConfig) error { } // CreateVM is the VM creation -func (a *Acrn) CreateVM(ctx context.Context, id string, networkNS NetworkNamespace, hypervisorConfig *HypervisorConfig) error { +func (a *Acrn) CreateVM(ctx context.Context, id string, network *Network, hypervisorConfig *HypervisorConfig) error { // Save the tracing context a.ctx = ctx diff --git a/src/runtime/virtcontainers/acrn_test.go b/src/runtime/virtcontainers/acrn_test.go index bb19b45a7..45d85fb4e 100644 --- a/src/runtime/virtcontainers/acrn_test.go +++ b/src/runtime/virtcontainers/acrn_test.go @@ -243,7 +243,9 @@ func TestAcrnCreateVM(t *testing.T) { //set PID to 1 to ignore hypercall to get UUID and set a random UUID a.state.PID = 1 a.state.UUID = "f81d4fae-7dec-11d0-a765-00a0c91e6bf6" - err = a.CreateVM(context.Background(), sandbox.id, NetworkNamespace{}, &sandbox.config.HypervisorConfig) + network, err := NewNetwork() + assert.NoError(err) + err = a.CreateVM(context.Background(), sandbox.id, network, &sandbox.config.HypervisorConfig) assert.NoError(err) assert.Exactly(acrnConfig, a.config) } diff --git a/src/runtime/virtcontainers/clh.go b/src/runtime/virtcontainers/clh.go index da6e73e3e..5b48ae56b 100644 --- a/src/runtime/virtcontainers/clh.go +++ b/src/runtime/virtcontainers/clh.go @@ -200,7 +200,7 @@ func (clh *cloudHypervisor) setConfig(config *HypervisorConfig) error { // For cloudHypervisor this call only sets the internal structure up. // The VM will be created and started through StartVM(). -func (clh *cloudHypervisor) CreateVM(ctx context.Context, id string, networkNS NetworkNamespace, hypervisorConfig *HypervisorConfig) error { +func (clh *cloudHypervisor) CreateVM(ctx context.Context, id string, network *Network, hypervisorConfig *HypervisorConfig) error { clh.ctx = ctx span, newCtx := katatrace.Trace(clh.ctx, clh.Logger(), "CreateVM", clhTracingTags, map[string]string{"sandbox_id": clh.id}) diff --git a/src/runtime/virtcontainers/clh_test.go b/src/runtime/virtcontainers/clh_test.go index f9452cbd3..d350dd9e9 100644 --- a/src/runtime/virtcontainers/clh_test.go +++ b/src/runtime/virtcontainers/clh_test.go @@ -243,6 +243,9 @@ func TestClhCreateVMWithInitrd(t *testing.T) { clhConfig.VMStorePath = store.RunVMStoragePath() clhConfig.RunStorePath = store.RunStoragePath() + network, err := NewNetwork() + assert.NoError(err) + clh := &cloudHypervisor{ config: clhConfig, } @@ -255,7 +258,7 @@ func TestClhCreateVMWithInitrd(t *testing.T) { }, } - err = clh.CreateVM(context.Background(), sandbox.id, NetworkNamespace{}, &sandbox.config.HypervisorConfig) + err = clh.CreateVM(context.Background(), sandbox.id, network, &sandbox.config.HypervisorConfig) assert.NoError(err) assert.Exactly(clhConfig, clh.config) } @@ -273,6 +276,9 @@ func TestClhCreateVM(t *testing.T) { clhConfig.VMStorePath = store.RunVMStoragePath() clhConfig.RunStorePath = store.RunStoragePath() + network, err := NewNetwork() + assert.NoError(err) + clh := &cloudHypervisor{ config: clhConfig, } @@ -285,7 +291,7 @@ func TestClhCreateVM(t *testing.T) { }, } - err = clh.CreateVM(context.Background(), sandbox.id, NetworkNamespace{}, &sandbox.config.HypervisorConfig) + err = clh.CreateVM(context.Background(), sandbox.id, network, &sandbox.config.HypervisorConfig) assert.NoError(err) assert.Exactly(clhConfig, clh.config) } diff --git a/src/runtime/virtcontainers/fc.go b/src/runtime/virtcontainers/fc.go index 66afb513d..f121132db 100644 --- a/src/runtime/virtcontainers/fc.go +++ b/src/runtime/virtcontainers/fc.go @@ -199,7 +199,7 @@ func (fc *firecracker) setConfig(config *HypervisorConfig) error { // CreateVM For firecracker this call only sets the internal structure up. // The sandbox will be created and started through startSandbox(). -func (fc *firecracker) CreateVM(ctx context.Context, id string, networkNS NetworkNamespace, hypervisorConfig *HypervisorConfig) error { +func (fc *firecracker) CreateVM(ctx context.Context, id string, network *Network, hypervisorConfig *HypervisorConfig) error { fc.ctx = ctx span, _ := katatrace.Trace(ctx, fc.Logger(), "CreateVM", fcTracingTags, map[string]string{"sandbox_id": fc.id}) @@ -217,7 +217,7 @@ func (fc *firecracker) CreateVM(ctx context.Context, id string, networkNS Networ fc.setPaths(&fc.config) // So we need to repopulate this at StartVM where it is valid - fc.netNSPath = networkNS.NetNsPath + fc.netNSPath = network.NetNSPath // Till we create lower privileged kata user run as root // https://github.com/kata-containers/runtime/issues/1869 diff --git a/src/runtime/virtcontainers/hypervisor.go b/src/runtime/virtcontainers/hypervisor.go index 1a2b8025d..d16f82d8b 100644 --- a/src/runtime/virtcontainers/hypervisor.go +++ b/src/runtime/virtcontainers/hypervisor.go @@ -910,7 +910,7 @@ func generateVMSocket(id string, vmStogarePath string) (interface{}, error) { // hypervisor is the virtcontainers hypervisor interface. // The default hypervisor implementation is Qemu. type Hypervisor interface { - CreateVM(ctx context.Context, id string, networkNS NetworkNamespace, hypervisorConfig *HypervisorConfig) error + CreateVM(ctx context.Context, id string, network *Network, hypervisorConfig *HypervisorConfig) error StartVM(ctx context.Context, timeout int) error // If wait is set, don't actively stop the sandbox: diff --git a/src/runtime/virtcontainers/mock_hypervisor.go b/src/runtime/virtcontainers/mock_hypervisor.go index 111707fd9..635cbbe1d 100644 --- a/src/runtime/virtcontainers/mock_hypervisor.go +++ b/src/runtime/virtcontainers/mock_hypervisor.go @@ -38,7 +38,7 @@ func (m *mockHypervisor) setConfig(config *HypervisorConfig) error { return nil } -func (m *mockHypervisor) CreateVM(ctx context.Context, id string, networkNS NetworkNamespace, hypervisorConfig *HypervisorConfig) error { +func (m *mockHypervisor) CreateVM(ctx context.Context, id string, network *Network, hypervisorConfig *HypervisorConfig) error { if err := m.setConfig(hypervisorConfig); err != nil { return err } diff --git a/src/runtime/virtcontainers/mock_hypervisor_test.go b/src/runtime/virtcontainers/mock_hypervisor_test.go index ad52b5d92..5e89ae8a6 100644 --- a/src/runtime/virtcontainers/mock_hypervisor_test.go +++ b/src/runtime/virtcontainers/mock_hypervisor_test.go @@ -28,10 +28,13 @@ func TestMockHypervisorCreateVM(t *testing.T) { }, } + network, err := NewNetwork() + assert.NoError(err) + ctx := context.Background() // wrong config - err := m.CreateVM(ctx, sandbox.config.ID, NetworkNamespace{}, &sandbox.config.HypervisorConfig) + err = m.CreateVM(ctx, sandbox.config.ID, network, &sandbox.config.HypervisorConfig) assert.Error(err) sandbox.config.HypervisorConfig = HypervisorConfig{ @@ -40,7 +43,7 @@ func TestMockHypervisorCreateVM(t *testing.T) { HypervisorPath: fmt.Sprintf("%s/%s", testDir, testHypervisor), } - err = m.CreateVM(ctx, sandbox.config.ID, NetworkNamespace{}, &sandbox.config.HypervisorConfig) + err = m.CreateVM(ctx, sandbox.config.ID, network, &sandbox.config.HypervisorConfig) assert.NoError(err) } diff --git a/src/runtime/virtcontainers/network.go b/src/runtime/virtcontainers/network.go index d2f7af072..1313e1bf8 100644 --- a/src/runtime/virtcontainers/network.go +++ b/src/runtime/virtcontainers/network.go @@ -196,7 +196,17 @@ type Network struct { NetmonPID int } -func NewNetwork(config *NetworkConfig) (*Network, error) { +func NewNetwork(configs ...*NetworkConfig) (*Network, error) { + if len(configs) > 1 { + return nil, fmt.Errorf("Too many network configurations") + } + + // Empty constructor + if len(configs) == 0 { + return &Network{}, nil + } + + config := configs[0] if config == nil { return nil, fmt.Errorf("Missing network configuration") } diff --git a/src/runtime/virtcontainers/qemu.go b/src/runtime/virtcontainers/qemu.go index 28b97dfba..9f5fdb295 100644 --- a/src/runtime/virtcontainers/qemu.go +++ b/src/runtime/virtcontainers/qemu.go @@ -468,7 +468,7 @@ func (q *qemu) setConfig(config *HypervisorConfig) error { } // CreateVM is the Hypervisor VM creation implementation for govmmQemu. -func (q *qemu) CreateVM(ctx context.Context, id string, networkNS NetworkNamespace, hypervisorConfig *HypervisorConfig) error { +func (q *qemu) CreateVM(ctx context.Context, id string, network *Network, hypervisorConfig *HypervisorConfig) error { // Save the tracing context q.ctx = ctx diff --git a/src/runtime/virtcontainers/qemu_test.go b/src/runtime/virtcontainers/qemu_test.go index 2add4a45c..ee1b6a253 100644 --- a/src/runtime/virtcontainers/qemu_test.go +++ b/src/runtime/virtcontainers/qemu_test.go @@ -99,7 +99,9 @@ func TestQemuCreateVM(t *testing.T) { parentDir := filepath.Join(store.RunStoragePath(), sandbox.id) assert.NoError(os.MkdirAll(parentDir, DirMode)) - err = q.CreateVM(context.Background(), sandbox.id, NetworkNamespace{}, &sandbox.config.HypervisorConfig) + network, err := NewNetwork() + assert.NoError(err) + err = q.CreateVM(context.Background(), sandbox.id, network, &sandbox.config.HypervisorConfig) assert.NoError(err) assert.NoError(os.RemoveAll(parentDir)) assert.Exactly(qemuConfig, q.config) @@ -134,7 +136,9 @@ func TestQemuCreateVMMissingParentDirFail(t *testing.T) { parentDir := filepath.Join(store.RunStoragePath(), sandbox.id) assert.NoError(os.RemoveAll(parentDir)) - err = q.CreateVM(context.Background(), sandbox.id, NetworkNamespace{}, &sandbox.config.HypervisorConfig) + network, err := NewNetwork() + assert.NoError(err) + err = q.CreateVM(context.Background(), sandbox.id, network, &sandbox.config.HypervisorConfig) assert.NoError(err) } @@ -202,7 +206,9 @@ func TestQemuKnobs(t *testing.T) { RunStorePath: sandbox.store.RunStoragePath(), }, } - err = q.CreateVM(context.Background(), sandbox.id, NetworkNamespace{}, &sandbox.config.HypervisorConfig) + network, err := NewNetwork() + assert.NoError(err) + err = q.CreateVM(context.Background(), sandbox.id, network, &sandbox.config.HypervisorConfig) assert.NoError(err) assert.Equal(q.qemuConfig.Knobs.NoUserConfig, true) @@ -470,6 +476,9 @@ func TestQemuFileBackedMem(t *testing.T) { sandbox, err := createQemuSandboxConfig() assert.NoError(err) + network, err := NewNetwork() + assert.NoError(err) + q := &qemu{ config: HypervisorConfig{ VMStorePath: sandbox.store.RunVMStoragePath(), @@ -477,7 +486,7 @@ func TestQemuFileBackedMem(t *testing.T) { }, } sandbox.config.HypervisorConfig.SharedFS = config.VirtioFS - err = q.CreateVM(context.Background(), sandbox.id, NetworkNamespace{}, &sandbox.config.HypervisorConfig) + err = q.CreateVM(context.Background(), sandbox.id, network, &sandbox.config.HypervisorConfig) assert.NoError(err) assert.Equal(q.qemuConfig.Knobs.FileBackedMem, true) @@ -498,7 +507,7 @@ func TestQemuFileBackedMem(t *testing.T) { sandbox.config.HypervisorConfig.SharedFS = config.VirtioFS sandbox.config.HypervisorConfig.MemoryPath = fallbackFileBackedMemDir - err = q.CreateVM(context.Background(), sandbox.id, NetworkNamespace{}, &sandbox.config.HypervisorConfig) + err = q.CreateVM(context.Background(), sandbox.id, network, &sandbox.config.HypervisorConfig) expectErr := errors.New("VM templating has been enabled with either virtio-fs or file backed memory and this configuration will not work") assert.Equal(expectErr.Error(), err.Error()) @@ -514,7 +523,7 @@ func TestQemuFileBackedMem(t *testing.T) { }, } sandbox.config.HypervisorConfig.FileBackedMemRootDir = "/tmp/xyzabc" - err = q.CreateVM(context.Background(), sandbox.id, NetworkNamespace{}, &sandbox.config.HypervisorConfig) + err = q.CreateVM(context.Background(), sandbox.id, network, &sandbox.config.HypervisorConfig) assert.NoError(err) assert.Equal(q.qemuConfig.Knobs.FileBackedMem, false) assert.Equal(q.qemuConfig.Knobs.MemShared, false) @@ -532,7 +541,7 @@ func TestQemuFileBackedMem(t *testing.T) { } sandbox.config.HypervisorConfig.EnableVhostUserStore = true sandbox.config.HypervisorConfig.HugePages = true - err = q.CreateVM(context.Background(), sandbox.id, NetworkNamespace{}, &sandbox.config.HypervisorConfig) + err = q.CreateVM(context.Background(), sandbox.id, network, &sandbox.config.HypervisorConfig) assert.NoError(err) assert.Equal(q.qemuConfig.Knobs.MemShared, true) @@ -548,7 +557,7 @@ func TestQemuFileBackedMem(t *testing.T) { } sandbox.config.HypervisorConfig.EnableVhostUserStore = true sandbox.config.HypervisorConfig.HugePages = false - err = q.CreateVM(context.Background(), sandbox.id, NetworkNamespace{}, &sandbox.config.HypervisorConfig) + err = q.CreateVM(context.Background(), sandbox.id, network, &sandbox.config.HypervisorConfig) expectErr = errors.New("Vhost-user-blk/scsi is enabled without HugePages. This configuration will not work") assert.Equal(expectErr.Error(), err.Error()) diff --git a/src/runtime/virtcontainers/sandbox.go b/src/runtime/virtcontainers/sandbox.go index 2a07362a2..4f4677d94 100644 --- a/src/runtime/virtcontainers/sandbox.go +++ b/src/runtime/virtcontainers/sandbox.go @@ -579,7 +579,7 @@ func newSandbox(ctx context.Context, sandboxConfig SandboxConfig, factory Factor } // store doesn't require hypervisor to be stored immediately - if err = s.hypervisor.CreateVM(ctx, s.id, s.networkNS, &sandboxConfig.HypervisorConfig); err != nil { + if err = s.hypervisor.CreateVM(ctx, s.id, s.network, &sandboxConfig.HypervisorConfig); err != nil { return nil, err } diff --git a/src/runtime/virtcontainers/vm.go b/src/runtime/virtcontainers/vm.go index b39b75563..a9db8efc0 100644 --- a/src/runtime/virtcontainers/vm.go +++ b/src/runtime/virtcontainers/vm.go @@ -90,6 +90,11 @@ func NewVM(ctx context.Context, config VMConfig) (*VM, error) { return nil, err } + network, err := NewNetwork() + if err != nil { + return nil, err + } + if err = config.Valid(); err != nil { return nil, err } @@ -111,7 +116,7 @@ func NewVM(ctx context.Context, config VMConfig) (*VM, error) { } }() - if err = hypervisor.CreateVM(ctx, id, NetworkNamespace{}, &config.HypervisorConfig); err != nil { + if err = hypervisor.CreateVM(ctx, id, network, &config.HypervisorConfig); err != nil { return nil, err } From 49eee79f5f656773d0becf6206cbf1e0cc85b1af Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Sat, 6 Nov 2021 08:22:21 +0100 Subject: [PATCH 362/385] virtcontainers: Remove the NetworkNamespace structure It is now replaced with a single Network structure Signed-off-by: Samuel Ortiz --- src/runtime/virtcontainers/kata_agent.go | 2 +- src/runtime/virtcontainers/network.go | 54 ++++++++++++++++------ src/runtime/virtcontainers/network_test.go | 4 +- src/runtime/virtcontainers/persist.go | 36 ++------------- src/runtime/virtcontainers/persist_test.go | 4 ++ src/runtime/virtcontainers/sandbox.go | 23 ++------- src/runtime/virtcontainers/sandbox_test.go | 14 ++---- 7 files changed, 63 insertions(+), 74 deletions(-) diff --git a/src/runtime/virtcontainers/kata_agent.go b/src/runtime/virtcontainers/kata_agent.go index aa1d4968f..bd7c04ed1 100644 --- a/src/runtime/virtcontainers/kata_agent.go +++ b/src/runtime/virtcontainers/kata_agent.go @@ -784,7 +784,7 @@ func (k *kataAgent) startSandbox(ctx context.Context, sandbox *Sandbox) error { } // Setup network interfaces and routes - interfaces, routes, neighs, err := generateVCNetworkStructures(ctx, sandbox.networkNS) + interfaces, routes, neighs, err := generateVCNetworkStructures(ctx, sandbox.network) if err != nil { return err } diff --git a/src/runtime/virtcontainers/network.go b/src/runtime/virtcontainers/network.go index 1313e1bf8..7e78d86cb 100644 --- a/src/runtime/virtcontainers/network.go +++ b/src/runtime/virtcontainers/network.go @@ -26,6 +26,7 @@ import ( "github.com/kata-containers/kata-containers/src/runtime/pkg/katautils/katatrace" "github.com/kata-containers/kata-containers/src/runtime/pkg/uuid" + persistapi "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/persist/api" pbTypes "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/agent/protocols" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/utils" ) @@ -220,6 +221,40 @@ func NewNetwork(configs ...*NetworkConfig) (*Network, error) { }, nil } +func LoadNetwork(netInfo persistapi.NetworkInfo) *Network { + network := &Network{ + NetNSPath: netInfo.NetNsPath, + NetNSCreated: netInfo.NetNsCreated, + } + + for _, e := range netInfo.Endpoints { + var ep Endpoint + switch EndpointType(e.Type) { + case PhysicalEndpointType: + ep = &PhysicalEndpoint{} + case VethEndpointType: + ep = &VethEndpoint{} + case VhostUserEndpointType: + ep = &VhostUserEndpoint{} + case MacvlanEndpointType: + ep = &MacvlanEndpoint{} + case MacvtapEndpointType: + ep = &MacvtapEndpoint{} + case TapEndpointType: + ep = &TapEndpoint{} + case IPVlanEndpointType: + ep = &IPVlanEndpoint{} + default: + networkLogger().WithField("endpoint-type", e.Type).Error("unknown endpoint type") + continue + } + ep.load(e) + network.Endpoints = append(network.Endpoints, ep) + } + + return network +} + var networkTrace = getNetworkTrace("") func (n *Network) trace(ctx context.Context, name string) (otelTrace.Span, context.Context) { @@ -459,19 +494,19 @@ func (n *Network) Run(ctx context.Context, cb func() error) error { } // Add adds all needed interfaces inside the network namespace. -func (n *Network) Add(ctx context.Context, s *Sandbox, hotplug bool) ([]Endpoint, error) { +func (n *Network) Add(ctx context.Context, s *Sandbox, hotplug bool) error { span, ctx := n.trace(ctx, "Add") katatrace.AddTags(span, "type", n.InterworkingModel.GetModel()) defer span.End() if err := n.attachEndpoints(ctx, s, hotplug); err != nil { - return n.Endpoints, err + return err } katatrace.AddTags(span, "endpoints", n.Endpoints, "hotplug", hotplug) networkLogger().Debug("Network added") - return n.Endpoints, nil + return nil } func (n *Network) PostAdd(ctx context.Context, hotplug bool) error { @@ -522,13 +557,6 @@ func (n *Network) Remove(ctx context.Context) error { return nil } -// NetworkNamespace contains all data related to its network namespace. -type NetworkNamespace struct { - NetNsPath string - Endpoints []Endpoint - NetNsCreated bool -} - func createLink(netHandle *netlink.Handle, name string, expectedLink netlink.Link, queues int) (netlink.Link, []*os.File, error) { var newLink netlink.Link var fds []*os.File @@ -1183,8 +1211,8 @@ func deleteNetNS(netNSPath string) error { return nil } -func generateVCNetworkStructures(ctx context.Context, networkNS NetworkNamespace) ([]*pbTypes.Interface, []*pbTypes.Route, []*pbTypes.ARPNeighbor, error) { - if networkNS.NetNsPath == "" { +func generateVCNetworkStructures(ctx context.Context, network *Network) ([]*pbTypes.Interface, []*pbTypes.Route, []*pbTypes.ARPNeighbor, error) { + if network.NetNSPath == "" { return nil, nil, nil, nil } span, _ := networkTrace(ctx, "generateVCNetworkStructures", nil) @@ -1194,7 +1222,7 @@ func generateVCNetworkStructures(ctx context.Context, networkNS NetworkNamespace var ifaces []*pbTypes.Interface var neighs []*pbTypes.ARPNeighbor - for _, endpoint := range networkNS.Endpoints { + for _, endpoint := range network.Endpoints { var ipAddresses []*pbTypes.IPAddress for _, addr := range endpoint.Properties().Addrs { // Skip localhost interface diff --git a/src/runtime/virtcontainers/network_test.go b/src/runtime/virtcontainers/network_test.go index 2538caca0..2a3f160b1 100644 --- a/src/runtime/virtcontainers/network_test.go +++ b/src/runtime/virtcontainers/network_test.go @@ -73,7 +73,9 @@ func TestGenerateInterfacesAndRoutes(t *testing.T) { endpoints := []Endpoint{ep0} - nns := NetworkNamespace{NetNsPath: "foobar", NetNsCreated: true, Endpoints: endpoints} + nns, err := NewNetwork(&NetworkConfig{NetNSPath: "foobar", NetNsCreated: true}) + assert.Nil(t, err) + nns.Endpoints = endpoints resInterfaces, resRoutes, resNeighs, err := generateVCNetworkStructures(context.Background(), nns) diff --git a/src/runtime/virtcontainers/persist.go b/src/runtime/virtcontainers/persist.go index c36a5bf3e..cee218c51 100644 --- a/src/runtime/virtcontainers/persist.go +++ b/src/runtime/virtcontainers/persist.go @@ -164,10 +164,10 @@ func (s *Sandbox) dumpAgent(ss *persistapi.SandboxState) { func (s *Sandbox) dumpNetwork(ss *persistapi.SandboxState) { ss.Network = persistapi.NetworkInfo{ - NetNsPath: s.networkNS.NetNsPath, - NetNsCreated: s.networkNS.NetNsCreated, + NetNsPath: s.network.NetNSPath, + NetNsCreated: s.network.NetNSCreated, } - for _, e := range s.networkNS.Endpoints { + for _, e := range s.network.Endpoints { ss.Network.Endpoints = append(ss.Network.Endpoints, e.save()) } } @@ -363,35 +363,7 @@ func (c *Container) loadContProcess(cs persistapi.ContainerState) { } func (s *Sandbox) loadNetwork(netInfo persistapi.NetworkInfo) { - s.networkNS = NetworkNamespace{ - NetNsPath: netInfo.NetNsPath, - NetNsCreated: netInfo.NetNsCreated, - } - - for _, e := range netInfo.Endpoints { - var ep Endpoint - switch EndpointType(e.Type) { - case PhysicalEndpointType: - ep = &PhysicalEndpoint{} - case VethEndpointType: - ep = &VethEndpoint{} - case VhostUserEndpointType: - ep = &VhostUserEndpoint{} - case MacvlanEndpointType: - ep = &MacvlanEndpoint{} - case MacvtapEndpointType: - ep = &MacvtapEndpoint{} - case TapEndpointType: - ep = &TapEndpoint{} - case IPVlanEndpointType: - ep = &IPVlanEndpoint{} - default: - s.Logger().WithField("endpoint-type", e.Type).Error("unknown endpoint type") - continue - } - ep.load(e) - s.networkNS.Endpoints = append(s.networkNS.Endpoints, ep) - } + s.network = LoadNetwork(netInfo) } // Restore will restore sandbox data from persist file on disk diff --git a/src/runtime/virtcontainers/persist_test.go b/src/runtime/virtcontainers/persist_test.go index b1a1ea68d..228638a96 100644 --- a/src/runtime/virtcontainers/persist_test.go +++ b/src/runtime/virtcontainers/persist_test.go @@ -26,11 +26,15 @@ func TestSandboxRestore(t *testing.T) { container := make(map[string]*Container) container["test-exp"] = &Container{} + network, err := NewNetwork() + assert.NoError(err) + sandbox := Sandbox{ id: "test-exp", containers: container, devManager: manager.NewDeviceManager(manager.VirtioSCSI, false, "", nil), hypervisor: &mockHypervisor{}, + network: network, ctx: context.Background(), config: &sconfig, state: types.SandboxState{BlockIndexMap: make(map[int]struct{})}, diff --git a/src/runtime/virtcontainers/sandbox.go b/src/runtime/virtcontainers/sandbox.go index 4f4677d94..3d9e711a6 100644 --- a/src/runtime/virtcontainers/sandbox.go +++ b/src/runtime/virtcontainers/sandbox.go @@ -211,8 +211,6 @@ type Sandbox struct { state types.SandboxState - networkNS NetworkNamespace - sync.Mutex swapSizeBytes int64 @@ -271,7 +269,7 @@ func (s *Sandbox) GetAnnotations() map[string]string { // GetNetNs returns the network namespace of the current sandbox. func (s *Sandbox) GetNetNs() string { - return s.networkNS.NetNsPath + return s.network.NetNSPath } // GetHypervisorPid returns the hypervisor's pid. @@ -539,7 +537,6 @@ func newSandbox(ctx context.Context, sandboxConfig SandboxConfig, factory Factor shmSize: sandboxConfig.ShmSize, sharePidNs: sandboxConfig.SharePidNs, network: network, - networkNS: NetworkNamespace{NetNsPath: sandboxConfig.NetworkConfig.NetNSPath}, ctx: ctx, swapDeviceNum: 0, swapSizeBytes: 0, @@ -814,23 +811,16 @@ func (s *Sandbox) createNetwork(ctx context.Context) error { } s.network = network - s.networkNS = NetworkNamespace{ - NetNsPath: s.config.NetworkConfig.NetNSPath, - NetNsCreated: s.config.NetworkConfig.NetNsCreated, - } - katatrace.AddTags(span, "networkNS", s.networkNS, "NetworkConfig", s.config.NetworkConfig) + katatrace.AddTags(span, "network", s.network, "NetworkConfig", s.config.NetworkConfig) // In case there is a factory, network interfaces are hotplugged // after vm is started. if s.factory == nil { // Add the network - endpoints, err := s.network.Add(ctx, s, false) - if err != nil { + if err := s.network.Add(ctx, s, false); err != nil { return err } - - s.networkNS.Endpoints = endpoints } return nil } @@ -913,7 +903,7 @@ func (s *Sandbox) AddInterface(ctx context.Context, inf *pbTypes.Interface) (*pb // RemoveInterface removes a nic of the sandbox. func (s *Sandbox) RemoveInterface(ctx context.Context, inf *pbTypes.Interface) (*pbTypes.Interface, error) { - for i, endpoint := range s.networkNS.Endpoints { + for i, endpoint := range s.network.Endpoints { if endpoint.HardwareAddr() == inf.HwAddr { s.Logger().WithField("endpoint-type", endpoint.Type()).Info("Hot detaching endpoint") if err := s.network.detachEndpoint(ctx, s, i, true); err != nil { @@ -1195,12 +1185,9 @@ func (s *Sandbox) startVM(ctx context.Context) (err error) { // In case of vm factory, network interfaces are hotplugged // after vm is started. if s.factory != nil { - endpoints, err := s.network.Add(ctx, s, true) - if err != nil { + if err := s.network.Add(ctx, s, true); err != nil { return err } - - s.networkNS.Endpoints = endpoints } s.Logger().Info("VM started") diff --git a/src/runtime/virtcontainers/sandbox_test.go b/src/runtime/virtcontainers/sandbox_test.go index 2dda62a41..c741caf7b 100644 --- a/src/runtime/virtcontainers/sandbox_test.go +++ b/src/runtime/virtcontainers/sandbox_test.go @@ -1299,17 +1299,13 @@ func TestPreAddDevice(t *testing.T) { func TestGetNetNs(t *testing.T) { s := Sandbox{} - expected := "" + expected := "/foo/bar/ns/net" + network, err := NewNetwork(&NetworkConfig{NetNSPath: expected}) + assert.Nil(t, err) + + s.network = network netNs := s.GetNetNs() assert.Equal(t, netNs, expected) - - expected = "/foo/bar/ns/net" - s.networkNS = NetworkNamespace{ - NetNsPath: expected, - } - - netNs = s.GetNetNs() - assert.Equal(t, netNs, expected) } func TestSandboxStopStopped(t *testing.T) { From b858d0dedfcf9abfae78c34dad352d7417469109 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Sat, 6 Nov 2021 11:44:55 +0100 Subject: [PATCH 363/385] virtcontainers: Make all Network fields private Prepare for making it a real interface. Signed-off-by: Samuel Ortiz --- src/runtime/virtcontainers/fc.go | 2 +- src/runtime/virtcontainers/network.go | 85 +++++++++++++--------- src/runtime/virtcontainers/network_test.go | 2 +- src/runtime/virtcontainers/persist.go | 6 +- src/runtime/virtcontainers/sandbox.go | 6 +- 5 files changed, 57 insertions(+), 44 deletions(-) diff --git a/src/runtime/virtcontainers/fc.go b/src/runtime/virtcontainers/fc.go index f121132db..0b8b1afb1 100644 --- a/src/runtime/virtcontainers/fc.go +++ b/src/runtime/virtcontainers/fc.go @@ -217,7 +217,7 @@ func (fc *firecracker) CreateVM(ctx context.Context, id string, network *Network fc.setPaths(&fc.config) // So we need to repopulate this at StartVM where it is valid - fc.netNSPath = network.NetNSPath + fc.netNSPath = network.NetNS() // Till we create lower privileged kata user run as root // https://github.com/kata-containers/runtime/issues/1869 diff --git a/src/runtime/virtcontainers/network.go b/src/runtime/virtcontainers/network.go index 7e78d86cb..f8aa09408 100644 --- a/src/runtime/virtcontainers/network.go +++ b/src/runtime/virtcontainers/network.go @@ -189,12 +189,12 @@ func networkLogger() *logrus.Entry { // Network represents a sandbox networking setup. type Network struct { - NetNSPath string - InterworkingModel NetInterworkingModel - NetNSCreated bool + netNSPath string + interworkingModel NetInterworkingModel + netNSCreated bool - Endpoints []Endpoint - NetmonPID int + eps []Endpoint + netmonPID int } func NewNetwork(configs ...*NetworkConfig) (*Network, error) { @@ -223,8 +223,8 @@ func NewNetwork(configs ...*NetworkConfig) (*Network, error) { func LoadNetwork(netInfo persistapi.NetworkInfo) *Network { network := &Network{ - NetNSPath: netInfo.NetNsPath, - NetNSCreated: netInfo.NetNsCreated, + netNSPath: netInfo.NetNsPath, + netNSCreated: netInfo.NetNsCreated, } for _, e := range netInfo.Endpoints { @@ -249,7 +249,7 @@ func LoadNetwork(netInfo persistapi.NetworkInfo) *Network { continue } ep.load(e) - network.Endpoints = append(network.Endpoints, ep) + network.eps = append(network.eps, ep) } return network @@ -300,7 +300,7 @@ func (n *Network) attachEndpoint(ctx context.Context, s *Sandbox, netInfo Networ endpoint, err = createPhysicalEndpoint(netInfo) } else { var socketPath string - idx := len(n.Endpoints) + idx := len(n.eps) // Check if this is a dummy interface which has a vhost-user socket associated with it socketPath, err = vhostUserSocketPath(netInfo) @@ -313,7 +313,7 @@ func (n *Network) attachEndpoint(ctx context.Context, s *Sandbox, netInfo Networ endpoint, err = createVhostUserEndpoint(netInfo, socketPath) } else if netInfo.Iface.Type == "macvlan" { networkLogger().Infof("macvlan interface found") - endpoint, err = createMacvlanNetworkEndpoint(idx, netInfo.Iface.Name, n.InterworkingModel) + endpoint, err = createMacvlanNetworkEndpoint(idx, netInfo.Iface.Name, n.interworkingModel) } else if netInfo.Iface.Type == "macvtap" { networkLogger().Infof("macvtap interface found") endpoint, err = createMacvtapNetworkEndpoint(netInfo) @@ -330,14 +330,14 @@ func (n *Network) attachEndpoint(ctx context.Context, s *Sandbox, netInfo Networ return nil, fmt.Errorf("tun networking device not yet supported") case 2: networkLogger().Info("tuntap tap interface found") - endpoint, err = createTuntapNetworkEndpoint(idx, netInfo.Iface.Name, netInfo.Iface.HardwareAddr, n.InterworkingModel) + endpoint, err = createTuntapNetworkEndpoint(idx, netInfo.Iface.Name, netInfo.Iface.HardwareAddr, n.interworkingModel) default: return nil, fmt.Errorf("tuntap network %v mode unsupported", link.(*netlink.Tuntap).Mode) } } } else if netInfo.Iface.Type == "veth" { networkLogger().Info("veth interface found") - endpoint, err = createVethNetworkEndpoint(idx, netInfo.Iface.Name, n.InterworkingModel) + endpoint, err = createVethNetworkEndpoint(idx, netInfo.Iface.Name, n.interworkingModel) } else if netInfo.Iface.Type == "ipvlan" { networkLogger().Info("ipvlan interface found") endpoint, err = createIPVlanNetworkEndpoint(idx, netInfo.Iface.Name) @@ -348,7 +348,7 @@ func (n *Network) attachEndpoint(ctx context.Context, s *Sandbox, netInfo Networ endpoint.SetProperties(netInfo) - if err := doNetNS(n.NetNSPath, func(_ ns.NetNS) error { + if err := doNetNS(n.netNSPath, func(_ ns.NetNS) error { networkLogger().WithField("endpoint-type", endpoint.Type()).WithField("hotplug", hotplug).Info("Attaching endpoint") if hotplug { if err := endpoint.HotAttach(ctx, s.hypervisor); err != nil { @@ -382,22 +382,22 @@ func (n *Network) attachEndpoint(ctx context.Context, s *Sandbox, netInfo Networ return nil, err } - n.Endpoints = append(n.Endpoints, endpoint) + n.eps = append(n.eps, endpoint) return endpoint, nil } func (n *Network) detachEndpoint(ctx context.Context, s *Sandbox, idx int, hotplug bool) error { - if idx > len(n.Endpoints)-1 { + if idx > len(n.eps)-1 { return fmt.Errorf("Enpoint index overflow") } - endpoint := n.Endpoints[idx] + endpoint := n.eps[idx] if endpoint.GetRxRateLimiter() { networkLogger().WithField("endpoint-type", endpoint.Type()).Info("Deleting rx rate limiter") // Deleting rx rate limiter should enter the network namespace. - if err := removeRxRateLimiter(endpoint, n.NetNSPath); err != nil { + if err := removeRxRateLimiter(endpoint, n.netNSPath); err != nil { return err } } @@ -405,7 +405,7 @@ func (n *Network) detachEndpoint(ctx context.Context, s *Sandbox, idx int, hotpl if endpoint.GetTxRateLimiter() { networkLogger().WithField("endpoint-type", endpoint.Type()).Info("Deleting tx rate limiter") // Deleting tx rate limiter should enter the network namespace. - if err := removeTxRateLimiter(endpoint, n.NetNSPath); err != nil { + if err := removeTxRateLimiter(endpoint, n.netNSPath); err != nil { return err } } @@ -414,16 +414,16 @@ func (n *Network) detachEndpoint(ctx context.Context, s *Sandbox, idx int, hotpl // if required. networkLogger().WithField("endpoint-type", endpoint.Type()).Info("Detaching endpoint") if hotplug && s != nil { - if err := endpoint.HotDetach(ctx, s.hypervisor, n.NetNSCreated, n.NetNSPath); err != nil { + if err := endpoint.HotDetach(ctx, s.hypervisor, n.netNSCreated, n.netNSPath); err != nil { return err } } else { - if err := endpoint.Detach(ctx, n.NetNSCreated, n.NetNSPath); err != nil { + if err := endpoint.Detach(ctx, n.netNSCreated, n.netNSPath); err != nil { return err } } - n.Endpoints = append(n.Endpoints[:idx], n.Endpoints[idx+1:]...) + n.eps = append(n.eps[:idx], n.eps[idx+1:]...) return nil } @@ -432,7 +432,7 @@ func (n *Network) detachEndpoint(ctx context.Context, s *Sandbox, idx int, hotpl // 1. Create the endpoints for the relevant interfaces found there. // 2. Attach them to the VM. func (n *Network) attachEndpoints(ctx context.Context, s *Sandbox, hotplug bool) error { - netnsHandle, err := netns.GetFromPath(n.NetNSPath) + netnsHandle, err := netns.GetFromPath(n.netNSPath) if err != nil { return err } @@ -474,11 +474,11 @@ func (n *Network) attachEndpoints(ctx context.Context, s *Sandbox, hotplug bool) } } - sort.Slice(n.Endpoints, func(i, j int) bool { - return n.Endpoints[i].Name() < n.Endpoints[j].Name() + sort.Slice(n.eps, func(i, j int) bool { + return n.eps[i].Name() < n.eps[j].Name() }) - networkLogger().WithField("endpoints", n.Endpoints).Info("Endpoints found after scan") + networkLogger().WithField("endpoints", n.eps).Info("endpoints found after scan") return nil } @@ -488,7 +488,7 @@ func (n *Network) Run(ctx context.Context, cb func() error) error { span, _ := n.trace(ctx, "Run") defer span.End() - return doNetNS(n.NetNSPath, func(_ ns.NetNS) error { + return doNetNS(n.netNSPath, func(_ ns.NetNS) error { return cb() }) } @@ -496,14 +496,14 @@ func (n *Network) Run(ctx context.Context, cb func() error) error { // Add adds all needed interfaces inside the network namespace. func (n *Network) Add(ctx context.Context, s *Sandbox, hotplug bool) error { span, ctx := n.trace(ctx, "Add") - katatrace.AddTags(span, "type", n.InterworkingModel.GetModel()) + katatrace.AddTags(span, "type", n.interworkingModel.GetModel()) defer span.End() if err := n.attachEndpoints(ctx, s, hotplug); err != nil { return err } - katatrace.AddTags(span, "endpoints", n.Endpoints, "hotplug", hotplug) + katatrace.AddTags(span, "endpoints", n.eps, "hotplug", hotplug) networkLogger().Debug("Network added") return nil @@ -514,11 +514,11 @@ func (n *Network) PostAdd(ctx context.Context, hotplug bool) error { return nil } - if n.Endpoints == nil { + if n.eps == nil { return nil } - endpoints := n.Endpoints + endpoints := n.eps for _, endpoint := range endpoints { netPair := endpoint.NetworkPair() @@ -541,7 +541,7 @@ func (n *Network) Remove(ctx context.Context) error { span, ctx := n.trace(ctx, "Remove") defer span.End() - for i, _ := range n.Endpoints { + for i, _ := range n.eps { if err := n.detachEndpoint(ctx, nil, i, false); err != nil { return err } @@ -549,14 +549,27 @@ func (n *Network) Remove(ctx context.Context) error { networkLogger().Debug("Network removed") - if n.NetNSCreated { - networkLogger().Infof("Network namespace %q deleted", n.NetNSPath) - return deleteNetNS(n.NetNSPath) + if n.netNSCreated { + networkLogger().Infof("Network namespace %q deleted", n.netNSPath) + return deleteNetNS(n.netNSPath) } return nil } +// Network getters +func (n *Network) NetNS() string { + return n.netNSPath +} + +func (n *Network) NetNSCreated() bool { + return n.netNSCreated +} + +func (n *Network) Endpoints() []Endpoint { + return n.eps +} + func createLink(netHandle *netlink.Handle, name string, expectedLink netlink.Link, queues int) (netlink.Link, []*os.File, error) { var newLink netlink.Link var fds []*os.File @@ -1212,7 +1225,7 @@ func deleteNetNS(netNSPath string) error { } func generateVCNetworkStructures(ctx context.Context, network *Network) ([]*pbTypes.Interface, []*pbTypes.Route, []*pbTypes.ARPNeighbor, error) { - if network.NetNSPath == "" { + if network.netNSPath == "" { return nil, nil, nil, nil } span, _ := networkTrace(ctx, "generateVCNetworkStructures", nil) @@ -1222,7 +1235,7 @@ func generateVCNetworkStructures(ctx context.Context, network *Network) ([]*pbTy var ifaces []*pbTypes.Interface var neighs []*pbTypes.ARPNeighbor - for _, endpoint := range network.Endpoints { + for _, endpoint := range network.eps { var ipAddresses []*pbTypes.IPAddress for _, addr := range endpoint.Properties().Addrs { // Skip localhost interface diff --git a/src/runtime/virtcontainers/network_test.go b/src/runtime/virtcontainers/network_test.go index 2a3f160b1..2872ae98f 100644 --- a/src/runtime/virtcontainers/network_test.go +++ b/src/runtime/virtcontainers/network_test.go @@ -75,7 +75,7 @@ func TestGenerateInterfacesAndRoutes(t *testing.T) { nns, err := NewNetwork(&NetworkConfig{NetNSPath: "foobar", NetNsCreated: true}) assert.Nil(t, err) - nns.Endpoints = endpoints + nns.eps = endpoints resInterfaces, resRoutes, resNeighs, err := generateVCNetworkStructures(context.Background(), nns) diff --git a/src/runtime/virtcontainers/persist.go b/src/runtime/virtcontainers/persist.go index cee218c51..bbc2535a1 100644 --- a/src/runtime/virtcontainers/persist.go +++ b/src/runtime/virtcontainers/persist.go @@ -164,10 +164,10 @@ func (s *Sandbox) dumpAgent(ss *persistapi.SandboxState) { func (s *Sandbox) dumpNetwork(ss *persistapi.SandboxState) { ss.Network = persistapi.NetworkInfo{ - NetNsPath: s.network.NetNSPath, - NetNsCreated: s.network.NetNSCreated, + NetNsPath: s.network.NetNS(), + NetNsCreated: s.network.NetNSCreated(), } - for _, e := range s.network.Endpoints { + for _, e := range s.network.Endpoints() { ss.Network.Endpoints = append(ss.Network.Endpoints, e.save()) } } diff --git a/src/runtime/virtcontainers/sandbox.go b/src/runtime/virtcontainers/sandbox.go index 3d9e711a6..3a21337f9 100644 --- a/src/runtime/virtcontainers/sandbox.go +++ b/src/runtime/virtcontainers/sandbox.go @@ -269,7 +269,7 @@ func (s *Sandbox) GetAnnotations() map[string]string { // GetNetNs returns the network namespace of the current sandbox. func (s *Sandbox) GetNetNs() string { - return s.network.NetNSPath + return s.network.NetNS() } // GetHypervisorPid returns the hypervisor's pid. @@ -880,7 +880,7 @@ func (s *Sandbox) AddInterface(ctx context.Context, inf *pbTypes.Interface) (*pb defer func() { if err != nil { - if errDetach := s.network.detachEndpoint(ctx, s, len(s.network.Endpoints)-1, true); err != nil { + if errDetach := s.network.detachEndpoint(ctx, s, len(s.network.Endpoints())-1, true); err != nil { s.Logger().WithField("endpoint-type", endpoint.Type()).WithError(errDetach).Error("rollback hot attaching endpoint failed") } } @@ -903,7 +903,7 @@ func (s *Sandbox) AddInterface(ctx context.Context, inf *pbTypes.Interface) (*pb // RemoveInterface removes a nic of the sandbox. func (s *Sandbox) RemoveInterface(ctx context.Context, inf *pbTypes.Interface) (*pbTypes.Interface, error) { - for i, endpoint := range s.network.Endpoints { + for i, endpoint := range s.network.Endpoints() { if endpoint.HardwareAddr() == inf.HwAddr { s.Logger().WithField("endpoint-type", endpoint.Type()).Info("Hot detaching endpoint") if err := s.network.detachEndpoint(ctx, s, i, true); err != nil { From 5e119e90e8984ee02e228f4e5d1e767bbf49469f Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Sat, 6 Nov 2021 17:56:22 +0100 Subject: [PATCH 364/385] virtcontainers: Rename the Network structure fields and methods We are converting the Network structure into an interface, so that different host OSes can have different networking implementations for Kata. One step into that direction is to rename all the Network structure fields and methods to something that is less Linux networking namespace specific. This will make the Network interface naming consistent. Signed-off-by: Samuel Ortiz --- src/runtime/pkg/katautils/create.go | 8 ++++---- src/runtime/pkg/katautils/network.go | 16 ++++++++-------- src/runtime/pkg/katautils/network_test.go | 16 ++++++++-------- src/runtime/pkg/oci/utils.go | 6 +++--- src/runtime/pkg/oci/utils_test.go | 2 +- .../documentation/api/1.0/api.md | 6 +++--- src/runtime/virtcontainers/fc.go | 2 +- src/runtime/virtcontainers/network.go | 18 +++++++++--------- src/runtime/virtcontainers/network_test.go | 2 +- src/runtime/virtcontainers/persist.go | 16 ++++++++-------- .../virtcontainers/persist/api/config.go | 6 +++--- .../virtcontainers/persist/api/network.go | 6 +++--- src/runtime/virtcontainers/sandbox.go | 6 +++--- src/runtime/virtcontainers/sandbox_test.go | 2 +- 14 files changed, 56 insertions(+), 56 deletions(-) diff --git a/src/runtime/pkg/katautils/create.go b/src/runtime/pkg/katautils/create.go index 875c9945f..c406d6db9 100644 --- a/src/runtime/pkg/katautils/create.go +++ b/src/runtime/pkg/katautils/create.go @@ -148,15 +148,15 @@ func CreateSandbox(ctx context.Context, vci vc.VC, ociSpec specs.Spec, runtimeCo defer func() { // cleanup netns if kata creates it ns := sandboxConfig.NetworkConfig - if err != nil && ns.NetNsCreated { - if ex := cleanupNetNS(ns.NetNSPath); ex != nil { - kataUtilsLogger.WithField("path", ns.NetNSPath).WithError(ex).Warn("failed to cleanup netns") + if err != nil && ns.NetworkCreated { + if ex := cleanupNetNS(ns.NetworkID); ex != nil { + kataUtilsLogger.WithField("id", ns.NetworkID).WithError(ex).Warn("failed to cleanup network") } } }() // Run pre-start OCI hooks. - err = EnterNetNS(sandboxConfig.NetworkConfig.NetNSPath, func() error { + err = EnterNetNS(sandboxConfig.NetworkConfig.NetworkID, func() error { return PreStartHooks(ctx, ociSpec, containerID, bundlePath) }) if err != nil { diff --git a/src/runtime/pkg/katautils/network.go b/src/runtime/pkg/katautils/network.go index 0580bd8e9..d0cb4d66f 100644 --- a/src/runtime/pkg/katautils/network.go +++ b/src/runtime/pkg/katautils/network.go @@ -26,8 +26,8 @@ const procMountInfoFile = "/proc/self/mountinfo" // EnterNetNS is free from any call to a go routine, and it calls // into runtime.LockOSThread(), meaning it won't be executed in a // different thread than the one expected by the caller. -func EnterNetNS(netNSPath string, cb func() error) error { - if netNSPath == "" { +func EnterNetNS(networkID string, cb func() error) error { + if networkID == "" { return cb() } @@ -40,7 +40,7 @@ func EnterNetNS(netNSPath string, cb func() error) error { } defer currentNS.Close() - targetNS, err := ns.GetNS(netNSPath) + targetNS, err := ns.GetNS(networkID) if err != nil { return err } @@ -55,7 +55,7 @@ func EnterNetNS(netNSPath string, cb func() error) error { // SetupNetworkNamespace create a network namespace func SetupNetworkNamespace(config *vc.NetworkConfig) error { - if config.DisableNewNetNs { + if config.DisableNewNetwork { kataUtilsLogger.Info("DisableNewNetNs is on, shim and hypervisor are running in the host netns") return nil } @@ -63,7 +63,7 @@ func SetupNetworkNamespace(config *vc.NetworkConfig) error { var err error var n ns.NetNS - if config.NetNSPath == "" { + if config.NetworkID == "" { if rootless.IsRootless() { n, err = rootless.NewNS() if err != nil { @@ -76,14 +76,14 @@ func SetupNetworkNamespace(config *vc.NetworkConfig) error { } } - config.NetNSPath = n.Path() - config.NetNsCreated = true + config.NetworkID = n.Path() + config.NetworkCreated = true kataUtilsLogger.WithField("netns", n.Path()).Info("create netns") return nil } - isHostNs, err := hostNetworkingRequested(config.NetNSPath) + isHostNs, err := hostNetworkingRequested(config.NetworkID) if err != nil { return err } diff --git a/src/runtime/pkg/katautils/network_test.go b/src/runtime/pkg/katautils/network_test.go index 8fa514d6e..e601fda7f 100644 --- a/src/runtime/pkg/katautils/network_test.go +++ b/src/runtime/pkg/katautils/network_test.go @@ -114,14 +114,14 @@ func TestSetupNetworkNamespace(t *testing.T) { // Network namespace same as the host config := &vc.NetworkConfig{ - NetNSPath: "/proc/self/ns/net", + NetworkID: "/proc/self/ns/net", } err := SetupNetworkNamespace(config) assert.Error(err) // Non-existent netns path config = &vc.NetworkConfig{ - NetNSPath: "/proc/123456789/ns/net", + NetworkID: "/proc/123456789/ns/net", } err = SetupNetworkNamespace(config) assert.Error(err) @@ -130,7 +130,7 @@ func TestSetupNetworkNamespace(t *testing.T) { n, err := testutils.NewNS() assert.NoError(err) config = &vc.NetworkConfig{ - NetNSPath: n.Path(), + NetworkID: n.Path(), } err = SetupNetworkNamespace(config) assert.NoError(err) @@ -140,16 +140,16 @@ func TestSetupNetworkNamespace(t *testing.T) { config = &vc.NetworkConfig{} err = SetupNetworkNamespace(config) assert.NoError(err) - n, err = ns.GetNS(config.NetNSPath) + n, err = ns.GetNS(config.NetworkID) assert.NoError(err) assert.NotNil(n) - assert.True(config.NetNsCreated) + assert.True(config.NetworkCreated) n.Close() - unix.Unmount(config.NetNSPath, unix.MNT_DETACH) - os.RemoveAll(config.NetNSPath) + unix.Unmount(config.NetworkID, unix.MNT_DETACH) + os.RemoveAll(config.NetworkID) // Config with DisableNewNetNs - config = &vc.NetworkConfig{DisableNewNetNs: true} + config = &vc.NetworkConfig{DisableNewNetwork: true} err = SetupNetworkNamespace(config) assert.NoError(err) } diff --git a/src/runtime/pkg/oci/utils.go b/src/runtime/pkg/oci/utils.go index 63c052caf..a7b3860ef 100644 --- a/src/runtime/pkg/oci/utils.go +++ b/src/runtime/pkg/oci/utils.go @@ -318,11 +318,11 @@ func networkConfig(ocispec specs.Spec, config RuntimeConfig) (vc.NetworkConfig, } if n.Path != "" { - netConf.NetNSPath = n.Path + netConf.NetworkID = n.Path } } netConf.InterworkingModel = config.InterNetworkModel - netConf.DisableNewNetNs = config.DisableNewNetNs + netConf.DisableNewNetwork = config.DisableNewNetNs return netConf, nil } @@ -798,7 +798,7 @@ func addRuntimeConfigOverrides(ocispec specs.Spec, sbConfig *vc.SandboxConfig, r } if err := newAnnotationConfiguration(ocispec, vcAnnotations.DisableNewNetNs).setBool(func(disableNewNetNs bool) { - sbConfig.NetworkConfig.DisableNewNetNs = disableNewNetNs + sbConfig.NetworkConfig.DisableNewNetwork = disableNewNetNs }); err != nil { return err } diff --git a/src/runtime/pkg/oci/utils_test.go b/src/runtime/pkg/oci/utils_test.go index ea8128ed2..8f8e19799 100644 --- a/src/runtime/pkg/oci/utils_test.go +++ b/src/runtime/pkg/oci/utils_test.go @@ -822,7 +822,7 @@ func TestAddRuntimeAnnotations(t *testing.T) { addAnnotations(ocispec, &config, runtimeConfig) assert.Equal(config.DisableGuestSeccomp, true) assert.Equal(config.SandboxCgroupOnly, true) - assert.Equal(config.NetworkConfig.DisableNewNetNs, true) + assert.Equal(config.NetworkConfig.DisableNewNetwork, true) assert.Equal(config.NetworkConfig.InterworkingModel, vc.NetXConnectMacVtapModel) } diff --git a/src/runtime/virtcontainers/documentation/api/1.0/api.md b/src/runtime/virtcontainers/documentation/api/1.0/api.md index 1f49cfa0f..a2e1a55ff 100644 --- a/src/runtime/virtcontainers/documentation/api/1.0/api.md +++ b/src/runtime/virtcontainers/documentation/api/1.0/api.md @@ -355,10 +355,10 @@ type HypervisorConfig struct { ```Go // NetworkConfig is the network configuration related to a network. type NetworkConfig struct { - NetNSPath string - NetNsCreated bool - DisableNewNetNs bool + NetworkID string InterworkingModel NetInterworkingModel + NetworkCreated bool + DisableNewNetwork bool } ``` ###### `NetInterworkingModel` diff --git a/src/runtime/virtcontainers/fc.go b/src/runtime/virtcontainers/fc.go index 0b8b1afb1..338a96463 100644 --- a/src/runtime/virtcontainers/fc.go +++ b/src/runtime/virtcontainers/fc.go @@ -217,7 +217,7 @@ func (fc *firecracker) CreateVM(ctx context.Context, id string, network *Network fc.setPaths(&fc.config) // So we need to repopulate this at StartVM where it is valid - fc.netNSPath = network.NetNS() + fc.netNSPath = network.NetworkID() // Till we create lower privileged kata user run as root // https://github.com/kata-containers/runtime/issues/1869 diff --git a/src/runtime/virtcontainers/network.go b/src/runtime/virtcontainers/network.go index f8aa09408..a7ba9c660 100644 --- a/src/runtime/virtcontainers/network.go +++ b/src/runtime/virtcontainers/network.go @@ -177,10 +177,10 @@ type NetworkInterfacePair struct { // NetworkConfig is the network configuration related to a network. type NetworkConfig struct { - NetNSPath string + NetworkID string InterworkingModel NetInterworkingModel - NetNsCreated bool - DisableNewNetNs bool + NetworkCreated bool + DisableNewNetwork bool } func networkLogger() *logrus.Entry { @@ -213,9 +213,9 @@ func NewNetwork(configs ...*NetworkConfig) (*Network, error) { } return &Network{ - config.NetNSPath, + config.NetworkID, config.InterworkingModel, - config.NetNsCreated, + config.NetworkCreated, []Endpoint{}, 0, }, nil @@ -223,8 +223,8 @@ func NewNetwork(configs ...*NetworkConfig) (*Network, error) { func LoadNetwork(netInfo persistapi.NetworkInfo) *Network { network := &Network{ - netNSPath: netInfo.NetNsPath, - netNSCreated: netInfo.NetNsCreated, + netNSPath: netInfo.NetworkID, + netNSCreated: netInfo.NetworkCreated, } for _, e := range netInfo.Endpoints { @@ -558,11 +558,11 @@ func (n *Network) Remove(ctx context.Context) error { } // Network getters -func (n *Network) NetNS() string { +func (n *Network) NetworkID() string { return n.netNSPath } -func (n *Network) NetNSCreated() bool { +func (n *Network) NetworkCreated() bool { return n.netNSCreated } diff --git a/src/runtime/virtcontainers/network_test.go b/src/runtime/virtcontainers/network_test.go index 2872ae98f..ac0476f33 100644 --- a/src/runtime/virtcontainers/network_test.go +++ b/src/runtime/virtcontainers/network_test.go @@ -73,7 +73,7 @@ func TestGenerateInterfacesAndRoutes(t *testing.T) { endpoints := []Endpoint{ep0} - nns, err := NewNetwork(&NetworkConfig{NetNSPath: "foobar", NetNsCreated: true}) + nns, err := NewNetwork(&NetworkConfig{NetworkID: "foobar", NetworkCreated: true}) assert.Nil(t, err) nns.eps = endpoints diff --git a/src/runtime/virtcontainers/persist.go b/src/runtime/virtcontainers/persist.go index bbc2535a1..bc20af21f 100644 --- a/src/runtime/virtcontainers/persist.go +++ b/src/runtime/virtcontainers/persist.go @@ -164,8 +164,8 @@ func (s *Sandbox) dumpAgent(ss *persistapi.SandboxState) { func (s *Sandbox) dumpNetwork(ss *persistapi.SandboxState) { ss.Network = persistapi.NetworkInfo{ - NetNsPath: s.network.NetNS(), - NetNsCreated: s.network.NetNSCreated(), + NetworkID: s.network.NetworkID(), + NetworkCreated: s.network.NetworkCreated(), } for _, e := range s.network.Endpoints() { ss.Network.Endpoints = append(ss.Network.Endpoints, e.save()) @@ -177,9 +177,9 @@ func (s *Sandbox) dumpConfig(ss *persistapi.SandboxState) { ss.Config = persistapi.SandboxConfig{ HypervisorType: string(sconfig.HypervisorType), NetworkConfig: persistapi.NetworkConfig{ - NetNSPath: sconfig.NetworkConfig.NetNSPath, - NetNsCreated: sconfig.NetworkConfig.NetNsCreated, - DisableNewNetNs: sconfig.NetworkConfig.DisableNewNetNs, + NetworkID: sconfig.NetworkConfig.NetworkID, + NetworkCreated: sconfig.NetworkConfig.NetworkCreated, + DisableNewNetwork: sconfig.NetworkConfig.DisableNewNetwork, InterworkingModel: int(sconfig.NetworkConfig.InterworkingModel), }, @@ -416,9 +416,9 @@ func loadSandboxConfig(id string) (*SandboxConfig, error) { ID: id, HypervisorType: HypervisorType(savedConf.HypervisorType), NetworkConfig: NetworkConfig{ - NetNSPath: savedConf.NetworkConfig.NetNSPath, - NetNsCreated: savedConf.NetworkConfig.NetNsCreated, - DisableNewNetNs: savedConf.NetworkConfig.DisableNewNetNs, + NetworkID: savedConf.NetworkConfig.NetworkID, + NetworkCreated: savedConf.NetworkConfig.NetworkCreated, + DisableNewNetwork: savedConf.NetworkConfig.DisableNewNetwork, InterworkingModel: NetInterworkingModel(savedConf.NetworkConfig.InterworkingModel), }, diff --git a/src/runtime/virtcontainers/persist/api/config.go b/src/runtime/virtcontainers/persist/api/config.go index 30da53372..0af8a0922 100644 --- a/src/runtime/virtcontainers/persist/api/config.go +++ b/src/runtime/virtcontainers/persist/api/config.go @@ -223,9 +223,9 @@ type ShimConfig struct { // NetworkConfig is the network configuration related to a network. type NetworkConfig struct { - NetNSPath string - NetNsCreated bool - DisableNewNetNs bool + NetworkID string + NetworkCreated bool + DisableNewNetwork bool InterworkingModel int } diff --git a/src/runtime/virtcontainers/persist/api/network.go b/src/runtime/virtcontainers/persist/api/network.go index 51c3aac62..a642fa578 100644 --- a/src/runtime/virtcontainers/persist/api/network.go +++ b/src/runtime/virtcontainers/persist/api/network.go @@ -96,7 +96,7 @@ type NetworkEndpoint struct { // NetworkInfo contains network information of sandbox type NetworkInfo struct { - NetNsPath string - Endpoints []NetworkEndpoint - NetNsCreated bool + NetworkID string + Endpoints []NetworkEndpoint + NetworkCreated bool } diff --git a/src/runtime/virtcontainers/sandbox.go b/src/runtime/virtcontainers/sandbox.go index 3a21337f9..20d815cea 100644 --- a/src/runtime/virtcontainers/sandbox.go +++ b/src/runtime/virtcontainers/sandbox.go @@ -269,7 +269,7 @@ func (s *Sandbox) GetAnnotations() map[string]string { // GetNetNs returns the network namespace of the current sandbox. func (s *Sandbox) GetNetNs() string { - return s.network.NetNS() + return s.network.NetworkID() } // GetHypervisorPid returns the hypervisor's pid. @@ -797,8 +797,8 @@ func (s *Sandbox) Delete(ctx context.Context) error { } func (s *Sandbox) createNetwork(ctx context.Context) error { - if s.config.NetworkConfig.DisableNewNetNs || - s.config.NetworkConfig.NetNSPath == "" { + if s.config.NetworkConfig.DisableNewNetwork || + s.config.NetworkConfig.NetworkID == "" { return nil } diff --git a/src/runtime/virtcontainers/sandbox_test.go b/src/runtime/virtcontainers/sandbox_test.go index c741caf7b..ca02210cd 100644 --- a/src/runtime/virtcontainers/sandbox_test.go +++ b/src/runtime/virtcontainers/sandbox_test.go @@ -1300,7 +1300,7 @@ func TestGetNetNs(t *testing.T) { s := Sandbox{} expected := "/foo/bar/ns/net" - network, err := NewNetwork(&NetworkConfig{NetNSPath: expected}) + network, err := NewNetwork(&NetworkConfig{NetworkID: expected}) assert.Nil(t, err) s.network = network From e0b264430d1f4efb53f3caead3291e2151637d0b Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Mon, 8 Nov 2021 22:13:07 +0000 Subject: [PATCH 365/385] virtcontainers: Define a Network interface And move the Linux implementation into a GOOS specific file. Fixes #3005 Signed-off-by: Samuel Ortiz --- src/runtime/virtcontainers/acrn.go | 2 +- src/runtime/virtcontainers/clh.go | 2 +- src/runtime/virtcontainers/fc.go | 2 +- src/runtime/virtcontainers/hypervisor.go | 2 +- src/runtime/virtcontainers/mock_hypervisor.go | 2 +- src/runtime/virtcontainers/network.go | 1624 ++--------------- src/runtime/virtcontainers/network_linux.go | 1403 ++++++++++++++ src/runtime/virtcontainers/network_test.go | 2 +- src/runtime/virtcontainers/qemu.go | 2 +- src/runtime/virtcontainers/sandbox.go | 8 +- 10 files changed, 1525 insertions(+), 1524 deletions(-) create mode 100644 src/runtime/virtcontainers/network_linux.go diff --git a/src/runtime/virtcontainers/acrn.go b/src/runtime/virtcontainers/acrn.go index d97cf2a0c..244b78d66 100644 --- a/src/runtime/virtcontainers/acrn.go +++ b/src/runtime/virtcontainers/acrn.go @@ -356,7 +356,7 @@ func (a *Acrn) setConfig(config *HypervisorConfig) error { } // CreateVM is the VM creation -func (a *Acrn) CreateVM(ctx context.Context, id string, network *Network, hypervisorConfig *HypervisorConfig) error { +func (a *Acrn) CreateVM(ctx context.Context, id string, network Network, hypervisorConfig *HypervisorConfig) error { // Save the tracing context a.ctx = ctx diff --git a/src/runtime/virtcontainers/clh.go b/src/runtime/virtcontainers/clh.go index 5b48ae56b..89249f3de 100644 --- a/src/runtime/virtcontainers/clh.go +++ b/src/runtime/virtcontainers/clh.go @@ -200,7 +200,7 @@ func (clh *cloudHypervisor) setConfig(config *HypervisorConfig) error { // For cloudHypervisor this call only sets the internal structure up. // The VM will be created and started through StartVM(). -func (clh *cloudHypervisor) CreateVM(ctx context.Context, id string, network *Network, hypervisorConfig *HypervisorConfig) error { +func (clh *cloudHypervisor) CreateVM(ctx context.Context, id string, network Network, hypervisorConfig *HypervisorConfig) error { clh.ctx = ctx span, newCtx := katatrace.Trace(clh.ctx, clh.Logger(), "CreateVM", clhTracingTags, map[string]string{"sandbox_id": clh.id}) diff --git a/src/runtime/virtcontainers/fc.go b/src/runtime/virtcontainers/fc.go index 338a96463..34a44692d 100644 --- a/src/runtime/virtcontainers/fc.go +++ b/src/runtime/virtcontainers/fc.go @@ -199,7 +199,7 @@ func (fc *firecracker) setConfig(config *HypervisorConfig) error { // CreateVM For firecracker this call only sets the internal structure up. // The sandbox will be created and started through startSandbox(). -func (fc *firecracker) CreateVM(ctx context.Context, id string, network *Network, hypervisorConfig *HypervisorConfig) error { +func (fc *firecracker) CreateVM(ctx context.Context, id string, network Network, hypervisorConfig *HypervisorConfig) error { fc.ctx = ctx span, _ := katatrace.Trace(ctx, fc.Logger(), "CreateVM", fcTracingTags, map[string]string{"sandbox_id": fc.id}) diff --git a/src/runtime/virtcontainers/hypervisor.go b/src/runtime/virtcontainers/hypervisor.go index d16f82d8b..175342016 100644 --- a/src/runtime/virtcontainers/hypervisor.go +++ b/src/runtime/virtcontainers/hypervisor.go @@ -910,7 +910,7 @@ func generateVMSocket(id string, vmStogarePath string) (interface{}, error) { // hypervisor is the virtcontainers hypervisor interface. // The default hypervisor implementation is Qemu. type Hypervisor interface { - CreateVM(ctx context.Context, id string, network *Network, hypervisorConfig *HypervisorConfig) error + CreateVM(ctx context.Context, id string, network Network, hypervisorConfig *HypervisorConfig) error StartVM(ctx context.Context, timeout int) error // If wait is set, don't actively stop the sandbox: diff --git a/src/runtime/virtcontainers/mock_hypervisor.go b/src/runtime/virtcontainers/mock_hypervisor.go index 635cbbe1d..83e776d28 100644 --- a/src/runtime/virtcontainers/mock_hypervisor.go +++ b/src/runtime/virtcontainers/mock_hypervisor.go @@ -38,7 +38,7 @@ func (m *mockHypervisor) setConfig(config *HypervisorConfig) error { return nil } -func (m *mockHypervisor) CreateVM(ctx context.Context, id string, network *Network, hypervisorConfig *HypervisorConfig) error { +func (m *mockHypervisor) CreateVM(ctx context.Context, id string, network Network, hypervisorConfig *HypervisorConfig) error { if err := m.setConfig(hypervisorConfig); err != nil { return err } diff --git a/src/runtime/virtcontainers/network.go b/src/runtime/virtcontainers/network.go index a7ba9c660..cce583ff5 100644 --- a/src/runtime/virtcontainers/network.go +++ b/src/runtime/virtcontainers/network.go @@ -1,4 +1,5 @@ // Copyright (c) 2016 Intel Corporation +// Copyright (c) 2022 Apple Inc. // // SPDX-License-Identifier: Apache-2.0 // @@ -9,24 +10,16 @@ import ( "context" cryptoRand "crypto/rand" "fmt" - "math/rand" "net" "os" - "os/exec" - "runtime" - "sort" - "time" - "github.com/containernetworking/plugins/pkg/ns" "github.com/sirupsen/logrus" "github.com/vishvananda/netlink" - "github.com/vishvananda/netns" - otelTrace "go.opentelemetry.io/otel/trace" + "go.opentelemetry.io/otel/trace" "golang.org/x/sys/unix" "github.com/kata-containers/kata-containers/src/runtime/pkg/katautils/katatrace" "github.com/kata-containers/kata-containers/src/runtime/pkg/uuid" - persistapi "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/persist/api" pbTypes "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/agent/protocols" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/utils" ) @@ -38,6 +31,77 @@ var networkTracingTags = map[string]string{ "subsystem": "network", } +func networkLogger() *logrus.Entry { + return virtLog.WithField("subsystem", "network") +} + +var networkTrace = getNetworkTrace("") + +func getNetworkTrace(networkType EndpointType) func(ctx context.Context, name string, endpoint interface{}) (trace.Span, context.Context) { + return func(ctx context.Context, name string, endpoint interface{}) (trace.Span, context.Context) { + span, ctx := katatrace.Trace(ctx, networkLogger(), name, networkTracingTags) + if networkType != "" { + katatrace.AddTags(span, "type", string(networkType)) + } + if endpoint != nil { + katatrace.AddTags(span, "endpoint", endpoint) + } + return span, ctx + } +} + +func closeSpan(span trace.Span, err error) { + if err != nil { + katatrace.AddTags(span, "error", err.Error()) + } + span.End() +} + +// NetworkInterface defines a network interface. +type NetworkInterface struct { + Name string + HardAddr string + Addrs []netlink.Addr +} + +// TapInterface defines a tap interface +type TapInterface struct { + ID string + Name string + TAPIface NetworkInterface + VMFds []*os.File + VhostFds []*os.File +} + +// TuntapInterface defines a tap interface +type TuntapInterface struct { + Name string + TAPIface NetworkInterface +} + +// NetworkInterfacePair defines a pair between VM and virtual network interfaces. +type NetworkInterfacePair struct { + TapInterface + VirtIface NetworkInterface + NetInterworkingModel +} + +// NetlinkIface describes fully a network interface. +type NetlinkIface struct { + netlink.LinkAttrs + Type string +} + +// NetworkInfo gathers all information related to a network interface. +// It can be used to store the description of the underlying network. +type NetworkInfo struct { + Iface NetlinkIface + DNS DNSInfo + Addrs []netlink.Addr + Routes []netlink.Route + Neighbors []netlink.Neigh +} + // NetInterworkingModel defines the network model connecting // the network interface to the virtual machine. type NetInterworkingModel int @@ -116,12 +180,6 @@ func (n *NetInterworkingModel) SetModel(modelName string) error { // the container network interface var DefaultNetInterworkingModel = NetXConnectTCFilterModel -// Introduces constants related to networking -const ( - defaultFilePerms = 0600 - defaultQlen = 1500 -) - // DNSInfo describes the DNS setup related to a network interface. type DNSInfo struct { Servers []string @@ -130,51 +188,6 @@ type DNSInfo struct { Options []string } -// NetlinkIface describes fully a network interface. -type NetlinkIface struct { - netlink.LinkAttrs - Type string -} - -// NetworkInfo gathers all information related to a network interface. -// It can be used to store the description of the underlying network. -type NetworkInfo struct { - Iface NetlinkIface - DNS DNSInfo - Addrs []netlink.Addr - Routes []netlink.Route - Neighbors []netlink.Neigh -} - -// NetworkInterface defines a network interface. -type NetworkInterface struct { - Name string - HardAddr string - Addrs []netlink.Addr -} - -// TapInterface defines a tap interface -type TapInterface struct { - ID string - Name string - TAPIface NetworkInterface - VMFds []*os.File - VhostFds []*os.File -} - -// TuntapInterface defines a tap interface -type TuntapInterface struct { - Name string - TAPIface NetworkInterface -} - -// NetworkInterfacePair defines a pair between VM and virtual network interfaces. -type NetworkInterfacePair struct { - TapInterface - VirtIface NetworkInterface - NetInterworkingModel -} - // NetworkConfig is the network configuration related to a network. type NetworkConfig struct { NetworkID string @@ -183,1049 +196,45 @@ type NetworkConfig struct { DisableNewNetwork bool } -func networkLogger() *logrus.Entry { - return virtLog.WithField("subsystem", "network") +type Network interface { + // Add adds all needed networking endpoints to a sandbox's network + Add(context.Context, *Sandbox, bool) error + + // AddEndpoint adds one single endpoint to a sandbox's network. + AddEndpoint(context.Context, *Sandbox, NetworkInfo, netlink.Link, bool) (Endpoint, error) + + // Remove removes all the networking endpoints from a sandbox's network. + // If the network has been created by virtcontainers, Remove also deletes + // the network. + Remove(context.Context) error + + // RemoveEndpoint removes one single endpoint from the sandbox's network. + RemoveEndpoint(context.Context, *Sandbox, int, bool) error + + // PostAdd is a post networking endpoint addition hook. + PostAdd(context.Context, bool) error + + // Run runs a callback in a sandbox's network. + Run(context.Context, func() error) error + + // NetworkID returns a network unique identifier, + // like e,g. a networking namespace on Linux hosts. + NetworkID() string + + // NetworkCreated returns true if the network has been created + // by virtcontainers. + NetworkCreated() bool + + // Endpoints returns the list of networking endpoints attached to + // the host network. + Endpoints() []Endpoint + + // SetEndpoints sets a sandbox's network endpoints. + SetEndpoints([]Endpoint) } -// Network represents a sandbox networking setup. -type Network struct { - netNSPath string - interworkingModel NetInterworkingModel - netNSCreated bool - - eps []Endpoint - netmonPID int -} - -func NewNetwork(configs ...*NetworkConfig) (*Network, error) { - if len(configs) > 1 { - return nil, fmt.Errorf("Too many network configurations") - } - - // Empty constructor - if len(configs) == 0 { - return &Network{}, nil - } - - config := configs[0] - if config == nil { - return nil, fmt.Errorf("Missing network configuration") - } - - return &Network{ - config.NetworkID, - config.InterworkingModel, - config.NetworkCreated, - []Endpoint{}, - 0, - }, nil -} - -func LoadNetwork(netInfo persistapi.NetworkInfo) *Network { - network := &Network{ - netNSPath: netInfo.NetworkID, - netNSCreated: netInfo.NetworkCreated, - } - - for _, e := range netInfo.Endpoints { - var ep Endpoint - switch EndpointType(e.Type) { - case PhysicalEndpointType: - ep = &PhysicalEndpoint{} - case VethEndpointType: - ep = &VethEndpoint{} - case VhostUserEndpointType: - ep = &VhostUserEndpoint{} - case MacvlanEndpointType: - ep = &MacvlanEndpoint{} - case MacvtapEndpointType: - ep = &MacvtapEndpoint{} - case TapEndpointType: - ep = &TapEndpoint{} - case IPVlanEndpointType: - ep = &IPVlanEndpoint{} - default: - networkLogger().WithField("endpoint-type", e.Type).Error("unknown endpoint type") - continue - } - ep.load(e) - network.eps = append(network.eps, ep) - } - - return network -} - -var networkTrace = getNetworkTrace("") - -func (n *Network) trace(ctx context.Context, name string) (otelTrace.Span, context.Context) { - return networkTrace(ctx, name, nil) -} - -func getNetworkTrace(networkType EndpointType) func(ctx context.Context, name string, endpoint interface{}) (otelTrace.Span, context.Context) { - return func(ctx context.Context, name string, endpoint interface{}) (otelTrace.Span, context.Context) { - span, ctx := katatrace.Trace(ctx, networkLogger(), name, networkTracingTags) - if networkType != "" { - katatrace.AddTags(span, "type", string(networkType)) - } - if endpoint != nil { - katatrace.AddTags(span, "endpoint", endpoint) - } - return span, ctx - } -} - -func closeSpan(span otelTrace.Span, err error) { - if err != nil { - katatrace.AddTags(span, "error", err.Error()) - } - span.End() -} - -func (n *Network) attachEndpoint(ctx context.Context, s *Sandbox, netInfo NetworkInfo, link netlink.Link, hotplug bool) (Endpoint, error) { - var endpoint Endpoint - // TODO: This is the incoming interface - // based on the incoming interface we should create - // an appropriate EndPoint based on interface type - // This should be a switch - - // Check if interface is a physical interface. Do not create - // tap interface/bridge if it is. - isPhysical, err := isPhysicalIface(netInfo.Iface.Name) - if err != nil { - return nil, err - } - - if isPhysical { - networkLogger().WithField("interface", netInfo.Iface.Name).Info("Physical network interface found") - endpoint, err = createPhysicalEndpoint(netInfo) - } else { - var socketPath string - idx := len(n.eps) - - // Check if this is a dummy interface which has a vhost-user socket associated with it - socketPath, err = vhostUserSocketPath(netInfo) - if err != nil { - return nil, err - } - - if socketPath != "" { - networkLogger().WithField("interface", netInfo.Iface.Name).Info("VhostUser network interface found") - endpoint, err = createVhostUserEndpoint(netInfo, socketPath) - } else if netInfo.Iface.Type == "macvlan" { - networkLogger().Infof("macvlan interface found") - endpoint, err = createMacvlanNetworkEndpoint(idx, netInfo.Iface.Name, n.interworkingModel) - } else if netInfo.Iface.Type == "macvtap" { - networkLogger().Infof("macvtap interface found") - endpoint, err = createMacvtapNetworkEndpoint(netInfo) - } else if netInfo.Iface.Type == "tap" { - networkLogger().Info("tap interface found") - endpoint, err = createTapNetworkEndpoint(idx, netInfo.Iface.Name) - } else if netInfo.Iface.Type == "tuntap" { - if link != nil { - switch link.(*netlink.Tuntap).Mode { - case 0: - // mount /sys/class/net to get links - return nil, fmt.Errorf("Network device mode not determined correctly. Mount sysfs in caller") - case 1: - return nil, fmt.Errorf("tun networking device not yet supported") - case 2: - networkLogger().Info("tuntap tap interface found") - endpoint, err = createTuntapNetworkEndpoint(idx, netInfo.Iface.Name, netInfo.Iface.HardwareAddr, n.interworkingModel) - default: - return nil, fmt.Errorf("tuntap network %v mode unsupported", link.(*netlink.Tuntap).Mode) - } - } - } else if netInfo.Iface.Type == "veth" { - networkLogger().Info("veth interface found") - endpoint, err = createVethNetworkEndpoint(idx, netInfo.Iface.Name, n.interworkingModel) - } else if netInfo.Iface.Type == "ipvlan" { - networkLogger().Info("ipvlan interface found") - endpoint, err = createIPVlanNetworkEndpoint(idx, netInfo.Iface.Name) - } else { - return nil, fmt.Errorf("Unsupported network interface: %s", netInfo.Iface.Type) - } - } - - endpoint.SetProperties(netInfo) - - if err := doNetNS(n.netNSPath, func(_ ns.NetNS) error { - networkLogger().WithField("endpoint-type", endpoint.Type()).WithField("hotplug", hotplug).Info("Attaching endpoint") - if hotplug { - if err := endpoint.HotAttach(ctx, s.hypervisor); err != nil { - return err - } - } else { - if err := endpoint.Attach(ctx, s); err != nil { - return err - } - } - - if !s.hypervisor.IsRateLimiterBuiltin() { - rxRateLimiterMaxRate := s.hypervisor.HypervisorConfig().RxRateLimiterMaxRate - if rxRateLimiterMaxRate > 0 { - networkLogger().Info("Add Rx Rate Limiter") - if err := addRxRateLimiter(endpoint, rxRateLimiterMaxRate); err != nil { - return err - } - } - txRateLimiterMaxRate := s.hypervisor.HypervisorConfig().TxRateLimiterMaxRate - if txRateLimiterMaxRate > 0 { - networkLogger().Info("Add Tx Rate Limiter") - if err := addTxRateLimiter(endpoint, txRateLimiterMaxRate); err != nil { - return err - } - } - } - - return nil - }); err != nil { - return nil, err - } - - n.eps = append(n.eps, endpoint) - - return endpoint, nil -} - -func (n *Network) detachEndpoint(ctx context.Context, s *Sandbox, idx int, hotplug bool) error { - if idx > len(n.eps)-1 { - return fmt.Errorf("Enpoint index overflow") - } - - endpoint := n.eps[idx] - - if endpoint.GetRxRateLimiter() { - networkLogger().WithField("endpoint-type", endpoint.Type()).Info("Deleting rx rate limiter") - // Deleting rx rate limiter should enter the network namespace. - if err := removeRxRateLimiter(endpoint, n.netNSPath); err != nil { - return err - } - } - - if endpoint.GetTxRateLimiter() { - networkLogger().WithField("endpoint-type", endpoint.Type()).Info("Deleting tx rate limiter") - // Deleting tx rate limiter should enter the network namespace. - if err := removeTxRateLimiter(endpoint, n.netNSPath); err != nil { - return err - } - } - - // Detach for an endpoint should enter the network namespace - // if required. - networkLogger().WithField("endpoint-type", endpoint.Type()).Info("Detaching endpoint") - if hotplug && s != nil { - if err := endpoint.HotDetach(ctx, s.hypervisor, n.netNSCreated, n.netNSPath); err != nil { - return err - } - } else { - if err := endpoint.Detach(ctx, n.netNSCreated, n.netNSPath); err != nil { - return err - } - } - - n.eps = append(n.eps[:idx], n.eps[idx+1:]...) - - return nil -} - -// Scan the networking namespace through netlink and then: -// 1. Create the endpoints for the relevant interfaces found there. -// 2. Attach them to the VM. -func (n *Network) attachEndpoints(ctx context.Context, s *Sandbox, hotplug bool) error { - netnsHandle, err := netns.GetFromPath(n.netNSPath) - if err != nil { - return err - } - defer netnsHandle.Close() - - netlinkHandle, err := netlink.NewHandleAt(netnsHandle) - if err != nil { - return err - } - defer netlinkHandle.Close() - - linkList, err := netlinkHandle.LinkList() - if err != nil { - return err - } - - for _, link := range linkList { - netInfo, err := networkInfoFromLink(netlinkHandle, link) - if err != nil { - return err - } - - // Ignore unconfigured network interfaces. These are - // either base tunnel devices that are not namespaced - // like gre0, gretap0, sit0, ipip0, tunl0 or incorrectly - // setup interfaces. - if len(netInfo.Addrs) == 0 { - continue - } - - // Skip any loopback interfaces: - if (netInfo.Iface.Flags & net.FlagLoopback) != 0 { - continue - } - - _, err = n.attachEndpoint(ctx, s, netInfo, link, hotplug) - if err != nil { - return err - } - } - - sort.Slice(n.eps, func(i, j int) bool { - return n.eps[i].Name() < n.eps[j].Name() - }) - - networkLogger().WithField("endpoints", n.eps).Info("endpoints found after scan") - - return nil -} - -// Run runs a callback in the specified network namespace. -func (n *Network) Run(ctx context.Context, cb func() error) error { - span, _ := n.trace(ctx, "Run") - defer span.End() - - return doNetNS(n.netNSPath, func(_ ns.NetNS) error { - return cb() - }) -} - -// Add adds all needed interfaces inside the network namespace. -func (n *Network) Add(ctx context.Context, s *Sandbox, hotplug bool) error { - span, ctx := n.trace(ctx, "Add") - katatrace.AddTags(span, "type", n.interworkingModel.GetModel()) - defer span.End() - - if err := n.attachEndpoints(ctx, s, hotplug); err != nil { - return err - } - - katatrace.AddTags(span, "endpoints", n.eps, "hotplug", hotplug) - networkLogger().Debug("Network added") - - return nil -} - -func (n *Network) PostAdd(ctx context.Context, hotplug bool) error { - if hotplug { - return nil - } - - if n.eps == nil { - return nil - } - - endpoints := n.eps - - for _, endpoint := range endpoints { - netPair := endpoint.NetworkPair() - if netPair == nil { - continue - } - if netPair.VhostFds != nil { - for _, VhostFd := range netPair.VhostFds { - VhostFd.Close() - } - } - } - - return nil -} - -// Remove network endpoints in the network namespace. It also deletes the network -// namespace in case the namespace has been created by us. -func (n *Network) Remove(ctx context.Context) error { - span, ctx := n.trace(ctx, "Remove") - defer span.End() - - for i, _ := range n.eps { - if err := n.detachEndpoint(ctx, nil, i, false); err != nil { - return err - } - } - - networkLogger().Debug("Network removed") - - if n.netNSCreated { - networkLogger().Infof("Network namespace %q deleted", n.netNSPath) - return deleteNetNS(n.netNSPath) - } - - return nil -} - -// Network getters -func (n *Network) NetworkID() string { - return n.netNSPath -} - -func (n *Network) NetworkCreated() bool { - return n.netNSCreated -} - -func (n *Network) Endpoints() []Endpoint { - return n.eps -} - -func createLink(netHandle *netlink.Handle, name string, expectedLink netlink.Link, queues int) (netlink.Link, []*os.File, error) { - var newLink netlink.Link - var fds []*os.File - - switch expectedLink.Type() { - case (&netlink.Tuntap{}).Type(): - flags := netlink.TUNTAP_VNET_HDR - if queues > 0 { - flags |= netlink.TUNTAP_MULTI_QUEUE_DEFAULTS - } - newLink = &netlink.Tuntap{ - LinkAttrs: netlink.LinkAttrs{Name: name}, - Mode: netlink.TUNTAP_MODE_TAP, - Queues: queues, - Flags: flags, - } - case (&netlink.Macvtap{}).Type(): - qlen := expectedLink.Attrs().TxQLen - if qlen <= 0 { - qlen = defaultQlen - } - newLink = &netlink.Macvtap{ - Macvlan: netlink.Macvlan{ - Mode: netlink.MACVLAN_MODE_BRIDGE, - LinkAttrs: netlink.LinkAttrs{ - Index: expectedLink.Attrs().Index, - Name: name, - TxQLen: qlen, - ParentIndex: expectedLink.Attrs().ParentIndex, - }, - }, - } - default: - return nil, fds, fmt.Errorf("Unsupported link type %s", expectedLink.Type()) - } - - if err := netHandle.LinkAdd(newLink); err != nil { - return nil, fds, fmt.Errorf("LinkAdd() failed for %s name %s: %s", expectedLink.Type(), name, err) - } - - tuntapLink, ok := newLink.(*netlink.Tuntap) - if ok { - fds = tuntapLink.Fds - } - - newLink, err := getLinkByName(netHandle, name, expectedLink) - return newLink, fds, err -} - -func getLinkForEndpoint(endpoint Endpoint, netHandle *netlink.Handle) (netlink.Link, error) { - var link netlink.Link - - switch ep := endpoint.(type) { - case *VethEndpoint: - link = &netlink.Veth{} - case *MacvlanEndpoint: - link = &netlink.Macvlan{} - case *IPVlanEndpoint: - link = &netlink.IPVlan{} - case *TuntapEndpoint: - link = &netlink.Tuntap{} - default: - return nil, fmt.Errorf("Unexpected endpointType %s", ep.Type()) - } - - return getLinkByName(netHandle, endpoint.NetworkPair().VirtIface.Name, link) -} - -func getLinkByName(netHandle *netlink.Handle, name string, expectedLink netlink.Link) (netlink.Link, error) { - link, err := netHandle.LinkByName(name) - if err != nil { - return nil, fmt.Errorf("LinkByName() failed for %s name %s: %s", expectedLink.Type(), name, err) - } - - switch expectedLink.Type() { - case (&netlink.Tuntap{}).Type(): - if l, ok := link.(*netlink.Tuntap); ok { - return l, nil - } - case (&netlink.Veth{}).Type(): - if l, ok := link.(*netlink.Veth); ok { - return l, nil - } - case (&netlink.Macvtap{}).Type(): - if l, ok := link.(*netlink.Macvtap); ok { - return l, nil - } - case (&netlink.Macvlan{}).Type(): - if l, ok := link.(*netlink.Macvlan); ok { - return l, nil - } - case (&netlink.IPVlan{}).Type(): - if l, ok := link.(*netlink.IPVlan); ok { - return l, nil - } - default: - return nil, fmt.Errorf("Unsupported link type %s", expectedLink.Type()) - } - - return nil, fmt.Errorf("Incorrect link type %s, expecting %s", link.Type(), expectedLink.Type()) -} - -// The endpoint type should dictate how the connection needs to happen. -func xConnectVMNetwork(ctx context.Context, endpoint Endpoint, h Hypervisor) error { - var err error - - span, ctx := networkTrace(ctx, "xConnectVMNetwork", endpoint) - defer closeSpan(span, err) - - netPair := endpoint.NetworkPair() - - queues := 0 - caps := h.Capabilities(ctx) - if caps.IsMultiQueueSupported() { - queues = int(h.HypervisorConfig().NumVCPUs) - } - - disableVhostNet := h.HypervisorConfig().DisableVhostNet - - if netPair.NetInterworkingModel == NetXConnectDefaultModel { - netPair.NetInterworkingModel = DefaultNetInterworkingModel - } - - switch netPair.NetInterworkingModel { - case NetXConnectMacVtapModel: - networkLogger().Info("connect macvtap to VM network") - err = tapNetworkPair(ctx, endpoint, queues, disableVhostNet) - case NetXConnectTCFilterModel: - networkLogger().Info("connect TCFilter to VM network") - err = setupTCFiltering(ctx, endpoint, queues, disableVhostNet) - default: - err = fmt.Errorf("Invalid internetworking model") - } - return err -} - -// The endpoint type should dictate how the disconnection needs to happen. -func xDisconnectVMNetwork(ctx context.Context, endpoint Endpoint) error { - var err error - - span, ctx := networkTrace(ctx, "xDisconnectVMNetwork", endpoint) - defer closeSpan(span, err) - - netPair := endpoint.NetworkPair() - - if netPair.NetInterworkingModel == NetXConnectDefaultModel { - netPair.NetInterworkingModel = DefaultNetInterworkingModel - } - - switch netPair.NetInterworkingModel { - case NetXConnectMacVtapModel: - err = untapNetworkPair(ctx, endpoint) - case NetXConnectTCFilterModel: - err = removeTCFiltering(ctx, endpoint) - default: - err = fmt.Errorf("Invalid internetworking model") - } - return err -} - -func createMacvtapFds(linkIndex int, queues int) ([]*os.File, error) { - tapDev := fmt.Sprintf("/dev/tap%d", linkIndex) - return createFds(tapDev, queues) -} - -func createVhostFds(numFds int) ([]*os.File, error) { - vhostDev := "/dev/vhost-net" - return createFds(vhostDev, numFds) -} - -func createFds(device string, numFds int) ([]*os.File, error) { - fds := make([]*os.File, numFds) - - for i := 0; i < numFds; i++ { - f, err := os.OpenFile(device, os.O_RDWR, defaultFilePerms) - if err != nil { - utils.CleanupFds(fds, i) - return nil, err - } - fds[i] = f - } - return fds, nil -} - -// There is a limitation in the linux kernel that prevents a macvtap/macvlan link -// from getting the correct link index when created in a network namespace -// https://github.com/clearcontainers/runtime/issues/708 -// -// Till that bug is fixed we need to pick a random non conflicting index and try to -// create a link. If that fails, we need to try with another. -// All the kernel does not Check if the link id conflicts with a link id on the host -// hence we need to offset the link id to prevent any overlaps with the host index -// -// Here the kernel will ensure that there is no race condition - -const hostLinkOffset = 8192 // Host should not have more than 8k interfaces -const linkRange = 0xFFFF // This will allow upto 2^16 containers -const linkRetries = 128 // The numbers of time we try to find a non conflicting index -const macvtapWorkaround = true - -func createMacVtap(netHandle *netlink.Handle, name string, link netlink.Link, queues int) (taplink netlink.Link, err error) { - - if !macvtapWorkaround { - taplink, _, err = createLink(netHandle, name, link, queues) - return - } - - r := rand.New(rand.NewSource(time.Now().UnixNano())) - - for i := 0; i < linkRetries; i++ { - index := hostLinkOffset + (r.Int() & linkRange) - link.Attrs().Index = index - taplink, _, err = createLink(netHandle, name, link, queues) - if err == nil { - break - } - } - - return -} - -func clearIPs(link netlink.Link, addrs []netlink.Addr) error { - for _, addr := range addrs { - if err := netlink.AddrDel(link, &addr); err != nil { - return err - } - } - return nil -} - -func setIPs(link netlink.Link, addrs []netlink.Addr) error { - for _, addr := range addrs { - if err := netlink.AddrAdd(link, &addr); err != nil { - return err - } - } - return nil -} - -func tapNetworkPair(ctx context.Context, endpoint Endpoint, queues int, disableVhostNet bool) error { - span, _ := networkTrace(ctx, "tapNetworkPair", endpoint) - defer span.End() - - netHandle, err := netlink.NewHandle() - if err != nil { - return err - } - defer netHandle.Close() - - netPair := endpoint.NetworkPair() - - link, err := getLinkForEndpoint(endpoint, netHandle) - if err != nil { - return err - } - - attrs := link.Attrs() - - // Attach the macvtap interface to the underlying container - // interface. Also picks relevant attributes from the parent - tapLink, err := createMacVtap(netHandle, netPair.TAPIface.Name, - &netlink.Macvtap{ - Macvlan: netlink.Macvlan{ - LinkAttrs: netlink.LinkAttrs{ - TxQLen: attrs.TxQLen, - ParentIndex: attrs.Index, - }, - }, - }, queues) - - if err != nil { - return fmt.Errorf("Could not create TAP interface: %s", err) - } - - // Save the veth MAC address to the TAP so that it can later be used - // to build the hypervisor command line. This MAC address has to be - // the one inside the VM in order to avoid any firewall issues. The - // bridge created by the network plugin on the host actually expects - // to see traffic from this MAC address and not another one. - tapHardAddr := attrs.HardwareAddr - netPair.TAPIface.HardAddr = attrs.HardwareAddr.String() - - if err := netHandle.LinkSetMTU(tapLink, attrs.MTU); err != nil { - return fmt.Errorf("Could not set TAP MTU %d: %s", attrs.MTU, err) - } - - hardAddr, err := net.ParseMAC(netPair.VirtIface.HardAddr) - if err != nil { - return err - } - if err := netHandle.LinkSetHardwareAddr(link, hardAddr); err != nil { - return fmt.Errorf("Could not set MAC address %s for veth interface %s: %s", - netPair.VirtIface.HardAddr, netPair.VirtIface.Name, err) - } - - if err := netHandle.LinkSetHardwareAddr(tapLink, tapHardAddr); err != nil { - return fmt.Errorf("Could not set MAC address %s for veth interface %s: %s", - netPair.VirtIface.HardAddr, netPair.VirtIface.Name, err) - } - - if err := netHandle.LinkSetUp(tapLink); err != nil { - return fmt.Errorf("Could not enable TAP %s: %s", netPair.TAPIface.Name, err) - } - - // Clear the IP addresses from the veth interface to prevent ARP conflict - netPair.VirtIface.Addrs, err = netlink.AddrList(link, netlink.FAMILY_ALL) - if err != nil { - return fmt.Errorf("Unable to obtain veth IP addresses: %s", err) - } - - if err := clearIPs(link, netPair.VirtIface.Addrs); err != nil { - return fmt.Errorf("Unable to clear veth IP addresses: %s", err) - } - - if err := netHandle.LinkSetUp(link); err != nil { - return fmt.Errorf("Could not enable veth %s: %s", netPair.VirtIface.Name, err) - } - - // Note: The underlying interfaces need to be up prior to fd creation. - - netPair.VMFds, err = createMacvtapFds(tapLink.Attrs().Index, queues) - if err != nil { - return fmt.Errorf("Could not setup macvtap fds %s: %s", netPair.TAPIface, err) - } - - if !disableVhostNet { - vhostFds, err := createVhostFds(queues) - if err != nil { - return fmt.Errorf("Could not setup vhost fds %s : %s", netPair.VirtIface.Name, err) - } - netPair.VhostFds = vhostFds - } - - return nil -} - -func setupTCFiltering(ctx context.Context, endpoint Endpoint, queues int, disableVhostNet bool) error { - span, _ := networkTrace(ctx, "setupTCFiltering", endpoint) - defer span.End() - - netHandle, err := netlink.NewHandle() - if err != nil { - return err - } - defer netHandle.Close() - - netPair := endpoint.NetworkPair() - - tapLink, fds, err := createLink(netHandle, netPair.TAPIface.Name, &netlink.Tuntap{}, queues) - if err != nil { - return fmt.Errorf("Could not create TAP interface: %s", err) - } - netPair.VMFds = fds - - if !disableVhostNet { - vhostFds, err := createVhostFds(queues) - if err != nil { - return fmt.Errorf("Could not setup vhost fds %s : %s", netPair.VirtIface.Name, err) - } - netPair.VhostFds = vhostFds - } - - var attrs *netlink.LinkAttrs - var link netlink.Link - - link, err = getLinkForEndpoint(endpoint, netHandle) - if err != nil { - return err - } - - attrs = link.Attrs() - - // Save the veth MAC address to the TAP so that it can later be used - // to build the Hypervisor command line. This MAC address has to be - // the one inside the VM in order to avoid any firewall issues. The - // bridge created by the network plugin on the host actually expects - // to see traffic from this MAC address and not another one. - netPair.TAPIface.HardAddr = attrs.HardwareAddr.String() - - if err := netHandle.LinkSetMTU(tapLink, attrs.MTU); err != nil { - return fmt.Errorf("Could not set TAP MTU %d: %s", attrs.MTU, err) - } - - if err := netHandle.LinkSetUp(tapLink); err != nil { - return fmt.Errorf("Could not enable TAP %s: %s", netPair.TAPIface.Name, err) - } - - tapAttrs := tapLink.Attrs() - - if err := addQdiscIngress(tapAttrs.Index); err != nil { - return err - } - - if err := addQdiscIngress(attrs.Index); err != nil { - return err - } - - if err := addRedirectTCFilter(attrs.Index, tapAttrs.Index); err != nil { - return err - } - - if err := addRedirectTCFilter(tapAttrs.Index, attrs.Index); err != nil { - return err - } - - return nil -} - -// addQdiscIngress creates a new qdisc for network interface with the specified network index -// on "ingress". qdiscs normally don't work on ingress so this is really a special qdisc -// that you can consider an "alternate root" for inbound packets. -// Handle for ingress qdisc defaults to "ffff:" -// -// This is equivalent to calling `tc qdisc add dev eth0 ingress` -func addQdiscIngress(index int) error { - qdisc := &netlink.Ingress{ - QdiscAttrs: netlink.QdiscAttrs{ - LinkIndex: index, - Parent: netlink.HANDLE_INGRESS, - }, - } - - err := netlink.QdiscAdd(qdisc) - if err != nil { - return fmt.Errorf("Failed to add qdisc for network index %d : %s", index, err) - } - - return nil -} - -// addRedirectTCFilter adds a tc filter for device with index "sourceIndex". -// All traffic for interface with index "sourceIndex" is redirected to interface with -// index "destIndex" -// -// This is equivalent to calling: -// `tc filter add dev source parent ffff: protocol all u32 match u8 0 0 action mirred egress redirect dev dest` -func addRedirectTCFilter(sourceIndex, destIndex int) error { - filter := &netlink.U32{ - FilterAttrs: netlink.FilterAttrs{ - LinkIndex: sourceIndex, - Parent: netlink.MakeHandle(0xffff, 0), - Protocol: unix.ETH_P_ALL, - }, - Actions: []netlink.Action{ - &netlink.MirredAction{ - ActionAttrs: netlink.ActionAttrs{ - Action: netlink.TC_ACT_STOLEN, - }, - MirredAction: netlink.TCA_EGRESS_REDIR, - Ifindex: destIndex, - }, - }, - } - - if err := netlink.FilterAdd(filter); err != nil { - return fmt.Errorf("Failed to add filter for index %d : %s", sourceIndex, err) - } - - return nil -} - -// removeRedirectTCFilter removes all tc u32 filters created on ingress qdisc for "link". -func removeRedirectTCFilter(link netlink.Link) error { - if link == nil { - return nil - } - - // Handle 0xffff is used for ingress - filters, err := netlink.FilterList(link, netlink.MakeHandle(0xffff, 0)) - if err != nil { - return err - } - - for _, f := range filters { - u32, ok := f.(*netlink.U32) - - if !ok { - continue - } - - if err := netlink.FilterDel(u32); err != nil { - return err - } - } - return nil -} - -// removeQdiscIngress removes the ingress qdisc previously created on "link". -func removeQdiscIngress(link netlink.Link) error { - if link == nil { - return nil - } - - qdiscs, err := netlink.QdiscList(link) - if err != nil { - return err - } - - for _, qdisc := range qdiscs { - ingress, ok := qdisc.(*netlink.Ingress) - if !ok { - continue - } - - if err := netlink.QdiscDel(ingress); err != nil { - return err - } - } - return nil -} - -func untapNetworkPair(ctx context.Context, endpoint Endpoint) error { - span, _ := networkTrace(ctx, "untapNetworkPair", endpoint) - defer span.End() - - netHandle, err := netlink.NewHandle() - if err != nil { - return err - } - defer netHandle.Close() - - netPair := endpoint.NetworkPair() - - tapLink, err := getLinkByName(netHandle, netPair.TAPIface.Name, &netlink.Macvtap{}) - if err != nil { - return fmt.Errorf("Could not get TAP interface %s: %s", netPair.TAPIface.Name, err) - } - - if err := netHandle.LinkDel(tapLink); err != nil { - return fmt.Errorf("Could not remove TAP %s: %s", netPair.TAPIface.Name, err) - } - - link, err := getLinkForEndpoint(endpoint, netHandle) - if err != nil { - return err - } - - hardAddr, err := net.ParseMAC(netPair.TAPIface.HardAddr) - if err != nil { - return err - } - if err := netHandle.LinkSetHardwareAddr(link, hardAddr); err != nil { - return fmt.Errorf("Could not set MAC address %s for veth interface %s: %s", - netPair.VirtIface.HardAddr, netPair.VirtIface.Name, err) - } - - if err := netHandle.LinkSetDown(link); err != nil { - return fmt.Errorf("Could not disable veth %s: %s", netPair.VirtIface.Name, err) - } - - // Restore the IPs that were cleared - err = setIPs(link, netPair.VirtIface.Addrs) - return err -} - -func removeTCFiltering(ctx context.Context, endpoint Endpoint) error { - span, _ := networkTrace(ctx, "removeTCFiltering", endpoint) - defer span.End() - - netHandle, err := netlink.NewHandle() - if err != nil { - return err - } - defer netHandle.Close() - - netPair := endpoint.NetworkPair() - - tapLink, err := getLinkByName(netHandle, netPair.TAPIface.Name, &netlink.Tuntap{}) - if err != nil { - return fmt.Errorf("Could not get TAP interface: %s", err) - } - - if err := netHandle.LinkSetDown(tapLink); err != nil { - return fmt.Errorf("Could not disable TAP %s: %s", netPair.TAPIface.Name, err) - } - - if err := netHandle.LinkDel(tapLink); err != nil { - return fmt.Errorf("Could not remove TAP %s: %s", netPair.TAPIface.Name, err) - } - - link, err := getLinkForEndpoint(endpoint, netHandle) - if err != nil { - return err - } - - if err := removeRedirectTCFilter(link); err != nil { - return err - } - - if err := removeQdiscIngress(link); err != nil { - return err - } - - if err := netHandle.LinkSetDown(link); err != nil { - return fmt.Errorf("Could not disable veth %s: %s", netPair.VirtIface.Name, err) - } - - return nil -} - -// doNetNS is free from any call to a go routine, and it calls -// into runtime.LockOSThread(), meaning it won't be executed in a -// different thread than the one expected by the caller. -func doNetNS(netNSPath string, cb func(ns.NetNS) error) error { - // if netNSPath is empty, the callback function will be run in the current network namespace. - // So skip the whole function, just call cb(). cb() needs a NetNS as arg but ignored, give it a fake one. - if netNSPath == "" { - var netNs ns.NetNS - return cb(netNs) - } - - runtime.LockOSThread() - defer runtime.UnlockOSThread() - - currentNS, err := ns.GetCurrentNS() - if err != nil { - return err - } - defer currentNS.Close() - - targetNS, err := ns.GetNS(netNSPath) - if err != nil { - return err - } - - if err := targetNS.Set(); err != nil { - return err - } - defer currentNS.Set() - - return cb(targetNS) -} - -func deleteNetNS(netNSPath string) error { - n, err := ns.GetNS(netNSPath) - if err != nil { - return err - } - - err = n.Close() - if err != nil { - return err - } - - if err = unix.Unmount(netNSPath, unix.MNT_DETACH); err != nil { - return fmt.Errorf("Failed to unmount namespace %s: %v", netNSPath, err) - } - if err := os.RemoveAll(netNSPath); err != nil { - return fmt.Errorf("Failed to clean up namespace %s: %v", netNSPath, err) - } - - return nil -} - -func generateVCNetworkStructures(ctx context.Context, network *Network) ([]*pbTypes.Interface, []*pbTypes.Route, []*pbTypes.ARPNeighbor, error) { - if network.netNSPath == "" { +func generateVCNetworkStructures(ctx context.Context, network Network) ([]*pbTypes.Interface, []*pbTypes.Route, []*pbTypes.ARPNeighbor, error) { + if network.NetworkID() == "" { return nil, nil, nil, nil } span, _ := networkTrace(ctx, "generateVCNetworkStructures", nil) @@ -1235,7 +244,7 @@ func generateVCNetworkStructures(ctx context.Context, network *Network) ([]*pbTy var ifaces []*pbTypes.Interface var neighs []*pbTypes.ARPNeighbor - for _, endpoint := range network.eps { + for _, endpoint := range network.Endpoints() { var ipAddresses []*pbTypes.IPAddress for _, addr := range endpoint.Properties().Addrs { // Skip localhost interface @@ -1370,414 +379,3 @@ func generateRandomPrivateMacAddr() (string, error) { hardAddr := net.HardwareAddr(buf) return hardAddr.String(), nil } - -func networkInfoFromLink(handle *netlink.Handle, link netlink.Link) (NetworkInfo, error) { - addrs, err := handle.AddrList(link, netlink.FAMILY_ALL) - if err != nil { - return NetworkInfo{}, err - } - - routes, err := handle.RouteList(link, netlink.FAMILY_ALL) - if err != nil { - return NetworkInfo{}, err - } - - neighbors, err := handle.NeighList(link.Attrs().Index, netlink.FAMILY_ALL) - if err != nil { - return NetworkInfo{}, err - } - - return NetworkInfo{ - Iface: NetlinkIface{ - LinkAttrs: *(link.Attrs()), - Type: link.Type(), - }, - Addrs: addrs, - Routes: routes, - Neighbors: neighbors, - }, nil -} - -func createEndpoint(netInfo NetworkInfo, idx int, model NetInterworkingModel, link netlink.Link) (Endpoint, error) { - var endpoint Endpoint - // TODO: This is the incoming interface - // based on the incoming interface we should create - // an appropriate EndPoint based on interface type - // This should be a switch - - // Check if interface is a physical interface. Do not create - // tap interface/bridge if it is. - isPhysical, err := isPhysicalIface(netInfo.Iface.Name) - if err != nil { - return nil, err - } - - if isPhysical { - networkLogger().WithField("interface", netInfo.Iface.Name).Info("Physical network interface found") - endpoint, err = createPhysicalEndpoint(netInfo) - } else { - var socketPath string - - // Check if this is a dummy interface which has a vhost-user socket associated with it - socketPath, err = vhostUserSocketPath(netInfo) - if err != nil { - return nil, err - } - - if socketPath != "" { - networkLogger().WithField("interface", netInfo.Iface.Name).Info("VhostUser network interface found") - endpoint, err = createVhostUserEndpoint(netInfo, socketPath) - } else if netInfo.Iface.Type == "macvlan" { - networkLogger().Infof("macvlan interface found") - endpoint, err = createMacvlanNetworkEndpoint(idx, netInfo.Iface.Name, model) - } else if netInfo.Iface.Type == "macvtap" { - networkLogger().Infof("macvtap interface found") - endpoint, err = createMacvtapNetworkEndpoint(netInfo) - } else if netInfo.Iface.Type == "tap" { - networkLogger().Info("tap interface found") - endpoint, err = createTapNetworkEndpoint(idx, netInfo.Iface.Name) - } else if netInfo.Iface.Type == "tuntap" { - if link != nil { - switch link.(*netlink.Tuntap).Mode { - case 0: - // mount /sys/class/net to get links - return nil, fmt.Errorf("Network device mode not determined correctly. Mount sysfs in caller") - case 1: - return nil, fmt.Errorf("tun networking device not yet supported") - case 2: - networkLogger().Info("tuntap tap interface found") - endpoint, err = createTuntapNetworkEndpoint(idx, netInfo.Iface.Name, netInfo.Iface.HardwareAddr, model) - default: - return nil, fmt.Errorf("tuntap network %v mode unsupported", link.(*netlink.Tuntap).Mode) - } - } - } else if netInfo.Iface.Type == "veth" { - networkLogger().Info("veth interface found") - endpoint, err = createVethNetworkEndpoint(idx, netInfo.Iface.Name, model) - } else if netInfo.Iface.Type == "ipvlan" { - networkLogger().Info("ipvlan interface found") - endpoint, err = createIPVlanNetworkEndpoint(idx, netInfo.Iface.Name) - } else { - return nil, fmt.Errorf("Unsupported network interface: %s", netInfo.Iface.Type) - } - } - - return endpoint, err -} - -// func addRxRateLmiter implements tc-based rx rate limiter to control network I/O inbound traffic -// on VM level for hypervisors which don't implement rate limiter in itself, like qemu, etc. -func addRxRateLimiter(endpoint Endpoint, maxRate uint64) error { - var linkName string - switch ep := endpoint.(type) { - case *VethEndpoint, *IPVlanEndpoint, *TuntapEndpoint, *MacvlanEndpoint: - netPair := endpoint.NetworkPair() - linkName = netPair.TapInterface.TAPIface.Name - case *MacvtapEndpoint, *TapEndpoint: - linkName = endpoint.Name() - default: - return fmt.Errorf("Unsupported endpointType %s for adding rx rate limiter", ep.Type()) - } - - if err := endpoint.SetRxRateLimiter(); err != nil { - return nil - } - - link, err := netlink.LinkByName(linkName) - if err != nil { - return err - } - linkIndex := link.Attrs().Index - - return addHTBQdisc(linkIndex, maxRate) -} - -// func addHTBQdisc uses HTB(Hierarchical Token Bucket) qdisc shaping schemes to control interface traffic. -// HTB (Hierarchical Token Bucket) shapes traffic based on the Token Bucket Filter algorithm. -// A fundamental part of the HTB qdisc is the borrowing mechanism. Children classes borrow tokens -// from their parents once they have exceeded rate. A child class will continue to attempt to borrow until -// it reaches ceil. See more details in https://tldp.org/HOWTO/Traffic-Control-HOWTO/classful-qdiscs.html. -// -// * +-----+ +---------+ +-----------+ +-----------+ -// * | | | qdisc | | class 1:1 | | class 1:2 | -// * | NIC | | htb | | rate | | rate | -// * | | --> | def 1:2 | --> | ceil | -+-> | ceil | -// * +-----+ +---------+ +-----------+ | +-----------+ -// * | -// * | +-----------+ -// * | | class 1:n | -// * | | rate | -// * +-> | ceil | -// * | +-----------+ -// Seeing from pic, after the routing decision, all packets will be sent to the interface root htb qdisc. -// This root qdisc has only one direct child class (with id 1:1) which shapes the overall maximum rate -// that will be sent through interface. Then, this class has at least one default child (1:2) meant to control all -// non-privileged traffic. -// e.g. -// if we try to set VM bandwidth with maximum 10Mbit/s, we should give -// classid 1:2 rate 10Mbit/s, ceil 10Mbit/s and classid 1:1 rate 10Mbit/s, ceil 10Mbit/s. -// To-do: -// Later, if we want to do limitation on some dedicated traffic(special process running in VM), we could create -// a separate class (1:n) with guarantee throughput. -func addHTBQdisc(linkIndex int, maxRate uint64) error { - // we create a new htb root qdisc for network interface with the specified network index - qdiscAttrs := netlink.QdiscAttrs{ - LinkIndex: linkIndex, - Handle: netlink.MakeHandle(1, 0), - Parent: netlink.HANDLE_ROOT, - } - qdisc := netlink.NewHtb(qdiscAttrs) - // all non-privileged traffic go to classid 1:2. - qdisc.Defcls = 2 - - err := netlink.QdiscAdd(qdisc) - if err != nil { - return fmt.Errorf("Failed to add htb qdisc: %v", err) - } - - // root htb qdisc has only one direct child class (with id 1:1) to control overall rate. - classAttrs := netlink.ClassAttrs{ - LinkIndex: linkIndex, - Parent: netlink.MakeHandle(1, 0), - Handle: netlink.MakeHandle(1, 1), - } - htbClassAttrs := netlink.HtbClassAttrs{ - Rate: maxRate, - Ceil: maxRate, - } - class := netlink.NewHtbClass(classAttrs, htbClassAttrs) - if err := netlink.ClassAdd(class); err != nil { - return fmt.Errorf("Failed to add htb classid 1:1 : %v", err) - } - - // above class has at least one default child class(1:2) for all non-privileged traffic. - classAttrs = netlink.ClassAttrs{ - LinkIndex: linkIndex, - Parent: netlink.MakeHandle(1, 1), - Handle: netlink.MakeHandle(1, 2), - } - htbClassAttrs = netlink.HtbClassAttrs{ - Rate: maxRate, - Ceil: maxRate, - } - class = netlink.NewHtbClass(classAttrs, htbClassAttrs) - if err := netlink.ClassAdd(class); err != nil { - return fmt.Errorf("Failed to add htb class 1:2 : %v", err) - } - - return nil -} - -// The Intermediate Functional Block (ifb) pseudo network interface is an alternative -// to tc filters for handling ingress traffic, -// By redirecting interface ingress traffic to ifb and treat it as egress traffic there, -// we could do network shaping to interface inbound traffic. -func addIFBDevice() (int, error) { - // Check whether host supports ifb - if ok, err := utils.SupportsIfb(); !ok { - return -1, err - } - - netHandle, err := netlink.NewHandle() - if err != nil { - return -1, err - } - defer netHandle.Close() - - // There exists error when using netlink library to create ifb interface - cmd := exec.Command("ip", "link", "add", "dev", "ifb0", "type", "ifb") - if output, err := cmd.CombinedOutput(); err != nil { - return -1, fmt.Errorf("Could not create link ifb0: %v, error %v", output, err) - } - - ifbLink, err := netlink.LinkByName("ifb0") - if err != nil { - return -1, err - } - - if err := netHandle.LinkSetUp(ifbLink); err != nil { - return -1, fmt.Errorf("Could not enable link ifb0 %v", err) - } - - return ifbLink.Attrs().Index, nil -} - -// This is equivalent to calling: -// tc filter add dev source parent ffff: protocol all u32 match u8 0 0 action mirred egress redirect dev ifb -func addIFBRedirecting(sourceIndex int, ifbIndex int) error { - if err := addQdiscIngress(sourceIndex); err != nil { - return err - } - - if err := addRedirectTCFilter(sourceIndex, ifbIndex); err != nil { - return err - } - - return nil -} - -// addTxRateLimiter implements tx rate limiter to control network I/O outbound traffic -// on VM level for hypervisors which don't implement rate limiter in itself, like qemu, etc. -// We adopt different actions, based on different inter-networking models. -// For tcfilters as inter-networking model, we simply apply htb qdisc discipline to the virtual netpair. -// For other inter-networking models, such as macvtap, we resort to ifb, by redirecting endpoint ingress traffic -// to ifb egress, and then apply htb to ifb egress. -func addTxRateLimiter(endpoint Endpoint, maxRate uint64) error { - var netPair *NetworkInterfacePair - var linkName string - switch ep := endpoint.(type) { - case *VethEndpoint, *IPVlanEndpoint, *TuntapEndpoint, *MacvlanEndpoint: - netPair = endpoint.NetworkPair() - switch netPair.NetInterworkingModel { - // For those endpoints we've already used tcfilter as their inter-networking model, - // another ifb redirect will be redundant and confused. - case NetXConnectTCFilterModel: - linkName = netPair.VirtIface.Name - link, err := netlink.LinkByName(linkName) - if err != nil { - return err - } - return addHTBQdisc(link.Attrs().Index, maxRate) - case NetXConnectMacVtapModel, NetXConnectNoneModel: - linkName = netPair.TapInterface.TAPIface.Name - default: - return fmt.Errorf("Unsupported inter-networking model %v for adding tx rate limiter", netPair.NetInterworkingModel) - } - - case *MacvtapEndpoint, *TapEndpoint: - linkName = endpoint.Name() - default: - return fmt.Errorf("Unsupported endpointType %s for adding tx rate limiter", ep.Type()) - } - - if err := endpoint.SetTxRateLimiter(); err != nil { - return err - } - - ifbIndex, err := addIFBDevice() - if err != nil { - return err - } - - link, err := netlink.LinkByName(linkName) - if err != nil { - return err - } - - if err := addIFBRedirecting(link.Attrs().Index, ifbIndex); err != nil { - return err - } - - return addHTBQdisc(ifbIndex, maxRate) -} - -func removeHTBQdisc(linkName string) error { - link, err := netlink.LinkByName(linkName) - if err != nil { - return fmt.Errorf("Get link %s by name failed: %v", linkName, err) - } - - qdiscs, err := netlink.QdiscList(link) - if err != nil { - return err - } - - for _, qdisc := range qdiscs { - htb, ok := qdisc.(*netlink.Htb) - if !ok { - continue - } - - if err := netlink.QdiscDel(htb); err != nil { - return fmt.Errorf("Failed to delete htb qdisc on link %s: %v", linkName, err) - } - } - - return nil -} - -func removeRxRateLimiter(endpoint Endpoint, networkNSPath string) error { - var linkName string - switch ep := endpoint.(type) { - case *VethEndpoint, *IPVlanEndpoint, *TuntapEndpoint, *MacvlanEndpoint: - netPair := endpoint.NetworkPair() - linkName = netPair.TapInterface.TAPIface.Name - case *MacvtapEndpoint, *TapEndpoint: - linkName = endpoint.Name() - default: - return fmt.Errorf("Unsupported endpointType %s for removing rx rate limiter", ep.Type()) - } - - if err := doNetNS(networkNSPath, func(_ ns.NetNS) error { - return removeHTBQdisc(linkName) - }); err != nil { - return err - } - - return nil -} - -func removeTxRateLimiter(endpoint Endpoint, networkNSPath string) error { - var linkName string - switch ep := endpoint.(type) { - case *VethEndpoint, *IPVlanEndpoint, *TuntapEndpoint, *MacvlanEndpoint: - netPair := endpoint.NetworkPair() - switch netPair.NetInterworkingModel { - case NetXConnectTCFilterModel: - linkName = netPair.VirtIface.Name - if err := doNetNS(networkNSPath, func(_ ns.NetNS) error { - return removeHTBQdisc(linkName) - }); err != nil { - return err - } - return nil - case NetXConnectMacVtapModel, NetXConnectNoneModel: - linkName = netPair.TapInterface.TAPIface.Name - } - case *MacvtapEndpoint, *TapEndpoint: - linkName = endpoint.Name() - default: - return fmt.Errorf("Unsupported endpointType %s for adding tx rate limiter", ep.Type()) - } - - if err := doNetNS(networkNSPath, func(_ ns.NetNS) error { - link, err := netlink.LinkByName(linkName) - if err != nil { - return fmt.Errorf("Get link %s by name failed: %v", linkName, err) - } - - if err := removeRedirectTCFilter(link); err != nil { - return err - } - - if err := removeQdiscIngress(link); err != nil { - return err - } - - netHandle, err := netlink.NewHandle() - if err != nil { - return err - } - defer netHandle.Close() - - // remove ifb interface - ifbLink, err := netlink.LinkByName("ifb0") - if err != nil { - return fmt.Errorf("Get link %s by name failed: %v", linkName, err) - } - - if err := netHandle.LinkSetDown(ifbLink); err != nil { - return fmt.Errorf("Could not disable ifb interface: %v", err) - } - - if err := netHandle.LinkDel(ifbLink); err != nil { - return fmt.Errorf("Could not remove ifb interface: %v", err) - } - - return nil - }); err != nil { - return err - } - - return nil -} diff --git a/src/runtime/virtcontainers/network_linux.go b/src/runtime/virtcontainers/network_linux.go new file mode 100644 index 000000000..4b6c7cb26 --- /dev/null +++ b/src/runtime/virtcontainers/network_linux.go @@ -0,0 +1,1403 @@ +// Copyright (c) 2016 Intel Corporation +// +// SPDX-License-Identifier: Apache-2.0 +// + +package virtcontainers + +import ( + "context" + "fmt" + "math/rand" + "net" + "os" + "os/exec" + "runtime" + "sort" + "time" + + "github.com/containernetworking/plugins/pkg/ns" + "github.com/vishvananda/netlink" + "github.com/vishvananda/netns" + otelTrace "go.opentelemetry.io/otel/trace" + "golang.org/x/sys/unix" + + "github.com/kata-containers/kata-containers/src/runtime/pkg/katautils/katatrace" + persistapi "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/persist/api" + "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/utils" +) + +// Introduces constants related to networking +const ( + defaultFilePerms = 0600 + defaultQlen = 1500 +) + +// LinuxNetwork represents a sandbox networking setup. +type LinuxNetwork struct { + netNSPath string + eps []Endpoint + interworkingModel NetInterworkingModel + netNSCreated bool +} + +// NewNetwork creates a new Linux Network from a NetworkConfig. +// The constructor is overloaded as it can be called with 0 or 1 +// argument. The former is used to create empty networks, mostly +// for unit testing. Passing more than one NetworkConfig pointer +// will make the constructor fail. +func NewNetwork(configs ...*NetworkConfig) (Network, error) { + if len(configs) > 1 { + return nil, fmt.Errorf("Too many network configurations") + } + + // Empty constructor + if len(configs) == 0 { + return &LinuxNetwork{}, nil + } + + config := configs[0] + if config == nil { + return nil, fmt.Errorf("Missing network configuration") + } + + return &LinuxNetwork{ + config.NetworkID, + []Endpoint{}, + config.InterworkingModel, + config.NetworkCreated, + }, nil +} + +func LoadNetwork(netInfo persistapi.NetworkInfo) Network { + network := LinuxNetwork{ + netNSPath: netInfo.NetworkID, + netNSCreated: netInfo.NetworkCreated, + } + + for _, e := range netInfo.Endpoints { + var ep Endpoint + switch EndpointType(e.Type) { + case PhysicalEndpointType: + ep = &PhysicalEndpoint{} + case VethEndpointType: + ep = &VethEndpoint{} + case VhostUserEndpointType: + ep = &VhostUserEndpoint{} + case MacvlanEndpointType: + ep = &MacvlanEndpoint{} + case MacvtapEndpointType: + ep = &MacvtapEndpoint{} + case TapEndpointType: + ep = &TapEndpoint{} + case IPVlanEndpointType: + ep = &IPVlanEndpoint{} + default: + networkLogger().WithField("endpoint-type", e.Type).Error("unknown endpoint type") + continue + } + ep.load(e) + network.eps = append(network.eps, ep) + } + + return &network +} + +func (n *LinuxNetwork) trace(ctx context.Context, name string) (otelTrace.Span, context.Context) { + return networkTrace(ctx, name, nil) +} + +func (n *LinuxNetwork) AddEndpoint(ctx context.Context, s *Sandbox, netInfo NetworkInfo, link netlink.Link, hotplug bool) (Endpoint, error) { + var endpoint Endpoint + // TODO: This is the incoming interface + // based on the incoming interface we should create + // an appropriate EndPoint based on interface type + // This should be a switch + + // Check if interface is a physical interface. Do not create + // tap interface/bridge if it is. + isPhysical, err := isPhysicalIface(netInfo.Iface.Name) + if err != nil { + return nil, err + } + + if isPhysical { + networkLogger().WithField("interface", netInfo.Iface.Name).Info("Physical network interface found") + endpoint, err = createPhysicalEndpoint(netInfo) + } else { + var socketPath string + idx := len(n.eps) + + // Check if this is a dummy interface which has a vhost-user socket associated with it + socketPath, err = vhostUserSocketPath(netInfo) + if err != nil { + return nil, err + } + + if socketPath != "" { + networkLogger().WithField("interface", netInfo.Iface.Name).Info("VhostUser network interface found") + endpoint, err = createVhostUserEndpoint(netInfo, socketPath) + } else if netInfo.Iface.Type == "macvlan" { + networkLogger().Infof("macvlan interface found") + endpoint, err = createMacvlanNetworkEndpoint(idx, netInfo.Iface.Name, n.interworkingModel) + } else if netInfo.Iface.Type == "macvtap" { + networkLogger().Infof("macvtap interface found") + endpoint, err = createMacvtapNetworkEndpoint(netInfo) + } else if netInfo.Iface.Type == "tap" { + networkLogger().Info("tap interface found") + endpoint, err = createTapNetworkEndpoint(idx, netInfo.Iface.Name) + } else if netInfo.Iface.Type == "tuntap" { + if link != nil { + switch link.(*netlink.Tuntap).Mode { + case 0: + // mount /sys/class/net to get links + return nil, fmt.Errorf("Network device mode not determined correctly. Mount sysfs in caller") + case 1: + return nil, fmt.Errorf("tun networking device not yet supported") + case 2: + networkLogger().Info("tuntap tap interface found") + endpoint, err = createTuntapNetworkEndpoint(idx, netInfo.Iface.Name, netInfo.Iface.HardwareAddr, n.interworkingModel) + default: + return nil, fmt.Errorf("tuntap network %v mode unsupported", link.(*netlink.Tuntap).Mode) + } + } + } else if netInfo.Iface.Type == "veth" { + networkLogger().Info("veth interface found") + endpoint, err = createVethNetworkEndpoint(idx, netInfo.Iface.Name, n.interworkingModel) + } else if netInfo.Iface.Type == "ipvlan" { + networkLogger().Info("ipvlan interface found") + endpoint, err = createIPVlanNetworkEndpoint(idx, netInfo.Iface.Name) + } else { + return nil, fmt.Errorf("Unsupported network interface: %s", netInfo.Iface.Type) + } + } + + if err != nil { + return nil, err + } + + endpoint.SetProperties(netInfo) + + if err := doNetNS(n.netNSPath, func(_ ns.NetNS) error { + networkLogger().WithField("endpoint-type", endpoint.Type()).WithField("hotplug", hotplug).Info("Attaching endpoint") + if hotplug { + if err := endpoint.HotAttach(ctx, s.hypervisor); err != nil { + return err + } + } else { + if err := endpoint.Attach(ctx, s); err != nil { + return err + } + } + + if !s.hypervisor.IsRateLimiterBuiltin() { + rxRateLimiterMaxRate := s.hypervisor.HypervisorConfig().RxRateLimiterMaxRate + if rxRateLimiterMaxRate > 0 { + networkLogger().Info("Add Rx Rate Limiter") + if err := addRxRateLimiter(endpoint, rxRateLimiterMaxRate); err != nil { + return err + } + } + txRateLimiterMaxRate := s.hypervisor.HypervisorConfig().TxRateLimiterMaxRate + if txRateLimiterMaxRate > 0 { + networkLogger().Info("Add Tx Rate Limiter") + if err := addTxRateLimiter(endpoint, txRateLimiterMaxRate); err != nil { + return err + } + } + } + + return nil + }); err != nil { + return nil, err + } + + n.eps = append(n.eps, endpoint) + + return endpoint, nil +} + +func (n *LinuxNetwork) RemoveEndpoint(ctx context.Context, s *Sandbox, idx int, hotplug bool) error { + if idx > len(n.eps)-1 { + return fmt.Errorf("Endpoint index overflow") + } + + endpoint := n.eps[idx] + + if endpoint.GetRxRateLimiter() { + networkLogger().WithField("endpoint-type", endpoint.Type()).Info("Deleting rx rate limiter") + // Deleting rx rate limiter should enter the network namespace. + if err := removeRxRateLimiter(endpoint, n.netNSPath); err != nil { + return err + } + } + + if endpoint.GetTxRateLimiter() { + networkLogger().WithField("endpoint-type", endpoint.Type()).Info("Deleting tx rate limiter") + // Deleting tx rate limiter should enter the network namespace. + if err := removeTxRateLimiter(endpoint, n.netNSPath); err != nil { + return err + } + } + + // Detach for an endpoint should enter the network namespace + // if required. + networkLogger().WithField("endpoint-type", endpoint.Type()).Info("Detaching endpoint") + if hotplug && s != nil { + if err := endpoint.HotDetach(ctx, s.hypervisor, n.netNSCreated, n.netNSPath); err != nil { + return err + } + } else { + if err := endpoint.Detach(ctx, n.netNSCreated, n.netNSPath); err != nil { + return err + } + } + + n.eps = append(n.eps[:idx], n.eps[idx+1:]...) + + return nil +} + +// Scan the networking namespace through netlink and then: +// 1. Create the endpoints for the relevant interfaces found there. +// 2. Attach them to the VM. +func (n *LinuxNetwork) attachEndpoints(ctx context.Context, s *Sandbox, hotplug bool) error { + netnsHandle, err := netns.GetFromPath(n.netNSPath) + if err != nil { + return err + } + defer netnsHandle.Close() + + netlinkHandle, err := netlink.NewHandleAt(netnsHandle) + if err != nil { + return err + } + defer netlinkHandle.Close() + + linkList, err := netlinkHandle.LinkList() + if err != nil { + return err + } + + for _, link := range linkList { + netInfo, err := networkInfoFromLink(netlinkHandle, link) + if err != nil { + return err + } + + // Ignore unconfigured network interfaces. These are + // either base tunnel devices that are not namespaced + // like gre0, gretap0, sit0, ipip0, tunl0 or incorrectly + // setup interfaces. + if len(netInfo.Addrs) == 0 { + continue + } + + // Skip any loopback interfaces: + if (netInfo.Iface.Flags & net.FlagLoopback) != 0 { + continue + } + + _, err = n.AddEndpoint(ctx, s, netInfo, link, hotplug) + if err != nil { + return err + } + } + + sort.Slice(n.eps, func(i, j int) bool { + return n.eps[i].Name() < n.eps[j].Name() + }) + + networkLogger().WithField("endpoints", n.eps).Info("endpoints found after scan") + + return nil +} + +// Run runs a callback in the specified network namespace. +func (n *LinuxNetwork) Run(ctx context.Context, cb func() error) error { + span, _ := n.trace(ctx, "Run") + defer span.End() + + return doNetNS(n.netNSPath, func(_ ns.NetNS) error { + return cb() + }) +} + +// Add adds all needed interfaces inside the network namespace. +func (n *LinuxNetwork) Add(ctx context.Context, s *Sandbox, hotplug bool) error { + span, ctx := n.trace(ctx, "Add") + katatrace.AddTags(span, "type", n.interworkingModel.GetModel()) + defer span.End() + + if err := n.attachEndpoints(ctx, s, hotplug); err != nil { + return err + } + + katatrace.AddTags(span, "endpoints", n.eps, "hotplug", hotplug) + networkLogger().Debug("Network added") + + return nil +} + +func (n *LinuxNetwork) PostAdd(ctx context.Context, hotplug bool) error { + if hotplug { + return nil + } + + if n.eps == nil { + return nil + } + + endpoints := n.eps + + for _, endpoint := range endpoints { + netPair := endpoint.NetworkPair() + if netPair == nil { + continue + } + if netPair.VhostFds != nil { + for _, VhostFd := range netPair.VhostFds { + VhostFd.Close() + } + } + } + + return nil +} + +// Remove network endpoints in the network namespace. It also deletes the network +// namespace in case the namespace has been created by us. +func (n *LinuxNetwork) Remove(ctx context.Context) error { + span, ctx := n.trace(ctx, "Remove") + defer span.End() + + for i := range n.eps { + if err := n.RemoveEndpoint(ctx, nil, i, false); err != nil { + return err + } + } + + networkLogger().Debug("Network removed") + + if n.netNSCreated { + networkLogger().Infof("Network namespace %q deleted", n.netNSPath) + return deleteNetNS(n.netNSPath) + } + + return nil +} + +// Network getters +func (n *LinuxNetwork) NetworkID() string { + return n.netNSPath +} + +func (n *LinuxNetwork) NetworkCreated() bool { + return n.netNSCreated +} + +func (n *LinuxNetwork) Endpoints() []Endpoint { + return n.eps +} + +func (n *LinuxNetwork) SetEndpoints(endpoints []Endpoint) { + n.eps = endpoints +} + +func createLink(netHandle *netlink.Handle, name string, expectedLink netlink.Link, queues int) (netlink.Link, []*os.File, error) { + var newLink netlink.Link + var fds []*os.File + + switch expectedLink.Type() { + case (&netlink.Tuntap{}).Type(): + flags := netlink.TUNTAP_VNET_HDR + if queues > 0 { + flags |= netlink.TUNTAP_MULTI_QUEUE_DEFAULTS + } + newLink = &netlink.Tuntap{ + LinkAttrs: netlink.LinkAttrs{Name: name}, + Mode: netlink.TUNTAP_MODE_TAP, + Queues: queues, + Flags: flags, + } + case (&netlink.Macvtap{}).Type(): + qlen := expectedLink.Attrs().TxQLen + if qlen <= 0 { + qlen = defaultQlen + } + newLink = &netlink.Macvtap{ + Macvlan: netlink.Macvlan{ + Mode: netlink.MACVLAN_MODE_BRIDGE, + LinkAttrs: netlink.LinkAttrs{ + Index: expectedLink.Attrs().Index, + Name: name, + TxQLen: qlen, + ParentIndex: expectedLink.Attrs().ParentIndex, + }, + }, + } + default: + return nil, fds, fmt.Errorf("Unsupported link type %s", expectedLink.Type()) + } + + if err := netHandle.LinkAdd(newLink); err != nil { + return nil, fds, fmt.Errorf("LinkAdd() failed for %s name %s: %s", expectedLink.Type(), name, err) + } + + tuntapLink, ok := newLink.(*netlink.Tuntap) + if ok { + fds = tuntapLink.Fds + } + + newLink, err := getLinkByName(netHandle, name, expectedLink) + return newLink, fds, err +} + +func getLinkForEndpoint(endpoint Endpoint, netHandle *netlink.Handle) (netlink.Link, error) { + var link netlink.Link + + switch ep := endpoint.(type) { + case *VethEndpoint: + link = &netlink.Veth{} + case *MacvlanEndpoint: + link = &netlink.Macvlan{} + case *IPVlanEndpoint: + link = &netlink.IPVlan{} + case *TuntapEndpoint: + link = &netlink.Tuntap{} + default: + return nil, fmt.Errorf("Unexpected endpointType %s", ep.Type()) + } + + return getLinkByName(netHandle, endpoint.NetworkPair().VirtIface.Name, link) +} + +func getLinkByName(netHandle *netlink.Handle, name string, expectedLink netlink.Link) (netlink.Link, error) { + link, err := netHandle.LinkByName(name) + if err != nil { + return nil, fmt.Errorf("LinkByName() failed for %s name %s: %s", expectedLink.Type(), name, err) + } + + switch expectedLink.Type() { + case (&netlink.Tuntap{}).Type(): + if l, ok := link.(*netlink.Tuntap); ok { + return l, nil + } + case (&netlink.Veth{}).Type(): + if l, ok := link.(*netlink.Veth); ok { + return l, nil + } + case (&netlink.Macvtap{}).Type(): + if l, ok := link.(*netlink.Macvtap); ok { + return l, nil + } + case (&netlink.Macvlan{}).Type(): + if l, ok := link.(*netlink.Macvlan); ok { + return l, nil + } + case (&netlink.IPVlan{}).Type(): + if l, ok := link.(*netlink.IPVlan); ok { + return l, nil + } + default: + return nil, fmt.Errorf("Unsupported link type %s", expectedLink.Type()) + } + + return nil, fmt.Errorf("Incorrect link type %s, expecting %s", link.Type(), expectedLink.Type()) +} + +// The endpoint type should dictate how the connection needs to happen. +func xConnectVMNetwork(ctx context.Context, endpoint Endpoint, h Hypervisor) error { + var err error + + span, ctx := networkTrace(ctx, "xConnectVMNetwork", endpoint) + defer closeSpan(span, err) + + netPair := endpoint.NetworkPair() + + queues := 0 + caps := h.Capabilities(ctx) + if caps.IsMultiQueueSupported() { + queues = int(h.HypervisorConfig().NumVCPUs) + } + + disableVhostNet := h.HypervisorConfig().DisableVhostNet + + if netPair.NetInterworkingModel == NetXConnectDefaultModel { + netPair.NetInterworkingModel = DefaultNetInterworkingModel + } + + switch netPair.NetInterworkingModel { + case NetXConnectMacVtapModel: + networkLogger().Info("connect macvtap to VM network") + err = tapNetworkPair(ctx, endpoint, queues, disableVhostNet) + case NetXConnectTCFilterModel: + networkLogger().Info("connect TCFilter to VM network") + err = setupTCFiltering(ctx, endpoint, queues, disableVhostNet) + default: + err = fmt.Errorf("Invalid internetworking model") + } + return err +} + +// The endpoint type should dictate how the disconnection needs to happen. +func xDisconnectVMNetwork(ctx context.Context, endpoint Endpoint) error { + var err error + + span, ctx := networkTrace(ctx, "xDisconnectVMNetwork", endpoint) + defer closeSpan(span, err) + + netPair := endpoint.NetworkPair() + + if netPair.NetInterworkingModel == NetXConnectDefaultModel { + netPair.NetInterworkingModel = DefaultNetInterworkingModel + } + + switch netPair.NetInterworkingModel { + case NetXConnectMacVtapModel: + err = untapNetworkPair(ctx, endpoint) + case NetXConnectTCFilterModel: + err = removeTCFiltering(ctx, endpoint) + default: + err = fmt.Errorf("Invalid internetworking model") + } + return err +} + +func createMacvtapFds(linkIndex int, queues int) ([]*os.File, error) { + tapDev := fmt.Sprintf("/dev/tap%d", linkIndex) + return createFds(tapDev, queues) +} + +func createVhostFds(numFds int) ([]*os.File, error) { + vhostDev := "/dev/vhost-net" + return createFds(vhostDev, numFds) +} + +func createFds(device string, numFds int) ([]*os.File, error) { + fds := make([]*os.File, numFds) + + for i := 0; i < numFds; i++ { + f, err := os.OpenFile(device, os.O_RDWR, defaultFilePerms) + if err != nil { + utils.CleanupFds(fds, i) + return nil, err + } + fds[i] = f + } + return fds, nil +} + +// There is a limitation in the linux kernel that prevents a macvtap/macvlan link +// from getting the correct link index when created in a network namespace +// https://github.com/clearcontainers/runtime/issues/708 +// +// Till that bug is fixed we need to pick a random non conflicting index and try to +// create a link. If that fails, we need to try with another. +// All the kernel does not Check if the link id conflicts with a link id on the host +// hence we need to offset the link id to prevent any overlaps with the host index +// +// Here the kernel will ensure that there is no race condition + +const hostLinkOffset = 8192 // Host should not have more than 8k interfaces +const linkRange = 0xFFFF // This will allow upto 2^16 containers +const linkRetries = 128 // The numbers of time we try to find a non conflicting index +const macvtapWorkaround = true + +func createMacVtap(netHandle *netlink.Handle, name string, link netlink.Link, queues int) (taplink netlink.Link, err error) { + + if !macvtapWorkaround { + taplink, _, err = createLink(netHandle, name, link, queues) + return + } + + r := rand.New(rand.NewSource(time.Now().UnixNano())) + + for i := 0; i < linkRetries; i++ { + index := hostLinkOffset + (r.Int() & linkRange) + link.Attrs().Index = index + taplink, _, err = createLink(netHandle, name, link, queues) + if err == nil { + break + } + } + + return +} + +func clearIPs(link netlink.Link, addrs []netlink.Addr) error { + for _, addr := range addrs { + if err := netlink.AddrDel(link, &addr); err != nil { + return err + } + } + return nil +} + +func setIPs(link netlink.Link, addrs []netlink.Addr) error { + for _, addr := range addrs { + if err := netlink.AddrAdd(link, &addr); err != nil { + return err + } + } + return nil +} + +func tapNetworkPair(ctx context.Context, endpoint Endpoint, queues int, disableVhostNet bool) error { + span, _ := networkTrace(ctx, "tapNetworkPair", endpoint) + defer span.End() + + netHandle, err := netlink.NewHandle() + if err != nil { + return err + } + defer netHandle.Close() + + netPair := endpoint.NetworkPair() + + link, err := getLinkForEndpoint(endpoint, netHandle) + if err != nil { + return err + } + + attrs := link.Attrs() + + // Attach the macvtap interface to the underlying container + // interface. Also picks relevant attributes from the parent + tapLink, err := createMacVtap(netHandle, netPair.TAPIface.Name, + &netlink.Macvtap{ + Macvlan: netlink.Macvlan{ + LinkAttrs: netlink.LinkAttrs{ + TxQLen: attrs.TxQLen, + ParentIndex: attrs.Index, + }, + }, + }, queues) + + if err != nil { + return fmt.Errorf("Could not create TAP interface: %s", err) + } + + // Save the veth MAC address to the TAP so that it can later be used + // to build the hypervisor command line. This MAC address has to be + // the one inside the VM in order to avoid any firewall issues. The + // bridge created by the network plugin on the host actually expects + // to see traffic from this MAC address and not another one. + tapHardAddr := attrs.HardwareAddr + netPair.TAPIface.HardAddr = attrs.HardwareAddr.String() + + if err := netHandle.LinkSetMTU(tapLink, attrs.MTU); err != nil { + return fmt.Errorf("Could not set TAP MTU %d: %s", attrs.MTU, err) + } + + hardAddr, err := net.ParseMAC(netPair.VirtIface.HardAddr) + if err != nil { + return err + } + if err := netHandle.LinkSetHardwareAddr(link, hardAddr); err != nil { + return fmt.Errorf("Could not set MAC address %s for veth interface %s: %s", + netPair.VirtIface.HardAddr, netPair.VirtIface.Name, err) + } + + if err := netHandle.LinkSetHardwareAddr(tapLink, tapHardAddr); err != nil { + return fmt.Errorf("Could not set MAC address %s for veth interface %s: %s", + netPair.VirtIface.HardAddr, netPair.VirtIface.Name, err) + } + + if err := netHandle.LinkSetUp(tapLink); err != nil { + return fmt.Errorf("Could not enable TAP %s: %s", netPair.TAPIface.Name, err) + } + + // Clear the IP addresses from the veth interface to prevent ARP conflict + netPair.VirtIface.Addrs, err = netlink.AddrList(link, netlink.FAMILY_ALL) + if err != nil { + return fmt.Errorf("Unable to obtain veth IP addresses: %s", err) + } + + if err := clearIPs(link, netPair.VirtIface.Addrs); err != nil { + return fmt.Errorf("Unable to clear veth IP addresses: %s", err) + } + + if err := netHandle.LinkSetUp(link); err != nil { + return fmt.Errorf("Could not enable veth %s: %s", netPair.VirtIface.Name, err) + } + + // Note: The underlying interfaces need to be up prior to fd creation. + + netPair.VMFds, err = createMacvtapFds(tapLink.Attrs().Index, queues) + if err != nil { + return fmt.Errorf("Could not setup macvtap fds %s: %s", netPair.TAPIface, err) + } + + if !disableVhostNet { + vhostFds, err := createVhostFds(queues) + if err != nil { + return fmt.Errorf("Could not setup vhost fds %s : %s", netPair.VirtIface.Name, err) + } + netPair.VhostFds = vhostFds + } + + return nil +} + +func setupTCFiltering(ctx context.Context, endpoint Endpoint, queues int, disableVhostNet bool) error { + span, _ := networkTrace(ctx, "setupTCFiltering", endpoint) + defer span.End() + + netHandle, err := netlink.NewHandle() + if err != nil { + return err + } + defer netHandle.Close() + + netPair := endpoint.NetworkPair() + + tapLink, fds, err := createLink(netHandle, netPair.TAPIface.Name, &netlink.Tuntap{}, queues) + if err != nil { + return fmt.Errorf("Could not create TAP interface: %s", err) + } + netPair.VMFds = fds + + if !disableVhostNet { + vhostFds, err := createVhostFds(queues) + if err != nil { + return fmt.Errorf("Could not setup vhost fds %s : %s", netPair.VirtIface.Name, err) + } + netPair.VhostFds = vhostFds + } + + var attrs *netlink.LinkAttrs + var link netlink.Link + + link, err = getLinkForEndpoint(endpoint, netHandle) + if err != nil { + return err + } + + attrs = link.Attrs() + + // Save the veth MAC address to the TAP so that it can later be used + // to build the Hypervisor command line. This MAC address has to be + // the one inside the VM in order to avoid any firewall issues. The + // bridge created by the network plugin on the host actually expects + // to see traffic from this MAC address and not another one. + netPair.TAPIface.HardAddr = attrs.HardwareAddr.String() + + if err := netHandle.LinkSetMTU(tapLink, attrs.MTU); err != nil { + return fmt.Errorf("Could not set TAP MTU %d: %s", attrs.MTU, err) + } + + if err := netHandle.LinkSetUp(tapLink); err != nil { + return fmt.Errorf("Could not enable TAP %s: %s", netPair.TAPIface.Name, err) + } + + tapAttrs := tapLink.Attrs() + + if err := addQdiscIngress(tapAttrs.Index); err != nil { + return err + } + + if err := addQdiscIngress(attrs.Index); err != nil { + return err + } + + if err := addRedirectTCFilter(attrs.Index, tapAttrs.Index); err != nil { + return err + } + + if err := addRedirectTCFilter(tapAttrs.Index, attrs.Index); err != nil { + return err + } + + return nil +} + +// addQdiscIngress creates a new qdisc for network interface with the specified network index +// on "ingress". qdiscs normally don't work on ingress so this is really a special qdisc +// that you can consider an "alternate root" for inbound packets. +// Handle for ingress qdisc defaults to "ffff:" +// +// This is equivalent to calling `tc qdisc add dev eth0 ingress` +func addQdiscIngress(index int) error { + qdisc := &netlink.Ingress{ + QdiscAttrs: netlink.QdiscAttrs{ + LinkIndex: index, + Parent: netlink.HANDLE_INGRESS, + }, + } + + err := netlink.QdiscAdd(qdisc) + if err != nil { + return fmt.Errorf("Failed to add qdisc for network index %d : %s", index, err) + } + + return nil +} + +// addRedirectTCFilter adds a tc filter for device with index "sourceIndex". +// All traffic for interface with index "sourceIndex" is redirected to interface with +// index "destIndex" +// +// This is equivalent to calling: +// `tc filter add dev source parent ffff: protocol all u32 match u8 0 0 action mirred egress redirect dev dest` +func addRedirectTCFilter(sourceIndex, destIndex int) error { + filter := &netlink.U32{ + FilterAttrs: netlink.FilterAttrs{ + LinkIndex: sourceIndex, + Parent: netlink.MakeHandle(0xffff, 0), + Protocol: unix.ETH_P_ALL, + }, + Actions: []netlink.Action{ + &netlink.MirredAction{ + ActionAttrs: netlink.ActionAttrs{ + Action: netlink.TC_ACT_STOLEN, + }, + MirredAction: netlink.TCA_EGRESS_REDIR, + Ifindex: destIndex, + }, + }, + } + + if err := netlink.FilterAdd(filter); err != nil { + return fmt.Errorf("Failed to add filter for index %d : %s", sourceIndex, err) + } + + return nil +} + +// removeRedirectTCFilter removes all tc u32 filters created on ingress qdisc for "link". +func removeRedirectTCFilter(link netlink.Link) error { + if link == nil { + return nil + } + + // Handle 0xffff is used for ingress + filters, err := netlink.FilterList(link, netlink.MakeHandle(0xffff, 0)) + if err != nil { + return err + } + + for _, f := range filters { + u32, ok := f.(*netlink.U32) + + if !ok { + continue + } + + if err := netlink.FilterDel(u32); err != nil { + return err + } + } + return nil +} + +// removeQdiscIngress removes the ingress qdisc previously created on "link". +func removeQdiscIngress(link netlink.Link) error { + if link == nil { + return nil + } + + qdiscs, err := netlink.QdiscList(link) + if err != nil { + return err + } + + for _, qdisc := range qdiscs { + ingress, ok := qdisc.(*netlink.Ingress) + if !ok { + continue + } + + if err := netlink.QdiscDel(ingress); err != nil { + return err + } + } + return nil +} + +func untapNetworkPair(ctx context.Context, endpoint Endpoint) error { + span, _ := networkTrace(ctx, "untapNetworkPair", endpoint) + defer span.End() + + netHandle, err := netlink.NewHandle() + if err != nil { + return err + } + defer netHandle.Close() + + netPair := endpoint.NetworkPair() + + tapLink, err := getLinkByName(netHandle, netPair.TAPIface.Name, &netlink.Macvtap{}) + if err != nil { + return fmt.Errorf("Could not get TAP interface %s: %s", netPair.TAPIface.Name, err) + } + + if err := netHandle.LinkDel(tapLink); err != nil { + return fmt.Errorf("Could not remove TAP %s: %s", netPair.TAPIface.Name, err) + } + + link, err := getLinkForEndpoint(endpoint, netHandle) + if err != nil { + return err + } + + hardAddr, err := net.ParseMAC(netPair.TAPIface.HardAddr) + if err != nil { + return err + } + if err := netHandle.LinkSetHardwareAddr(link, hardAddr); err != nil { + return fmt.Errorf("Could not set MAC address %s for veth interface %s: %s", + netPair.VirtIface.HardAddr, netPair.VirtIface.Name, err) + } + + if err := netHandle.LinkSetDown(link); err != nil { + return fmt.Errorf("Could not disable veth %s: %s", netPair.VirtIface.Name, err) + } + + // Restore the IPs that were cleared + err = setIPs(link, netPair.VirtIface.Addrs) + return err +} + +func removeTCFiltering(ctx context.Context, endpoint Endpoint) error { + span, _ := networkTrace(ctx, "removeTCFiltering", endpoint) + defer span.End() + + netHandle, err := netlink.NewHandle() + if err != nil { + return err + } + defer netHandle.Close() + + netPair := endpoint.NetworkPair() + + tapLink, err := getLinkByName(netHandle, netPair.TAPIface.Name, &netlink.Tuntap{}) + if err != nil { + return fmt.Errorf("Could not get TAP interface: %s", err) + } + + if err := netHandle.LinkSetDown(tapLink); err != nil { + return fmt.Errorf("Could not disable TAP %s: %s", netPair.TAPIface.Name, err) + } + + if err := netHandle.LinkDel(tapLink); err != nil { + return fmt.Errorf("Could not remove TAP %s: %s", netPair.TAPIface.Name, err) + } + + link, err := getLinkForEndpoint(endpoint, netHandle) + if err != nil { + return err + } + + if err := removeRedirectTCFilter(link); err != nil { + return err + } + + if err := removeQdiscIngress(link); err != nil { + return err + } + + if err := netHandle.LinkSetDown(link); err != nil { + return fmt.Errorf("Could not disable veth %s: %s", netPair.VirtIface.Name, err) + } + + return nil +} + +// doNetNS is free from any call to a go routine, and it calls +// into runtime.LockOSThread(), meaning it won't be executed in a +// different thread than the one expected by the caller. +func doNetNS(netNSPath string, cb func(ns.NetNS) error) error { + // if netNSPath is empty, the callback function will be run in the current network namespace. + // So skip the whole function, just call cb(). cb() needs a NetNS as arg but ignored, give it a fake one. + if netNSPath == "" { + var netNs ns.NetNS + return cb(netNs) + } + + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + currentNS, err := ns.GetCurrentNS() + if err != nil { + return err + } + defer currentNS.Close() + + targetNS, err := ns.GetNS(netNSPath) + if err != nil { + return err + } + + if err := targetNS.Set(); err != nil { + return err + } + defer currentNS.Set() + + return cb(targetNS) +} + +func deleteNetNS(netNSPath string) error { + n, err := ns.GetNS(netNSPath) + if err != nil { + return err + } + + err = n.Close() + if err != nil { + return err + } + + if err = unix.Unmount(netNSPath, unix.MNT_DETACH); err != nil { + return fmt.Errorf("Failed to unmount namespace %s: %v", netNSPath, err) + } + if err := os.RemoveAll(netNSPath); err != nil { + return fmt.Errorf("Failed to clean up namespace %s: %v", netNSPath, err) + } + + return nil +} + +func networkInfoFromLink(handle *netlink.Handle, link netlink.Link) (NetworkInfo, error) { + addrs, err := handle.AddrList(link, netlink.FAMILY_ALL) + if err != nil { + return NetworkInfo{}, err + } + + routes, err := handle.RouteList(link, netlink.FAMILY_ALL) + if err != nil { + return NetworkInfo{}, err + } + + neighbors, err := handle.NeighList(link.Attrs().Index, netlink.FAMILY_ALL) + if err != nil { + return NetworkInfo{}, err + } + + return NetworkInfo{ + Iface: NetlinkIface{ + LinkAttrs: *(link.Attrs()), + Type: link.Type(), + }, + Addrs: addrs, + Routes: routes, + Neighbors: neighbors, + }, nil +} + +// func addRxRateLmiter implements tc-based rx rate limiter to control network I/O inbound traffic +// on VM level for hypervisors which don't implement rate limiter in itself, like qemu, etc. +func addRxRateLimiter(endpoint Endpoint, maxRate uint64) error { + var linkName string + switch ep := endpoint.(type) { + case *VethEndpoint, *IPVlanEndpoint, *TuntapEndpoint, *MacvlanEndpoint: + netPair := endpoint.NetworkPair() + linkName = netPair.TapInterface.TAPIface.Name + case *MacvtapEndpoint, *TapEndpoint: + linkName = endpoint.Name() + default: + return fmt.Errorf("Unsupported endpointType %s for adding rx rate limiter", ep.Type()) + } + + if err := endpoint.SetRxRateLimiter(); err != nil { + return nil + } + + link, err := netlink.LinkByName(linkName) + if err != nil { + return err + } + linkIndex := link.Attrs().Index + + return addHTBQdisc(linkIndex, maxRate) +} + +// func addHTBQdisc uses HTB(Hierarchical Token Bucket) qdisc shaping schemes to control interface traffic. +// HTB (Hierarchical Token Bucket) shapes traffic based on the Token Bucket Filter algorithm. +// A fundamental part of the HTB qdisc is the borrowing mechanism. Children classes borrow tokens +// from their parents once they have exceeded rate. A child class will continue to attempt to borrow until +// it reaches ceil. See more details in https://tldp.org/HOWTO/Traffic-Control-HOWTO/classful-qdiscs.html. +// +// * +-----+ +---------+ +-----------+ +-----------+ +// * | | | qdisc | | class 1:1 | | class 1:2 | +// * | NIC | | htb | | rate | | rate | +// * | | --> | def 1:2 | --> | ceil | -+-> | ceil | +// * +-----+ +---------+ +-----------+ | +-----------+ +// * | +// * | +-----------+ +// * | | class 1:n | +// * | | rate | +// * +-> | ceil | +// * | +-----------+ +// Seeing from pic, after the routing decision, all packets will be sent to the interface root htb qdisc. +// This root qdisc has only one direct child class (with id 1:1) which shapes the overall maximum rate +// that will be sent through interface. Then, this class has at least one default child (1:2) meant to control all +// non-privileged traffic. +// e.g. +// if we try to set VM bandwidth with maximum 10Mbit/s, we should give +// classid 1:2 rate 10Mbit/s, ceil 10Mbit/s and classid 1:1 rate 10Mbit/s, ceil 10Mbit/s. +// To-do: +// Later, if we want to do limitation on some dedicated traffic(special process running in VM), we could create +// a separate class (1:n) with guarantee throughput. +func addHTBQdisc(linkIndex int, maxRate uint64) error { + // we create a new htb root qdisc for network interface with the specified network index + qdiscAttrs := netlink.QdiscAttrs{ + LinkIndex: linkIndex, + Handle: netlink.MakeHandle(1, 0), + Parent: netlink.HANDLE_ROOT, + } + qdisc := netlink.NewHtb(qdiscAttrs) + // all non-privileged traffic go to classid 1:2. + qdisc.Defcls = 2 + + err := netlink.QdiscAdd(qdisc) + if err != nil { + return fmt.Errorf("Failed to add htb qdisc: %v", err) + } + + // root htb qdisc has only one direct child class (with id 1:1) to control overall rate. + classAttrs := netlink.ClassAttrs{ + LinkIndex: linkIndex, + Parent: netlink.MakeHandle(1, 0), + Handle: netlink.MakeHandle(1, 1), + } + htbClassAttrs := netlink.HtbClassAttrs{ + Rate: maxRate, + Ceil: maxRate, + } + class := netlink.NewHtbClass(classAttrs, htbClassAttrs) + if err := netlink.ClassAdd(class); err != nil { + return fmt.Errorf("Failed to add htb classid 1:1 : %v", err) + } + + // above class has at least one default child class(1:2) for all non-privileged traffic. + classAttrs = netlink.ClassAttrs{ + LinkIndex: linkIndex, + Parent: netlink.MakeHandle(1, 1), + Handle: netlink.MakeHandle(1, 2), + } + htbClassAttrs = netlink.HtbClassAttrs{ + Rate: maxRate, + Ceil: maxRate, + } + class = netlink.NewHtbClass(classAttrs, htbClassAttrs) + if err := netlink.ClassAdd(class); err != nil { + return fmt.Errorf("Failed to add htb class 1:2 : %v", err) + } + + return nil +} + +// The Intermediate Functional Block (ifb) pseudo network interface is an alternative +// to tc filters for handling ingress traffic, +// By redirecting interface ingress traffic to ifb and treat it as egress traffic there, +// we could do network shaping to interface inbound traffic. +func addIFBDevice() (int, error) { + // Check whether host supports ifb + if ok, err := utils.SupportsIfb(); !ok { + return -1, err + } + + netHandle, err := netlink.NewHandle() + if err != nil { + return -1, err + } + defer netHandle.Close() + + // There exists error when using netlink library to create ifb interface + cmd := exec.Command("ip", "link", "add", "dev", "ifb0", "type", "ifb") + if output, err := cmd.CombinedOutput(); err != nil { + return -1, fmt.Errorf("Could not create link ifb0: %v, error %v", output, err) + } + + ifbLink, err := netlink.LinkByName("ifb0") + if err != nil { + return -1, err + } + + if err := netHandle.LinkSetUp(ifbLink); err != nil { + return -1, fmt.Errorf("Could not enable link ifb0 %v", err) + } + + return ifbLink.Attrs().Index, nil +} + +// This is equivalent to calling: +// tc filter add dev source parent ffff: protocol all u32 match u8 0 0 action mirred egress redirect dev ifb +func addIFBRedirecting(sourceIndex int, ifbIndex int) error { + if err := addQdiscIngress(sourceIndex); err != nil { + return err + } + + if err := addRedirectTCFilter(sourceIndex, ifbIndex); err != nil { + return err + } + + return nil +} + +// addTxRateLimiter implements tx rate limiter to control network I/O outbound traffic +// on VM level for hypervisors which don't implement rate limiter in itself, like qemu, etc. +// We adopt different actions, based on different inter-networking models. +// For tcfilters as inter-networking model, we simply apply htb qdisc discipline to the virtual netpair. +// For other inter-networking models, such as macvtap, we resort to ifb, by redirecting endpoint ingress traffic +// to ifb egress, and then apply htb to ifb egress. +func addTxRateLimiter(endpoint Endpoint, maxRate uint64) error { + var netPair *NetworkInterfacePair + var linkName string + switch ep := endpoint.(type) { + case *VethEndpoint, *IPVlanEndpoint, *TuntapEndpoint, *MacvlanEndpoint: + netPair = endpoint.NetworkPair() + switch netPair.NetInterworkingModel { + // For those endpoints we've already used tcfilter as their inter-networking model, + // another ifb redirect will be redundant and confused. + case NetXConnectTCFilterModel: + linkName = netPair.VirtIface.Name + link, err := netlink.LinkByName(linkName) + if err != nil { + return err + } + return addHTBQdisc(link.Attrs().Index, maxRate) + case NetXConnectMacVtapModel, NetXConnectNoneModel: + linkName = netPair.TapInterface.TAPIface.Name + default: + return fmt.Errorf("Unsupported inter-networking model %v for adding tx rate limiter", netPair.NetInterworkingModel) + } + + case *MacvtapEndpoint, *TapEndpoint: + linkName = endpoint.Name() + default: + return fmt.Errorf("Unsupported endpointType %s for adding tx rate limiter", ep.Type()) + } + + if err := endpoint.SetTxRateLimiter(); err != nil { + return err + } + + ifbIndex, err := addIFBDevice() + if err != nil { + return err + } + + link, err := netlink.LinkByName(linkName) + if err != nil { + return err + } + + if err := addIFBRedirecting(link.Attrs().Index, ifbIndex); err != nil { + return err + } + + return addHTBQdisc(ifbIndex, maxRate) +} + +func removeHTBQdisc(linkName string) error { + link, err := netlink.LinkByName(linkName) + if err != nil { + return fmt.Errorf("Get link %s by name failed: %v", linkName, err) + } + + qdiscs, err := netlink.QdiscList(link) + if err != nil { + return err + } + + for _, qdisc := range qdiscs { + htb, ok := qdisc.(*netlink.Htb) + if !ok { + continue + } + + if err := netlink.QdiscDel(htb); err != nil { + return fmt.Errorf("Failed to delete htb qdisc on link %s: %v", linkName, err) + } + } + + return nil +} + +func removeRxRateLimiter(endpoint Endpoint, networkNSPath string) error { + var linkName string + switch ep := endpoint.(type) { + case *VethEndpoint, *IPVlanEndpoint, *TuntapEndpoint, *MacvlanEndpoint: + netPair := endpoint.NetworkPair() + linkName = netPair.TapInterface.TAPIface.Name + case *MacvtapEndpoint, *TapEndpoint: + linkName = endpoint.Name() + default: + return fmt.Errorf("Unsupported endpointType %s for removing rx rate limiter", ep.Type()) + } + + if err := doNetNS(networkNSPath, func(_ ns.NetNS) error { + return removeHTBQdisc(linkName) + }); err != nil { + return err + } + + return nil +} + +func removeTxRateLimiter(endpoint Endpoint, networkNSPath string) error { + var linkName string + switch ep := endpoint.(type) { + case *VethEndpoint, *IPVlanEndpoint, *TuntapEndpoint, *MacvlanEndpoint: + netPair := endpoint.NetworkPair() + switch netPair.NetInterworkingModel { + case NetXConnectTCFilterModel: + linkName = netPair.VirtIface.Name + if err := doNetNS(networkNSPath, func(_ ns.NetNS) error { + return removeHTBQdisc(linkName) + }); err != nil { + return err + } + return nil + case NetXConnectMacVtapModel, NetXConnectNoneModel: + linkName = netPair.TapInterface.TAPIface.Name + } + case *MacvtapEndpoint, *TapEndpoint: + linkName = endpoint.Name() + default: + return fmt.Errorf("Unsupported endpointType %s for adding tx rate limiter", ep.Type()) + } + + if err := doNetNS(networkNSPath, func(_ ns.NetNS) error { + link, err := netlink.LinkByName(linkName) + if err != nil { + return fmt.Errorf("Get link %s by name failed: %v", linkName, err) + } + + if err := removeRedirectTCFilter(link); err != nil { + return err + } + + if err := removeQdiscIngress(link); err != nil { + return err + } + + netHandle, err := netlink.NewHandle() + if err != nil { + return err + } + defer netHandle.Close() + + // remove ifb interface + ifbLink, err := netlink.LinkByName("ifb0") + if err != nil { + return fmt.Errorf("Get link %s by name failed: %v", linkName, err) + } + + if err := netHandle.LinkSetDown(ifbLink); err != nil { + return fmt.Errorf("Could not disable ifb interface: %v", err) + } + + if err := netHandle.LinkDel(ifbLink); err != nil { + return fmt.Errorf("Could not remove ifb interface: %v", err) + } + + return nil + }); err != nil { + return err + } + + return nil +} diff --git a/src/runtime/virtcontainers/network_test.go b/src/runtime/virtcontainers/network_test.go index ac0476f33..a0dfc0a70 100644 --- a/src/runtime/virtcontainers/network_test.go +++ b/src/runtime/virtcontainers/network_test.go @@ -75,7 +75,7 @@ func TestGenerateInterfacesAndRoutes(t *testing.T) { nns, err := NewNetwork(&NetworkConfig{NetworkID: "foobar", NetworkCreated: true}) assert.Nil(t, err) - nns.eps = endpoints + nns.SetEndpoints(endpoints) resInterfaces, resRoutes, resNeighs, err := generateVCNetworkStructures(context.Background(), nns) diff --git a/src/runtime/virtcontainers/qemu.go b/src/runtime/virtcontainers/qemu.go index 9f5fdb295..7b11287cd 100644 --- a/src/runtime/virtcontainers/qemu.go +++ b/src/runtime/virtcontainers/qemu.go @@ -468,7 +468,7 @@ func (q *qemu) setConfig(config *HypervisorConfig) error { } // CreateVM is the Hypervisor VM creation implementation for govmmQemu. -func (q *qemu) CreateVM(ctx context.Context, id string, network *Network, hypervisorConfig *HypervisorConfig) error { +func (q *qemu) CreateVM(ctx context.Context, id string, network Network, hypervisorConfig *HypervisorConfig) error { // Save the tracing context q.ctx = ctx diff --git a/src/runtime/virtcontainers/sandbox.go b/src/runtime/virtcontainers/sandbox.go index 20d815cea..f9341e70e 100644 --- a/src/runtime/virtcontainers/sandbox.go +++ b/src/runtime/virtcontainers/sandbox.go @@ -207,7 +207,7 @@ type Sandbox struct { id string - network *Network + network Network state types.SandboxState @@ -873,14 +873,14 @@ func (s *Sandbox) AddInterface(ctx context.Context, inf *pbTypes.Interface) (*pb return nil, err } - endpoint, err := s.network.attachEndpoint(ctx, s, netInfo, nil, true) + endpoint, err := s.network.AddEndpoint(ctx, s, netInfo, nil, true) if err != nil { return nil, err } defer func() { if err != nil { - if errDetach := s.network.detachEndpoint(ctx, s, len(s.network.Endpoints())-1, true); err != nil { + if errDetach := s.network.RemoveEndpoint(ctx, s, len(s.network.Endpoints())-1, true); err != nil { s.Logger().WithField("endpoint-type", endpoint.Type()).WithError(errDetach).Error("rollback hot attaching endpoint failed") } } @@ -906,7 +906,7 @@ func (s *Sandbox) RemoveInterface(ctx context.Context, inf *pbTypes.Interface) ( for i, endpoint := range s.network.Endpoints() { if endpoint.HardwareAddr() == inf.HwAddr { s.Logger().WithField("endpoint-type", endpoint.Type()).Info("Hot detaching endpoint") - if err := s.network.detachEndpoint(ctx, s, i, true); err != nil { + if err := s.network.RemoveEndpoint(ctx, s, i, true); err != nil { return inf, err } From c67109a251864dc34cc23a577eddca1df13d5cc0 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Tue, 9 Nov 2021 01:45:13 +0000 Subject: [PATCH 366/385] virtcontainers: Remove the Network PostAdd method It's used once by the sandbox code and can be implemented directly there. Signed-off-by: Samuel Ortiz --- src/runtime/virtcontainers/network.go | 3 --- src/runtime/virtcontainers/network_linux.go | 26 --------------------- src/runtime/virtcontainers/sandbox.go | 22 ++++++++++++++++- 3 files changed, 21 insertions(+), 30 deletions(-) diff --git a/src/runtime/virtcontainers/network.go b/src/runtime/virtcontainers/network.go index cce583ff5..81f5985e3 100644 --- a/src/runtime/virtcontainers/network.go +++ b/src/runtime/virtcontainers/network.go @@ -211,9 +211,6 @@ type Network interface { // RemoveEndpoint removes one single endpoint from the sandbox's network. RemoveEndpoint(context.Context, *Sandbox, int, bool) error - // PostAdd is a post networking endpoint addition hook. - PostAdd(context.Context, bool) error - // Run runs a callback in a sandbox's network. Run(context.Context, func() error) error diff --git a/src/runtime/virtcontainers/network_linux.go b/src/runtime/virtcontainers/network_linux.go index 4b6c7cb26..8a9e72cdd 100644 --- a/src/runtime/virtcontainers/network_linux.go +++ b/src/runtime/virtcontainers/network_linux.go @@ -339,32 +339,6 @@ func (n *LinuxNetwork) Add(ctx context.Context, s *Sandbox, hotplug bool) error return nil } -func (n *LinuxNetwork) PostAdd(ctx context.Context, hotplug bool) error { - if hotplug { - return nil - } - - if n.eps == nil { - return nil - } - - endpoints := n.eps - - for _, endpoint := range endpoints { - netPair := endpoint.NetworkPair() - if netPair == nil { - continue - } - if netPair.VhostFds != nil { - for _, VhostFd := range netPair.VhostFds { - VhostFd.Close() - } - } - } - - return nil -} - // Remove network endpoints in the network namespace. It also deletes the network // namespace in case the namespace has been created by us. func (n *LinuxNetwork) Remove(ctx context.Context) error { diff --git a/src/runtime/virtcontainers/sandbox.go b/src/runtime/virtcontainers/sandbox.go index f9341e70e..5bccf1b07 100644 --- a/src/runtime/virtcontainers/sandbox.go +++ b/src/runtime/virtcontainers/sandbox.go @@ -826,7 +826,27 @@ func (s *Sandbox) createNetwork(ctx context.Context) error { } func (s *Sandbox) postCreatedNetwork(ctx context.Context) error { - return s.network.PostAdd(ctx, s.factory != nil) + if s.factory != nil { + return nil + } + + if s.network.Endpoints() == nil { + return nil + } + + for _, endpoint := range s.network.Endpoints() { + netPair := endpoint.NetworkPair() + if netPair == nil { + continue + } + if netPair.VhostFds != nil { + for _, VhostFd := range netPair.VhostFds { + VhostFd.Close() + } + } + } + + return nil } func (s *Sandbox) removeNetwork(ctx context.Context) error { From 7fca5792f75ec95c601c269a1b28ba65b4ff547f Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Tue, 9 Nov 2021 04:19:10 +0000 Subject: [PATCH 367/385] virtcontainers: Unify Network endpoints management interface And only have AddEndpoints/RemoveEndpoints for all cases (single endpoint vs all of them, hotplug or not). Signed-off-by: Samuel Ortiz --- src/runtime/virtcontainers/endpoint.go | 10 ++++ src/runtime/virtcontainers/network.go | 18 +++---- src/runtime/virtcontainers/network_linux.go | 60 ++++++++++++++------- src/runtime/virtcontainers/sandbox.go | 21 ++++---- 4 files changed, 71 insertions(+), 38 deletions(-) diff --git a/src/runtime/virtcontainers/endpoint.go b/src/runtime/virtcontainers/endpoint.go index 7786bb3e1..6c24b79ac 100644 --- a/src/runtime/virtcontainers/endpoint.go +++ b/src/runtime/virtcontainers/endpoint.go @@ -228,3 +228,13 @@ func loadTuntapIf(tuntapif *persistapi.TuntapInterface) *TuntapInterface { }, } } + +func findEndpoint(e Endpoint, endpoints []Endpoint) (Endpoint, int) { + for idx, ep := range endpoints { + if ep.HardwareAddr() == e.HardwareAddr() { + return ep, idx + } + } + + return nil, 0 +} diff --git a/src/runtime/virtcontainers/network.go b/src/runtime/virtcontainers/network.go index 81f5985e3..ee1e927d9 100644 --- a/src/runtime/virtcontainers/network.go +++ b/src/runtime/virtcontainers/network.go @@ -97,6 +97,7 @@ type NetlinkIface struct { type NetworkInfo struct { Iface NetlinkIface DNS DNSInfo + Link netlink.Link Addrs []netlink.Addr Routes []netlink.Route Neighbors []netlink.Neigh @@ -197,19 +198,16 @@ type NetworkConfig struct { } type Network interface { - // Add adds all needed networking endpoints to a sandbox's network - Add(context.Context, *Sandbox, bool) error + // AddEndpoint adds endpoints to a sandbox's network. + // If the NetworkInfo slice is empty, implementations are expected to scan + // the sandbox's network for all existing endpoints. + AddEndpoints(context.Context, *Sandbox, []NetworkInfo, bool) ([]Endpoint, error) - // AddEndpoint adds one single endpoint to a sandbox's network. - AddEndpoint(context.Context, *Sandbox, NetworkInfo, netlink.Link, bool) (Endpoint, error) - - // Remove removes all the networking endpoints from a sandbox's network. + // RemoveEndpoints removes endpoints from the sandbox's network. + // If the the endpoint slice is empty, all endpoints will be removed. // If the network has been created by virtcontainers, Remove also deletes // the network. - Remove(context.Context) error - - // RemoveEndpoint removes one single endpoint from the sandbox's network. - RemoveEndpoint(context.Context, *Sandbox, int, bool) error + RemoveEndpoints(context.Context, *Sandbox, []Endpoint, bool) error // Run runs a callback in a sandbox's network. Run(context.Context, func() error) error diff --git a/src/runtime/virtcontainers/network_linux.go b/src/runtime/virtcontainers/network_linux.go index 8a9e72cdd..0e8429a2e 100644 --- a/src/runtime/virtcontainers/network_linux.go +++ b/src/runtime/virtcontainers/network_linux.go @@ -107,7 +107,7 @@ func (n *LinuxNetwork) trace(ctx context.Context, name string) (otelTrace.Span, return networkTrace(ctx, name, nil) } -func (n *LinuxNetwork) AddEndpoint(ctx context.Context, s *Sandbox, netInfo NetworkInfo, link netlink.Link, hotplug bool) (Endpoint, error) { +func (n *LinuxNetwork) addSingleEndpoint(ctx context.Context, s *Sandbox, netInfo NetworkInfo, hotplug bool) (Endpoint, error) { var endpoint Endpoint // TODO: This is the incoming interface // based on the incoming interface we should create @@ -147,8 +147,8 @@ func (n *LinuxNetwork) AddEndpoint(ctx context.Context, s *Sandbox, netInfo Netw networkLogger().Info("tap interface found") endpoint, err = createTapNetworkEndpoint(idx, netInfo.Iface.Name) } else if netInfo.Iface.Type == "tuntap" { - if link != nil { - switch link.(*netlink.Tuntap).Mode { + if netInfo.Link != nil { + switch netInfo.Link.(*netlink.Tuntap).Mode { case 0: // mount /sys/class/net to get links return nil, fmt.Errorf("Network device mode not determined correctly. Mount sysfs in caller") @@ -158,7 +158,7 @@ func (n *LinuxNetwork) AddEndpoint(ctx context.Context, s *Sandbox, netInfo Netw networkLogger().Info("tuntap tap interface found") endpoint, err = createTuntapNetworkEndpoint(idx, netInfo.Iface.Name, netInfo.Iface.HardwareAddr, n.interworkingModel) default: - return nil, fmt.Errorf("tuntap network %v mode unsupported", link.(*netlink.Tuntap).Mode) + return nil, fmt.Errorf("tuntap network %v mode unsupported", netInfo.Link.(*netlink.Tuntap).Mode) } } } else if netInfo.Iface.Type == "veth" { @@ -217,7 +217,7 @@ func (n *LinuxNetwork) AddEndpoint(ctx context.Context, s *Sandbox, netInfo Netw return endpoint, nil } -func (n *LinuxNetwork) RemoveEndpoint(ctx context.Context, s *Sandbox, idx int, hotplug bool) error { +func (n *LinuxNetwork) removeSingleEndpoint(ctx context.Context, s *Sandbox, idx int, hotplug bool) error { if idx > len(n.eps)-1 { return fmt.Errorf("Endpoint index overflow") } @@ -261,7 +261,7 @@ func (n *LinuxNetwork) RemoveEndpoint(ctx context.Context, s *Sandbox, idx int, // Scan the networking namespace through netlink and then: // 1. Create the endpoints for the relevant interfaces found there. // 2. Attach them to the VM. -func (n *LinuxNetwork) attachEndpoints(ctx context.Context, s *Sandbox, hotplug bool) error { +func (n *LinuxNetwork) addAllEndpoints(ctx context.Context, s *Sandbox, hotplug bool) error { netnsHandle, err := netns.GetFromPath(n.netNSPath) if err != nil { return err @@ -298,7 +298,7 @@ func (n *LinuxNetwork) attachEndpoints(ctx context.Context, s *Sandbox, hotplug continue } - _, err = n.AddEndpoint(ctx, s, netInfo, link, hotplug) + _, err = n.addSingleEndpoint(ctx, s, netInfo, hotplug) if err != nil { return err } @@ -324,36 +324,57 @@ func (n *LinuxNetwork) Run(ctx context.Context, cb func() error) error { } // Add adds all needed interfaces inside the network namespace. -func (n *LinuxNetwork) Add(ctx context.Context, s *Sandbox, hotplug bool) error { - span, ctx := n.trace(ctx, "Add") +func (n *LinuxNetwork) AddEndpoints(ctx context.Context, s *Sandbox, endpointsInfo []NetworkInfo, hotplug bool) ([]Endpoint, error) { + span, ctx := n.trace(ctx, "AddEndpoints") katatrace.AddTags(span, "type", n.interworkingModel.GetModel()) defer span.End() - if err := n.attachEndpoints(ctx, s, hotplug); err != nil { - return err + if endpointsInfo == nil { + if err := n.addAllEndpoints(ctx, s, hotplug); err != nil { + return nil, err + } + } else { + for _, ep := range endpointsInfo { + if _, err := n.addSingleEndpoint(ctx, s, ep, hotplug); err != nil { + n.eps = nil + return nil, err + } + } } katatrace.AddTags(span, "endpoints", n.eps, "hotplug", hotplug) - networkLogger().Debug("Network added") + networkLogger().Debug("Endpoints added") - return nil + return n.eps, nil } // Remove network endpoints in the network namespace. It also deletes the network // namespace in case the namespace has been created by us. -func (n *LinuxNetwork) Remove(ctx context.Context) error { - span, ctx := n.trace(ctx, "Remove") +func (n *LinuxNetwork) RemoveEndpoints(ctx context.Context, s *Sandbox, endpoints []Endpoint, hotplug bool) error { + span, ctx := n.trace(ctx, "RemoveEndpoints") defer span.End() - for i := range n.eps { - if err := n.RemoveEndpoint(ctx, nil, i, false); err != nil { + eps := n.eps + if endpoints != nil { + eps = endpoints + } + + for idx, ep := range eps { + if endpoints != nil { + new_ep, _ := findEndpoint(ep, n.eps) + if new_ep == nil { + continue + } + } + + if err := n.removeSingleEndpoint(ctx, s, idx, hotplug); err != nil { return err } } - networkLogger().Debug("Network removed") + networkLogger().Debug("Endpoints removed") - if n.netNSCreated { + if n.netNSCreated && endpoints == nil { networkLogger().Infof("Network namespace %q deleted", n.netNSPath) return deleteNetNS(n.netNSPath) } @@ -1056,6 +1077,7 @@ func networkInfoFromLink(handle *netlink.Handle, link netlink.Link) (NetworkInfo Addrs: addrs, Routes: routes, Neighbors: neighbors, + Link: link, }, nil } diff --git a/src/runtime/virtcontainers/sandbox.go b/src/runtime/virtcontainers/sandbox.go index 5bccf1b07..ec6a3d780 100644 --- a/src/runtime/virtcontainers/sandbox.go +++ b/src/runtime/virtcontainers/sandbox.go @@ -818,7 +818,7 @@ func (s *Sandbox) createNetwork(ctx context.Context) error { // after vm is started. if s.factory == nil { // Add the network - if err := s.network.Add(ctx, s, false); err != nil { + if _, err := s.network.AddEndpoints(ctx, s, nil, false); err != nil { return err } } @@ -853,7 +853,7 @@ func (s *Sandbox) removeNetwork(ctx context.Context) error { span, ctx := katatrace.Trace(ctx, s.Logger(), "removeNetwork", sandboxTracingTags, map[string]string{"sandbox_id": s.id}) defer span.End() - return s.network.Remove(ctx) + return s.network.RemoveEndpoints(ctx, s, nil, false) } func (s *Sandbox) generateNetInfo(inf *pbTypes.Interface) (NetworkInfo, error) { @@ -893,21 +893,24 @@ func (s *Sandbox) AddInterface(ctx context.Context, inf *pbTypes.Interface) (*pb return nil, err } - endpoint, err := s.network.AddEndpoint(ctx, s, netInfo, nil, true) + endpoints, err := s.network.AddEndpoints(ctx, s, []NetworkInfo{netInfo}, true) if err != nil { return nil, err } defer func() { if err != nil { - if errDetach := s.network.RemoveEndpoint(ctx, s, len(s.network.Endpoints())-1, true); err != nil { - s.Logger().WithField("endpoint-type", endpoint.Type()).WithError(errDetach).Error("rollback hot attaching endpoint failed") + eps := s.network.Endpoints() + // The newly added endpoint is last. + added_ep := eps[len(eps)-1] + if errDetach := s.network.RemoveEndpoints(ctx, s, []Endpoint{added_ep}, true); err != nil { + s.Logger().WithField("endpoint-type", added_ep.Type()).WithError(errDetach).Error("rollback hot attaching endpoint failed") } } }() // Add network for vm - inf.PciPath = endpoint.PciPath().String() + inf.PciPath = endpoints[0].PciPath().String() result, err := s.agent.updateInterface(ctx, inf) if err != nil { return nil, err @@ -923,10 +926,10 @@ func (s *Sandbox) AddInterface(ctx context.Context, inf *pbTypes.Interface) (*pb // RemoveInterface removes a nic of the sandbox. func (s *Sandbox) RemoveInterface(ctx context.Context, inf *pbTypes.Interface) (*pbTypes.Interface, error) { - for i, endpoint := range s.network.Endpoints() { + for _, endpoint := range s.network.Endpoints() { if endpoint.HardwareAddr() == inf.HwAddr { s.Logger().WithField("endpoint-type", endpoint.Type()).Info("Hot detaching endpoint") - if err := s.network.RemoveEndpoint(ctx, s, i, true); err != nil { + if err := s.network.RemoveEndpoints(ctx, s, []Endpoint{endpoint}, true); err != nil { return inf, err } @@ -1205,7 +1208,7 @@ func (s *Sandbox) startVM(ctx context.Context) (err error) { // In case of vm factory, network interfaces are hotplugged // after vm is started. if s.factory != nil { - if err := s.network.Add(ctx, s, true); err != nil { + if _, err := s.network.AddEndpoints(ctx, s, nil, true); err != nil { return err } } From 0269077ebf7e8a54c64cc8db269db98a48542d26 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Wed, 24 Nov 2021 16:59:18 +0100 Subject: [PATCH 368/385] virtcontainers: Remove the netlink package dependency from network.go Move the netlink dependent code into network_linux.go. Other OSes will have to provide the same functions. Signed-off-by: Samuel Ortiz --- src/runtime/virtcontainers/network.go | 15 +++++++-------- src/runtime/virtcontainers/network_linux.go | 9 +++++++++ src/runtime/virtcontainers/network_test.go | 8 ++++---- src/runtime/virtcontainers/utils/utils.go | 10 +++++----- 4 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/runtime/virtcontainers/network.go b/src/runtime/virtcontainers/network.go index ee1e927d9..2b4fa4177 100644 --- a/src/runtime/virtcontainers/network.go +++ b/src/runtime/virtcontainers/network.go @@ -249,13 +249,13 @@ func generateVCNetworkStructures(ctx context.Context, network Network) ([]*pbTyp netMask, _ := addr.Mask.Size() ipAddress := pbTypes.IPAddress{ - Family: utils.ConvertNetlinkFamily(netlink.FAMILY_V4), + Family: pbTypes.IPFamily_v4, Address: addr.IP.String(), Mask: fmt.Sprintf("%d", netMask), } if addr.IP.To4() == nil { - ipAddress.Family = utils.ConvertNetlinkFamily(netlink.FAMILY_V6) + ipAddress.Family = pbTypes.IPFamily_v6 } ipAddresses = append(ipAddresses, &ipAddress) } @@ -275,7 +275,7 @@ func generateVCNetworkStructures(ctx context.Context, network Network) ([]*pbTyp for _, route := range endpoint.Properties().Routes { var r pbTypes.Route - if route.Protocol == unix.RTPROT_KERNEL { + if !validGuestRoute(route) { continue } @@ -294,15 +294,14 @@ func generateVCNetworkStructures(ctx context.Context, network Network) ([]*pbTyp r.Device = endpoint.Name() r.Scope = uint32(route.Scope) - r.Family = utils.ConvertNetlinkFamily((int32)(route.Family)) + r.Family = utils.ConvertAddressFamily((int32)(route.Family)) routes = append(routes, &r) } for _, neigh := range endpoint.Properties().Neighbors { var n pbTypes.ARPNeighbor - // We add only static ARP entries - if neigh.State != netlink.NUD_PERMANENT { + if !validGuestNeighbor(neigh) { continue } @@ -315,11 +314,11 @@ func generateVCNetworkStructures(ctx context.Context, network Network) ([]*pbTyp } n.ToIPAddress = &pbTypes.IPAddress{ - Family: utils.ConvertNetlinkFamily(netlink.FAMILY_V4), + Family: pbTypes.IPFamily_v4, Address: neigh.IP.String(), } if neigh.IP.To4() == nil { - n.ToIPAddress.Family = netlink.FAMILY_V6 + n.ToIPAddress.Family = pbTypes.IPFamily_v6 } neighs = append(neighs, &n) diff --git a/src/runtime/virtcontainers/network_linux.go b/src/runtime/virtcontainers/network_linux.go index 0e8429a2e..378cd02e0 100644 --- a/src/runtime/virtcontainers/network_linux.go +++ b/src/runtime/virtcontainers/network_linux.go @@ -1397,3 +1397,12 @@ func removeTxRateLimiter(endpoint Endpoint, networkNSPath string) error { return nil } + +func validGuestRoute(route netlink.Route) bool { + return route.Protocol != unix.RTPROT_KERNEL +} + +func validGuestNeighbor(neigh netlink.Neigh) bool { + // We add only static ARP entries + return neigh.State == netlink.NUD_PERMANENT +} diff --git a/src/runtime/virtcontainers/network_test.go b/src/runtime/virtcontainers/network_test.go index a0dfc0a70..bff91a062 100644 --- a/src/runtime/virtcontainers/network_test.go +++ b/src/runtime/virtcontainers/network_test.go @@ -83,9 +83,9 @@ func TestGenerateInterfacesAndRoutes(t *testing.T) { // Build expected results: // expectedAddresses := []*pbTypes.IPAddress{ - {Family: utils.ConvertNetlinkFamily(netlink.FAMILY_V4), Address: "172.17.0.2", Mask: "16"}, - {Family: utils.ConvertNetlinkFamily(netlink.FAMILY_V4), Address: "182.17.0.2", Mask: "16"}, - {Family: utils.ConvertNetlinkFamily(netlink.FAMILY_V6), Address: "2001:db8:1::242:ac11:2", Mask: "64"}, + {Family: utils.ConvertAddressFamily(netlink.FAMILY_V4), Address: "172.17.0.2", Mask: "16"}, + {Family: utils.ConvertAddressFamily(netlink.FAMILY_V4), Address: "182.17.0.2", Mask: "16"}, + {Family: utils.ConvertAddressFamily(netlink.FAMILY_V6), Address: "2001:db8:1::242:ac11:2", Mask: "64"}, } expectedInterfaces := []*pbTypes.Interface{ @@ -104,7 +104,7 @@ func TestGenerateInterfacesAndRoutes(t *testing.T) { Device: "eth0", State: netlink.NUD_PERMANENT, Lladdr: "6a:92:3a:59:70:aa", - ToIPAddress: &pbTypes.IPAddress{Address: "192.168.0.101", Family: utils.ConvertNetlinkFamily(netlink.FAMILY_V4)}, + ToIPAddress: &pbTypes.IPAddress{Address: "192.168.0.101", Family: utils.ConvertAddressFamily(netlink.FAMILY_V4)}, }, } diff --git a/src/runtime/virtcontainers/utils/utils.go b/src/runtime/virtcontainers/utils/utils.go index 3a6a55e42..f03a5aa25 100644 --- a/src/runtime/virtcontainers/utils/utils.go +++ b/src/runtime/virtcontainers/utils/utils.go @@ -16,7 +16,7 @@ import ( "time" "github.com/sirupsen/logrus" - "github.com/vishvananda/netlink" + "golang.org/x/sys/unix" pbTypes "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/agent/protocols" ) @@ -290,11 +290,11 @@ const ( GiB = MiB << 10 ) -func ConvertNetlinkFamily(netlinkFamily int32) pbTypes.IPFamily { - switch netlinkFamily { - case netlink.FAMILY_V6: +func ConvertAddressFamily(family int32) pbTypes.IPFamily { + switch family { + case unix.AF_INET6: return pbTypes.IPFamily_v6 - case netlink.FAMILY_V4: + case unix.AF_INET: fallthrough default: return pbTypes.IPFamily_v4 From 49d2cde1e2bb7d2dc245a30cfe7564183b8f909a Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Tue, 9 Nov 2021 01:28:23 +0000 Subject: [PATCH 369/385] virtcontainers: Split network tests into generic and OS specific parts Some unit tests are generic while others, mostly because they depend on netlink, are Linux specific. Signed-off-by: Samuel Ortiz --- .../virtcontainers/network_linux_test.go | 329 ++++++++++++++++++ src/runtime/virtcontainers/network_test.go | 316 ----------------- 2 files changed, 329 insertions(+), 316 deletions(-) create mode 100644 src/runtime/virtcontainers/network_linux_test.go diff --git a/src/runtime/virtcontainers/network_linux_test.go b/src/runtime/virtcontainers/network_linux_test.go new file mode 100644 index 000000000..8aa2e44b2 --- /dev/null +++ b/src/runtime/virtcontainers/network_linux_test.go @@ -0,0 +1,329 @@ +// Copyright (c) 2016 Intel Corporation +// +// SPDX-License-Identifier: Apache-2.0 +// + +package virtcontainers + +import ( + "context" + "fmt" + "net" + "reflect" + "testing" + + "github.com/containernetworking/plugins/pkg/ns" + ktu "github.com/kata-containers/kata-containers/src/runtime/pkg/katatestutils" + pbTypes "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/agent/protocols" + "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/utils" + "github.com/stretchr/testify/assert" + "github.com/vishvananda/netlink" +) + +func TestGenerateInterfacesAndRoutes(t *testing.T) { + // + //Create a couple of addresses + // + address1 := &net.IPNet{IP: net.IPv4(172, 17, 0, 2), Mask: net.CIDRMask(16, 32)} + address2 := &net.IPNet{IP: net.IPv4(182, 17, 0, 2), Mask: net.CIDRMask(16, 32)} + address3 := &net.IPNet{IP: net.ParseIP("2001:db8:1::242:ac11:2"), Mask: net.CIDRMask(64, 128)} + + addrs := []netlink.Addr{ + {IPNet: address1, Label: "phyaddr1"}, + {IPNet: address2, Label: "phyaddr2"}, + {IPNet: address3, Label: "phyaddr3"}, + } + + // Create a couple of routes: + dst2 := &net.IPNet{IP: net.IPv4(172, 17, 0, 0), Mask: net.CIDRMask(16, 32)} + src2 := net.IPv4(172, 17, 0, 2) + gw2 := net.IPv4(172, 17, 0, 1) + + dstV6 := &net.IPNet{IP: net.ParseIP("2001:db8:1::"), Mask: net.CIDRMask(64, 128)} + gatewayV6 := net.ParseIP("2001:db8:1::1") + + routes := []netlink.Route{ + {LinkIndex: 329, Dst: nil, Src: nil, Gw: net.IPv4(172, 17, 0, 1), Scope: netlink.Scope(254)}, + {LinkIndex: 329, Dst: dst2, Src: src2, Gw: gw2}, + {LinkIndex: 329, Dst: dstV6, Src: nil, Gw: nil}, + {LinkIndex: 329, Dst: nil, Src: nil, Gw: gatewayV6}, + } + + arpMAC, _ := net.ParseMAC("6a:92:3a:59:70:aa") + + neighs := []netlink.Neigh{ + {LinkIndex: 329, IP: net.IPv4(192, 168, 0, 101), State: netlink.NUD_PERMANENT, HardwareAddr: arpMAC}, + } + + networkInfo := NetworkInfo{ + Iface: NetlinkIface{ + LinkAttrs: netlink.LinkAttrs{MTU: 1500}, + Type: "", + }, + Addrs: addrs, + Routes: routes, + Neighbors: neighs, + } + + ep0 := &PhysicalEndpoint{ + IfaceName: "eth0", + HardAddr: net.HardwareAddr{0x02, 0x00, 0xca, 0xfe, 0x00, 0x04}.String(), + EndpointProperties: networkInfo, + } + + endpoints := []Endpoint{ep0} + + nns, err := NewNetwork(&NetworkConfig{NetworkID: "foobar", NetworkCreated: true}) + assert.Nil(t, err) + nns.SetEndpoints(endpoints) + + resInterfaces, resRoutes, resNeighs, err := generateVCNetworkStructures(context.Background(), nns) + + // + // Build expected results: + // + expectedAddresses := []*pbTypes.IPAddress{ + {Family: utils.ConvertAddressFamily(netlink.FAMILY_V4), Address: "172.17.0.2", Mask: "16"}, + {Family: utils.ConvertAddressFamily(netlink.FAMILY_V4), Address: "182.17.0.2", Mask: "16"}, + {Family: utils.ConvertAddressFamily(netlink.FAMILY_V6), Address: "2001:db8:1::242:ac11:2", Mask: "64"}, + } + + expectedInterfaces := []*pbTypes.Interface{ + {Device: "eth0", Name: "eth0", IPAddresses: expectedAddresses, Mtu: 1500, HwAddr: "02:00:ca:fe:00:04"}, + } + + expectedRoutes := []*pbTypes.Route{ + {Dest: "", Gateway: "172.17.0.1", Device: "eth0", Source: "", Scope: uint32(254)}, + {Dest: "172.17.0.0/16", Gateway: "172.17.0.1", Device: "eth0", Source: "172.17.0.2"}, + {Dest: "2001:db8:1::/64", Gateway: "", Device: "eth0", Source: ""}, + {Dest: "", Gateway: "2001:db8:1::1", Device: "eth0", Source: ""}, + } + + expectedNeighs := []*pbTypes.ARPNeighbor{ + { + Device: "eth0", + State: netlink.NUD_PERMANENT, + Lladdr: "6a:92:3a:59:70:aa", + ToIPAddress: &pbTypes.IPAddress{Address: "192.168.0.101", Family: utils.ConvertAddressFamily(netlink.FAMILY_V4)}, + }, + } + + for _, r := range resRoutes { + fmt.Printf("resRoute: %+v\n", r) + } + + assert.Nil(t, err, "unexpected failure when calling generateKataInterfacesAndRoutes") + assert.True(t, reflect.DeepEqual(resInterfaces, expectedInterfaces), + "Interfaces returned didn't match: got %+v, expecting %+v", resInterfaces, expectedInterfaces) + assert.True(t, reflect.DeepEqual(resRoutes, expectedRoutes), + "Routes returned didn't match: got %+v, expecting %+v", resRoutes, expectedRoutes) + assert.True(t, reflect.DeepEqual(resNeighs, expectedNeighs), + "ARP Neighbors returned didn't match: got %+v, expecting %+v", resNeighs, expectedNeighs) +} + +func TestCreateGetTunTapLink(t *testing.T) { + if tc.NotValid(ktu.NeedRoot()) { + t.Skip(testDisabledAsNonRoot) + } + + assert := assert.New(t) + + netHandle, err := netlink.NewHandle() + assert.NoError(err) + defer netHandle.Close() + + assert.NoError(err) + + tapName := "testtap0" + tapLink, fds, err := createLink(netHandle, tapName, &netlink.Tuntap{}, 1) + assert.NoError(err) + assert.NotNil(tapLink) + assert.NotZero(len(fds)) + + tapLink, err = getLinkByName(netHandle, tapName, &netlink.Tuntap{}) + assert.NoError(err) + + err = netHandle.LinkDel(tapLink) + assert.NoError(err) +} + +func TestCreateMacVtap(t *testing.T) { + if tc.NotValid(ktu.NeedRoot()) { + t.Skip(testDisabledAsNonRoot) + } + + assert := assert.New(t) + + netHandle, err := netlink.NewHandle() + assert.NoError(err) + defer netHandle.Close() + + assert.NoError(err) + + tapName := "testtap0" + tapLink, _, err := createLink(netHandle, tapName, &netlink.Tuntap{}, 1) + assert.NoError(err) + + attrs := tapLink.Attrs() + + mcLink := &netlink.Macvtap{ + Macvlan: netlink.Macvlan{ + LinkAttrs: netlink.LinkAttrs{ + TxQLen: attrs.TxQLen, + ParentIndex: attrs.Index, + }, + }, + } + + macvtapName := "testmc0" + _, err = createMacVtap(netHandle, macvtapName, mcLink, 1) + assert.NoError(err) + + macvtapLink, err := getLinkByName(netHandle, macvtapName, &netlink.Macvtap{}) + assert.NoError(err) + + err = netHandle.LinkDel(macvtapLink) + assert.NoError(err) + + tapLink, err = getLinkByName(netHandle, tapName, &netlink.Tuntap{}) + assert.NoError(err) + + err = netHandle.LinkDel(tapLink) + assert.NoError(err) +} + +func TestTcRedirectNetwork(t *testing.T) { + if tc.NotValid(ktu.NeedRoot()) { + t.Skip(testDisabledAsNonRoot) + } + + assert := assert.New(t) + + netHandle, err := netlink.NewHandle() + assert.NoError(err) + defer netHandle.Close() + + // Create a test veth interface. + vethName := "foo" + veth := &netlink.Veth{LinkAttrs: netlink.LinkAttrs{Name: vethName, TxQLen: 200, MTU: 1400}, PeerName: "bar"} + + err = netlink.LinkAdd(veth) + assert.NoError(err) + + endpoint, err := createVethNetworkEndpoint(1, vethName, NetXConnectTCFilterModel) + assert.NoError(err) + + link, err := netlink.LinkByName(vethName) + assert.NoError(err) + + err = netHandle.LinkSetUp(link) + assert.NoError(err) + + err = setupTCFiltering(context.Background(), endpoint, 1, true) + assert.NoError(err) + + err = removeTCFiltering(context.Background(), endpoint) + assert.NoError(err) + + // Remove the veth created for testing. + err = netHandle.LinkDel(link) + assert.NoError(err) +} + +func TestRxRateLimiter(t *testing.T) { + if tc.NotValid(ktu.NeedRoot()) { + t.Skip(testDisabledAsNonRoot) + } + + assert := assert.New(t) + + netHandle, err := netlink.NewHandle() + assert.NoError(err) + defer netHandle.Close() + + // Create a test veth interface. + vethName := "foo" + veth := &netlink.Veth{LinkAttrs: netlink.LinkAttrs{Name: vethName, TxQLen: 200, MTU: 1400}, PeerName: "bar"} + + err = netlink.LinkAdd(veth) + assert.NoError(err) + + endpoint, err := createVethNetworkEndpoint(1, vethName, NetXConnectTCFilterModel) + assert.NoError(err) + + link, err := netlink.LinkByName(vethName) + assert.NoError(err) + + err = netHandle.LinkSetUp(link) + assert.NoError(err) + + err = setupTCFiltering(context.Background(), endpoint, 1, true) + assert.NoError(err) + + // 10Mb + maxRate := uint64(10000000) + err = addRxRateLimiter(endpoint, maxRate) + assert.NoError(err) + + currentNS, err := ns.GetCurrentNS() + assert.NoError(err) + + err = removeRxRateLimiter(endpoint, currentNS.Path()) + assert.NoError(err) + + err = removeTCFiltering(context.Background(), endpoint) + assert.NoError(err) + + // Remove the veth created for testing. + err = netHandle.LinkDel(link) + assert.NoError(err) +} + +func TestTxRateLimiter(t *testing.T) { + if tc.NotValid(ktu.NeedRoot()) { + t.Skip(testDisabledAsNonRoot) + } + + assert := assert.New(t) + + netHandle, err := netlink.NewHandle() + assert.NoError(err) + defer netHandle.Close() + + // Create a test veth interface. + vethName := "foo" + veth := &netlink.Veth{LinkAttrs: netlink.LinkAttrs{Name: vethName, TxQLen: 200, MTU: 1400}, PeerName: "bar"} + + err = netlink.LinkAdd(veth) + assert.NoError(err) + + endpoint, err := createVethNetworkEndpoint(1, vethName, NetXConnectTCFilterModel) + assert.NoError(err) + + link, err := netlink.LinkByName(vethName) + assert.NoError(err) + + err = netHandle.LinkSetUp(link) + assert.NoError(err) + + err = setupTCFiltering(context.Background(), endpoint, 1, true) + assert.NoError(err) + + // 10Mb + maxRate := uint64(10000000) + err = addTxRateLimiter(endpoint, maxRate) + assert.NoError(err) + + currentNS, err := ns.GetCurrentNS() + assert.NoError(err) + + err = removeTxRateLimiter(endpoint, currentNS.Path()) + assert.NoError(err) + + err = removeTCFiltering(context.Background(), endpoint) + assert.NoError(err) + + // Remove the veth created for testing. + err = netHandle.LinkDel(link) + assert.NoError(err) +} diff --git a/src/runtime/virtcontainers/network_test.go b/src/runtime/virtcontainers/network_test.go index bff91a062..be980ec16 100644 --- a/src/runtime/virtcontainers/network_test.go +++ b/src/runtime/virtcontainers/network_test.go @@ -6,121 +6,12 @@ package virtcontainers import ( - "context" - "fmt" "net" - "reflect" "testing" - "github.com/containernetworking/plugins/pkg/ns" - ktu "github.com/kata-containers/kata-containers/src/runtime/pkg/katatestutils" - pbTypes "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/agent/protocols" - "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/utils" "github.com/stretchr/testify/assert" - "github.com/vishvananda/netlink" ) -func TestGenerateInterfacesAndRoutes(t *testing.T) { - // - //Create a couple of addresses - // - address1 := &net.IPNet{IP: net.IPv4(172, 17, 0, 2), Mask: net.CIDRMask(16, 32)} - address2 := &net.IPNet{IP: net.IPv4(182, 17, 0, 2), Mask: net.CIDRMask(16, 32)} - address3 := &net.IPNet{IP: net.ParseIP("2001:db8:1::242:ac11:2"), Mask: net.CIDRMask(64, 128)} - - addrs := []netlink.Addr{ - {IPNet: address1, Label: "phyaddr1"}, - {IPNet: address2, Label: "phyaddr2"}, - {IPNet: address3, Label: "phyaddr3"}, - } - - // Create a couple of routes: - dst2 := &net.IPNet{IP: net.IPv4(172, 17, 0, 0), Mask: net.CIDRMask(16, 32)} - src2 := net.IPv4(172, 17, 0, 2) - gw2 := net.IPv4(172, 17, 0, 1) - - dstV6 := &net.IPNet{IP: net.ParseIP("2001:db8:1::"), Mask: net.CIDRMask(64, 128)} - gatewayV6 := net.ParseIP("2001:db8:1::1") - - routes := []netlink.Route{ - {LinkIndex: 329, Dst: nil, Src: nil, Gw: net.IPv4(172, 17, 0, 1), Scope: netlink.Scope(254)}, - {LinkIndex: 329, Dst: dst2, Src: src2, Gw: gw2}, - {LinkIndex: 329, Dst: dstV6, Src: nil, Gw: nil}, - {LinkIndex: 329, Dst: nil, Src: nil, Gw: gatewayV6}, - } - - arpMAC, _ := net.ParseMAC("6a:92:3a:59:70:aa") - - neighs := []netlink.Neigh{ - {LinkIndex: 329, IP: net.IPv4(192, 168, 0, 101), State: netlink.NUD_PERMANENT, HardwareAddr: arpMAC}, - } - - networkInfo := NetworkInfo{ - Iface: NetlinkIface{ - LinkAttrs: netlink.LinkAttrs{MTU: 1500}, - Type: "", - }, - Addrs: addrs, - Routes: routes, - Neighbors: neighs, - } - - ep0 := &PhysicalEndpoint{ - IfaceName: "eth0", - HardAddr: net.HardwareAddr{0x02, 0x00, 0xca, 0xfe, 0x00, 0x04}.String(), - EndpointProperties: networkInfo, - } - - endpoints := []Endpoint{ep0} - - nns, err := NewNetwork(&NetworkConfig{NetworkID: "foobar", NetworkCreated: true}) - assert.Nil(t, err) - nns.SetEndpoints(endpoints) - - resInterfaces, resRoutes, resNeighs, err := generateVCNetworkStructures(context.Background(), nns) - - // - // Build expected results: - // - expectedAddresses := []*pbTypes.IPAddress{ - {Family: utils.ConvertAddressFamily(netlink.FAMILY_V4), Address: "172.17.0.2", Mask: "16"}, - {Family: utils.ConvertAddressFamily(netlink.FAMILY_V4), Address: "182.17.0.2", Mask: "16"}, - {Family: utils.ConvertAddressFamily(netlink.FAMILY_V6), Address: "2001:db8:1::242:ac11:2", Mask: "64"}, - } - - expectedInterfaces := []*pbTypes.Interface{ - {Device: "eth0", Name: "eth0", IPAddresses: expectedAddresses, Mtu: 1500, HwAddr: "02:00:ca:fe:00:04"}, - } - - expectedRoutes := []*pbTypes.Route{ - {Dest: "", Gateway: "172.17.0.1", Device: "eth0", Source: "", Scope: uint32(254)}, - {Dest: "172.17.0.0/16", Gateway: "172.17.0.1", Device: "eth0", Source: "172.17.0.2"}, - {Dest: "2001:db8:1::/64", Gateway: "", Device: "eth0", Source: ""}, - {Dest: "", Gateway: "2001:db8:1::1", Device: "eth0", Source: ""}, - } - - expectedNeighs := []*pbTypes.ARPNeighbor{ - { - Device: "eth0", - State: netlink.NUD_PERMANENT, - Lladdr: "6a:92:3a:59:70:aa", - ToIPAddress: &pbTypes.IPAddress{Address: "192.168.0.101", Family: utils.ConvertAddressFamily(netlink.FAMILY_V4)}, - }, - } - - for _, r := range resRoutes { - fmt.Printf("resRoute: %+v\n", r) - } - - assert.Nil(t, err, "unexpected failure when calling generateKataInterfacesAndRoutes") - assert.True(t, reflect.DeepEqual(resInterfaces, expectedInterfaces), - "Interfaces returned didn't match: got %+v, expecting %+v", resInterfaces, expectedInterfaces) - assert.True(t, reflect.DeepEqual(resRoutes, expectedRoutes), - "Routes returned didn't match: got %+v, expecting %+v", resRoutes, expectedRoutes) - assert.True(t, reflect.DeepEqual(resNeighs, expectedNeighs), - "ARP Neighbors returned didn't match: got %+v, expecting %+v", resNeighs, expectedNeighs) -} - func TestNetInterworkingModelIsValid(t *testing.T) { tests := []struct { name string @@ -181,210 +72,3 @@ func TestGenerateRandomPrivateMacAdd(t *testing.T) { assert.NotEqual(addr1, addr2) } - -func TestCreateGetTunTapLink(t *testing.T) { - if tc.NotValid(ktu.NeedRoot()) { - t.Skip(testDisabledAsNonRoot) - } - - assert := assert.New(t) - - netHandle, err := netlink.NewHandle() - assert.NoError(err) - defer netHandle.Close() - - assert.NoError(err) - - tapName := "testtap0" - tapLink, fds, err := createLink(netHandle, tapName, &netlink.Tuntap{}, 1) - assert.NoError(err) - assert.NotNil(tapLink) - assert.NotZero(len(fds)) - - tapLink, err = getLinkByName(netHandle, tapName, &netlink.Tuntap{}) - assert.NoError(err) - - err = netHandle.LinkDel(tapLink) - assert.NoError(err) -} - -func TestCreateMacVtap(t *testing.T) { - if tc.NotValid(ktu.NeedRoot()) { - t.Skip(testDisabledAsNonRoot) - } - - assert := assert.New(t) - - netHandle, err := netlink.NewHandle() - assert.NoError(err) - defer netHandle.Close() - - assert.NoError(err) - - tapName := "testtap0" - tapLink, _, err := createLink(netHandle, tapName, &netlink.Tuntap{}, 1) - assert.NoError(err) - - attrs := tapLink.Attrs() - - mcLink := &netlink.Macvtap{ - Macvlan: netlink.Macvlan{ - LinkAttrs: netlink.LinkAttrs{ - TxQLen: attrs.TxQLen, - ParentIndex: attrs.Index, - }, - }, - } - - macvtapName := "testmc0" - _, err = createMacVtap(netHandle, macvtapName, mcLink, 1) - assert.NoError(err) - - macvtapLink, err := getLinkByName(netHandle, macvtapName, &netlink.Macvtap{}) - assert.NoError(err) - - err = netHandle.LinkDel(macvtapLink) - assert.NoError(err) - - tapLink, err = getLinkByName(netHandle, tapName, &netlink.Tuntap{}) - assert.NoError(err) - - err = netHandle.LinkDel(tapLink) - assert.NoError(err) -} - -func TestTcRedirectNetwork(t *testing.T) { - if tc.NotValid(ktu.NeedRoot()) { - t.Skip(testDisabledAsNonRoot) - } - - assert := assert.New(t) - - netHandle, err := netlink.NewHandle() - assert.NoError(err) - defer netHandle.Close() - - // Create a test veth interface. - vethName := "foo" - veth := &netlink.Veth{LinkAttrs: netlink.LinkAttrs{Name: vethName, TxQLen: 200, MTU: 1400}, PeerName: "bar"} - - err = netlink.LinkAdd(veth) - assert.NoError(err) - - endpoint, err := createVethNetworkEndpoint(1, vethName, NetXConnectTCFilterModel) - assert.NoError(err) - - link, err := netlink.LinkByName(vethName) - assert.NoError(err) - - err = netHandle.LinkSetUp(link) - assert.NoError(err) - - err = setupTCFiltering(context.Background(), endpoint, 1, true) - assert.NoError(err) - - err = removeTCFiltering(context.Background(), endpoint) - assert.NoError(err) - - // Remove the veth created for testing. - err = netHandle.LinkDel(link) - assert.NoError(err) -} - -func TestRxRateLimiter(t *testing.T) { - if tc.NotValid(ktu.NeedRoot()) { - t.Skip(testDisabledAsNonRoot) - } - - assert := assert.New(t) - - netHandle, err := netlink.NewHandle() - assert.NoError(err) - defer netHandle.Close() - - // Create a test veth interface. - vethName := "foo" - veth := &netlink.Veth{LinkAttrs: netlink.LinkAttrs{Name: vethName, TxQLen: 200, MTU: 1400}, PeerName: "bar"} - - err = netlink.LinkAdd(veth) - assert.NoError(err) - - endpoint, err := createVethNetworkEndpoint(1, vethName, NetXConnectTCFilterModel) - assert.NoError(err) - - link, err := netlink.LinkByName(vethName) - assert.NoError(err) - - err = netHandle.LinkSetUp(link) - assert.NoError(err) - - err = setupTCFiltering(context.Background(), endpoint, 1, true) - assert.NoError(err) - - // 10Mb - maxRate := uint64(10000000) - err = addRxRateLimiter(endpoint, maxRate) - assert.NoError(err) - - currentNS, err := ns.GetCurrentNS() - assert.NoError(err) - - err = removeRxRateLimiter(endpoint, currentNS.Path()) - assert.NoError(err) - - err = removeTCFiltering(context.Background(), endpoint) - assert.NoError(err) - - // Remove the veth created for testing. - err = netHandle.LinkDel(link) - assert.NoError(err) -} - -func TestTxRateLimiter(t *testing.T) { - if tc.NotValid(ktu.NeedRoot()) { - t.Skip(testDisabledAsNonRoot) - } - - assert := assert.New(t) - - netHandle, err := netlink.NewHandle() - assert.NoError(err) - defer netHandle.Close() - - // Create a test veth interface. - vethName := "foo" - veth := &netlink.Veth{LinkAttrs: netlink.LinkAttrs{Name: vethName, TxQLen: 200, MTU: 1400}, PeerName: "bar"} - - err = netlink.LinkAdd(veth) - assert.NoError(err) - - endpoint, err := createVethNetworkEndpoint(1, vethName, NetXConnectTCFilterModel) - assert.NoError(err) - - link, err := netlink.LinkByName(vethName) - assert.NoError(err) - - err = netHandle.LinkSetUp(link) - assert.NoError(err) - - err = setupTCFiltering(context.Background(), endpoint, 1, true) - assert.NoError(err) - - // 10Mb - maxRate := uint64(10000000) - err = addTxRateLimiter(endpoint, maxRate) - assert.NoError(err) - - currentNS, err := ns.GetCurrentNS() - assert.NoError(err) - - err = removeTxRateLimiter(endpoint, currentNS.Path()) - assert.NoError(err) - - err = removeTCFiltering(context.Background(), endpoint) - assert.NoError(err) - - // Remove the veth created for testing. - err = netHandle.LinkDel(link) - assert.NoError(err) -} From 2c7087ff429fd805c23248786c6677831f4ea558 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Thu, 25 Nov 2021 09:00:52 +0100 Subject: [PATCH 370/385] virtcontainers: Make all endpoints Linux only All of the networking endpoints are Linux specific. Signed-off-by: Samuel Ortiz --- src/runtime/virtcontainers/ipvlan_endpoint.go | 2 ++ src/runtime/virtcontainers/ipvlan_endpoint_test.go | 2 ++ src/runtime/virtcontainers/macvlan_endpoint.go | 2 ++ src/runtime/virtcontainers/macvlan_endpoint_test.go | 2 ++ src/runtime/virtcontainers/macvtap_endpoint.go | 2 ++ src/runtime/virtcontainers/macvtap_endpoint_test.go | 2 ++ src/runtime/virtcontainers/physical_endpoint.go | 2 ++ src/runtime/virtcontainers/physical_endpoint_test.go | 2 ++ src/runtime/virtcontainers/tap_endpoint.go | 2 ++ src/runtime/virtcontainers/tuntap_endpoint.go | 2 ++ src/runtime/virtcontainers/veth_endpoint.go | 2 ++ src/runtime/virtcontainers/veth_endpoint_test.go | 2 ++ src/runtime/virtcontainers/vhostuser_endpoint.go | 2 ++ src/runtime/virtcontainers/vhostuser_endpoint_test.go | 2 ++ 14 files changed, 28 insertions(+) diff --git a/src/runtime/virtcontainers/ipvlan_endpoint.go b/src/runtime/virtcontainers/ipvlan_endpoint.go index 4f8f8a115..f9196cda3 100644 --- a/src/runtime/virtcontainers/ipvlan_endpoint.go +++ b/src/runtime/virtcontainers/ipvlan_endpoint.go @@ -1,3 +1,5 @@ +// +build linux +// // Copyright (c) 2018 Intel Corporation // // SPDX-License-Identifier: Apache-2.0 diff --git a/src/runtime/virtcontainers/ipvlan_endpoint_test.go b/src/runtime/virtcontainers/ipvlan_endpoint_test.go index 650ae14f6..0f26119b6 100644 --- a/src/runtime/virtcontainers/ipvlan_endpoint_test.go +++ b/src/runtime/virtcontainers/ipvlan_endpoint_test.go @@ -1,3 +1,5 @@ +// +build linux +// // Copyright (c) 2018 Intel Corporation // // SPDX-License-Identifier: Apache-2.0 diff --git a/src/runtime/virtcontainers/macvlan_endpoint.go b/src/runtime/virtcontainers/macvlan_endpoint.go index 4b86ede16..228ec3351 100644 --- a/src/runtime/virtcontainers/macvlan_endpoint.go +++ b/src/runtime/virtcontainers/macvlan_endpoint.go @@ -1,3 +1,5 @@ +// +build linux +// // Copyright (c) 2018 Intel Corporation // // SPDX-License-Identifier: Apache-2.0 diff --git a/src/runtime/virtcontainers/macvlan_endpoint_test.go b/src/runtime/virtcontainers/macvlan_endpoint_test.go index f490aff47..2f421b6b7 100644 --- a/src/runtime/virtcontainers/macvlan_endpoint_test.go +++ b/src/runtime/virtcontainers/macvlan_endpoint_test.go @@ -1,3 +1,5 @@ +// +build linux +// // Copyright (c) 2018 Intel Corporation // // SPDX-License-Identifier: Apache-2.0 diff --git a/src/runtime/virtcontainers/macvtap_endpoint.go b/src/runtime/virtcontainers/macvtap_endpoint.go index 0124a2360..e64076341 100644 --- a/src/runtime/virtcontainers/macvtap_endpoint.go +++ b/src/runtime/virtcontainers/macvtap_endpoint.go @@ -1,3 +1,5 @@ +// +build linux +// // Copyright (c) 2018 Intel Corporation // // SPDX-License-Identifier: Apache-2.0 diff --git a/src/runtime/virtcontainers/macvtap_endpoint_test.go b/src/runtime/virtcontainers/macvtap_endpoint_test.go index f8707c691..0f9283f79 100644 --- a/src/runtime/virtcontainers/macvtap_endpoint_test.go +++ b/src/runtime/virtcontainers/macvtap_endpoint_test.go @@ -1,3 +1,5 @@ +// +build linux +// // Copyright (c) 2018 Intel Corporation // // SPDX-License-Identifier: Apache-2.0 diff --git a/src/runtime/virtcontainers/physical_endpoint.go b/src/runtime/virtcontainers/physical_endpoint.go index 234705f61..1ab193006 100644 --- a/src/runtime/virtcontainers/physical_endpoint.go +++ b/src/runtime/virtcontainers/physical_endpoint.go @@ -1,3 +1,5 @@ +// +build linux +// // Copyright (c) 2018 Intel Corporation // // SPDX-License-Identifier: Apache-2.0 diff --git a/src/runtime/virtcontainers/physical_endpoint_test.go b/src/runtime/virtcontainers/physical_endpoint_test.go index b2d399696..7e823f6f7 100644 --- a/src/runtime/virtcontainers/physical_endpoint_test.go +++ b/src/runtime/virtcontainers/physical_endpoint_test.go @@ -1,3 +1,5 @@ +// +build linux +// // Copyright (c) 2018 Intel Corporation // // SPDX-License-Identifier: Apache-2.0 diff --git a/src/runtime/virtcontainers/tap_endpoint.go b/src/runtime/virtcontainers/tap_endpoint.go index 836b7a317..75c6e3273 100644 --- a/src/runtime/virtcontainers/tap_endpoint.go +++ b/src/runtime/virtcontainers/tap_endpoint.go @@ -1,3 +1,5 @@ +// +build linux +// // Copyright (c) 2018 Huawei Corporation // // SPDX-License-Identifier: Apache-2.0 diff --git a/src/runtime/virtcontainers/tuntap_endpoint.go b/src/runtime/virtcontainers/tuntap_endpoint.go index 6573082ed..9d51f2f72 100644 --- a/src/runtime/virtcontainers/tuntap_endpoint.go +++ b/src/runtime/virtcontainers/tuntap_endpoint.go @@ -1,3 +1,5 @@ +// +build linux +// // Copyright (c) 2018 Huawei Corporation // Copyright (c) 2019 Intel Corporation // diff --git a/src/runtime/virtcontainers/veth_endpoint.go b/src/runtime/virtcontainers/veth_endpoint.go index ffeb86992..2dd7a4b08 100644 --- a/src/runtime/virtcontainers/veth_endpoint.go +++ b/src/runtime/virtcontainers/veth_endpoint.go @@ -1,3 +1,5 @@ +// +build linux +// // Copyright (c) 2018 Intel Corporation // // SPDX-License-Identifier: Apache-2.0 diff --git a/src/runtime/virtcontainers/veth_endpoint_test.go b/src/runtime/virtcontainers/veth_endpoint_test.go index 64bfb1555..c9295af97 100644 --- a/src/runtime/virtcontainers/veth_endpoint_test.go +++ b/src/runtime/virtcontainers/veth_endpoint_test.go @@ -1,3 +1,5 @@ +// +build linux +// // Copyright (c) 2018 Intel Corporation // // SPDX-License-Identifier: Apache-2.0 diff --git a/src/runtime/virtcontainers/vhostuser_endpoint.go b/src/runtime/virtcontainers/vhostuser_endpoint.go index a564e58c6..8d317adf3 100644 --- a/src/runtime/virtcontainers/vhostuser_endpoint.go +++ b/src/runtime/virtcontainers/vhostuser_endpoint.go @@ -1,3 +1,5 @@ +// +build linux +// // Copyright (c) 2018 Intel Corporation // // SPDX-License-Identifier: Apache-2.0 diff --git a/src/runtime/virtcontainers/vhostuser_endpoint_test.go b/src/runtime/virtcontainers/vhostuser_endpoint_test.go index e60011903..783c646bc 100644 --- a/src/runtime/virtcontainers/vhostuser_endpoint_test.go +++ b/src/runtime/virtcontainers/vhostuser_endpoint_test.go @@ -1,3 +1,5 @@ +// +build linux +// // Copyright (c) 2018 Intel Corporation // // SPDX-License-Identifier: Apache-2.0 From 07b9d93f5f94673921dc833167710178a42c0d71 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Thu, 3 Feb 2022 08:05:35 +0000 Subject: [PATCH 371/385] virtcontainer: Simplify the sandbox network creation flow We don't need to call NewNetwork() twice, and we can have the VM factory case return immediatly. That makes the code more readable. Signed-off-by: Samuel Ortiz --- src/runtime/virtcontainers/sandbox.go | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/src/runtime/virtcontainers/sandbox.go b/src/runtime/virtcontainers/sandbox.go index ec6a3d780..9c7ebaf1a 100644 --- a/src/runtime/virtcontainers/sandbox.go +++ b/src/runtime/virtcontainers/sandbox.go @@ -804,24 +804,19 @@ func (s *Sandbox) createNetwork(ctx context.Context) error { span, ctx := katatrace.Trace(ctx, s.Logger(), "createNetwork", sandboxTracingTags, map[string]string{"sandbox_id": s.id}) defer span.End() - - network, err := NewNetwork(&s.config.NetworkConfig) - if err != nil { - return err - } - - s.network = network - katatrace.AddTags(span, "network", s.network, "NetworkConfig", s.config.NetworkConfig) // In case there is a factory, network interfaces are hotplugged - // after vm is started. - if s.factory == nil { - // Add the network - if _, err := s.network.AddEndpoints(ctx, s, nil, false); err != nil { - return err - } + // after the vm is started. + if s.factory != nil { + return nil } + + // Add all the networking endpoints. + if _, err := s.network.AddEndpoints(ctx, s, nil, false); err != nil { + return err + } + return nil } From 54e1faec4c0826eb2142288aa6c514132f13ecbc Mon Sep 17 00:00:00 2001 From: zhanghj Date: Wed, 9 Feb 2022 17:13:04 +0800 Subject: [PATCH 372/385] scripts: fix a typo while to check build_type check $build_type is not an empty string instead of equal to "true". Fixes: #3635 Signed-off-by: zhanghj --- tools/packaging/kernel/build-kernel.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/packaging/kernel/build-kernel.sh b/tools/packaging/kernel/build-kernel.sh index 0aa831f65..0e158e7c4 100755 --- a/tools/packaging/kernel/build-kernel.sh +++ b/tools/packaging/kernel/build-kernel.sh @@ -352,7 +352,7 @@ setup_kernel() { ${packaging_scripts_dir}/apply_patches.sh "${patches_dir_for_version}" # Apply version specific patches for build_type build - if [ "${build_type}" == "true" ] ;then + if [ "${build_type}" != "" ] ;then info "Apply build_type patches from ${build_type_patches_dir}" ${packaging_scripts_dir}/apply_patches.sh "${build_type_patches_dir}" fi From 40aa43f429625de9137ea144c780462f0fe66121 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B6xtermann?= Date: Thu, 3 Feb 2022 17:34:58 +0100 Subject: [PATCH 373/385] docs: Update link to EFK stack docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #3616 Signed-off-by: Daniel Höxtermann --- docs/how-to/how-to-import-kata-logs-with-fluentd.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/how-to/how-to-import-kata-logs-with-fluentd.md b/docs/how-to/how-to-import-kata-logs-with-fluentd.md index 419253022..af595e853 100644 --- a/docs/how-to/how-to-import-kata-logs-with-fluentd.md +++ b/docs/how-to/how-to-import-kata-logs-with-fluentd.md @@ -4,7 +4,7 @@ This document describes how to import Kata Containers logs into [Fluentd](https://www.fluentd.org/), typically for importing into an -Elastic/Fluentd/Kibana([EFK](https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/fluentd-elasticsearch#running-efk-stack-in-production)) +Elastic/Fluentd/Kibana([EFK](https://github.com/kubernetes-sigs/instrumentation-addons/tree/master/fluentd-elasticsearch#running-efk-stack-in-production)) or Elastic/Logstash/Kibana([ELK](https://www.elastic.co/elastic-stack)) stack. The majority of this document focusses on CRI-O based (classic) Kata runtime. Much of that information From 982f14fa664c05998121dceb2efd2ca6683dbd68 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Thu, 3 Feb 2022 14:42:16 -0600 Subject: [PATCH 374/385] runtime: support QEMU SGX Enable SGX in QEMU when `sgx.intel.com/epc` annotation is defined fixes #3436 Signed-off-by: Julio Montes --- src/runtime/virtcontainers/qemu_amd64.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/runtime/virtcontainers/qemu_amd64.go b/src/runtime/virtcontainers/qemu_amd64.go index b2d6b2004..757065961 100644 --- a/src/runtime/virtcontainers/qemu_amd64.go +++ b/src/runtime/virtcontainers/qemu_amd64.go @@ -24,6 +24,8 @@ type qemuAmd64 struct { vmFactory bool devLoadersCount uint32 + + sgxEPCSize int64 } const ( @@ -140,6 +142,17 @@ func newQemuArch(config HypervisorConfig) (qemuArch, error) { } } + if config.SGXEPCSize != 0 { + q.sgxEPCSize = config.SGXEPCSize + if q.qemuMachine.Options != "" { + q.qemuMachine.Options += "," + } + // qemu sandboxes will only support one EPC per sandbox + // this is because there is only one annotation (sgx.intel.com/epc) + // to specify the size of the EPC. + q.qemuMachine.Options += "sgx-epc.0.memdev=epc0,sgx-epc.0.node=0" + } + q.handleImagePath(config) return q, nil @@ -233,6 +246,16 @@ func (q *qemuAmd64) enableProtection() error { // append protection device func (q *qemuAmd64) appendProtectionDevice(devices []govmmQemu.Device, firmware, firmwareVolume string) ([]govmmQemu.Device, string, error) { + if q.sgxEPCSize != 0 { + devices = append(devices, + govmmQemu.Object{ + Type: govmmQemu.MemoryBackendEPC, + ID: "epc0", + Prealloc: true, + Size: uint64(q.sgxEPCSize), + }) + } + switch q.protection { case tdxProtection: id := q.devLoadersCount From 0b2bd64124425817d7b7b7ad36054070aa83e4f6 Mon Sep 17 00:00:00 2001 From: David Gibson Date: Fri, 11 Feb 2022 11:53:00 +1100 Subject: [PATCH 375/385] device: Rework update_spec_pci() to update_env_pci() This function updates PCIDEVICE_ environment variables (such as those supplied by the Kubernetes SR-IOV plugin) in the OCI spec to be correct for the Kata VM, rather than for the host. We neglected to actually call this function, however, and it turns out that when we do, we need to do things slightly different. We actually need to adjust envionment variables both in the OCI spec when creating a container and also in the variables supplied for exec-ing a new process within an existing container. Adjust the function so that it can be used for both these cases. Signed-off-by: David Gibson --- src/agent/src/device.rs | 76 ++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 43 deletions(-) diff --git a/src/agent/src/device.rs b/src/agent/src/device.rs index 629cc3fc2..813c4d569 100644 --- a/src/agent/src/device.rs +++ b/src/agent/src/device.rs @@ -592,38 +592,35 @@ fn update_spec_devices(spec: &mut Spec, mut updates: HashMap<&str, DevUpdate>) - Ok(()) } -// update_spec_pci PCI addresses in the OCI spec to be guest addresses -// instead of host addresses. It is given a map of (host address => -// guest address) +// update_env_pci alters PCI addresses in a set of environment +// variables to be correct for the VM instead of the host. It is +// given a map of (host address => guest address) #[instrument] -fn update_spec_pci(spec: &mut Spec, updates: HashMap) -> Result<()> { - // Correct PCI addresses in the environment - if let Some(process) = spec.process.as_mut() { - for envvar in process.env.iter_mut() { - let eqpos = envvar - .find('=') - .ok_or_else(|| anyhow!("Malformed OCI env entry {:?}", envvar))?; +fn update_env_pci(env: &mut [String], pcimap: &HashMap) -> Result<()> { + for envvar in env { + let eqpos = envvar + .find('=') + .ok_or_else(|| anyhow!("Malformed OCI env entry {:?}", envvar))?; - let (name, eqval) = envvar.split_at(eqpos); - let val = &eqval[1..]; + let (name, eqval) = envvar.split_at(eqpos); + let val = &eqval[1..]; - if !name.starts_with("PCIDEVICE_") { - continue; - } - - let mut guest_addrs = Vec::::new(); - - for host_addr in val.split(',') { - let host_addr = pci::Address::from_str(host_addr) - .with_context(|| format!("Can't parse {} environment variable", name))?; - let guest_addr = updates - .get(&host_addr) - .ok_or_else(|| anyhow!("Unable to translate host PCI address {}", host_addr))?; - guest_addrs.push(format!("{}", guest_addr)); - } - - envvar.replace_range(eqpos + 1.., guest_addrs.join(",").as_str()); + if !name.starts_with("PCIDEVICE_") { + continue; } + + let mut guest_addrs = Vec::::new(); + + for host_addr in val.split(',') { + let host_addr = pci::Address::from_str(host_addr) + .with_context(|| format!("Can't parse {} environment variable", name))?; + let guest_addr = pcimap + .get(&host_addr) + .ok_or_else(|| anyhow!("Unable to translate host PCI address {}", host_addr))?; + guest_addrs.push(format!("{}", guest_addr)); + } + + envvar.replace_range(eqpos + 1.., guest_addrs.join(",").as_str()); } Ok(()) @@ -860,7 +857,7 @@ pub fn update_device_cgroup(spec: &mut Spec) -> Result<()> { mod tests { use super::*; use crate::uevent::spawn_test_watcher; - use oci::{Linux, Process}; + use oci::Linux; use std::iter::FromIterator; use tempfile::tempdir; @@ -1199,7 +1196,7 @@ mod tests { } #[test] - fn test_update_spec_pci() { + fn test_update_env_pci() { let example_map = [ // Each is a host,guest pair of pci addresses ("0000:1a:01.0", "0000:01:01.0"), @@ -1209,17 +1206,11 @@ mod tests { ("0000:01:01.0", "ffff:02:1f.7"), ]; - let mut spec = Spec { - process: Some(Process { - env: vec![ - "PCIDEVICE_x=0000:1a:01.0,0000:1b:02.0".to_string(), - "PCIDEVICE_y=0000:01:01.0".to_string(), - "NOTAPCIDEVICE_blah=abcd:ef:01.0".to_string(), - ], - ..Process::default() - }), - ..Spec::default() - }; + let mut env = vec![ + "PCIDEVICE_x=0000:1a:01.0,0000:1b:02.0".to_string(), + "PCIDEVICE_y=0000:01:01.0".to_string(), + "NOTAPCIDEVICE_blah=abcd:ef:01.0".to_string(), + ]; let pci_fixups = example_map .iter() @@ -1231,10 +1222,9 @@ mod tests { }) .collect(); - let res = update_spec_pci(&mut spec, pci_fixups); + let res = update_env_pci(&mut env, &pci_fixups); assert!(res.is_ok()); - let env = &spec.process.as_ref().unwrap().env; assert_eq!(env[0], "PCIDEVICE_x=0000:01:01.0,0000:01:02.0"); assert_eq!(env[1], "PCIDEVICE_y=ffff:02:1f.7"); assert_eq!(env[2], "NOTAPCIDEVICE_blah=abcd:ef:01.0"); From 7b7f426a3f5d1838cedc3dc9520035edb2cc6995 Mon Sep 17 00:00:00 2001 From: David Gibson Date: Fri, 11 Feb 2022 12:07:21 +1100 Subject: [PATCH 376/385] device: Keep host to VM PCI mapping persistently add_devices() generates a mapping of host to guest PCI addresses which is used to update some environment variables for the workload. Currently it just does this locally, but it turns out we're going to need the same map again in order to correct environment variables for processes exec-ed into the existing container. Move the map to the sandbox structure so we can keep it around for those later uses. Signed-off-by: David Gibson --- src/agent/src/device.rs | 4 ++-- src/agent/src/sandbox.rs | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/agent/src/device.rs b/src/agent/src/device.rs index 813c4d569..ad181141c 100644 --- a/src/agent/src/device.rs +++ b/src/agent/src/device.rs @@ -765,7 +765,6 @@ pub async fn add_devices( sandbox: &Arc>, ) -> Result<()> { let mut dev_updates = HashMap::<&str, DevUpdate>::with_capacity(devices.len()); - let mut pci_updates = HashMap::::new(); for device in devices.iter() { let update = add_device(device, sandbox).await?; @@ -780,8 +779,9 @@ pub async fn add_devices( )); } + let mut sb = sandbox.lock().await; for (host, guest) in update.pci { - if let Some(other_guest) = pci_updates.insert(host, guest) { + if let Some(other_guest) = sb.pcimap.insert(host, guest) { return Err(anyhow!( "Conflicting guest address for host device {} ({} versus {})", host, diff --git a/src/agent/src/sandbox.rs b/src/agent/src/sandbox.rs index 4dfb2eda5..3edbe7ea0 100644 --- a/src/agent/src/sandbox.rs +++ b/src/agent/src/sandbox.rs @@ -8,6 +8,7 @@ use crate::mount::{get_mount_fs_type, remove_mounts, TYPE_ROOTFS}; use crate::namespace::Namespace; use crate::netlink::Handle; use crate::network::Network; +use crate::pci; use crate::uevent::{Uevent, UeventMatcher}; use crate::watcher::BindWatcher; use anyhow::{anyhow, Context, Result}; @@ -56,6 +57,7 @@ pub struct Sandbox { pub event_rx: Arc>>, pub event_tx: Option>, pub bind_watcher: BindWatcher, + pub pcimap: HashMap, } impl Sandbox { @@ -88,6 +90,7 @@ impl Sandbox { event_rx, event_tx: Some(tx), bind_watcher: BindWatcher::new(), + pcimap: HashMap::new(), }) } From 9590874d9caac7537c5f3a13f797a2fbf5a7553b Mon Sep 17 00:00:00 2001 From: David Gibson Date: Fri, 11 Feb 2022 12:29:43 +1100 Subject: [PATCH 377/385] device: Update PCIDEVICE_ environment variables for the guest In commit 78dff468bf1 we introduced logic to rewrite PCIDEVICE_ environment variables for the container so that they contain correct addresses for the Kata VM rather than for the host. Unfortunately, we never actually invoked the function to do this. It turns out we need to do this not only at container creation time, but also for environment variables supplied to processes exec-ed into the container after creation (e.g. with crictl exec). Add calls to make both those updates. fixes #3634 Signed-off-by: David Gibson --- src/agent/src/device.rs | 8 +++++++- src/agent/src/rpc.rs | 9 +++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/agent/src/device.rs b/src/agent/src/device.rs index ad181141c..31c5c120b 100644 --- a/src/agent/src/device.rs +++ b/src/agent/src/device.rs @@ -596,7 +596,10 @@ fn update_spec_devices(spec: &mut Spec, mut updates: HashMap<&str, DevUpdate>) - // variables to be correct for the VM instead of the host. It is // given a map of (host address => guest address) #[instrument] -fn update_env_pci(env: &mut [String], pcimap: &HashMap) -> Result<()> { +pub fn update_env_pci( + env: &mut [String], + pcimap: &HashMap, +) -> Result<()> { for envvar in env { let eqpos = envvar .find('=') @@ -793,6 +796,9 @@ pub async fn add_devices( } } + if let Some(process) = spec.process.as_mut() { + update_env_pci(&mut process.env, &sandbox.lock().await.pcimap)? + } update_spec_devices(spec, dev_updates) } diff --git a/src/agent/src/rpc.rs b/src/agent/src/rpc.rs index 444be723c..276746b9f 100644 --- a/src/agent/src/rpc.rs +++ b/src/agent/src/rpc.rs @@ -43,7 +43,9 @@ use nix::sys::stat; use nix::unistd::{self, Pid}; use rustjail::process::ProcessOperations; -use crate::device::{add_devices, get_virtio_blk_pci_device_name, update_device_cgroup}; +use crate::device::{ + add_devices, get_virtio_blk_pci_device_name, update_device_cgroup, update_env_pci, +}; use crate::linux_abi::*; use crate::metrics::get_metrics; use crate::mount::{add_storages, baremount, remove_mounts, STORAGE_HANDLER_LIST}; @@ -359,11 +361,14 @@ impl AgentService { let s = self.sandbox.clone(); let mut sandbox = s.lock().await; - let process = req + let mut process = req .process .into_option() .ok_or_else(|| anyhow!(nix::Error::EINVAL))?; + // Apply any necessary corrections for PCI addresses + update_env_pci(&mut process.Env, &sandbox.pcimap)?; + let pipe_size = AGENT_CONFIG.read().await.container_pipe_size; let ocip = rustjail::process_grpc_to_oci(&process); let p = Process::new(&sl!(), &ocip, exec_id.as_str(), false, pipe_size)?; From b19b6938a8efa37db2d4e84c0fccb77e4f5761ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B6xtermann?= Date: Thu, 3 Feb 2022 12:36:25 +0100 Subject: [PATCH 378/385] docs: Fix relative links in Markdown MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Relative links within this repository allow for easier navigation to the corresponding file / directory in the current commit / for the selected version. Link text was slightly changed / fixed in - docs/Unit-Test-Advice.md - docs/how-to/how-to-run-docker-with-kata.md Fixes #3045 Signed-off-by: Daniel Höxtermann --- docs/Release-Process.md | 2 +- docs/Unit-Test-Advice.md | 2 +- docs/code-pr-advice.md | 2 +- docs/how-to/how-to-import-kata-logs-with-fluentd.md | 2 +- docs/how-to/how-to-run-docker-with-kata.md | 4 ++-- docs/how-to/how-to-use-virtio-fs-with-kata.md | 2 +- docs/install/minikube-installation-guide.md | 4 ++-- docs/install/snap-installation-guide.md | 4 ++-- docs/tracing.md | 6 +++--- docs/use-cases/using-Intel-QAT-and-kata.md | 6 +++--- docs/use-cases/using-Intel-SGX-and-kata.md | 2 +- src/runtime/README.md | 4 ++-- tools/osbuilder/rootfs-builder/README.md | 2 +- 13 files changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/Release-Process.md b/docs/Release-Process.md index 3fc2f324a..9dfc37041 100644 --- a/docs/Release-Process.md +++ b/docs/Release-Process.md @@ -65,7 +65,7 @@ ### Check Git-hub Actions - We make use of [GitHub actions](https://github.com/features/actions) in this [file](https://github.com/kata-containers/kata-containers/blob/main/.github/workflows/release.yaml) in the `kata-containers/kata-containers` repository to build and upload release artifacts. This action is auto triggered with the above step when a new tag is pushed to the `kata-containers/kata-containers` repository. + We make use of [GitHub actions](https://github.com/features/actions) in this [file](../.github/workflows/release.yaml) in the `kata-containers/kata-containers` repository to build and upload release artifacts. This action is auto triggered with the above step when a new tag is pushed to the `kata-containers/kata-containers` repository. Check the [actions status page](https://github.com/kata-containers/kata-containers/actions) to verify all steps in the actions workflow have completed successfully. On success, a static tarball containing Kata release artifacts will be uploaded to the [Release page](https://github.com/kata-containers/kata-containers/releases). diff --git a/docs/Unit-Test-Advice.md b/docs/Unit-Test-Advice.md index 8cbf3163f..8b02bcc8f 100644 --- a/docs/Unit-Test-Advice.md +++ b/docs/Unit-Test-Advice.md @@ -337,7 +337,7 @@ will run if the correct type of user is detected and skipped if not. The main repository has the most comprehensive set of skip abilities. See: -- https://github.com/kata-containers/kata-containers/tree/main/src/runtime/pkg/katatestutils +- [`katatestutils`](../src/runtime/pkg/katatestutils) ### Run Rust tests as a different user diff --git a/docs/code-pr-advice.md b/docs/code-pr-advice.md index 1b5aac068..57aac6f8c 100644 --- a/docs/code-pr-advice.md +++ b/docs/code-pr-advice.md @@ -154,7 +154,7 @@ func testFoo() error { ### Tracing Consider if the code needs to create a new -[trace span](https://github.com/kata-containers/kata-containers/blob/main/docs/tracing.md). +[trace span](./tracing.md). Ensure any new trace spans added to the code are completed. diff --git a/docs/how-to/how-to-import-kata-logs-with-fluentd.md b/docs/how-to/how-to-import-kata-logs-with-fluentd.md index af595e853..279a69aa6 100644 --- a/docs/how-to/how-to-import-kata-logs-with-fluentd.md +++ b/docs/how-to/how-to-import-kata-logs-with-fluentd.md @@ -257,7 +257,7 @@ go directly to a full Kata specific JSON format logfile test. Kata runtime has the ability to generate JSON logs directly, rather than its default `logfmt` format. Passing the `--log-format=json` argument to the Kata runtime enables this. The easiest way to pass in this extra -parameter from a [Kata deploy](https://github.com/kata-containers/kata-containers/tree/main/tools/packaging/kata-deploy) installation +parameter from a [Kata deploy](../../tools/packaging/kata-deploy) installation is to edit the `/opt/kata/bin/kata-qemu` shell script. At the same time, we will add the `--log=/var/log/kata-runtime.log` argument to store the Kata logs in their diff --git a/docs/how-to/how-to-run-docker-with-kata.md b/docs/how-to/how-to-run-docker-with-kata.md index d01c6f921..3f5e11471 100644 --- a/docs/how-to/how-to-run-docker-with-kata.md +++ b/docs/how-to/how-to-run-docker-with-kata.md @@ -22,7 +22,7 @@ You can learn more about about Docker-in-Docker at the following links: - [`docker` image Docker Hub page](https://hub.docker.com/_/docker/) (this page lists the `-dind` releases) While normally DinD refers to running `docker` from inside a Docker container, -Kata Containers 2.x allows only supported runtimes (such as [`containerd`](../install/container-manager/containerd/containerd-install.md)). +Kata Containers 2.x allows only [supported runtimes][kata-2.x-supported-runtimes] (such as [`containerd`](../install/container-manager/containerd/containerd-install.md)). Running `docker` in a Kata Container implies creating Docker containers from inside a container managed by `containerd` (or another supported container manager), as illustrated below: @@ -37,7 +37,7 @@ container manager -> Kata Containers shim -> Docker Daemon -> Docker contain [OverlayFS]: https://www.kernel.org/doc/html/latest/filesystems/overlayfs.html [v2.0.0]: https://github.com/kata-containers/kata-containers/releases/tag/2.0.0 -[kata-2.x-supported-runtimes]: https://github.com/kata-containers/kata-containers/blob/5737b36a3513f4da11a9dc7301b0c97ea22a51cf/docs/install/container-manager/containerd/containerd-install.md +[kata-2.x-supported-runtimes]: ../install/container-manager/containerd/containerd-install.md ## Why Docker in Kata Containers 2.x requires special measures diff --git a/docs/how-to/how-to-use-virtio-fs-with-kata.md b/docs/how-to/how-to-use-virtio-fs-with-kata.md index 732b315c2..4337b3743 100644 --- a/docs/how-to/how-to-use-virtio-fs-with-kata.md +++ b/docs/how-to/how-to-use-virtio-fs-with-kata.md @@ -6,4 +6,4 @@ Container deployments utilize explicit or implicit file sharing between host fil As of the 2.0 release of Kata Containers, [virtio-fs](https://virtio-fs.gitlab.io/) is the default filesystem sharing mechanism. -virtio-fs support works out of the box for `cloud-hypervisor` and `qemu`, when Kata Containers is deployed using `kata-deploy`. Learn more about `kata-deploy` and how to use `kata-deploy` in Kubernetes [here](https://github.com/kata-containers/kata-containers/tree/main/tools/packaging/kata-deploy#kubernetes-quick-start). +virtio-fs support works out of the box for `cloud-hypervisor` and `qemu`, when Kata Containers is deployed using `kata-deploy`. Learn more about `kata-deploy` and how to use `kata-deploy` in Kubernetes [here](../../tools/packaging/kata-deploy/README.md#kubernetes-quick-start). diff --git a/docs/install/minikube-installation-guide.md b/docs/install/minikube-installation-guide.md index 9695cde60..7bc80b4b8 100644 --- a/docs/install/minikube-installation-guide.md +++ b/docs/install/minikube-installation-guide.md @@ -6,7 +6,7 @@ cluster locally. It creates a single node Kubernetes stack in a local VM. [Kata Containers](https://github.com/kata-containers) can be installed into a Minikube cluster using -[`kata-deploy`](https://github.com/kata-containers/kata-containers/tree/main/tools/packaging/kata-deploy). +[`kata-deploy`](../../tools/packaging/kata-deploy). This document details the pre-requisites, installation steps, and how to check the installation has been successful. @@ -123,7 +123,7 @@ $ kubectl apply -f kata-deploy/base/kata-deploy.yaml This installs the Kata Containers components into `/opt/kata` inside the Minikube node. It can take a few minutes for the operation to complete. You can check the installation has worked by checking the status of the `kata-deploy` pod, which will be executing -[this script](https://github.com/kata-containers/kata-containers/tree/main/tools/packaging/kata-deploy/scripts/kata-deploy.sh), +[this script](../../tools/packaging/kata-deploy/scripts/kata-deploy.sh), and will be executing a `sleep infinity` once it has successfully completed its work. You can accomplish this by running the following: diff --git a/docs/install/snap-installation-guide.md b/docs/install/snap-installation-guide.md index 6e384289f..0f22c2211 100644 --- a/docs/install/snap-installation-guide.md +++ b/docs/install/snap-installation-guide.md @@ -39,8 +39,8 @@ can be used as runtime. Read the following documents to know how to run Kata Containers 2.x with `containerd`. -* [How to use Kata Containers and Containerd](https://github.com/kata-containers/kata-containers/blob/main/docs/how-to/containerd-kata.md) -* [Install Kata Containers with containerd](https://github.com/kata-containers/kata-containers/blob/main/docs/install/container-manager/containerd/containerd-install.md) +* [How to use Kata Containers and Containerd](../how-to/containerd-kata.md) +* [Install Kata Containers with containerd](./container-manager/containerd/containerd-install.md) ## Remove Kata Containers snap package diff --git a/docs/tracing.md b/docs/tracing.md index 5ddbf0fcb..7de551f1f 100644 --- a/docs/tracing.md +++ b/docs/tracing.md @@ -203,11 +203,11 @@ is highly recommended. For working with the agent, you may also wish to [enable a debug console][setup-debug-console] to allow you to access the VM environment. -[enable-full-debug]: https://github.com/kata-containers/kata-containers/blob/main/docs/Developer-Guide.md#enable-full-debug +[enable-full-debug]: ./Developer-Guide.md#enable-full-debug [jaeger-all-in-one]: https://www.jaegertracing.io/docs/getting-started/ [jaeger-tracing]: https://www.jaegertracing.io [opentelemetry]: https://opentelemetry.io -[osbuilder]: https://github.com/kata-containers/kata-containers/blob/main/tools/osbuilder -[setup-debug-console]: https://github.com/kata-containers/kata-containers/blob/main/docs/Developer-Guide.md#set-up-a-debug-console +[osbuilder]: ../tools/osbuilder +[setup-debug-console]: ./Developer-Guide.md#set-up-a-debug-console [trace-forwarder]: /src/tools/trace-forwarder [vsock]: https://wiki.qemu.org/Features/VirtioVsock diff --git a/docs/use-cases/using-Intel-QAT-and-kata.md b/docs/use-cases/using-Intel-QAT-and-kata.md index 528e9ea7f..3a7e6cf68 100644 --- a/docs/use-cases/using-Intel-QAT-and-kata.md +++ b/docs/use-cases/using-Intel-QAT-and-kata.md @@ -231,7 +231,7 @@ $ cp ${GOPATH}/${LINUX_VER}/vmlinux ${KATA_KERNEL_LOCATION}/${KATA_KERNEL_NAME} These instructions build upon the OS builder instructions located in the [Developer Guide](../Developer-Guide.md). At this point it is recommended that [Docker](https://docs.docker.com/engine/install/ubuntu/) is installed first, and -then [Kata-deploy](https://github.com/kata-containers/kata-containers/tree/main/tools/packaging/kata-deploy) +then [Kata-deploy](../../tools/packaging/kata-deploy) is use to install Kata. This will make sure that the correct `agent` version is installed into the rootfs in the steps below. @@ -419,11 +419,11 @@ You might need to disable Docker before initializing Kubernetes. Be aware that the OpenSSL container image built above will need to be exported from Docker and imported into containerd. -If Kata is installed through [`kata-deploy`](https://github.com/kata-containers/kata-containers/blob/stable-2.0/tools/packaging/kata-deploy/README.md) +If Kata is installed through [`kata-deploy`](../../tools/packaging/kata-deploy/README.md) there will be multiple `configuration.toml` files associated with different hypervisors. Rather than add in the custom Kata kernel, Kata rootfs, and kernel modules to each `configuration.toml` as the default, instead use -[annotations](https://github.com/kata-containers/kata-containers/blob/stable-2.0/docs/how-to/how-to-load-kernel-modules-with-kata.md) +[annotations](../how-to/how-to-load-kernel-modules-with-kata.md) in the Kubernetes YAML file to tell Kata which kernel and rootfs to use. The easy way to do this is to use `kata-deploy` which will install the Kata binaries to `/opt` and properly configure the `/etc/containerd/config.toml` with annotation diff --git a/docs/use-cases/using-Intel-SGX-and-kata.md b/docs/use-cases/using-Intel-SGX-and-kata.md index d48cf62c6..5427331ed 100644 --- a/docs/use-cases/using-Intel-SGX-and-kata.md +++ b/docs/use-cases/using-Intel-SGX-and-kata.md @@ -17,7 +17,7 @@ CONFIG_X86_SGX_KVM=y ``` * Kubernetes cluster configured with: - * [`kata-deploy`](https://github.com/kata-containers/kata-containers/tree/main/tools/packaging/kata-deploy) based Kata Containers installation + * [`kata-deploy`](../../tools/packaging/kata-deploy) based Kata Containers installation * [Intel SGX Kubernetes device plugin](https://github.com/intel/intel-device-plugins-for-kubernetes/tree/main/cmd/sgx_plugin#deploying-with-pre-built-images) > Note: Kata Containers supports creating VM sandboxes with Intel® SGX enabled diff --git a/src/runtime/README.md b/src/runtime/README.md index c7de96544..217cd2d44 100644 --- a/src/runtime/README.md +++ b/src/runtime/README.md @@ -26,7 +26,7 @@ to work seamlessly with both Docker and Kubernetes respectively. ## License The code is licensed under an Apache 2.0 license. -See [the license file](https://github.com/kata-containers/kata-containers/blob/main/LICENSE) for further details. +See [the license file](../../LICENSE) for further details. ## Platform support @@ -60,7 +60,7 @@ $ kata-runtime check [![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/kata-containers) -See the [installation guides](https://github.com/kata-containers/kata-containers/blob/main/docs/install/README.md) +See the [installation guides](../../docs/install/README.md) available for various operating systems. ## Quick start for developers diff --git a/tools/osbuilder/rootfs-builder/README.md b/tools/osbuilder/rootfs-builder/README.md index 71c92792c..f82a569ef 100644 --- a/tools/osbuilder/rootfs-builder/README.md +++ b/tools/osbuilder/rootfs-builder/README.md @@ -33,7 +33,7 @@ $ ./rootfs.sh -r "$PWD/kata-overlay" The rootfs must provide at least the following components: -- [Kata agent](https://github.com/kata-containers/kata-containers/tree/main/src/agent) +- [Kata agent](../../../src/agent) Path: `/bin/kata-agent` - Kata Containers guest. From 2d9f89aec767de4b09cf365c74762aed2c201797 Mon Sep 17 00:00:00 2001 From: "luodaowen.backend" Date: Fri, 20 Aug 2021 18:41:53 +0800 Subject: [PATCH 379/385] feature(nydusd): add nydusd support to introduse lazyload ability Pulling image is the most time-consuming step in the container lifecycle. This PR introduse nydus to kata container, it can lazily pull image when container start. So it can speed up kata container create and start. Fixes #2724 Signed-off-by: luodaowen.backend --- docs/design/README.md | 1 + docs/design/arch-images/kata-nydus.drawio | 1 + docs/design/arch-images/kata-nydus.png | Bin 0 -> 52096 bytes docs/design/arch-images/nydus-performance.png | Bin 0 -> 399671 bytes docs/design/arch-images/nydusd-arch.png | Bin 0 -> 964784 bytes docs/design/arch-images/rafs-format.png | Bin 0 -> 186822 bytes docs/design/kata-nydus-design.md | 93 ++++ docs/how-to/README.md | 1 + .../how-to-use-virtio-fs-nydus-with-kata.md | 57 +++ src/agent/src/device.rs | 1 + src/agent/src/mount.rs | 17 +- src/runtime/config/configuration-qemu.toml.in | 1 + src/runtime/pkg/containerd-shim-v2/create.go | 4 + .../pkg/hypervisors/hypervisor_state.go | 8 +- src/runtime/pkg/katautils/config.go | 7 +- src/runtime/pkg/katautils/create.go | 3 +- src/runtime/virtcontainers/clh.go | 6 +- src/runtime/virtcontainers/container.go | 23 +- .../virtcontainers/device/config/config.go | 3 + src/runtime/virtcontainers/kata_agent.go | 162 ++++-- src/runtime/virtcontainers/kata_agent_test.go | 11 +- src/runtime/virtcontainers/mount.go | 71 ++- src/runtime/virtcontainers/nydusd.go | 479 ++++++++++++++++++ src/runtime/virtcontainers/nydusd_test.go | 241 +++++++++ src/runtime/virtcontainers/qemu.go | 105 ++-- src/runtime/virtcontainers/qemu_test.go | 2 +- src/runtime/virtcontainers/sandbox.go | 1 - .../virtcontainers/utils/retry/retry.go | 294 +++++++++++ src/runtime/virtcontainers/virtiofsd.go | 35 +- tools/osbuilder/scripts/lib.sh | 2 - versions.yaml | 5 + 31 files changed, 1520 insertions(+), 114 deletions(-) create mode 100644 docs/design/arch-images/kata-nydus.drawio create mode 100644 docs/design/arch-images/kata-nydus.png create mode 100644 docs/design/arch-images/nydus-performance.png create mode 100644 docs/design/arch-images/nydusd-arch.png create mode 100644 docs/design/arch-images/rafs-format.png create mode 100644 docs/design/kata-nydus-design.md create mode 100644 docs/how-to/how-to-use-virtio-fs-nydus-with-kata.md create mode 100644 src/runtime/virtcontainers/nydusd.go create mode 100644 src/runtime/virtcontainers/nydusd_test.go create mode 100644 src/runtime/virtcontainers/utils/retry/retry.go diff --git a/docs/design/README.md b/docs/design/README.md index 775f4d4c9..d5dee7095 100644 --- a/docs/design/README.md +++ b/docs/design/README.md @@ -10,6 +10,7 @@ Kata Containers design documents: - [Host cgroups](host-cgroups.md) - [`Inotify` support](inotify.md) - [Metrics(Kata 2.0)](kata-2-0-metrics.md) +- [Design for Kata Containers `Lazyload` ability with `nydus`](kata-nydus-design.md) --- diff --git a/docs/design/arch-images/kata-nydus.drawio b/docs/design/arch-images/kata-nydus.drawio new file mode 100644 index 000000000..9e39d9109 --- /dev/null +++ b/docs/design/arch-images/kata-nydus.drawio @@ -0,0 +1 @@ +5Vtbj6M2GP01eUyEbW55nGSmM2q70mqnUnf6UrnBCdYSnIIzSfbX14AJYDsLSSDZUWdHGvxhDD7n8F1sdoTm6/1zgjfhJxaQaAStYD9CjyMIgQ1d8SezHAqL504LwyqhgexUGV7pdyKNlrRuaUDSRkfOWMTppmlcsDgmC96w4SRhu2a3JYuad93gFdEMrwsc6dY/acDDwupDr7K/ELoKyzuDcn5rXHaWM0lDHLBdzYSeRmieMMaLo/V+TqIMvBKX4rpfTpw9PlhCYt7lgpd4/J1SSP9++bR8Cb6A1de/XsZ2Mco7jrZywiFLuXxgfihR4GQv7jEL+ToSBiAOU56wb2TOIpYIS8xi0XO2pFGkmHBEV7FoLsRTEmGfvZOEU4HvgzyxpkGQ3Wa2Cyknrxu8yO65E2oStoRt44BkE7BES5+xBCEbk+xrJonAM2FrwpOD6CLP+o5kQ8rRsZ2ivavItWWXsMZrSSKWclodR64QFwcSdDMB8ycYj+f+Hw/+b3jxvN57e/vXsa8RoIHfBMEEU42XJYu5fIugfeSplC5QSBpBtHSyf/LKmr340ZgWZ9z858iHBr6BopN8INDkAwGdj6llIMSxh2JkamDEjbhEqEGN+++WlSfGaY76g+gA3c2+OimOVtnf+BBs03Ea400aMp69DHJY8ZTFyEW/H/AP+uC/D9aQNbFAkzjDiwQ8A3H+ULyVSrqCOARNxInQwjGNSRIMzth0OMacCYJN14csnTFnOkG+Tpo3GGnAQJqCJomDhyySZ1EkwmlKFzlKOOG6uYZr023WUBYTRDOBW3L4mp2cOGXzTV6ZNx738sqidWjEIBJoWYMWlFK2TRakg2DFTFaEt3kkndoab47JQ0pbQiLM6XvzeU1Eyjt8ZjR/W0rluErELD10OUQxT3lVPf9QBrIVV2+7ykAFDtpAua6O075Cauh6x97iH8ZpSNfjb5jj8TscxFn04Aocx2n3A65BUMM5AT0L7c+lwqFcqg8UHKEeAVGJdSOXdAYD0rle4tOTucvw4W8wrhyvyZU7NWQr0KB5dzCq3OupMqaZufcRVWnOzwfNVnxbiTlTg4tCP4h5/dPlXZin1KA7phxjkT3DRtZhTbxj+0Tikbc+k4SKCWWFdGHcU/61HF4cv1UJjWhVI2WNITIYdM/MxIOKStSEomtmosrNVVOcoTOTDosAncWl5LNWm6ykgirVvNX0dCMFdciBC0ruJjWkKAReKjWnZaCBpQZNRfLFUmu6sFYPdmdn1bXcuq9Xc1WFqClIV6mpA3nWjaV2aWlfl9oFkql5QgvYTYkC95Ioexd/Z/9MoVWLiJ39HWiJ0UOLEBpEeF6aDXxTmr3akrRzhv0zbZ9cl5grcdBxJL732j6BpqWDM/k1llHFNthHordZifn9EA6A4gmQYZXjtozraxxzoFFyaU2bB4hBalpggROpX1tRO9gaBNTXILLt6GX6IeH0O8KJBoNTXyOg6+zzAhGOPw6sSi3sGTZkgWlDdjhYTdXxmS7eMbn4NBSwBDQZZJ2s9OwRWfJ+qJmq+bxxq/yGxKAOteStNzc0t2BC6aZeodx1/d/LV0kdfeve8jXtB95ZvtNpO0i3VW+Hrbm2Iv70RjysL0DWS/xbrQkVL+e9qmzfP8H2uVW2Fhrs21bZyLTv2K9KykWd4wJkvx9rtK7HFFnIvZQCLNiXVFxVKt7kxmLRq47yo7g8mpmL63Mrahm4TtbTqXDjNF79nnd7tCvLF0leZmLi8mWUazYUFxIxwmyT4ZIj5czEr0Bznq1IOuJZ56INqrb4zbonfM5i8fiY5pojOOW7bO0okzzHHP+Tz1Sv4HvLiFzHLJ2adD3DZwrDxZRet7vO24MIcBoe43mP7qEQ9f3cg6VwrC6/dHUP6kYXALA//yCa1efuRffqPw2gp/8A \ No newline at end of file diff --git a/docs/design/arch-images/kata-nydus.png b/docs/design/arch-images/kata-nydus.png new file mode 100644 index 0000000000000000000000000000000000000000..fa4665a75ec4c51417b2d1ff9c0f3eb90b746806 GIT binary patch literal 52096 zcmeFZc{r5+`!-%uF5n6VZO#@NO-wy~y6wn8CmmZ|JZ2odTn zAz3Q>5=C}W)~r3R>HYcs()alN^ZfZ7$LBa|X59BZ_x)P0>%7kEye3>xu^GxsA!(8rxHt`_&*xEZ0_6SI- z{QF5j0%qqz_7IRn2}nrbU0p?O?D0f*Jc%soOz;4Qz@xZg>&g$@VVJ|6V38Eh;OD`1gbd#g*{yQ5%Any)}5Ign%R( zjOc%c4&2}VKZ9lEsA_4Zr>lb?>#M4`YM8pHse+EvTi}cbjr~37`e3|7KuhU2kv8(M za)9edsOiJR2{;Pc%2-<3SvKxU~Ego zx{!VG;yw~i4!W8cABwk$wFKJP(ago!0i|XS*B7^SgxjOEy$!(tA+_KpFu1ioR@xLp z(k4ioYMBu9DKYA8%iOZzo$r^TsGETCl>QXK^ z0@4wz6r_|7SS+fJa5T}Bh;q^+kkt^5zV=$iDrheqQx8>N4>tn?S4}%_166_#UPT6t z^U<_(mXW~Psp=tRq;zD-cr&D)(=$WsYr(A4Y+T$W+$q{dPEIl?H9XAG z-pN@LuZ|;lqLJ3>XlIPCvaOD@ng;laGx%>Os}EjD2q{@BUjjkWO9ph-3yoJnN_u0F zNL4*uCyKGQrwK*dMP1U-%?#s-Llf~BD+3sr{%s1y)eS6Jq^_E&D#;dXHB~)Z4Lff< zy;XQEtgQ+PBdx51bT$PCT+IwoXtJq|y_uRT(MLl<%0SBw>0s;S<>ZQU_92ne`wxA2VN9q?aQcuj^yy>Wx;x6YcSuL@8^sBgw`h2I9)Acn1;Qto|BBMq?4|Jj*E<~nkmdy+(S#+ z%1+Bi#T#LRazg9i5Yk3i`pDpv@f1}f8!t~;S7jtd29MDuc{+H|hY>?^cOj5%2~u|8 zGBrHT!9)re1f;1H_!BLou47<^&{Nh@*RgR$cpDeF;Y_B)mqEWM9W2A z6-lvEC#o9Qo8TOrBr$5r2rX$7Pi?HDjI*|^o~oCQmXx)-EXhdE*T_)|p+Y2>SbMv9 z_`17cwMZl@XGye?k*hCRR^8XgOx9S+Q5q+ur;P!d3#mb{mBdOLNtn7K42gPhQ)^Rc zG{PHZWo(L*kOd1x)dMZ%ss5b#gF7 zQ`FS4`o21bD0@eDoSl}YyP2D|mamZ!)>#Yf>*x*FR@RhMbtM@38o7FsT{Se^#I1ad z5b78Qq=^ZzO&(e@_NL;lDnzu2y^FZ3gfWqb$Ejg)CKMkdO?OXsq%lg;%-IZKEH0_- z=4B+QYh;Hfx*DnyT-`9b(&8=>PBtVbR}*PlJkm_dm4MUGmOx8rDti$OwbaQbwi33W zH&`uIBYP=ettC_q#9i!dR8jUm%6J2HI|7L)E{l_PLrA!4!K|gM5IPbPwkDbcQ!Pn# zjI|+fSx5xJ1-ugRcqgK-zO=5HnSl@1%G3a^C24HxEKR?ovK~=SL(@@B%}7cHuLGAL zTU*1C2G%4eU6MCJ17qxpH`PF6-HZ@cIINec8WD>Vr>Ib52zGQ6Xs>REKzXUyWAG@P zxU7SVo)=lxTf@M?K~~Ql?cyPWbd)gDP<6#fno1d?C5>dw96co+)WCC*C=8CQjDe{c z8``+*W65YEXNs+xy_uUAN!A+gC2L1EB%<6+9Nn?jlDgV9M2shiWa6f7ZDT8GOA)ux zR5y`ym-NyQm%-Q)jICs_c&vwphq#fK9b7`%!=7$a5ol9ccNK)PxTBY>F&w6;3Wh_~ z*$eMVmZTdyB*NXv$ivPQFQe;WEMaXAlR?;f8IoO9oe4TBX4A^F+%S!{AQdQoaUs7jGsl zNsz&~Q+#YRO-N?;QeK))PHJTEWNSkmYfZ8v_@0^}Frr8k9Um=(vb8ka!w}_eZ%iQA zqwsF@-KHY}*Oc_tGxbuJBI)7r8omxro)W$uTADhtK0fqLILab$?%+bC3`NS$+J{21 zAvt3Z-V)YY-m=Cx6L*4)uZJf}MO_)M?x`zH-#TzRw7v;KQbW%PT;u5_X&?@)AJSD# z)mz1zZpLMaBo7m38AlUIxPz>&ixz$TDJ#=40R11`OZ^Xi_zfn&-~T~qlIVQ$H^Du7 zc=u?al(9Y*a}SxH;|zZ_8D}CFT;p%aAOH8sq*pI@R>W>WFHH#F zAcy|_#pFG-r#T7fvH$DvLvXmScu)J;zn%njU%XsCzy8O2K3U*_~h5W4_gU>!>htKmi|`@|8E)| ze9WZWA>K4-d!@~Hwvel@^%3G43NO`5HC6t1{QfhP%uHJwv&C6Pg=P~i!o^YvmVuNW z?!s#?dTKVmy|7IoRfv~6_O=hW(O@td43htfXV(;f9z16Hs>xAgQ9IyNHU2>Lrv3X2 zWsNqGuDh(%%p#tp+q(u{=@^?5hi%}8W7H&KOW0rYrSyPF7UT2d4cA~zy$7#{hc9s29_Impt>1Fe4z z1grY}8|+l)B|}}ro7P0}*O#tUOC6tCZ#o;4xV<(qa>?ZBE02ZYPfj&I8YePC&q#~} zZWdBjx{ccuH|MN}{g-seQ<kwo-)Vu(WJZHxi`v%mUJJ)>HA}jk8Or;Fj~CZ% z%$z5358H;-fA6_-LS@(UGwhgUG0&&7Qj*t3f<}(tyqEnH|N3^%pkT19*PKb`3vU;4 z(`oNS$#&V-rDo4vGy4P9KDGUG@T^mo?n8&7mpi`XPoBL=re(HCjdxECl0=_>W{`9l zmcM)eK}Gw8yN&)m-f`ezeVHl;$(!?)ORp_s6N}ry;k+N}jLum^W3RIaJq$t~>vI?+gmO?DR!kdHK)wF*P2%ZAThOff_G_E6vXRVG*?LDM=cT zl5`%D-AtChlj2m$EOL?N&j*wF>t-3U%;)(b9anz&lRFgF5@m*cUQe8CF)F%h|5|1I zu>Th-my_~|@e_)xeb(YJGDEJn3iXBVJ#RYW2lnq0+gQQh8x_i~uF6pdmf^&WeMg?+ zAIp65h$USU_y6fCNm;Zpr((NN-4Ua6WgQi72yxLl5lS35x=h6CDT>Dn8^d4BSES?`6%NRS8V!HhT3>1droh(glc(|Q>1Ca} z3&12h!bkj+`Fw#`^ zV7MQaU%&9bj=SsfiqXDTqmW%ij!mb^8T*Qf*t_fDqcd5S9 z48H_2TJ%|tUxG;z+okm6e}s@s1|F#$CBGF&aDC`@?>}zmxB27U8=M+eUpW#u2y9YQ zSH5w_As*THQg-ieyt$#I%al{|bmN^mbSASQaC1H(cFdi1_ZkdA^3Kv+H7<2d8q%-3@{Ec7W%^Z`p#k?n#0LWt`Kn%6%LuE6~38&o}lkaGr~i#^h`jg1wofc82m8$!K{E5G%;Dm#aVIZr*+wn##3Bd>+Uyq zPYX0s$q4mD<*0(q8NWI4lowQG-U!Bl3X)@#!m0_m$CQY6^KE6`-7Exu3@4_q&|Ido zl%UmFMV?H3$aL_gk`Uts?ZoR@Iw`i_s%ML^Ue@NjN1THvxFD<^>>;|JI3{Q2nxOS1 z^*u2?z*d0@_Tt6V*ir4>ZY|~j{rY5S$7I602T8!xiQT`LbN^Nipyw&n=vkWH*kt7Xvkn}qo=QMt|yvAyMwe|7}zSi?Vg7{=^gK)~GFpgCr= zR?~xa!lAA23FV-5iD9|eT!Y)H1a3-c(E2!6k)i1RU5}uHg*!hNe{C&w&<%5GSq(5e zI-9HW{EB0)S)tHF#KOdjev3?QCIXh4tODSB5?2`o#IiB*ID% z#XgWKwq5;>00;;+Y7AcdSVEw!XUtW1`ERCB`bkGBv~`$)58U^`y=!+r5y( z_PNblwz5v$%SkJ}mRH`^8jQ?=O(GfeYumfvoGl!k8TE*~0nAKW#h|mJLvIl&A~)tR z4Yo2HtFWsbkZABIXPx-UUSPX6XK3ii)~OGV+DMh3Y!x@A9`!v4J?)ivLdH3jGpw}N zGU!vP*MR-%B;9WxIt9PmNQ zi><3zsM}0_6s1COM)`O1B(3E!S12=>2WTWH>YE^XsEmhFa6FjPQ_K z#ck*MN=ho}&f?k2sP)<6myH(2-F0c5Bjmsd9dj1%F)6>c2!d5u2_Ixa=>>M_0 z_4vki5;5)K%HsQ~+Krj~tibIJjjPBn&Nrclyyp`UyB5dTIvrgmm1b%lFU!c$F=+U+%bbLb7pZ3#_;l{wP^mL$lb+ty0ADdzE>|TEDd@3i~*- zN4+7#_nG`+_=~yHNQFj#ww&vJ?QHhR)@8%4VW4h4^~{2O;sQrJ_ewc*HJ?!%ZUB&d zaIIZ#_7Zs{V2$uiGxD=~SUr;{#PH@HPtlCni^89v>04Z(+E&9bq-xhMNW)6!YcCQ) zMq864=Q|b)%ANW@?hMuXdDB5m0{417i!W9pX-fP~{>46)$ zpNOw+?6v*;DtMJh`Tn&kvJybqf0pM5d+Sn}F;jk0>?;ae02#F2+|Qy7T+khNHkN)? zDz&CM_0+C8DrID)62g#^A0k63b0tj!sWqgE{ziY$lak8f>KP$PyZ5}Cn_6PE94uTb zwP9d8)E;Juf9NwBKJlaJY~>X#S%>LZbt{d%c(odZ{dGp8!rFeal#IyYuqESGNL-THi)g z=72slq-*@jMpJC4A=(A2(cKY_jqgH`Ckn`v4T}!>t1mbe&(ogPGoARem6S5}{JUnK z;8rf_a5z9ID_=j6`5w<~PS$H~^Poui5lM^$2t@dfUJz4tQ z5P-}Rx!Gw#nAXPH1+EW>nVd(hr(9}E+Q&sZXf+v`Cuy**cpimiu@M9jle9VLUsEuDxiC>Z74q2771)G|{s`TP2udCryPAREU}YO`N=$#f#*wJ0a-Jc#DnQ-J;X!SX`XeVIFP9lYGUY1tE?`01M{kY(gcCvBv!o6$;DT#6RJY;Sw7qw--{O23{ z*pA!oLRA4s`&9k&^@)_us;ry+2Ql2O2I81q6M6|uXyZSp zr5&&Z_*!39&5SpL8iEi1#W|Os+kK#gynE!@9?mW}u(qX{77kCl>|JC(SWyV>=%QIu zOLtDWhS|v*E3@WqTp3Bq>UuLtp5pE_cS6#( zuYz6Ir?F!?*|A6*Kuc*{zERuglZ0QH$EfR;`)qeH4>3XXQ7;URc$LF_N4s0WdyrHq z5xqQ_9yIV?54T0fF?Sdt^;P^IG5Xd4-%HVdJ7_O>sZt zG77*$Btj1do~!h4vKU3fvrZ(}-JXSS!X%$4JI0TfIYnz{7KF1yIb3igW~Czt3|yCd@7 zmCCw}%==mOlaS)^VpDm3wp03tV);NH4+YzB@0yehK*LBr^9P`-s-H6X(E3sC;v|b$ z4XYz>dgg1G_5u27rr69~9^fYM0IlyoidfbS-Qhue1orN%YVCHHe4W?)z=@L&@uk4I zCmznb!~AD$v7Q9YwG(dimsADk#N!Sz?m7np=UzoNbqRxWCgOo}hyR?@=LW`=S`w9t zJ_$b9D_L{xYWYom;EA3KjEB%&lJ*0R!Cfp4hXlAOU$N+<(S^MzJ}#y|!?cI-jxvWk zCx-~Q;De}w;E_L1`+Q7^@lV7Djqwv53v^C%3C%YfHb>OhXS^w|B zxyHq5C*(Zr!mU9pFh=K3N{azuam_YX2mbbLs*o@1|IZA+GUWa&G@-(ACh+H%i6;pb z5`J?fq3hpYAJx)-0bqV>ys?G7<>t=jg3jHO(l;|ApogrI63_qXz0w0PpJj(+Prc@c zNUCsR5>G_kVfZrwtnlFLs4rkG*dGV0C~#+;ST+`QIk~W6KuBQm<3*0$i8L$$+jpIvr+oyMB+vZtE<0+S`6Y}ig z^)Gie-uZ)7OsCeefJJ}H(;k+)x(>LcHqjSzR&>B@_CaIGNvQ*$>#Rq zQx)xgh31uTIrY?pHrok-ze^5U;ck0MUEBG$M zdasi2a!S?F*+T6!`TncE(@#p~KWzf&o$)Xm2@hC8f1!tqs&}~YX@1`jO8}4!w4G0W zqZ*mge4dd`!kjuXld}5a%k5Lzz~fknIkwZcKivdc6_Z|WudWi?3LSfk1cp1Sr+DIt zeb4MW`xFN(=PUx(38$=tI%U;(+(N3p-q-3us447uzy9umZmQh_F-vDT&l#IF1>lU@ zK!7g1H5m#mfFTd;B9Nhb815aXE<)fAT{$6BVMNj3?;vzeJPhx9RVNVqwc$PBtsGg> z&r2}hr-vAGPhTG?sT?O=p31mI#|)T>kH8$qW|0OfN=S4@MiO7oxcOp&z8VFGf&j3U z7OVMwv)`$#&1zx9XY8&K>jOfE;%0$;cOK4(T@d1Vq|PMrtO|qP&37{4y|KD-xvgUl z-5O6!fE!c}%j0B43KQG-qvfr15#w41J^YiriWPv*ZtPeqO zL+tUpI6GMB5h0I$8D<<)O)~~0X$w*sYPt>^q|X2Y2bk)DTk#eKL2yeI`Rvb_H; z4iW79qqFOs+!EneD5oEOzq_E5Q{`}k%@{0%8ct060}*puz$uY8^J|I#a*C=IED;QT z^3hM!NO|v>d(Qz$Vh&%7lEYkbs|1KY<$_Lf-+IGYL!5Rr zVuHKOp<8HHIxf4nAAlcX(p!Jb)NrpKodX^Z0=xq5XEc)@o_b8;PsnjYX)kNoGw2YY z1zJ-PWGC6L0GSuCx?L!aU3&huY~|IyqkWbB7$`;pgobQ*8bqtWyt3$%(I{!6HK{~A z1@IiTA#!ObjhdhLzsK#lUuaP)cj2QyCg=NGfB_$)0@D~DqV6xnX{0)X-8exf>L>%> zz~1rLg>& zX?HP~)UFK=wj0i!XFWaUL52j_vi(py?THP)l0pw~fgNkF%c1~+u5ESF2Llx^hFxQ> z(mp|h8J<6Ja2KApq3?p0buxug$MtsaueF!INZ3^La7ED8*x6Nr<)6rh81R)8_xaw> zSi#mLd0&7#Z`t=0m}=+zyzE$jd8FE(fK4Slx(hG8vPskDiw7aWqFfU;jm9$W56IUP#dLDM!W9s@^r?{@d3Rc)E z->A^RGPX%ao;~TTsGQ%bQyB;=2ira#qb9!;_I)IeX8wQzM)O6|`qHF1UtR!~shNwK zTzuw;jRC8}nXvkpE7ggYcR7PBCX^Y6*KAMQaY?tHES*#2(Qv_mtK|>9hY@`HEII1H z8WMAtT7T1rGk4 z*=||uIj)hAe)T&535k3eN`+#fPwLIaNMLwM&WVT~>f$nm7|wTQ>(!TV9uT@G{Ng{X zP3Lhc+cRD4403j;id=8q(wSQ?Ra*RVXJCS|v4rdU)@^M0FxOELeuM@aQ$NAFYtoeH zlO`lZUjCqVD*S~{Y=RzIH_p5QPz#O2tLV%DuJaBD-2hTK#Tlt_9)jaQpL<+mCHW*A zd8ME$y$q>(ty}ksw!!{usox{6s8Mk(ud|jsEEGv&sLVXK3qp^_BE^Ayvaq_S#UVEn zB@&%l??tHN)@m}$i5bR{e_dR^GAxvIILGuU??diGYKCVA4%+RNgHKbJN zW=rJxU_QQt=Cr^K`$t~KBrG}dnl)$^KAcl9?RBj>-Km%|OA*25QJEo|ZSrSj2Q z38LlauoIEU?IKoF&UYAsJ{8lLf>aZjxteH4X`5vS{lH3NoYOC7p-jgb@6H$3sfnM) z4`9;8~Nq)t)ms8u|6-xADBA@9~b<(TrEU6azf%U7Ly~x;gt-XGer0c z!TAl}7~&LlY}iU6INT}7_yM_C6I>>@sT|0C$XtzNnpDvC@DI13_O|#(TY-aBu|=M0 zG^8A18^Z@-S>X>|+QoK+oeXY{KvDzqzDH(bvP6hW8soi$UTLzwjtHqDlQ zBE=4jMW+9pSYdm*xRuM5*^n1e2=zDYDI@AV%K9O(A|KbQ>jnJkVDCd%mz#jWL;YH? zx2#APfbEgHU9WuY#UToAJlrEqzReI#N}a^*cWswnYVBLevyz#~hsIW7DWT?0CDd&& z+AcC6sH)pGUFxpN39g-(u58k`m;jt2PyX{f9-R_5{HvDJxVr2^81C|D$i%J)mA*`c zA^V41z7>rK?0j{L?QNI7**gpJ5~zaW>(w;Z{!)VK_TqVohtobg3x#Ior5329hLk+A z&?N~Ajt5>PIU{M1+~+&DgLc-lNlBSYZdnsQgpCTI7*|y*2jH@@K;pxz46Ln?iUHr} zR)}x%%P%_&t<1NNKTObH5RR+#Tl*%Ut227_joDYskYjPJW=%Ga&NyrbAXvEC2RHI8 z)Fn4a+h{2q`#)NMyCQDWhcG5NXA!AfyDV?lZ)?y4INU;Sk$Y7)Vc8G8%;rchN1rUT zEv;RdejMxcM32J2C1S?mCp=6ZAJ&IHac7`A)TRB`sQN3thDTD_scaEP6@O-6cGATz zNJrJU3RxHe$jFvW8`7ZgJroq*kssGMCFhZ|A}2?tJvA=2paY)S42)<-$m7-p>70@H z$XqK#vfsHEI~%hkXTo?(yjD#upsPDetkq_vJuhH{zd%cJv(~H@TEmgvt-!{;affdQ zm)~aV0bHjj9};&Dmsub|!CqTv(B9dL36P4FI>GYC=<#A1?r~8W@>^&QWf?G)@RQ@Y zxxX?trb!@Se1cF6$)1UXelf1~^(+IK<0Oz=XpG8akX)RzKjVPQWYx6f5R%b9H{Gds zrQG5l0Onhr1;uRav*vMe=t;oeUm5UM8UJOUUb>p!9G-vhYYk;-?uvL^cCqrU1I)tN z8%_5P>K)=3m^HTThO$>vK91*0&S(&|-xDN(lX$e`Jvhz_=qjl`o4$9Ulh~xpP!m z+q))bAryLN10s-imIiC}wC>quJCX!Iwk9XF9Aq9(ViNnyt)3lX*N-s#DA$R` zCf8lp?nm+p)ASKOEoWl|v$zlG;S=)hO#;Zaw4U)id zEB9JRL^c+%9Y5psBfku(D5!C^V)765CWv<}UEj^;vF1QQW(O(l?9yNQWE%Kg^kmZx zYcnL6nf*fF>Pc^q-!y6@>i;n=dznDC4m7KFm`It6fC+==2 zS?%fqE7X?3^ca=F3?#vpfSQ6shsj>t5|#Pz1yZd$Xc6RA-}-2DU_9gbm- zPMr$z4S@F<2u!GmS0{+6c&~l}S7)Wmhb8yIO#VTkCl-495-Bwg%nGvYfdV*Uk#xV>@qmXabfh%LLH0cFQTwU9r@ ztz9s94`b;i$bJ*fGa#gJ0ij!PQ;e{v3*%S5xet#*s{k*h4UpL){OFNGe|+km;GAR4 z4nK1i#A|+zMz(2UE9JOdSKP08{hyorvx0u@On~(*{rdLd*D59%v#s{K zNQ}pNyn?j%Itw6vmZC?j4$eUUpd}v{G3&c|7R17uzYg`WGn@$qk->}?>6(F!KJ4McLJK#+?H;Y%P=ndvH# zLuVC-x(dyErR+a8@c2$;PK2=Q!a#_Y|Gn?fF1~C}Fj63f3p4dPjyMT42(VM6XP8Wh zqVE*Ch3^^k1j)5zuxAVE$He~{NzfoQ-UV9B6KMLY7(SKO!!kqHsb7F7#C+$7)81X< z2R`y@0KV$H^0=cUg?Y9+pQz%LkIl7uP5N0M*0#Csmxld1SYO^8r(DIj_JF8w&J>hn+H$=!Ej03`RF@3e~v z`rT6F0v@+3Vf8GHUAxDUl^5_wC@vj~dJtFl8J*5+t#;~{C<6#-V5nZ&u_uwr!gb%A z`$M_4+3wxI6b=|bT0RipKqarg+Cy%W?(LIDawgn^@krX%0cej^?Ok>h zu>DL_@Wq&TciL0X=HS*u`(4>IuodXs-|eTGjSceDuzIEAcm6uf%L=-zbR43G=Vf^# zwJS%-%gPOU!OLE^$@?U+s zLvP}K6^;X?`r7P&yucoYU^=l@dY#^gh`(C~``t3&>YI_`I=eS0BOn90n{V<#_L)Mn zb}@;2f?okrbe}1V-tPZ)=D#zuYX$yynf-Uq{MVZO*EIjv&-_2;G{Z#uaxjltZ|vRI z`YL#zPV^atJM2`Tl$8bw+$Yl`FJD$o(IU^u`DN|@3m=9cfxY_>zcF7qLQe~6gZQ;g z^%TkGciswQKTp)|0C<}OkXUk?%!oX#jQAH8yP*UHQ0ACL?mxEjUV)Ut_Qc=>hn-;A&NA2y_eRe7>`(`h5BgAcL(0GeVOV zYL=qb0cX|mW(m2AE6-koh9?6kRi)OQg%>d9@gYaCtU)fY+t#;S512 z3_^I4VX=im8BjzegFI9+U906(`u2jUoNpo!Y4g`P*HyBL;TyOjf8$!H6+;=Z0}jYk z8M+dQ0%R~cKpU$K6fCVkL5K%JFu~0y1*&&X!qqG+dzPOZrbjk0hZ%gQ9*63^OAwQx zvx`TcDE`_aF98O=zatxnc{&3XPXle_M9!lqiMAA(jz+1QC)qLFKgJhpsccjqX8yYC z+D8GzQ#y9ck9HOp*d_Bt-TK3tNc!ncK}7CSQXNbZkzh;;A0r~1|*#X z`Zfwk@6pu{^IW-r?!O$a(9cM3#xfI-Ks70TPKM!cB0xe)8}MoKuM4dtQ20Ihh1py{ zWK7S|vQ&laE#NYwqb5Kmah#I_D&VCzT$X(m>YrYCH}RX~M7B|sGnkm0Z^_!Wa&JEL z0}68~kZy4M5b{73$)Wh8fqkN%m@W-y@QQVi18oB$7feV3Uv}z|U=Yc?rzgeeLaQvm zd`|$Soi;I%)~|*>1M;=_B_JnCqU-GFnsSh2&a!JyXD{Rq1}u9=S03&iT@1zpQjrr~ zhI-}9TP9!Fe}YtDDTOZYmitcJb3CbrXe^!xDN5D{)mI<)E`LTsz;! zCVZ8F&OcRcExywUJ#u=E>%799*YqHXW8Ypx-ZJmpu-}5T=A_*Aawp5`v!x3VF(AP= z-zEZmH~ix1TS^z0=%MlIyU4sxpFmuk#4Yht9HbE0JD+HAnct)UomfvVKKvo;^t%c=Mi=x#mBcN*zTBq9lp}}Q!71@#zNvWi~pD! zSr1f&{T6)DiW_#%jFS6-z!r!;+d#Gx-gD|&K^DY}t(mFbs+PgsdzkHZ-awW^oJk)e z)^r&N-r&`iYct)#bFuhU`f8WZz7CX;6JUAC0C9+(G7j373&jo_XX`#}1r;6YoNb3J zGY(aX?!}SlGP1jD)JX9;4T{A`(68EUT9h&`7vu6Cw_W`Dwo3M@ zO;o04@XAbg8QQ0r?@nte#}+EiI)`mo=qGjxHvn-H7hsAX&V+piYL;qNy?bOjiytG- z09I4kMLA%OER~sFr-mZ~G-QFYuI=cRt(cNG*Lj)Ft0)O912L8}J&k7r7Yid{ZHU7) z6dz_5E9uvA%oLWj0Y@?N&iZ7i^pA7tg-BKNN@tR}E-zE$meuEFFb$8H)w%NsZ-CB< z-5+Y-j`~7pd{SKM?8jWhnZDkCMbB4n=H)UFOA_nrJcj27%7q^oPRR2kKZE3(Bw)4@ zNXKqbm6gy0?0)~{sSgzj90z_on78cu597`#_$Jb=(A20Tf}J`;cmm%mAeSeu1|ENpUpHCk1u7S6DSpH$I*o6y7Z0l zSWW2-v8&S))ObuEW(}@&zX0imnIC?maW(o?9#=m{n$IZnqamcgKCVchX|%Nkw2Lj! zZvLm)*MZ0)3uxeN*B8f+B^~R8M&3Bn1*EtA4~(0Ba}&G)40%b5z{DIJY=RMK`g(lv zj_yEg`dBYTfe$FSv(tQA0P&NRGmw#UG-qS_I&1U6V8D4N0T(55HgqEKBJ2BG5@>yT zozpU(cJQebI?JGrQW|-YEM;$%GL#=dwgY4V=}n?b3-Fy6`Gq%58x>oS(pTS(2?Voy z#_rh!yliV$inBu=HuwJ8G$<;nV;t92;*0<(J{R+cRov#QaV%kne-DQ8XRsA33WWgk z&VH5C8HGQ|(k_YzT*2*f3ru1m`%U05tJ|U@s~>`LoYi;RATMdpa%g;zmAY;byck{l z^n*x6U;Pju3ddbqkN@i@q=FR#HWGnGeLt6K1XSBMydQ=I9D}~G=nAFM?nAwLvj#8j zaRiN>N-t>uvW)99>~DX7+$hh!qg$>nH9v08tNqpi0Ba8WUWVVG-?|%A9jE5wh}IA`L3WH2hMp z&WAx;Ij8GoqabzVpdu@kZq410sr%`ME9}^Fz?zNdt7slD5_< zH-Kv@M(rgiBzoQg^P~l%tl?= z@uAaMiN=-z-Tpug2!Cw2nPXa@9S|&aP&x{b-~cn_sExN@UU0HZQ4FY7s6Zk?DW0*p zjmmca5xFVe&I-~X8?sC#^vDEQ!ZLK7)P{b7{Sn{!;Dcviv4VOPlldWw0PGF(_<#TB zw|SJat*Hh2tBQ?zkc_cCpIlyelIr-a4%Y2OuTv7)_)v81@;klBM*%N9XKh2b>ACzM zu7mv;wbKOi?K>x>BU0<N?+5e>g`B2r#sGDetyln2OyvY!cWt4SB%cNeh>sV5tkf-* zeD$Owrj_@eGhG+qlS>^}Ms_ZBq|4uwpzsK|j-Tji`zQRebTy}N5<4}jLNV36!pUAC zdFJwTL+SmVhX=7}&-3RW-av8KE|`gh+*`SU9QGB8I$rPKegsT66C*YpJ0f!65I5^O zuvq*rQQAO>$x7uENc0JcHy?I?Co-SXYvD)I=8+4=fkcKdE9Za@kj%W1w`yM+j|K%8 z(Pqa4%|Q(!(5LD$V{+u7)N69F*}9qO5|m?(-Fbu{-8e(&Kj(j3hz+#?%y`t@M>Tms zIrnL&&gX}f@EHOjy#Do(%dL>hBT_OHEzU&>xM-kq6?lJP{S`i8zL`OKg4EGTSp3D? z3n_7|R8Xb&=)>KHB=!-uf8;E~QAD{S>s!#)_Hqm8Be+xF`zaTlqbL9M_RWfWpS0wh z+&FmFKW6(D?mH7$$_zGZQ|v%4O1%3u*KxR}>hu;!VajaOPp2p{#sA9wu1AfkCeaIS z%KB|n;`@5IoEM*7Y-l@r7AO0}WoMPmi(U*D@ZuR#QmF4-=43NCUpX*B?YnjFwR=0lBjKL7uxyG?U{t#HyeY+mRu0Zl&=n6+tnT6t{ zhs}U@ug&j=Z*bVAxXz5tF5r5n0lrGuXrKExEnv^C|16G{O&d;Qz$C7+O?s>0oUw~} zlGG6bE!irtL#X_bu!n9yg$<-k3;R`Nfe&IhmOR(vFqm;pP-5k4E+|yWeIfMLY#7Ph z;1fLQbzer$s)f@Cl=0pp>eAXN@9rO?ZukMv;CE-@(!Gg#k!@x{VF>Okni5pEvM@5@ ztK}I5d9<>hY=5qGT*^V0p0d^Epv#pe0D`_GUWa;C;XT-R%P2A!6h~g_sj(O~rHG8_ zq-jl_(D8cM*?$C+c%*#p+oSiGPyAa${c~sTefUkrD=`*5ABCjQ*j88#Q231A{KZUc zUwzV9B-hl%C-NlD#j z?Ki5Tw)~3yUIjdO8)7n*eThRTNDpn~uZ8Al(aIU4OL|K9I1~jJl6R`)n}D#O5!C+K zC(*uxP@{qpDuJ^SnGL=hF%EtCQA}zqFVZ1s{6^KbfUJQ0m=5AW%Uusp>#CssxN#5^ z*UkHvlEUhp*mVQ^spi7P#?<@&S#YQKKB>v6uXcc5ZAi_;Ws>|KoI*EkcQ52K4o z5)>#Zv!wgNF=}|R5aq-9XQlRw+HX|^I#-^9Fd$wwb#yZREcDnpmo%a12N!rbzd^-l zb3p4_x_-0W&;*0Y31x6V@EJ~JBcb`YeA}P|)`Dv$>Q5aWCH!23SFMrL-vbY8cY;XTxMa(6bF#tO-f+ALIWp zin{N9_}7oYDOj}?S?L|ttLkvE_Cy= zabH@!RzR$YSG-2NO0L)(Ask6zOQ%en5Po{C`Pr$CUzfl(-H5G#H5z7KSov_N&{G?q zDnO)f3EpbPI4|0&v8H!K9v?)qMxu(1x`?Wt7?Io0*_U&*%Kdi7g@M;!E?x=WEa&=qof|tnlBs^V&uU^mUdoZnF5`D+fJJoC=4n55ZjkA}K%5 z8>+%FVazcz1-a|d{fy&e9w^BFg2crE=W=|n6m`a^k+Mw%b)cF+dcB47sSHRQmwOIaFTQ(s8Lp(cvp9v!#2MB}E=WR}Kb1asr8qsD^|RJr4(8 zNO4L?V~nxV_B)_)72E8P4$^&=USE4v`V~-Ow}67kH_lnT-Tvl;8tDi1!!zCamAV$U zYxt9k8(pg~1D2NZD`;#<1JK*NkqdoLN%%HY1-De^Bb;)28mvGJuF!3lN&&x-51W+RL1e>8jyKY+sTpfhbh`+lEFUew`> z&3it+^I&M?Ry|@YKL{v{o1t-?N6U?_yar)bpXvf#!xLVzjg+j0dx*UAP{{qKc4=qY zJK)3_S=Y~UxR=XG=k(HQoZ9oJAXU#D(l<60Ko!bd-#6)ioTfF3VLlTzyfHLqMpC`l zo@eAMA2v8CXlE(CBmu{xI@l7M3_Wpel3o{gnK7IK6?#x9@rcmRL=Ui-nT zEJT63!+2HizI#Yt1f%3h9+7avql6)siO`Oj$OXj>L6qxFl1K_D6UkR%Q2 zXQs8DNRDqp7qX=~6VzY2BsL6%Ftg8bA%1DReECvdEcsU5)5b_e3g1@!nT`ANk(Z4V zkz@A$0f=ss@TezMxn{I?*_s|luI&7LG~H8}BI1|c%yA@}RiL+ZXhe1R4k$^iuRFgG zQ?~_va^Z;pGHGqgy=DbAcV?JYawkn<^|NQF|O z>G&oiMvWv`QXKKf_xhty-Xx(LnW3C)IaV3xB%H4@qZNiQvxgL1f1Ld|g%2Ng0l#Ze z-w_(&Z#P?}5ftRB|0I1yUn7V-omMP6TZTG^yD9VGbyh^H4EyFeh@`SO*?P*i_jUBo zz@)c4%Ijf^1Hi*q{o~7>J*#(A`QXtrPNDk$T>KP0nto$;Z;T>~^Ybsa`!YEi^EPXc zd4vejm{*;**uc;Du5B3y$ufnguGxO<1b1;jlvM$D*dtPsyBX2=0luLy zv;ETGOM3-yY+sJOCuX0y83cZu0PgNa3K)m5HaF}+yE7|X;rT+|&0`$77TDcsgIpV$ca7ZP_ugp+J1yUwSrxT`aZh_1we@niOvKV228`#GAZkMqe&Yu)(b^J6kK z0=nFxc1FRiyVIC5=l?}O&uS~y0w>oMYcX;@8TVd=FORM9+wDTq=u-W1vKWMYTVQId z{BB4!V_iLUd!nQdWZ!$*g=h%9CJIWd(h?T=36O_4i?}i@I@9@co^#HQ zOM92=RT+ChMfQ~#Lz5Vm6WyC^3+e=V&k_m8&sj@o>D#g;*KQ{q`QW$T}%2 z)%92@BU;ZPvqNtdHyG4tIZ~J$!OX>mhLn*MorNk@5F^^4G8ay)XiYYqeaEE^syQ$E z62aV2&c=&zy8K|!(v$Fb9Y1}sa6}KCnc2duZNoMsnyoTBmNwxq=!40D@xQ?~O?qiE z%|_m4|K)pb9_c$4ojb%vJ%$j5W1xDakSeH}PSC+crk|s%81C-qq0vMx8tm6>0gvCx z1rJMPTvK*O8w#-!Zkr#*6`-t+tx?CE7V?kN{F&qD11*_RYnkd}3-bM$AKI{?o1xB& zo_M~nA0pW8xH0ks^Z8=yFX_fZfad|a&+XwvV@ysA>xfF$l%k9`8KYfJ8XG-;cHJ`PRCY&DTO1Q&I=73! zI%jsf3Ve>2U)wc%<_PB>ktx#(xQT8Ru-5($b8i|CWgEW_msCs(X@tre8DkfT5F%?B z#=d1sg^;D}sm8vPovcIl5FxUZN zBUt5k>~&Aonf!Z=p--$8EXdB~X}3%A`EvcBpzIVZ)f5sWue)E@;;F(3^AAMo64mYa zJd-*vBVL(jx&dyZw=S*iSFqHMwX|6vYdOetC25q{XP4I`cNIK00zYUKOa5UdwlsjquBrzgjq`85Cw0J&N zytq@qo^&2RCJq4Ta*fGkmk5Wi?4g%N6h0C@NW_mArsBGEW`N9uGv6=p=4U&gk-+`n z>0%QIBMzG>SQr`f^X#K^9n~582%y2)t6Co4ZBsq2H^hlCT{wN2lP&%9J)bMD0xcG? z_;24lFvq16mI9ssZqRvEk5ox*K~1hFplFlauKRkGwKe}Xi>SI8{?5zB~)1xu-c_Z4S_uO6tFa6n(o*hExbo@KDO`#eZZGQxFhL3agDOnM2H=)Mlcx?mz6E$$ zLOVO1u4rie)bd!DBZZ)5%56)SBbiajr(0Gl3%Q4(Z^#cx6ZqZ1eAz*i$V6m6S52MY zkklaKb|yww0gJa+%193`L^ihBcfY=Pz4gvxXyjcRJjqEo^uqU<)-e+u2`%o*?1oo#phW&91+4F?WwOi?H z@M*2#`u9n^>(7*Fq`f=m7Nzj}6|(0wSK{1`i8i;y@9BOh7pzn+5H)Qv3InT#WV%;o z@o&CL4Q&~wO=AA8T}^YY=2oU`?z*ko!GYnqdbX7FViprUO3)Y4ez1yd(z)QX;c9%f zH8GW!V<9xD7>RVSCn&mb2W84{Mo%0%m@xLcniq7J%W#{(|XwYZ3 zh)9S11L(l-hcLY9wtwWG52x}aXo)^;NT*^APn=rPu*ey>L{D?$y2?3(SoI&Hin;5k zemmy3Lu_wy!@VbZM!KpgzBTuW+SU1i8{yq6q9S#HsgVLQCc5T_b;}8Hyo9MWIP?1S zo;>{4Jv2G3f$)Fc4EQWx-R8agpO^QWYsQ#nFnN@i914T-(A?i{=YKOL3m>0t+~{Y; zOnXxoPJIk(Ss?Z$$rv=BBfY`@)`ie>Ek(^`zt+E7udAed>mr{0<0b8>1G1FWmRd4h z7uJN`H}R#lqxU_Ub1JpVFFOB9Y3;x56Yy(8EB4l!_!+^BKk>f8FTN%3S3=ZIFobM9 z7yehWr6xq)hlgOiSHCrj??;A{!cc;Bk@SO_!{Qg~s7?EQ$bgxvh}*h?Yx8}^(< zq*7&2e6w{YhoL58`hDsw7spnv2zbbpTwbqP4NvGj_jr9b_HKICY{gqFmn~EcNZ=3W zHM@M}#KpzrS;cRg*uTCz;!~+moTVNtFSfigXqo#ls*dkssN-T0_gX&fb+n((eK@Cx?r*>cSLCt*fJhbyFt`<~60QSg-msb*oE$*5{+6T$gPiXnt8)kI& zOI0dZZJOQlxW01ttYBV<|EqdOkNe9KiPQy6;WTp=XZ6_5r5y}u>eyEgh1IqSl9o(u zQcD4&F?qW>F-_tOYB1tXQ_xq5PdtzxR?LvPSKaZd&QJ1Yd7@Sa{Wwii^n{e1rzZ7p zjE}aCNus>$N|!eMr{rm#vPX|@8+n%I3Er%0SMK8G(IIQO%)1PU9`yL@KH_tClf*lG zDtj$ftJwP_>DN>vZ^v=R0gVUxKFnNQPz)0bTn|{>AQwo{>jr)um{zN8xZ`77a!oF{ zWSFRs5pods@xA!-&uBuoAfx%|<6KiJvd}qmik8iGLImNa$32MMTb4fS)k{jxtJwaA z*u!+q#-j_?Gs(+aE@yE)XS42*Vy|uH$p^1Fv?Up+4M=}-bbc4S{A)ea$n6-zt1*iC z`q(RBL-%oHphDi4s9mln?0J9np;KjwJac3%?z6&KKY8nf_+}rCN_!7zG$?Fxf7Q`6 z<6Du?Zt$*|ccSmXYx@wb8UxSIl%v7d5W~a~)r^-*G3(W^&D8EOl|TQr6VD4}iz1(m zEb{R zj2khcK(*h_&!dhQ!_zOLffW1ATUVFxBmUML`3qA@C5y?;R7ppDoazU0 zQEq(_!AwH;lwPD*qC$evk1*zo=k@#z2B$9ItGl7?vnb$|*?y+rjf=Tzhp%YS{Rkk2?vWxX++5G?W6 zNa$o=XC77PIlqo$8zB&L8NxjQC$U=rSs16o}L> zc#>Z%KWi?JQSM^ghPG4X52w1dP6iT2SXWHb=LJkV>TcZ07rN^6cggtNt12GbFJDMT z)vh;#{~aCQmUxnaqx{OO|3l7qyt1<>9o zPsQxw=;MPUa!mNgne!y`?E0VFVE!gN=ApZ8!oI@87ipedN2vkLy$L#r=#K->gO|qC zVm>9~mMeqPayH_t$Y+BwpI`Ng1|%81_O=j@pv>FerrSzsIX=hoJLV(z6I=|pnVD0f z>e#O``D`JzE$OPN_i1UALqL;cy+6ILtueOhm2W^-h-g4n9$jLpWLvxFG zO)X6@7%#iAza}P-|4WgTK=wka*-l2dXKrI)S^P(lj?Mm>g&)%DK8hkM9*;Mk^zVa3 z-$QxY-+uViIXMXta(hZx((im?`37qqwxZ7Z)4BAT%tdwcxMi%Vhv$H~yiUe5j1rN) z+$640&maL)rtCWXitaM>8$E(`+T+DNXvTSBxfRUsai#v_UOA~GwY*=;oNa}4VYtPR zC0@O@xLt1C|C4cnU}RERkK!<0J;pveBB%Y@^UOz&F5oHkQ)7trFF7z@&5v>485`1@ z(;zwg@_$sLNhiOt$Jxvp=6Xdvieu&q>MzmX1#m?yeKg{HaCpnXtA?HN+4_vCyzZY@ zv>LvAj*T~kAbOPu2ZCdd{Em=l=54XkJ-r=3F{_$LcxROTSLW-K_I$B7fnNu6Z)=z7wxI-kTC> z_wD%?N@?0o;p9&b3vL{I(P0}Vb9vb?7yoe~O>RKxZ?oq$@{2AFwiKst_u8snp>^M$ zgE=xO-UAiBQZtwD7IM+f!>a$OJe6f{7(m}z3 zoZ}O`#{``Xl0Mnx&NM7OZl5)yD(1hNVXkH;4n)4g~xqZAUt<`g<> zI+J{j-}1FXi4sq8v~1`(2>y7I{APB^CvaoKbz>F!$Ij@#QnpChci^zW!MF=kX}`Gf z!nxkkBtc$l)3`8Pm-_<%6OI+a(-d+=i&U)bG%)J;zRLgOsAV_eAFb$WpoI#Llso}Y>MHZVol zF6sM(GLU?61%qvu+{v^m^qw73$7^$HE(R-kD35-)jwfqzXjzmuGZQb|^lr-%#I#&I zSRSn<$CMI(C!hXyv55_}aY`uf;;2iM7I8SMz^TwDHZafWySfqfHiTq5eu}_9TvNR} zxGC#NNp^DNvzvfj(-T`u0rknkK1-fR;*aoVx1~_-n?(8z!qKONg)$_lzSLg`eOi0U z52*2a${_uZnSUbQDo#(-R?cr_@Wq7cwx#pQsQ08~)?~GDev3JUlPh%68CN|!%0s;U zY|$}=Hik_Hm$&^K_;x%uy$J@x61d_Hk2fa5JPekb5Cj*Undm;J%hAbfZpR%_RIB-+ zC@RWJX&N?7d*5)?qPx|9ke^Ewglh4#WFRFPDS!LKMFEyrq8+ik06S{QU)#l`Pn=j? z`U|S?F3-6`_J6KxM&9CC{tbLacFlWe3iq@B!`Cm~&u_>Zc{vzd0=XcbPOT)AXg2({wX=VY;G>*MU15NVU=A#Tm5HM(>(Mb93b`oy4C)UFal-X*+A z%FRE~3m}=))H|%E3#aQ916oL~hnHU;kNgDj*6fpbjVdpIIpbg85Ru%hT2el)>m(16 zD6jQEw-(DqYnqyMQ5mr&D(O7Xa==H;P9_Y;E}3f<;#HKo={#t-O14&|2q|8YOK{*W zhx?!+xpf>WzXUb37KvvnJ_f*1ts=oL9+iYsOk4JgM~xiPta7G{U=Ni~i8r##wFywq zC~Zz88sr&iH=W=!pe`z9+E5I?CoAr-OF?=jBV)itVR-ejWzMdF_b61<|<95p*S z-Sf8i{)|~@@xaNEO08}cwK8>j>)?%W;5o6JX94THdDwb)fIX3ucE#%qStz>Tv%wQi z;B|5|jCsf@7;{`E|D_?oq6c%dS@0gU5mJlFh}-xV6UGz^5WzG+8&&xgef%Cm&ui%; z%(cil3|%04VxpZ)F$?LIT?SdIjzKr|(h48ZMrTEoc$EAb$V*;6*aUQK`K*Ae6mSzS zuIHsFlu}&v@COJ|`R2?$x@q6GF~CKblT(xp^&f^zt@~(yeSL>K$D{6Q*5;M#WMaCx zc=|-h8Z9B=Pi(6%+KwVhdkE{7;x;U^xW|BrOnzcYgpM+b4IYF-o9C%Ar}9({3|s%Q zN64g8*;99Zn;c&T>^URp^2S7st*;tpb`VBA>0(8O>=rveh&$`E%F?Sn*`w_zJ(5fn z)ucV%x!CF;xR;wIwG0t8i#iT}+s@~{zQ{7O@#MlhFDc(9AgQ;7GhiiEp$xOwbo$WN z?~n;xvi2zMZihH2DkKpz{A#T$Tb@FSDLTjjU_3*_ADIv!^1OJuq0(46k8?07AHY2y zR~B(`9#q(B)E}P>cIrNGQyA;wpYE~n#@vhQsq;%uA9uL9AGK=hIQT^9m(EZwSj+WN%#R*M8l03g`j8Bkn4ldW2Eew zB+j}Vm0s3zK_m>@Ie>Q7lG&^9V}~*C^d^G&6RBw)$_h~DlE)EIkITHJF#Ur>fIt+c z$iGMypG@?lIK&_zdhoQ<{lrUtzT4cO=39~ zy@!{tKfFJ%mTS;c_C?0-N+gQ|g69C_eAWJRh%mdB7OKM-Yk1rO9#HE-uPOqBia*3~?7HM%^Vor!f(%rTyYB5vcMVs2PR5{#4~i04?x4DSy6J$&ulAP#^H1qCcA- zNMYc7to^bwDfXu@Uy<9Sy$%ezF5lxx)B5~t<%d54KaXVqxmw_72pLjC-ziQoqF!sB zd41jI@qS>Y8Nof9}Uy8{25g76dp4+lGT5!hauyJzs)KyLxn~GaQMTH7JEWJV3*LaOkk~fz3+7d=Lb0Wr^4Eaae|Hog66vxJinNcI-ri!p zVI#68!~h`bH!w@`lxa^G9pB!fhu7jGf+z3qNo^2ey999d^Di|?LO?@lovBrs;y&=n z9=g^N1}Bdas3;M&m$AAcyB$p8lwRV^83!^ozDHkMrX&tC3cdLT*vD+}Gd*6w;HI-X z^aGURVJv}fG4XEz$nQ|MwQ9Tsqx8nb-{G$8x*o0qhb7Oq=(eRqn+7n1txFsyI({4@ zDZcDWzJ`A0JRwO~CZZIRJ_0e;)i$s+rC)d|AO_wKwq0zyG1Wcm|Nc zY-cyx2T=!JattZ@T{HMVHNRFNaA{ns*x&`(^4cLM$L(SAi`+aKc9zs+1E({6{k-s?+Hr+_YxyWJ$SXRR?%vTOO z9ShmhySH~QT*71@ve=jaVA#ACSDLH&-h&2qim$QTI?^H7|De=j!SXw-nuxJOd8~9- zxcKmmYPVl;;qOGQzeld6f=!)Un{pm|<(5RkVdMlC0V3OC`~Jia+V&MGkT!rRj5UME z45)`obi@Up3uf4N>srxFdnuYK3l*rw9S`JjJ6x_t;N{rzLjzK)vxBxP_dZ-$PnUbx z3b@Q`fZ?$n4CaDyC1EqBWEVtn{3*)vBAV7X21MdvP4YtFVYKru7~9qai%m6EHq{F@ z&0YzP1l*Ug1E=h-d2IbM-zk+ge9=mG0ba7h#Z2kdzIWbW#~`-*Y4ef;A`rd@iW68E zn`nTb9+sMKwM>P01Mz8x1Ye$%CI;Pv8IP9tD*&)g8Ys6bE;~XlnJ^!s%=G58Bi!(W6UNh?$YfG0At4Mddjp0x*_K{K10jf z)zfD|C8ESFF2n6t&&1DA!SgU*b>nv}f;}LfdBl1jSz7_Ped8Y+5KX=}Lt`Px{CJE# zQR-o;1ZEg_831s*7^#^*dBKY4{Fl(s*q{|iQ49k!|9Pawa{jI(OubCR=x7LoLmQTK zc@2&d)K;tz<(}o-?ie1}OK}DhC;vPE^#%L5rXt!ax_gMhavG5M<3IWws;9HjyxGe+ z7(Dy@#|r`R;hVpPXxRSb-GuK{JN+=Z;iUkpJD!f>9wyW}Ljvd)(w$&;AF}0_h~AMI z(+awQk89dBN52fC#noA!Au)$-0YHxCpUmf_JabIMWkUTc5Kvu=sL?&h?E2VaG+ewn z`44co+(ZHemHkjHM>CJT{bsRxK#QrkxdBA=h3T<(OGKkTYBlibS|t4GGddnDqH7C< zGc%2#50ffI1}_>s9k`0r%HTTv>Ip*ZXaBrRNswOY(z%X!!=VmTh0xG+e|&-54N>{^ zS;{e(-OFGCv|z*ROEdU4GYI!A@P0P-#`bV86B~~BoQ>7Z*ZJckd=pP0p?l><(#M zzW3e#VB9qlPJO!5Vw3{{9KO>1ldf>|=fQ5hGr!#SeTSN;fZaGvABD?EcRyYVhb{@Y zCX--tk!zd>jsJWG9Q3KMx@$aKesQ7cyUz#<`*G#!rrqg8skow_Hw-06 zi}@<|o3Szyh{w=Mbqq~~{C0YFEa6pt3W6+qZ0faHW>qUp4>QMJi6v zvlwdzU-cg|%e6y|t}UEe1Oigb_==H-^!mMM>K*FJKFdR!n(Rq*EQrBST;sTIZuZH~ z@wSU`C|15Auef98v!Z*dVv5g@!049@GpZdYlsghO%ztDG1a>fx=&tTNcvStuRZ`-g z`kn1xHSxdud>Nmou};$%B(+OVBv{$MU`%ZA7_H6oG$mP?2(ye_oC$4E@W}T3OrJwo z{{uL$W2AA@+!`8xPS{b=lpn4m2TMjFW^C*=mP9tV=UgGpVA(anj^t*%=<)hmdDihC z_~*5c8pLBS8koIEgf4_sJmw-Z3|a@{lNMZn7#9ZltU%?Y?~z)1NXBAnb0?GWh-6r+&zenT3uJrmTxEL*c|K!dd?PB0FUg-VENV^U^-tt8U zke}M+1F5*CUa3w&Pfz;vonI5HN~IdqG>YTpx7N0Z@NFVjbo#pjZHXz1(^&7M>Q zN|E@pemGClPb z=#?@pF99%to4(AM5|6mqRN^@*R?Pf=M1LHu)>jp+bNU5mi#x+o@%jy;gA17^S6 zT*h$ByDlgQxHm8Sb@EM3Sv;z%sN=x3Tvpa1SpRMHq`D#&%uKo7qh{=4-cO$V#p#Xt zX}58q{9Lts3DR_g&(de{K}?Q?DFgMJrEuep&m2FMlcFDG@Uzp3Z#IhVQy*5&~jm9XS)(frOnQvQL5QN zZk@K|J4~ZjJ?=o(b4Qh|wcpevGytfg`zPc!CKfqYi~xH*^aA$Ug2DPU%!1xBwtoL~ zgSy%*3|Q)AvRj@L38@g~6qgm7>Hj*Cc!$=Ma7uxl^#pAbD;VnSJ{N2B&TgWTFDX2Q z140}aO4We~_|hP&7L2qAA;quFGIQN?(9F22ZYE;;j1;*FAxpqRNtaZyts>umTLXUv zUpbGe!)WerwY-o9*N>}%syIG(h(Cm#3q5kLh1bLv*^q$h(&Bl|dtmy#mBOoOrtERX zrkNUqyOtxPZ_?Al%@Fv-xuJZArGWotFXWi~PNkrNy`?epsTZ*=Q&i1=0&=tjmo|xy zbwwqTZv1;Lr!>Z<+ zNQ>F%(`(f?(o*nVcR$*J|nBs$V;WBR|MZXH?P(J410Gj8XW3 z!~<#Wz96*mvKolR?#HL*=`GpYETtK9ct$NVRcWQ3fG z9;Yw4)@HKpj0*v6Oqj_Dgg z?@edxVyL(`_yjO#2q%~&j+s_Ap0w+_cOtVM!YZ$bo5Yi6Fo86zw}J5A^o_cQ@0quG zG_<56&lzQkuR|DnE7hkFSl_Lq;7CS)4d`&AooC04+WtOr>U`mKRtsw~Wx9eU=Q?0} zTpyH%vVb#P1*gR)bh2AluM?U)ulDtxdEq*dXqyyOo7;3T_Y5b;3+@*@gj}+H2Ab#l zY)cqjRG!Jjm>#FO8f#k$p|RrgJh=HU!}}Rbu3;>~4V0-`+-k1%xj6h{w!A%=JbHmFodL3Naff2_ z6CkGv;ZDl{-okz;m$pvSSh!hG$S7D?O~@Onj{8T?>(J59%5{185IW4{X9bfXM7@~L z!P0QSu7~d~TdhK#$lbq%RY2%GrXgY;>|EHSQ>15>{-!#fBw zZ4U2_h`UZ&^|X6VYQXMi2#BJ1^6GRH{6?O%m=vrX_9Eu)RP z7O;{55`vOOWZN&P0t;%UifJoT9cNniVoUHq$VeR;6Q&d#g6o#M1|1og$Be8xWA06_ zkRiCZjG7VY>ahAEZ=DSvLy#<|p%zYPX2Cmthw0#-t7T~1yaLj)*M5MMI&VK}XBfX9 zP^tv3W`Y6xvuY}wxcDBRD706tn+WMdO@V~)WMg{c#dwjMUc9z7}A zj4IIumO#$~+sy2X4aWv96HEss7rSYeG5s}|KG4UD=8&L%d@DvW=Vm(fi{)GJK`)!+>kmSvRgaXxx`+~x>e2?*Bt-X@6 zSiR{7R(}y@E zRw!HpA9<_1W%nAtLae^QHLk-o&Ruk4G`lZ*lB_kX6&+WZO{baR(RPMErOq}M)5 zI$>^^j)_-jzr0$06!wYWp)izDYxR|(^sikO3Z$KMqzC1I?t1O=rs(w_NvVJ;1L+kS zd6tIltP849h(CiMhAl$@WwX|0~t0USO|=s?EhVsSS452vzJ`b%)s&v^n^;G8ei@DwQxc#0bKG8d3FL?5g(&KE zw0==JA%{@Zw$26ittD+Z8h)zBaX+_-hrROH)bj7kZ@cT_A}x%EqxlgX&D3xB(I zL_sqVsmOeeGxNO3dY!UA2W{rVcOAG3&g|Zg{ez&jX>u2tgv~jCs=m1rae7+eC*l%7!{_|fQ)IET zpHnXOB8J#gKobN8o`zuX_LDqTk5=F+BK6Isgs0`o?aUU0{J?x{T3nRE;{<7G@=GO} zsSB=$V0{3{cLGoT+pvebD@U-sVEN!TKv&dtyJq3aDd6X<1p`?mKrSieJwY%qtb2)k z0h=?d-uow==}K_j$oXkW9J=oDv+5{QfsSSEZ_xQL4BCVmz-(5uMk!>leMiA9JO#=m zW{53{h9NKZ$EjO9+|6#bkG1N~l* zBRW9FAb2x^mc;b~|5}7xV()4~g&Z3VI5yTl%SKG_P|Z%yx_=*QD#J-ZEoK(#Ulor;9sAns&Pw=d!mKmaKFJDBx_ZJM!zP-8>`zNES!;L)w& z?}TBpzXQpt=&bD7drpD904mqCB#)%4jh&3>u6}ZKR6?yrQUNBxlhiIOL4~LvXhXig z|H+e+Yzb*%hddQEt3zu(e%nZj^r4K57*_q+z|uTSI1r|cQbP8}qR}1{9-z{Yj;t1K zCsbg%TYI(D_{T+}Z+*#N>=FQ`?F#6KJUzpMuW2|&qCcR%w7W-OZ>T5XX8*!oSyoA_ zyUd|=gsfFF`6X@cXx0wYwF{xXSTS&`zz|}0`6Ntn1+paa#a}fh(Z^MxhKsh#BPh2s z{`q#zuo@XKS0xq4BmY^6BcBhap>sopSY1n~-zHyyH*+4t$}ky(Y|fcSRg59KzU{-J z1uYm*G5BY_ulAFEAQSrUi|`q~2xLr>-MUmm@1ws{w+om?G8?k;u!hwBS&9F<4pjHy z4{6`D3$tH&gN#_|Ve|&A(brlX52#v!pr=%pZQc*=Z|{1b;_lxBlpihGO{E{g#g1^0 z84 z-KUuJv?RjKMIa9?Ri%3Y95lU#>3DvIC zDe2kUgO=_F;6h5|6o^fv#hh{x#%y{+eipVIT?+hU-LdS7HJKaD@#jwoUt~fh?{QVFQ3FgZ@!| z%o~7(*h6}rzXd?7Jk)gh|3B9NtA7Y5Z8!AuyV72!PXSHFmr$zfHUk!#uG#vBKo-}xEdhnQJ*wQfzppVz$LIFY+~%R=vc@` z`}3GlH(kcb3Ek}EG`{nRt9C$sa{Bl>bkk5cAy&&c|3erY)TPN~)fyli@j`#g|`Uc8jj>tL90)tuI z)eJvPO2jPq8oCxpl`_v57V&>_6*?1^ za7t?)+02hcq2AHE#6x@wYO*k4$Q8A4kh0RjVLiH0aP@bt$_~pjJ9)ug zH3AUf9cjG-`pn>Ex`n@lm0F-{y^H%>@B)}h`jP4`5ZAk0@rH=1;%5kNb>=Bobsb=* z++xztNcBM$nRGVhI&7wTN|}H2m%k=zdWNn8D`FyDxmE*b$#SRKAZT;{Iy&3kuWnaV zbv+@#QdbeymG?pHm2=4TP%-H`5YRas1SG}p9%ILHPzD#Z{@POU8TraMX&V%`JyN{} zWQp#ul_etwKzsK(l5hoV1fJ+pFkFOcw62+`?~E*rd%N7hey(^E?G=;!{cvE6t|vL4 zSAeg&(Nwe{(`#5&{e=bSwN`=BrVkQID;lZ!`>4CP3VGsJ*p2k~*+UqIJt3LyIPa1KyJ_01zfGHMzrZa|LL0*8sEa?(s*dj;@B zLkSrkuY1sQcs{*@>`K(x^i$dpGTTFa%Wo2bk|ZZ~30e4u}OY zwVfnQh_}<0r!R7%cVfke_&;Ngc;!8dyYtiGS*%{^3#*RFqq#b&>8Ik?jU{=#PC?Rn;cy~!+sr4Lhr%ZUZ5-Px)2LjPkmwdfF zQ#zv=;9dp$rbT6U?^R0yP^ijb(=1XT;RTR`?r)*}2+S8}U`gHk0hl%%k%7FLAoLbB z!4LepQGd8n{&Pwt3XJItoc?(HqyQ68JOFMrx!A_f61x$_`p+h)j zQ$3A^6P0vd{tEqha%E7AH|^BdoJg-tHQY^^iLxRBq_fiXVMX`QO)UV&<~cgjf_gfg z)nXSCOBV1J#RIG%S&i0ZJXXJ&Qus)>1ZaGm#F9er1l%-+x9}RY0xLiRmuqRWb9b{_ z)lr*3rHN8bc9VMf`~nDDa9N86F{w0C{Z|QEg|KwM$nJTpdge%CnPVMcX+jE6Wn5L$Ge zzAm5aq|H3&+C@+jyMAN1Xaxlt!`aCZh#!*bMrPId*LJMzT;`OnnU0-V!PDMXRAnGK zS&}FY%XdW&J{`9`86r=fXWdy399+uDI_GS$3U%l~APoWv$s2Qim))?pjlys-VmsSw z^|LUq_yXpdt9*j!(oyO;TiPNJ&XgMe--d{v&IUIPvK5levX0oLduD{FW8+>*j&_TZL@a!7&-b-lr zvf!6$aq{(q@u$AyN*~uM7sIC6PoW&6u^on|+E`;4Lz@9$fJD>Xeycla0Mj>B+4yd-CI-gDTH0NJ-%#VDF6|s6VPgP&jHXVb< za}iD4A3(Pejvra(y(C#zA8V^l)6a$i-iI112GjrhfiHLOKao$jr;sAXg$o>K2=L8p zrhI=td~Ea7{Ma?4e6%9OgDSR1=pbE@ukYo+oHCIlLO^scw{`6#)z+0*$BkH4=8=)+ zbJ>CRsKin#m*ZKu{6BwOFnRHfGP~A!xSy6Q@xg~K*Ar|gEZEh^D@B~}I`Rl^MtrL|GGfkgoayW3^XMe@r|U@TLD6pakGq$c zuVvBVp2A|@P)Z6QuIFqg>Ul3j)kkE_C zuH&4drRYENcrvgV7(n|##dYlLIPB9>u^xjn=Z?RG5NQx05O@nq9$d_N^$p%!{x@gm zp`Bw*OKb5G0kS-lpzQO5@-1k5&!32+5a4zj=lTYPs-aMSn8SP~lixm94*5VlC9^!6 z7v z18I<}%2hMZX)d+Q5x(cIMIFK?Mr)SZ%AlzAgQswxOlpIuK9`RiTjqZ&0qE*wJHwa# zXbq0|hwP^&4zgSfUxW0m62?9SVoM0YPoPQkUeDA`cT!Bfz&y^&f+8uh{@=KuJ7^k} z=9KK=P+%W9y;}?&mm#)+H%GN9#2xq?0tbQ7K`8!NA_8hJ7f{?G#xJ-OJg+E)^03k7 z>a3l8M=A|TBo9}X-5@iAw`vS~fxt^Xg;&Rb2zrG=x4R9_vuRrCO(-L|tZai~pfS|n z51mayJni;SPAX#V&+(xmH6wjlpujHLRHo2zB#kQmP(khQTG&0=_8BvNNY4}Te23oz z!&>ZO(#*F3KCRl$+-p`0h3`Yg8vS+6_yWe@>nBaBiEJH*?b2B&nj7;DjzM*(7JuPy zlT5ySJkscW{pImW*N(`U%^O25P{OH~d9jD$?Qxtwb{njoz*0st)D5R8`@l|(t~z%K zKsFE~4Txq9zPxWR1dNpV)<&9(@-oi=HE(IV8(lIO{&KkWHlJ+Pe^YyvDAX_AahqlD zgNOzuY_7Wllld#V(S9Y+o|dyM2oZ^$p1qS%3jN%EIFWNQQ9|LNHBf`P_(T6j4Z#@o z#1QoCkl6FeX3zVy(egHcn{o$U*JvNnb;n4*eJxwt8XWR4n~VA5SWV+3V<}ul?3YZ|F%SnT4Vzw;=a-><(Cm{N7TPet=DPf_?O@oUvqKlq z$1CM_fXmiRyfYU^detCvi@{^>&ZOV=$1TH^?rauU&J$cS07I{R!^QjjWz=zPl4=xL zYxFULs7xKRd*9pOF~s+EsLu&NT>U^7Yhcw0e40j$R^~s?Y&06S|8i39W!-#RO9vfjQFhc^=FsNm*mKag@v@gVV-V=Q|r%V8+L%Q zw8A#()-(5UyX&GCbbahe^xpps$ND*FjK)5EJ;j$IsQWq@h>F{+vhN_In$!(E=2uwY z48YMP1l03Esrc+`f$Axa_*6-=C@krgaqwZ{7+1I1iP~p+PY&wvywC&@;yJMk1U_}afKT=Jc#EGj$~#aLnL z==t$N65w2Eacdc+6}TAXXetw^j4(`%gL$|sPf+|h3!Bw_=eY|BIJa%rM(AYB0pUT> zJCkw6>leqDG&`=D>FwKU18m?3Y#>a$GfU4_uj zVUeyev@^XJYK&qPE$8rUi>|i{3Bi#(8&8X3xrH(OirB?+MQrH-RcKc5#Txuw@d?uj>#D5V&SWA+zC}_@Mo{wY#L4TbIaEkIF+=XSb#`{qlow-(YlZ z7WBED9PH-Et4FV-HsoF=CEU6cc^j+hnMvM?{CL_WY;z9sxX&>PIa+@|UfQ;R3V}N- zJLcg=HKnb3)yT;A0}teaQREa-HrzNv$KG*17;(=>sHO8M%YN#|4xjeBt<@EF=OAuI zSt&F|2ej(*UgVS{cfS{-g`OPPv7S|IPkH~nCRS|H@Jk2kra z^4S(sPh`vusR>;a$;W-uroKkJRjKbagJOIgdB#{yX%dDewwCbZLafqDKoZ=hv7Y67 zMv$g%zzMe@LTn_&_-cSNfx*~bc#R1-6uo$P4xYlfI?lJaP34+yvh}t^) zIhCr>Dzt`QmmOWPB(5?0usEnZ#`V|^+)jT?RD6Sb+Yh0Hb{WwZ$~+%cTV3b0u+1PU z|Hn+VStpMpvcxPOFQv1U%giMc8WECT`)BM$_xV87gyNFZiD>~HglkW4SLaEC#Jxa9 zQiV?;%It%9Y74_1Gjoe0W_aP3kv9qy0B&hYao&cbcj?g`EN)EC7W0cG-)k1&UO(E{ z^=c91^RL)K6(nCO|2#VYi1|HSwu&ZJ1=xLqt|UroN{nL}L_A^CI}jM>bj&(~k8>y0kX2=mrxY-DKe^TuF2K?z zdHdUi!J9cLGcSFnpT)b2t1Dzw7GF6lDX_NrH2AHBbwA}I8%B+}MpIZz89TFPTt7-@ zx9HnAXV+18kGgUy`Eu}?A$_iw#JiAWX;4j%XP8ON_-0dHr@Ic%@pf=TfbJwDXLv)Je6|S;56qIo7a>%^1)pBh`N{ihFv|bs8++f z2&zPRBSte&!jwA(mRkgnM5hcPs9}!AWrWF-$c32$wzPg~r$=;hNBLc?3JQ>%g_!uq zYK0$A1^iXxQ?BN1Zf=6TH5VS$m&;c*79~({qh{)dtmA#R%Uyj$4vPXIey(9c6_AMz z4R*+LrE(r5Fn0BFU9f^pc|e@@uxgB~0|CuKRG+!OyqPzm!_^dJ&@nuY^Co)LaItaX zU#9&63^{6cwe@plaA?NY=z?E$7JRk5Sw4|uSN(-PUobLS$`Hj$OY6#S{%y_q-K}?1 z#d93XVDQFdMuz+*_-qaHhL#<@A8(+wo@?KuCg0EbMa$Gj!Qn4<-?N~G8-ovv`fn9H zH#zIz@k5k`&R_NME*?dJmta|bPx)D&YM0{LV;o4$s3_-|`ef%ODP!@%Ni|UehXfrn z3~r{1DY*?PjjqWC3scJ~HcchLOiMr1!G27rDQc! z_p&YED6>&?`Yc3T;N5?n?TE5!LRYgVJM$G{hw_du79vsNl8dqRMAr9 zhcKofn4#9N`^Y&w#*PQ8O0G<+{&9s%05iIIdWDVr_~`&wb?_CxNGTG+Xgn|PG5YgG zQv0%(GbZ-cz3$J3;^%|EAVGTFV!<&zix-}=nV` zmo!F`jWd;c^78B<8`2?WdefEJjw5xeAe>NL+qd|Airr+GbE{Fciw8?+knLdJU=EYt z92NZTxiT~EJI6`YUE%wY{!i{mS4XDO#o{P=eCCL9$~b=E4s5}y#~vQpKfN%BUx-@- zvvMq0Z()Jw0C&1GBw+N$t}{#J^E1g&Qu%*cyYhG_+qNw!Oo|w??=&GQ$`Zxcmom0& zMPv=(L0J-F>=IeC4{4Ak*|NkVZIsBCX;G4_Wv_VXJ1^1uzTfZt{`;Q4`aLt|zLxX8 zu5&q#XCr6-BK{*9w;eQh{sH_5IwiBMvNLUBne_fxUu#mQkWR? z``Jks5H!oy7_9X&f)Vr9O~o`X)qRYAX2hIYIiFy6~d?5^3h zy5B+k&;<<`yHmV|-yy{2JT(hO@n$SKmFqQftVSv)HCF?Y|2H?H^M=Ie0n z0?`FsTWcCkJlzunS*xCiFK2X~PIlCn`m|ul+2j!ugQtHC(sga=oc4*vLEV1$mKzjJ zmX(Zcu}x_)BphjW{By2ixKC88FJE;!_y)ItB59E?B+JQ6)Ok#*IPp$MW-nZo59Ybc zpbB<48y_Y9?$Sb~w7TET5)JyDKbgq-9D zx}+6CdI1ibgrgCq#vUJgz*Oby&|RN9QMjAukhLYY|8rJs?JX|Lg&CGTM51Dp&mjM9 z+}|9m)AzfxZ{kkZK%`eRr;!*aQ&+C*u{{|)qznA)Nw^S700wcb_t=t^LNG(dQI)cL z6cTNrEO4Pbr!Dy3#9d~<`+vO$_h zRgU4x9#&>cGMu-*pzq3&e-LsMZpdvGYuh_F+?Tpjg5r|vIljN5RRzQP?(FbKoc~zl zHy#P^xYi4pEXRTw&UcyKZAAPDATreRnIbERvs*{qDRCTE%+^;udk8Z<=SYAwAcH%yo6T>3zoKgL`(Fl%6(*#JNL!b#HqPxSs6B|b+Iwpi=^(o-?ge}p&HrR+U&+{mGf=r zvIcF48eP~Nfy3?WKrW|_JP%*p`(W|G5Jf-e6y_0d3JOe3+m_h-X?0`?BJtfjwHf6o zPs=8K&N-9E3X8Z%OHXiWy2JVbwpdEO$194BLiL-TI18JD6V^5cl}%}?H@Pas*W^hR zSc}0DuJ-S;0V8v6o^X+A*Lr8hjgyZCmw^^O%hI&dg*@t(7h;CpltmnfZm?Gb1vYDNa2>klCGL zm@6L{5#P@?V3EwM#q7VVxm%tx#G&3uR%$Y16^~jT<34>ix$BhEt%=A|D+L{bh7_NP z^_Q)WK8V#wlh>uGH`%w( zFO0LKKcO}0umfwUlD%#mN|Ww;LC((uvK6(Xn#- zo5;lBo`08#m|J}z`*|v^?BWln%Y0QDLh%WWp$d_wsqq0-!gvxh<5$tb`b{jrr{1j( z)a<++N?J7+1NN&3C6Mi8VE3((#%C@@C6KiWoXSafHdx4<4$E7D2lIaosC@R+x4|ly zljA8;EtjW7O1zurUbUBSHO&|YQNBxl%WX?qy4=2Udq#a#RO`p&5cBm};S14*2E8$5 z-MS&ZOZ|qY?k}5)8v9KxFdJX&y^>&|$0I`QQ6PUi;7^ZldhG=5K{~eO(r7HQLUytu zsao$0yrvrbVG%m-y0GU9_=1$!dy~(GM~P=aInmp}yk0Qun|q3{NlYnmSNXu!#x-Zi zP_lS+b9g;EWS|zx`#hha-9K$WH87BIp;9$aObkCPaAow)a$H-STJEm1rdrPTAKhjr zSK;o&M_miK{zN~oP{9^o;}n#m=*m1do1flppK)sv+=L~pgY&Jk;_KxGYsO@XRIbuK zg-(?fJ*-C2D}oc9kr^k{n4B9cPrVuVF6)w6{NgN=O8Vn_l=i za;Xzv>Cz*%d$dP-51ute%9PKfOH0(P1%)rfU)k!-5V_=WUaDc~$G%zJ!)$!>y90-+ z;$?dAr1Z@=nxK|<;cUAC+shdaro!hpui~Ch^|IR6EzvlaC$ui(m?EJP++(@pn3|S< zeutI*u~AipKajI8DjS;k}>`fweNRq;|Uu5g|6$}aD_ z{Pf)3muGIOYub*p@8pSRJ+FcdSCD?aEhHFbu=QpvChaQj4pndP%_)eg#(z*{xoLzb zXSP6c-EnW0cOt4GnQSS9?n06~zJQoT0>#(I;nQwSZW~!>idno`c%&uPr{HH-_bGt( z==IG(Ww+k795vc2UQKxgIS;HwFHt!e5;da%!yrJNZOtPn>2A|}Wpz%8pkaC_1ZdcG zv?IX8yEUOCKG+o|sTBaZ3e7(_{fL2l?;A zgzRo02_g1m=J!Tsfh=aeIfiGd<$5{o1z8%+_WOgy>ToyXQ6r<8p(_CZKIt&zTRixL z8>Al_D^Z`PqVH#1BO+UEwG9}lO%Rat+cQm=;FZOepue~6k(1iCjhaaJH1r7gzyUu$ zr@BGAdy_5Nwr;>9`dXJ#pbM}+1Oe>N*JSL`O(z=*eJL1B>B(N|ya1S`i@;DW{3;MT zl^ih#)lOOBfd~sGVqPc1MHPO2!1M%*=2I5}4uR@$uBeY>%6o$NU1~?x?J@_mPjo*} z$g=T+#Ex%`@X))5@Xm{vQlTXoB4AlO)jnKB_>aGB~P~)XL1gDSCGB&i?+&b9zA zhf`(V_?VV@$|`8p=MB^W5GvwtMraxL57vgCrj(HbnMwW9jcMWe)r#stnZxecI(C(-KI&)G}SaL9z zQ^wqnZ-53vwZ0ofnJ)R_By(oeuqbO^>@*bh@1aJeL}r(q9%xZ?BZ{_P=dO0;8M(dM z(kpKJCdZ&^+-LngV-`DPhPE_>dl~_UO!|clMa$Q_xw1C5le%zPxou@F+iFKMgkeBBVp>XHaR z^}P@Ad6Dx_%mWgc5JEk}O|L=?-K_3(C_Wp^r^oMXETRa+g=A!y&wt1qEYf}MVb8sa zD!_o0i>gl70B2JM*F(GUr~K4NJLhP*2T0o@odjAtjzZ&TDuK9U!G^O99w#Hb$W6fb z{~OXT$9sN;ff&9k*@3NUhe2A=c&ix#kO8Xe5KYxyGxy3N-%mTQk+rrvca<`|O6y!` zk>}|YSRx7Gjtttd7zu|jeRC`YhRl(3uMyV?LCGS6d9A!FDl11~)o81RP&R4|$#xN;++e8;`I+o*DFMXAa4b&pG82EnL7oXT#>l4AK7A&K zIR;g$%GonOUw}Z`wK2ilG~SJRUplj<0mUWFW2*9uZwsEYC*4Ty_Cxt9EAJ_kHU+gA z&-7z+@QPB}TX{Do)lTD0UPVYP{bN515QOIQ`|+|w8V6AKP$-d6sCbYVXyWz8qpWj~ z@94!lAga^{_u}2>+=kWzdIFddubtB8fB#YoH4P$;A`}I!q!7dWJvlmOJx9rpnY+GR z_fLQpyiEO>~SF+>ix-n2uZ($M!*Pmqml=ox|wEWR6f<(WkcF zr!kW!7Z)5tQWft&DcIDx_ve3 zTIUohV9bs~O=H}xsC{&yUi$F0S#y`t>dP5PPQM@@=lKe?_(c|ZoW}dwN4O?!QQF-N zoc5m_X34Q(u*IUBu*FM*9nez870@v?kJv2jmbhEPe+Xc>1l!hu?||hM6ZL?Xjsi*K zQM?Y^OP8Soo*!$^)6On>Si7Qap}_(?cJq>RMgORa-bf7=WH zb+>iZ$ z1U!*9hw8j;P!yN!J_WeNo-u{AV@$-q^|pm?>{q3_vbm0CEW3@uy%H#4er+u4%sSc- zQKZghE^Hb4ETK9~rcgQ^y(S|537Q0{T7;=p$bpumK|YT6fSxUW$y`0=a|BKz1-rOm zLrmlw!FXMGoJ;$w?{H7PPO-e;oZ(s-RSG?)0dNyw3FRj@Sc+P78bTwtaHl&TECdVg zUiCP4;vu~EpBDtXWdS>v0c}JB!Guvdlmf?_9qPQk5_l8T##RCiPkoj=Q*V4C(kV~^ z)C%s%l>H`h0L0)Vwg2QAu*(LaV+`c6oi8vBgDKggMqK+wPBOaqJLRM417%2EZ0vIn zurcgA_Sa?t4!U!C_i3Q`Ap&O=ASB0gAte?p1Htb2Qv)lt6scL1T4dtml%D62pmf(lRB91m8rs4X}g{aZvTx&sm z27xi_D&%$S>00g|I_=yi1uPxwwFN{!`u$yI0cEXog6v$bG@XbIu^qfrX*uUKhCg38 z&jQC;*5NH*yybdy>mgJbpDUEz{A>Q}a&T<1Xj)XLfSsjVy#j8CUXHxdzYhe?TwJFD zS16nh<066JAugo%Y}^nq1g#`E)T4&)+&lPx{6HHW;J+WjQmgiNw?(pDpzB0D7AqKM z)9`JtKLhEKqlUBOn)O}Nhxg44dpiUneq(donStQg>r-v{wHIcppt}X$^TIvHVIo)R zdLRPa_}obbCc+h0LEir1G*(p19@xu@6X6;a=Tja+(25Gxj960|J+$4I#XP&-EPF&_U%ts|&jYgp$n|K*Pp>D2_{0E|&u?bJ;gnY^DXN9`eb zjitI$A3Xn6c{`fTQ5tisPr>8&6d>4J&e9(oJE|LYV!r;#t(n`1eKuXG9=wr=U&&btcQ-T0$IxK<(?Yvk}|;Lf?t? z8<`JnW9lZ7eDnRJqF!W1=DLk~-CX5h;2)oFOWCk>IKUOwM?M_9Zj750ugymXE33fB z3-29RUupUnFo8QiTR8vN7y%7!T!LYJ0g)CKVq_pP(eHi23Lmh0%ESeTbtO=6y9ihW z3P6X}qbn6?H+ibCqH`U2h4h;&Ci_cEp)2{tN35o1ZTI1PjQXw~%0!n8&s>jzHit}z zX#pqc0)%9h0CVf8_a3*^mAI=`#*wu_P%!pxgnKLlG&?%C@8Wg>B61Z(k0Uqtg@!5v zJrm#mucduT6_OyNNvW`TI0YI#9Zl@L-cIgAZ~|sid_{Jlh>LC{ zgw;iB?K9+uql^0THNaT9xs4K{{1E(ZnUlF@24o@D?8|f7E70k;@y%r@ zJX3%mk5Dn?2)8MXbm_UYS_!$L^NLMhJclbI+R%Xj^zly(R*IUARC5z zJ~Lti4YGd!e4i@+{buLlh~ZuUZO`a`1+kS2>Qj!8TL`!wE;FS^fxOa4m5t1w zCu+bGD|&z8v1<`&o#do}X}}g$1GYk5dbr}WK^+i&2N8b}sXI22JRsQZulI35sQaRh znB{87=$JGAS#AEUG{dABXr)(;h(AQT_Q@LPfPPf!t!>PH2ZJADNF5xx7=cjvN96nl zkiBvPfh#W|6evw2LIcP?)X`2L8Ybe{01KjU;+UoS6-Cm&S% z7{qofEeFV_lCFlQugQ<5ksf_yH9c(ut=MlveByo)6fNFBJ^?|arTzE@EZvo4`M|Op z&j6XZ2Fl;{C#3+m`6UXv&yFGl!4jm8C|hW`&qDdDA;Tznhg4(Nx|=sdTuwh=bCt(` zEbrpX-?R-&y)WU7b-nlEh?iSQ4rB`+A$`c&Z~!*D8a)MAowciYSsiI7-?6u)XG$~B z8{RHn?h38rye74$wVzHwaQ5}6$1{=Cy2C}y&A>9__@NPD4-M7+*WsotjDeu*oC~OL zqENdA9v~NT3H0FVB9>9fIjVKCtfBLina#FIkd6xkFYD{ymW-nSmuvub!KIT)<6G+W zbB-MW_X;ej#}$g#f7z^Z%iS&i92Oy{jptlVW_7q~)h zz~`!t6s@r6qTpEwXb@dv?@ZNp;bo8|FyMk1s0sF`2J&s^b-V8Ubw+d zUHo+_kmxb7tp$;$+<~ecy2|a{rBZf+-m;V@%Am9X$OHpGTi&{dx8#BU($si=Dh=5c zs2Pp-R)9QQf$FFTsq1(Nd#u=}^zgtf-95G8i#%P+`AHgp8RC>W|L2n5B1I!;@B_T+ z`wS#7hfgmd|s#;4Mau+5an-9nf$ z?dhQ@Xq1Vrvl`Hu?w6OxL{WoTg8L=IT-sZT{ffu`%)` zYntbgP*Aag=2td1x-O{!S)G84PTRV>s= zGax4M7hXaPBZ3e!E^AAW96kE-JpwaTCh1_wZR&Z4!ZZZc0%}pnKVXfuB`+gD@cj1n z&|87-b7N0Su&jRmBL`z0`QidFp8|Wg!>YYbdq%%FvrNgx#~s87CCkKa zp1hXyvh?SOreb%DsI5LjwDFff8}mcVYV!4zv1m%4)nhHJPMb@a$--ZF7yMOH+7+Zl zF!}cWy-7_e4s5uXXEBLj~|3 zI{XiA&j6U)GcN3}450qCJkVSpafP`0ti)A87pI_<;SN7h@{pj|gwie=jV0n2*^P z;D1#+wkEe2nt7ff5qM>zG@9(XtW?ejsT3*&Vfc~<%vY8{xoJ!7g$2BdOL^LrVG^On zIj7jw$S~b0K3^@TF@8dSTKr&K;|raX{29BbXOQU!l5TAQTRrExX2Ne7QDn5q{7fJo z?TNLzy=po)?DR5QQBtQeZ#8_UALjE5qe4Ss?1X@IHb>M>R${^VUnz|t)lI(sPN`1_ z=DbIJCPq5Bl1vHNdx=~+2gDL0@ut<^33(wD+Edmf4iE(>#S-;&gjvP6=bt*96ZEsg z`t5t=GbQ(aVUI}MHBH4CQ*(&;8Fa6y5=A>Y?htH6d=1#|mYD|3iRtKJ-{=GA>v%pT z0G!m*);ec}%4_>``jZab&~VYVxkX_t5=@`~i+B$+SC$b@sydNp_c4pN{$j>Z%s6(m zY}4IB$yKPK>M$U!rNe>ZJ>pkD(bT!!pLYi0LS&h{n<8SJ~w=Xcybqd&eiz0cHm zWHIHEk#@}J^Yn9+nBrC9EzBp|$GSXT!&ef3=<(e2@jlF^YXjNBG@A2#R^>w57xX() z_GhKV9M9b&eHCPwy8KQr94I5vt^yRkPn;WTReTJoF|G4|vMYVNzbG661qG{p#H18U zCgSJBlIK2iN6u%Bf2L}^b0{{j2D;UP$ikmER5^j>d`zpLREO(f@IQ@i-`knYpb@Y( zGMGPt0uJl>XHJ{`04gD}&(5R#q{82;CA zg>)c`2nr!6(Ar?116+E;JH=@skKE@AQ_4+(Xo*}h&EDzR313G0M&nmJ7@FcJc-T#c zjJumr+jVnl1*wy?5#Ingn9ifRFZ|Nf>+X|sAH$5Flt^>=bbbPXJDr2c^-NEZdg|!y z>svNYZNg3(5M6P87{2o!FgnV_8i_(0u@&I6w2Gd%nbhw4S)}*xDQHje*Xn-@JoH%P zz?sOzDFVaf4#1d;B1LjqMmVy-McT{t%+3v${7!DUuB@NrH5?Q92&~Ha49~|K z+1y~|Li(rYd?5|<8fE@K9doO16;9`k zpL4-9-a91CZcbx!*+O7pXv~ZOF2A{w=z5Qt{ci-OvMaY2as=&l+sTT^pY&zX#`e{z!f-(!uz*2Po6S&xo{;P;@-# zlte>CwdJ6;nu_ti{b)!dBr8VUG&mUlV_Z}r%*4>sX;dNHyMF|6#pk`EXZ%%61^;QQpHwTupS}7& D+g`fw literal 0 HcmV?d00001 diff --git a/docs/design/arch-images/nydus-performance.png b/docs/design/arch-images/nydus-performance.png new file mode 100644 index 0000000000000000000000000000000000000000..bb54be8d59f2a9554eb9e8c107bf1efc30e2809b GIT binary patch literal 399671 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Ď&SW^i&;)oC$>JmDiEW#_4< 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

xX{9(Z~gIVBprbsey9|Xn*0gu&q(V{DV)+ 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 IX|sU;19PkkJ^%m! literal 0 HcmV?d00001 diff --git a/docs/design/arch-images/nydusd-arch.png b/docs/design/arch-images/nydusd-arch.png new file mode 100644 index 0000000000000000000000000000000000000000..4c8dd38af2be460c8867681a59b2d65c2647fe1d GIT binary patch literal 964784 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

n>K|GO?Z(RCc1@`#O4i;-&pV-im@qCmFnCB6CO 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%0D2c#C77FX$i6i2LqpodKW5xL)zXCHHLOgow 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%0DLZy0 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�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�S*x9^r3d^c2j<`bLd}O3;o{ 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

_k49|3zzz;Pl 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

7~1krd+2cfSkUty{O)O$C;v5E@WBTR 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 z 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

9?wsXX2)lX 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

    +iAoD$TP1MwQIvLTUBQXVc}`3Tg6iV&*^ zOUH8M6o=mG>uUaGS)TYVy3Y6A;;~yks-tZu+NeA@LDV4uQ;9VknL1bvC} zgr*7S10{Aj71ybwy5tpkqs3?%z1|mFXdt$P%vHu9d`sxujlGwjn(KKX=7K6&zlY*Yye9EEeNCelG9rbz54#s(_(i+qlvDCGCQ|2+ai zWP5y_*ZCriLbQp%mGS||)2C07q4GMyR6f)d!gqO!fR>_2IggZgKgOo6}D)Gc!Csx1&DLccfYx3{K?9h+1V4tE;oJvb!>?zgY(% z$o$iv{uCPo4s#|wJm5s>e8wW`g*SB(M@k5>_`e(w;1+b;ixfF~^jPvilLAzo$iIB_ z5>dcBnR{x#{N*n_7b))Y_(V$1ki6c1vD*?hVIzUFDuIoY^7D9d@Bp?n%xQck8F^Ii zO&cRi9?aX#X>-ig7Dm(n5I-k7zyKme)hAUVMbk;D`qd3YcKjgTz&E= zMNp!EpR_mOa%s2Sf`2wlSo!?YilD%5DGP^=ZgdNysE8DcnyLtXh!;(l@ZgfTf*8US zI3ig)CRX)}z|J)qcVv~Us^&^`Qj|#AEZnMeQc_K&qkt5vZ|qOAEV$tTB};CU4XYly z8`avWLP=hwuxcETOJ0DiIG&M8$MD)i`;^heYgb-Apg_D!u!CyYogK8M`yNKK){ebU z_?}}&0^OZhP$W73ltrG++tvl824s~XRY!b3goLzV7xYMCx@mthIv5_^9v7+I5cg`n1hSS)7pJh2)XcFuGz^bK$r&gVJKJZ4)d5H}a9MT&uYWlmSQ}zDYJ=BZ0Fmfv{l={CHj;7ZayvoK8wmM>xwkDNBp- z;ui!*=fE#iEcQCmunHEYF@$rHld@pz(WPa-MC#K<)=6JRR_EFpyX#oMP zyT%7OvtWL#rl!*ubDcPMWA7U-UXsYG)@5v1R$*$Xgjk-0S_zx2lr-E$;bfWdd}y9f zXAb4_;iH(@T;E9Gw=01#kDO*TA5>mr8lf2uH%R;3+@Nl&>Nc%-T;FONh1WR0-QC^p z>}++qKG$N1L$Dfnx8V)ijFXa54q?Zip-{$27bO`wbFH4?M$p3f7>F*0Qv>{KhB2Bd z6`OAin?{nx3{~H09i4u`XTFJ*F`O!fI)t`HAl$m;Q9MI3+f-#EfoE3&sr|HGmOXrx z8ac!-^q@h?b7PfbP_tfDYu>P^tL?x?weF-b88=NOFlww(&ux`BDcjwSNnko=dJxeo z3#Vd{8`Yv?W+-)Fq@0way-EMQ$;lh@$xXeyN&Vcs`K4Lw%k$0)^{&6?>g|h-=J{C3 zf2m3edo;}?cE9yE4`*bosNtN_s<#wSpY=*-&peT{rnAd4$c}FGcOyh^YZX>liVMC6 z0W$P2Skms5a6D)pJQ3cQxFV!67dwSC!t`E${dHhtLVxf^5%^&Ow#drNZ>OM~lef3G zZwXlo$#S0Yhq(kWOg2OW045$d#`q~Y>fH71Z-4tw{^U=-^PTU&9#@cK!pm;wwBv*` zNs((%q3~fmpo0yFCC4O}8(deq%zCIG$IF*5I|V;-^<~j4k9&Xq^Ph9d%Fh?*6cJb5 zf|QCRO9|Ni-tYaM37W6G@`{O`T%IXOazoaQnBiOmb)o>a<%~omXEXwYQ$(m?4-hId z59_P1zG^cs0W|Ke^c1QQ3^r@zF4D%ByF3UikrJdDog|e{&{2AFD<@Kj|KmUYV?I02 zH1TKUrX+D*Zj4vKQ|1;G(mzW6o*m*MFuAN_0`)1h&2b}vGb(|Nlk%}XINBr3
      { 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≪z`RB~=X38*i-f!z=94N&jc|3&55yMkNa4*_l+Et_^(wE0;*dtP6h zV^~Q9i1K;a>_OJz9wS3HlDz|Yy>v9cKk4pA?crgDJO9ZP6tkn?i)t$)Vv>US)4|W? z6Thx|O89A+ublWC!jbwFN{42zE8nDaE3iQlp)};e*WRSdnUbC2d+s=PmQTLd0<@zH zCA}{HM_)eQLaGF=S^6;gLN@L|DQg7oe)+a&ZFcFZi1K-Ge5>0#KdplEq#eDCZ@oMX zS7m&$L{GGA%i?G{`ttM9y<2Q!61uIKQ!?@;#~zLW10OdA+`J?hH&+@M+(`Lh^T%kx zGkDTsP9G*kJ*nCw=I|(BX<25GBJrYP?o}_F<@YGOL;83=A0fDGc;OM@w9vl_3Uc?N%|ad0_h@);H0_8nWvoy+E?gIt|Bwfh!mo z_6S$d@$+vOiR^t%=TzJSjPw#jNilqff(`NnZD)cw!f`+=8t@&Z=f&-HZ6{0$W4s^c2o=d72@patBx`U4 z{E$F@u@v~=9_-<13WuX`2go9WO1VX7i?~@Ksl+Sl2xmQ2Q>_Xq|CI>t2(bw}DGZSG zNsS!)%rH$xUK&*tf`|`Z0L^vG1#yI6o8V^@Q6c_Kii%ROtV1sx=TDg1kyXbw=`CCd z0sSGVlx<}(wgc=@oRWe(H%YLq93f&P^d*YXG?8}7pI9SR-y-N{Z2_~iE6OHELRY}_ zLKX|JM^06}IEYh>QiEh9Yg43VA@+@YCiyaDK9#&y?ozP@S=Ge4XLF6~s>(w~3G5gl zB1lw$hWTyaEk*EK6I@vsYvQ^UjY)B1vS^g0qbSPcj0%Lo(dr7oM@otkr7S5CuX=^t zX%!_bfTCn;zv2$4$PJeY87oplqBPkwK!BuS}5hG@^79>(1j&36% zB`BpNeM-cs9rbp3iA_P<Nm^!HlFjJ2Kxn=5h5o*K zp8xo=dNFI~1xrjZiC=tq_~f6zJpJPrr@#Ab{^kAR?zBD{p^<|P69ShSmfLIAm#r$_ z=2FY-hdhSz-;CX#iysjN5NQ$?(YxpqViiG!$!~-V0z+Jb%H^h>^JnBsM1U^sY%Mbs znuH|4vF@$f+ES48;f&2hu`VWpy|MG8dhHN6T&PT5OVc)unk;HYp@(Dqi#E+?T|vw+ zAjWY;3zbIj1C0}6h^2|Qk0#i-nI5%=2UQB~$zg=07+(eqQ8ppU3@T_~tMSbz4M70H zfj>Gbr0nA>6lb9gv1~iW0>R6b6QmlMru|1jKrWuph5bL`!E`yqpI!JVetZyts(m z3tEV0v<>5On$<}f9;CrxR^Xw8IY#Kx<^~k9WrA#X-x{KqKhPrTmnI4%0D1G_@_-xl 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⪫Zu%x|F21rtRK@_kZ{~fI(~d4 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%0AWB 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 HJPQ7QEl~5iU(uY(RS0Wwoew!4ik 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
    1. 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 @YWOU>U|&A`c|%>iS5Z@)I+~yJ|{f8$>K1 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/mounts/\/rootfs), so it can be seen at the path `/run/kata-containers/shared/containers/shared/\/rootfs` in the guest and used as container's rootfs. + +The process of creating/starting Kata Containers with `nydusd`, + +![kata-`nydus`](arch-images/kata-nydus.png) + +1. When creating sandbox, the Kata Containers Containerd v2 shim will launch `nydusd` daemon before VM starts. +After VM starts, `kata-agent` will mount `virtiofs` at the path `/run/kata-containers/shared` and Kata Containers Containerd v2 shim mount `passthroughfs` filesystem to path `/run/kata-containers/shared/containers` when the VM starts. + +```bash +# start nydusd +$ sandbox_id=my-test-sandbox +$ sudo /usr/local/bin/nydusd --log-level info --sock /run/vc/vm/${sandbox_id}/vhost-user-fs.sock --apisock /run/vc/vm/${sandbox_id}/api.sock +``` + +```bash +# source: the host sharedir which will pass through to guest +$ sudo curl -v --unix-socket /run/vc/vm/${sandbox_id}/api.sock \ + -X POST "http://localhost/api/v1/mount?mountpoint=/containers" -H "accept: */*" \ + -H "Content-Type: application/json" \ + -d '{ + "source":"/path/to/sharedir", + "fs_type":"passthrough_fs", + "config":"" + }' +``` + +2. When creating normal container, the Kata Containers Containerd v2 shim send request to `nydusd` to mount `rafs` at the path `/run/kata-containers/shared/rafs//lowerdir` in guest. + +```bash +# source: the metafile of nydus image +# config: the config of this image +$ sudo curl --unix-socket /run/vc/vm/${sandbox_id}/api.sock \ + -X POST "http://localhost/api/v1/mount?mountpoint=/rafs//lowerdir" -H "accept: */*" \ + -H "Content-Type: application/json" \ + -d '{ + "source":"/path/to/bootstrap", + "fs_type":"rafs", + "config":"config":"{\"device\":{\"backend\":{\"type\":\"localfs\",\"config\":{\"dir\":\"blobs\"}},\"cache\":{\"type\":\"blobcache\",\"config\":{\"work_dir\":\"cache\"}}},\"mode\":\"direct\",\"digest_validate\":true}", + }' +``` + +The Kata Containers Containerd v2 shim will also bind mount `snapshotdir` which `nydus-snapshotter` assigns to `sharedir`。 +So in guest, container rootfs=overlay(`lowerdir=rafs`, `upperdir=snapshotdir/fs`, `workdir=snapshotdir/work`) + +> how to transfer the `rafs` info from `nydus-snapshotter` to the Kata Containers Containerd v2 shim? + +By default, when creating `OCI` image container, `nydus-snapshotter` will return [`struct` Mount slice](https://github.com/containerd/containerd/blob/main/mount/mount.go#L21) below to containerd and containerd use them to mount rootfs + +``` +[ + { + Type: "overlay", + Source: "overlay", + Options: [lowerdir=/var/lib/containerd/io.containerd.snapshotter.v1.nydus/snapshots//mnt,upperdir=/var/lib/containerd/io.containerd.snapshotter.v1.nydus/snapshots//fs,workdir=/var/lib/containerd/io.containerd.snapshotter.v1.nydus/snapshots//work], + } +] +``` + +Then, we can append `rafs` info into `Options`, but if do this, containerd will mount failed, as containerd can not identify `rafs` info. Here, we can refer to [containerd mount helper](https://github.com/containerd/containerd/blob/main/mount/mount_linux.go#L42) and provide a binary called `nydus-overlayfs`. The `Mount` slice which `nydus-snapshotter` returned becomes + +``` +[ + { + Type: "fuse.nydus-overlayfs", + Source: "overlay", + Options: [lowerdir=/var/lib/containerd/io.containerd.snapshotter.v1.nydus/snapshots//mnt,upperdir=/var/lib/containerd/io.containerd.snapshotter.v1.nydus/snapshots//fs,workdir=/var/lib/containerd/io.containerd.snapshotter.v1.nydus/snapshots//work,extraoption=base64({source:xxx,config:xxx,snapshotdir:xxx})], + } +] +``` + +When containerd find `Type` is `fuse.nydus-overlayfs`, + +1. containerd will call `mount.fuse` command; +2. in `mount.fuse`, it will call `nydus-overlayfs`. +3. in `nydus-overlayfs`, it will ignore the `extraoption` and do the overlay mount. + +Finally, in the Kata Containers Containerd v2 shim, it parse `extraoption` and get the `rafs` info to mount the image in guest. diff --git a/docs/how-to/README.md b/docs/how-to/README.md index 5a348550e..87a581080 100644 --- a/docs/how-to/README.md +++ b/docs/how-to/README.md @@ -37,3 +37,4 @@ - [How to setup swap devices in guest kernel](how-to-setup-swap-devices-in-guest-kernel.md) - [How to run rootless vmm](how-to-run-rootless-vmm.md) - [How to run Docker with Kata Containers](how-to-run-docker-with-kata.md) +- [How to run Kata Containers with `nydus`](how-to-use-virtio-fs-nydus-with-kata.md) \ No newline at end of file diff --git a/docs/how-to/how-to-use-virtio-fs-nydus-with-kata.md b/docs/how-to/how-to-use-virtio-fs-nydus-with-kata.md new file mode 100644 index 000000000..bbc177e0f --- /dev/null +++ b/docs/how-to/how-to-use-virtio-fs-nydus-with-kata.md @@ -0,0 +1,57 @@ +# Kata Containers with virtio-fs-nydus + +## Introduction + +Refer to [kata-`nydus`-design](../design/kata-nydus-design.md) + +## How to + +You can use Kata Containers with `nydus` as follows, + +1. Use [`nydus` latest branch](https://github.com/dragonflyoss/image-service); + +2. Deploy `nydus` environment as [`Nydus` Setup for Containerd Environment](https://github.com/dragonflyoss/image-service/blob/master/docs/containerd-env-setup.md); + +3. Start `nydus-snapshotter` with `enable_nydus_overlayfs` enabled; + +4. Use [kata-containers](https://github.com/kata-containers/kata-containers) `latest` branch to compile and build `kata-containers.img`; + +5. Update `configuration-qemu.toml` to include: + +```toml +shared_fs = "virtio-fs-nydus" +virtio_fs_daemon = "" +virtio_fs_extra_args = [] +``` + +6. run `crictl run -r kata-qemu nydus-container.yaml nydus-sandbox.yaml`; + +The `nydus-sandbox.yaml` looks like below: + +```yaml +metadata: + attempt: 1 + name: nydus-sandbox + namespace: default +log_directory: /tmp +linux: + security_context: + namespace_options: + network: 2 +annotations: + "io.containerd.osfeature": "nydus.remoteimage.v1" +``` + +The `nydus-container.yaml` looks like below: + +```yaml +metadata: + name: nydus-container +image: + image: localhost:5000/ubuntu-nydus:latest +command: + - /bin/sleep +args: + - 600 +log_path: container.1.log +``` diff --git a/src/agent/src/device.rs b/src/agent/src/device.rs index 629cc3fc2..b96ab49d1 100644 --- a/src/agent/src/device.rs +++ b/src/agent/src/device.rs @@ -51,6 +51,7 @@ pub const DRIVER_VFIO_GK_TYPE: &str = "vfio-gk"; // VFIO device to be bound to vfio-pci and made available inside the // container as a VFIO device node pub const DRIVER_VFIO_TYPE: &str = "vfio"; +pub const DRIVER_OVERLAYFS_TYPE: &str = "overlayfs"; #[instrument] pub fn online_device(path: &str) -> Result<()> { diff --git a/src/agent/src/mount.rs b/src/agent/src/mount.rs index 6df33c422..9618ae94c 100644 --- a/src/agent/src/mount.rs +++ b/src/agent/src/mount.rs @@ -23,8 +23,8 @@ use regex::Regex; use crate::device::{ get_scsi_device_name, get_virtio_blk_pci_device_name, online_device, wait_for_pmem_device, DRIVER_9P_TYPE, DRIVER_BLK_CCW_TYPE, DRIVER_BLK_TYPE, DRIVER_EPHEMERAL_TYPE, DRIVER_LOCAL_TYPE, - DRIVER_MMIO_BLK_TYPE, DRIVER_NVDIMM_TYPE, DRIVER_SCSI_TYPE, DRIVER_VIRTIOFS_TYPE, - DRIVER_WATCHABLE_BIND_TYPE, + DRIVER_MMIO_BLK_TYPE, DRIVER_NVDIMM_TYPE, DRIVER_OVERLAYFS_TYPE, DRIVER_SCSI_TYPE, + DRIVER_VIRTIOFS_TYPE, DRIVER_WATCHABLE_BIND_TYPE, }; use crate::linux_abi::*; use crate::pci; @@ -130,6 +130,7 @@ pub const STORAGE_HANDLER_LIST: &[&str] = &[ DRIVER_9P_TYPE, DRIVER_VIRTIOFS_TYPE, DRIVER_EPHEMERAL_TYPE, + DRIVER_OVERLAYFS_TYPE, DRIVER_MMIO_BLK_TYPE, DRIVER_LOCAL_TYPE, DRIVER_SCSI_TYPE, @@ -233,6 +234,15 @@ async fn ephemeral_storage_handler( Ok("".to_string()) } +#[instrument] +async fn overlayfs_storage_handler( + logger: &Logger, + storage: &Storage, + _sandbox: Arc>, +) -> Result { + common_storage_handler(logger, storage) +} + #[instrument] async fn local_storage_handler( _logger: &Logger, @@ -546,6 +556,9 @@ pub async fn add_storages( DRIVER_EPHEMERAL_TYPE => { ephemeral_storage_handler(&logger, &storage, sandbox.clone()).await } + DRIVER_OVERLAYFS_TYPE => { + overlayfs_storage_handler(&logger, &storage, sandbox.clone()).await + } DRIVER_MMIO_BLK_TYPE => { virtiommio_blk_storage_handler(&logger, &storage, sandbox.clone()).await } diff --git a/src/runtime/config/configuration-qemu.toml.in b/src/runtime/config/configuration-qemu.toml.in index 45d830aa3..59753db5d 100644 --- a/src/runtime/config/configuration-qemu.toml.in +++ b/src/runtime/config/configuration-qemu.toml.in @@ -141,6 +141,7 @@ disable_block_device_use = @DEFDISABLEBLOCK@ # Shared file system type: # - virtio-fs (default) # - virtio-9p +# - virtio-fs-nydus shared_fs = "@DEFSHAREDFS_QEMU_VIRTIOFS@" # Path to vhost-user-fs daemon. diff --git a/src/runtime/pkg/containerd-shim-v2/create.go b/src/runtime/pkg/containerd-shim-v2/create.go index ef9374686..53b049ccf 100644 --- a/src/runtime/pkg/containerd-shim-v2/create.go +++ b/src/runtime/pkg/containerd-shim-v2/create.go @@ -263,6 +263,10 @@ func checkAndMount(s *service, r *taskAPI.CreateTaskRequest) (bool, error) { if katautils.IsBlockDevice(m.Source) && !s.config.HypervisorConfig.DisableBlockDeviceUse { return false, nil } + if m.Type == vc.NydusRootFSType { + // if kata + nydus, do not mount + return false, nil + } } rootfs := filepath.Join(r.Bundle, "rootfs") if err := doMount(r.Rootfs, rootfs); err != nil { diff --git a/src/runtime/pkg/hypervisors/hypervisor_state.go b/src/runtime/pkg/hypervisors/hypervisor_state.go index 6dae6222c..b1f58e7fa 100644 --- a/src/runtime/pkg/hypervisors/hypervisor_state.go +++ b/src/runtime/pkg/hypervisors/hypervisor_state.go @@ -41,10 +41,10 @@ type HypervisorState struct { // HotpluggedCPUs is the list of CPUs that were hot-added HotpluggedVCPUs []CPUDevice - HotpluggedMemory int - VirtiofsdPid int - Pid int - PCIeRootPort int + HotpluggedMemory int + VirtiofsDaemonPid int + Pid int + PCIeRootPort int HotplugVFIOOnRootBus bool } diff --git a/src/runtime/pkg/katautils/config.go b/src/runtime/pkg/katautils/config.go index c49f77309..06f6a6df0 100644 --- a/src/runtime/pkg/katautils/config.go +++ b/src/runtime/pkg/katautils/config.go @@ -423,7 +423,7 @@ func (h hypervisor) blockDeviceDriver() (string, error) { } func (h hypervisor) sharedFS() (string, error) { - supportedSharedFS := []string{config.Virtio9P, config.VirtioFS} + supportedSharedFS := []string{config.Virtio9P, config.VirtioFS, config.VirtioFSNydus} if h.SharedFS == "" { return config.Virtio9P, nil @@ -649,6 +649,11 @@ func newQemuHypervisorConfig(h hypervisor) (vc.HypervisorConfig, error) { errors.New("cannot enable virtio-fs without daemon path in configuration file") } + if sharedFS == config.VirtioFSNydus && h.VirtioFSDaemon == "" { + return vc.HypervisorConfig{}, + errors.New("cannot enable virtio nydus without nydusd daemon path in configuration file") + } + if vSock, err := utils.SupportsVsocks(); !vSock { return vc.HypervisorConfig{}, err } diff --git a/src/runtime/pkg/katautils/create.go b/src/runtime/pkg/katautils/create.go index c406d6db9..bf38acb05 100644 --- a/src/runtime/pkg/katautils/create.go +++ b/src/runtime/pkg/katautils/create.go @@ -225,7 +225,7 @@ func CreateContainer(ctx context.Context, sandbox vc.VCSandbox, ociSpec specs.Sp } if !rootFs.Mounted { - if rootFs.Source != "" { + if rootFs.Source != "" && rootFs.Type != vc.NydusRootFSType { realPath, err := ResolvePath(rootFs.Source) if err != nil { return vc.Process{}, err @@ -234,7 +234,6 @@ func CreateContainer(ctx context.Context, sandbox vc.VCSandbox, ociSpec specs.Sp } contConfig.RootFs = rootFs } - sandboxID, err := oci.SandboxID(ociSpec) if err != nil { return vc.Process{}, err diff --git a/src/runtime/virtcontainers/clh.go b/src/runtime/virtcontainers/clh.go index 89249f3de..f08eba67f 100644 --- a/src/runtime/virtcontainers/clh.go +++ b/src/runtime/virtcontainers/clh.go @@ -158,7 +158,7 @@ func (s *CloudHypervisorState) reset() { type cloudHypervisor struct { console console.Console - virtiofsd Virtiofsd + virtiofsd VirtiofsDaemon APIClient clhClient ctx context.Context id string @@ -759,14 +759,14 @@ func (clh *cloudHypervisor) toGrpc(ctx context.Context) ([]byte, error) { func (clh *cloudHypervisor) Save() (s hv.HypervisorState) { s.Pid = clh.state.PID s.Type = string(ClhHypervisor) - s.VirtiofsdPid = clh.state.VirtiofsdPID + s.VirtiofsDaemonPid = clh.state.VirtiofsdPID s.APISocket = clh.state.apiSocket return } func (clh *cloudHypervisor) Load(s hv.HypervisorState) { clh.state.PID = s.Pid - clh.state.VirtiofsdPID = s.VirtiofsdPid + clh.state.VirtiofsdPID = s.VirtiofsDaemonPid clh.state.apiSocket = s.APISocket } diff --git a/src/runtime/virtcontainers/container.go b/src/runtime/virtcontainers/container.go index 41954d67c..5c13b0846 100644 --- a/src/runtime/virtcontainers/container.go +++ b/src/runtime/virtcontainers/container.go @@ -860,8 +860,15 @@ func (c *Container) rollbackFailingContainerCreation(ctx context.Context) { if err := c.unmountHostMounts(ctx); err != nil { c.Logger().WithError(err).Error("rollback failed unmountHostMounts()") } - if err := bindUnmountContainerRootfs(ctx, getMountPath(c.sandbox.id), c.id); err != nil { - c.Logger().WithError(err).Error("rollback failed bindUnmountContainerRootfs()") + + if c.rootFs.Type == NydusRootFSType { + if err := nydusContainerCleanup(ctx, getMountPath(c.sandbox.id), c); err != nil { + c.Logger().WithError(err).Error("rollback failed nydusContainerCleanup()") + } + } else { + if err := bindUnmountContainerRootfs(ctx, getMountPath(c.sandbox.id), c.id); err != nil { + c.Logger().WithError(err).Error("rollback failed bindUnmountContainerRootfs()") + } } } @@ -890,7 +897,7 @@ func (c *Container) create(ctx context.Context) (err error) { } }() - if c.checkBlockDeviceSupport(ctx) { + if c.checkBlockDeviceSupport(ctx) && c.rootFs.Type != NydusRootFSType { // If the rootfs is backed by a block device, go ahead and hotplug it to the guest if err = c.hotplugDrive(ctx); err != nil { return @@ -1076,8 +1083,14 @@ func (c *Container) stop(ctx context.Context, force bool) error { return err } - if err := bindUnmountContainerRootfs(ctx, getMountPath(c.sandbox.id), c.id); err != nil && !force { - return err + if c.rootFs.Type == NydusRootFSType { + if err := nydusContainerCleanup(ctx, getMountPath(c.sandbox.id), c); err != nil && !force { + return err + } + } else { + if err := bindUnmountContainerRootfs(ctx, getMountPath(c.sandbox.id), c.id); err != nil && !force { + return err + } } if err := c.detachDevices(ctx); err != nil && !force { diff --git a/src/runtime/virtcontainers/device/config/config.go b/src/runtime/virtcontainers/device/config/config.go index d320e034f..835059ed6 100644 --- a/src/runtime/virtcontainers/device/config/config.go +++ b/src/runtime/virtcontainers/device/config/config.go @@ -67,6 +67,9 @@ const ( // VirtioFS means use virtio-fs for the shared file system VirtioFS = "virtio-fs" + + // VirtioFSNydus means use nydus for the shared file system + VirtioFSNydus = "virtio-fs-nydus" ) const ( diff --git a/src/runtime/virtcontainers/kata_agent.go b/src/runtime/virtcontainers/kata_agent.go index bd7c04ed1..dc7b99817 100644 --- a/src/runtime/virtcontainers/kata_agent.go +++ b/src/runtime/virtcontainers/kata_agent.go @@ -63,6 +63,7 @@ const ( sandboxMountsDir = "sandbox-mounts" + NydusRootFSType = "fuse.nydus-overlayfs" // enable debug console kernelParamDebugConsole = "agent.debug_console" kernelParamDebugConsoleVPort = "agent.debug_console_vport" @@ -73,36 +74,39 @@ const ( ) var ( - checkRequestTimeout = 30 * time.Second - defaultRequestTimeout = 60 * time.Second - errorMissingOCISpec = errors.New("Missing OCI specification") - defaultKataHostSharedDir = "/run/kata-containers/shared/sandboxes/" - defaultKataGuestSharedDir = "/run/kata-containers/shared/containers/" - mountGuestTag = "kataShared" - defaultKataGuestSandboxDir = "/run/kata-containers/sandbox/" - type9pFs = "9p" - typeVirtioFS = "virtiofs" - typeVirtioFSNoCache = "none" - kata9pDevType = "9p" - kataMmioBlkDevType = "mmioblk" - kataBlkDevType = "blk" - kataBlkCCWDevType = "blk-ccw" - kataSCSIDevType = "scsi" - kataNvdimmDevType = "nvdimm" - kataVirtioFSDevType = "virtio-fs" - kataWatchableBindDevType = "watchable-bind" - kataVfioDevType = "vfio" // VFIO device to used as VFIO in the container - kataVfioGuestKernelDevType = "vfio-gk" // VFIO device for consumption by the guest kernel - sharedDir9pOptions = []string{"trans=virtio,version=9p2000.L,cache=mmap", "nodev"} - sharedDirVirtioFSOptions = []string{} - sharedDirVirtioFSDaxOptions = "dax" - shmDir = "shm" - kataEphemeralDevType = "ephemeral" - defaultEphemeralPath = filepath.Join(defaultKataGuestSandboxDir, kataEphemeralDevType) - grpcMaxDataSize = int64(1024 * 1024) - localDirOptions = []string{"mode=0777"} - maxHostnameLen = 64 - GuestDNSFile = "/etc/resolv.conf" + checkRequestTimeout = 30 * time.Second + defaultRequestTimeout = 60 * time.Second + errorMissingOCISpec = errors.New("Missing OCI specification") + defaultKataHostSharedDir = "/run/kata-containers/shared/sandboxes/" + defaultKataGuestSharedDir = "/run/kata-containers/shared/containers/" + defaultKataGuestNydusRootDir = "/run/kata-containers/shared/" + mountGuestTag = "kataShared" + defaultKataGuestSandboxDir = "/run/kata-containers/sandbox/" + type9pFs = "9p" + typeVirtioFS = "virtiofs" + typeOverlayFS = "overlay" + typeVirtioFSNoCache = "none" + kata9pDevType = "9p" + kataMmioBlkDevType = "mmioblk" + kataBlkDevType = "blk" + kataBlkCCWDevType = "blk-ccw" + kataSCSIDevType = "scsi" + kataNvdimmDevType = "nvdimm" + kataVirtioFSDevType = "virtio-fs" + kataOverlayDevType = "overlayfs" + kataWatchableBindDevType = "watchable-bind" + kataVfioDevType = "vfio" // VFIO device to used as VFIO in the container + kataVfioGuestKernelDevType = "vfio-gk" // VFIO device for consumption by the guest kernel + sharedDir9pOptions = []string{"trans=virtio,version=9p2000.L,cache=mmap", "nodev"} + sharedDirVirtioFSOptions = []string{} + sharedDirVirtioFSDaxOptions = "dax" + shmDir = "shm" + kataEphemeralDevType = "ephemeral" + defaultEphemeralPath = filepath.Join(defaultKataGuestSandboxDir, kataEphemeralDevType) + grpcMaxDataSize = int64(1024 * 1024) + localDirOptions = []string{"mode=0777"} + maxHostnameLen = 64 + GuestDNSFile = "/etc/resolv.conf" ) const ( @@ -177,6 +181,32 @@ func getSandboxPath(id string) string { return filepath.Join(kataHostSharedDir(), id) } +// Use in nydus case, guest shared dir is compatible with virtiofsd sharedir +// nydus images are presented in kataGuestNydusImageDir +// +// virtiofs mountpoint: "/run/kata-containers/shared/" +// kataGuestSharedDir: "/run/kata-containers/shared/containers" +// kataGuestNydusImageDir: "/run/kata-containers/shared/rafs" +var kataGuestNydusRootDir = func() string { + if rootless.IsRootless() { + // filepath.Join removes trailing slashes, but it is necessary for mounting + return filepath.Join(rootless.GetRootlessDir(), defaultKataGuestNydusRootDir) + "/" + } + return defaultKataGuestNydusRootDir +} + +var rafsMountPath = func(cid string) string { + return filepath.Join("/", nydusRafs, cid, lowerDir) +} + +var kataGuestNydusImageDir = func() string { + if rootless.IsRootless() { + // filepath.Join removes trailing slashes, but it is necessary for mounting + return filepath.Join(rootless.GetRootlessDir(), defaultKataGuestNydusRootDir, nydusRafs) + "/" + } + return filepath.Join(defaultKataGuestNydusRootDir, nydusRafs) + "/" +} + // The function is declared this way for mocking in unit tests var kataGuestSharedDir = func() string { if rootless.IsRootless() { @@ -852,7 +882,8 @@ func setupStorages(ctx context.Context, sandbox *Sandbox) []*grpc.Storage { // This is where at least some of the host config files // (resolv.conf, etc...) and potentially all container // rootfs will reside. - if sandbox.config.HypervisorConfig.SharedFS == config.VirtioFS { + sharedFS := sandbox.config.HypervisorConfig.SharedFS + if sharedFS == config.VirtioFS || sharedFS == config.VirtioFSNydus { // If virtio-fs uses either of the two cache options 'auto, always', // the guest directory can be mounted with option 'dax' allowing it to // directly map contents from the host. When set to 'none', the mount @@ -864,10 +895,14 @@ func setupStorages(ctx context.Context, sandbox *Sandbox) []*grpc.Storage { sharedDirVirtioFSOptions = append(sharedDirVirtioFSOptions, sharedDirVirtioFSDaxOptions) } } + mountPoint := kataGuestSharedDir() + if sharedFS == config.VirtioFSNydus { + mountPoint = kataGuestNydusRootDir() + } sharedVolume := &grpc.Storage{ Driver: kataVirtioFSDevType, Source: mountGuestTag, - MountPoint: kataGuestSharedDir(), + MountPoint: mountPoint, Fstype: typeVirtioFS, Options: sharedDirVirtioFSOptions, } @@ -1225,13 +1260,71 @@ func (k *kataAgent) rollbackFailingContainerCreation(ctx context.Context, c *Con k.Logger().WithError(err2).Error("rollback failed unmountHostMounts()") } - if err2 := bindUnmountContainerRootfs(ctx, getMountPath(c.sandbox.id), c.id); err2 != nil { - k.Logger().WithError(err2).Error("rollback failed bindUnmountContainerRootfs()") + if c.rootFs.Type == NydusRootFSType { + if err2 := nydusContainerCleanup(ctx, getMountPath(c.sandbox.id), c); err2 != nil { + k.Logger().WithError(err2).Error("rollback failed nydusContainerCleanup") + } + } else { + if err2 := bindUnmountContainerRootfs(ctx, getMountPath(c.sandbox.id), c.id); err2 != nil { + k.Logger().WithError(err2).Error("rollback failed bindUnmountContainerRootfs()") + } } } } +func (k *kataAgent) buildContainerRootfsWithNydus(sandbox *Sandbox, c *Container, rootPathParent string) (*grpc.Storage, error) { + if sandbox.GetHypervisorType() != string(QemuHypervisor) { + // qemu is supported first, other hypervisors will next + // https://github.com/kata-containers/kata-containers/issues/2724 + return nil, errNydusdNotSupport + } + q, _ := sandbox.hypervisor.(*qemu) + extraOption, err := parseExtraOption(c.rootFs.Options) + if err != nil { + return nil, err + } + mountOpt := &MountOption{ + mountpoint: rafsMountPath(c.id), + source: extraOption.Source, + config: extraOption.Config, + } + k.Logger().Infof("nydus option: %v", extraOption) + // mount lowerdir to guest /run/kata-containers/shared/images//lowerdir + if err := q.virtiofsDaemon.Mount(*mountOpt); err != nil { + return nil, err + } + rootfs := &grpc.Storage{} + containerShareDir := filepath.Join(getMountPath(c.sandbox.id), c.id) + + // mkdir rootfs, guest at /run/kata-containers/shared/containers//rootfs + rootfsDir := filepath.Join(containerShareDir, c.rootfsSuffix) + if err := os.MkdirAll(rootfsDir, DirMode); err != nil { + return nil, err + } + // bindmount snapshot dir which snapshotter allocated + // to guest /run/kata-containers/shared/containers//snapshotdir + snapshotShareDir := filepath.Join(containerShareDir, snapshotDir) + if err := bindMount(k.ctx, extraOption.Snapshotdir, snapshotShareDir, true, "slave"); err != nil { + return nil, err + } + + // so rootfs = overlay(upperdir, workerdir, lowerdir) + rootfs.MountPoint = filepath.Join(rootPathParent, c.rootfsSuffix) + rootfs.Source = typeOverlayFS + rootfs.Fstype = typeOverlayFS + rootfs.Driver = kataOverlayDevType + rootfs.Options = append(rootfs.Options, fmt.Sprintf("%s=%s", upperDir, filepath.Join(kataGuestSharedDir(), c.id, snapshotDir, "fs"))) + rootfs.Options = append(rootfs.Options, fmt.Sprintf("%s=%s", workDir, filepath.Join(kataGuestSharedDir(), c.id, snapshotDir, "work"))) + rootfs.Options = append(rootfs.Options, fmt.Sprintf("%s=%s", lowerDir, filepath.Join(kataGuestNydusImageDir(), c.id, lowerDir))) + rootfs.Options = append(rootfs.Options, "index=off") + k.Logger().Infof("rootfs info: %#v\n", rootfs) + return rootfs, nil +} + func (k *kataAgent) buildContainerRootfs(ctx context.Context, sandbox *Sandbox, c *Container, rootPathParent string) (*grpc.Storage, error) { + if c.rootFs.Type == NydusRootFSType { + return k.buildContainerRootfsWithNydus(sandbox, c, rootPathParent) + } if c.state.Fstype != "" && c.state.BlockDeviceID != "" { // The rootfs storage volume represents the container rootfs // mount point inside the guest. @@ -1301,7 +1394,6 @@ func (k *kataAgent) buildContainerRootfs(ctx context.Context, sandbox *Sandbox, func (k *kataAgent) createContainer(ctx context.Context, sandbox *Sandbox, c *Container) (p *Process, err error) { span, ctx := katatrace.Trace(ctx, k.Logger(), "createContainer", kataAgentTracingTags) defer span.End() - var ctrStorages []*grpc.Storage var ctrDevices []*grpc.Device var rootfs *grpc.Storage diff --git a/src/runtime/virtcontainers/kata_agent_test.go b/src/runtime/virtcontainers/kata_agent_test.go index d9b43247e..fb596da12 100644 --- a/src/runtime/virtcontainers/kata_agent_test.go +++ b/src/runtime/virtcontainers/kata_agent_test.go @@ -1095,18 +1095,27 @@ func TestKataAgentDirs(t *testing.T) { uidmap := strings.Fields(string(line)) expectedRootless := (uidmap[0] == "0" && uidmap[1] != "0") assert.Equal(expectedRootless, rootless.IsRootless()) - if expectedRootless { assert.Equal(kataHostSharedDir(), os.Getenv("XDG_RUNTIME_DIR")+defaultKataHostSharedDir) assert.Equal(kataGuestSharedDir(), os.Getenv("XDG_RUNTIME_DIR")+defaultKataGuestSharedDir) assert.Equal(kataGuestSandboxDir(), os.Getenv("XDG_RUNTIME_DIR")+defaultKataGuestSandboxDir) assert.Equal(ephemeralPath(), os.Getenv("XDG_RUNTIME_DIR")+defaultEphemeralPath) + assert.Equal(kataGuestNydusRootDir(), os.Getenv("XDG_RUNTIME_DIR")+defaultKataGuestNydusRootDir) + assert.Equal(kataGuestNydusImageDir(), os.Getenv("XDG_RUNTIME_DIR")+defaultKataGuestNydusRootDir+"images"+"/") + assert.Equal(kataGuestSharedDir(), os.Getenv("XDG_RUNTIME_DIR")+defaultKataGuestNydusRootDir+"containers"+"/") } else { assert.Equal(kataHostSharedDir(), defaultKataHostSharedDir) assert.Equal(kataGuestSharedDir(), defaultKataGuestSharedDir) assert.Equal(kataGuestSandboxDir(), defaultKataGuestSandboxDir) assert.Equal(ephemeralPath(), defaultEphemeralPath) + assert.Equal(kataGuestNydusRootDir(), defaultKataGuestNydusRootDir) + assert.Equal(kataGuestNydusImageDir(), defaultKataGuestNydusRootDir+"rafs"+"/") + assert.Equal(kataGuestSharedDir(), defaultKataGuestNydusRootDir+"containers"+"/") } + + cid := "123" + expected := "/rafs/123/lowerdir" + assert.Equal(rafsMountPath(cid), expected) } func TestSandboxBindMount(t *testing.T) { diff --git a/src/runtime/virtcontainers/mount.go b/src/runtime/virtcontainers/mount.go index e767b4c85..b23bd0879 100644 --- a/src/runtime/virtcontainers/mount.go +++ b/src/runtime/virtcontainers/mount.go @@ -7,7 +7,6 @@ package virtcontainers import ( "context" - "errors" "fmt" "os" "path/filepath" @@ -17,6 +16,7 @@ import ( merr "github.com/hashicorp/go-multierror" "github.com/kata-containers/kata-containers/src/runtime/pkg/katautils/katatrace" "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/utils" + "github.com/pkg/errors" "github.com/sirupsen/logrus" otelLabel "go.opentelemetry.io/otel/attribute" ) @@ -28,7 +28,13 @@ const DefaultShmSize = 65536 * 1024 // Sadly golang/sys doesn't have UmountNoFollow although it's there since Linux 2.6.34 const UmountNoFollow = 0x8 -var rootfsDir = "rootfs" +const ( + rootfsDir = "rootfs" + lowerDir = "lowerdir" + upperDir = "upperdir" + workDir = "workdir" + snapshotDir = "snapshotdir" +) var systemMountPrefixes = []string{"/proc", "/sys"} @@ -349,33 +355,64 @@ func isSymlink(path string) bool { return stat.Mode()&os.ModeSymlink != 0 } -func bindUnmountContainerRootfs(ctx context.Context, sharedDir, cID string) error { - span, _ := katatrace.Trace(ctx, nil, "bindUnmountContainerRootfs", mountTracingTags) - defer span.End() - span.SetAttributes(otelLabel.String("shared_dir", sharedDir), otelLabel.String("container_id", cID)) - - rootfsDest := filepath.Join(sharedDir, cID, rootfsDir) - if isSymlink(filepath.Join(sharedDir, cID)) || isSymlink(rootfsDest) { +func bindUnmountContainerShareDir(ctx context.Context, sharedDir, cID, target string) error { + destDir := filepath.Join(sharedDir, cID, target) + if isSymlink(filepath.Join(sharedDir, cID)) || isSymlink(destDir) { mountLogger().WithField("container", cID).Warnf("container dir is a symlink, malicious guest?") return nil } - err := syscall.Unmount(rootfsDest, syscall.MNT_DETACH|UmountNoFollow) + err := syscall.Unmount(destDir, syscall.MNT_DETACH|UmountNoFollow) if err == syscall.ENOENT { - mountLogger().WithError(err).WithField("rootfs-dir", rootfsDest).Warn() + mountLogger().WithError(err).WithField("share-dir", destDir).Warn() return nil } - if err := syscall.Rmdir(rootfsDest); err != nil { - mountLogger().WithError(err).WithField("rootfs-dir", rootfsDest).Warn("Could not remove container rootfs dir") + if err := syscall.Rmdir(destDir); err != nil { + mountLogger().WithError(err).WithField("share-dir", destDir).Warn("Could not remove container share dir") } return err } +func bindUnmountContainerRootfs(ctx context.Context, sharedDir, cID string) error { + span, _ := katatrace.Trace(ctx, nil, "bindUnmountContainerRootfs", mountTracingTags) + defer span.End() + span.SetAttributes(otelLabel.String("shared-dir", sharedDir), otelLabel.String("container-id", cID)) + return bindUnmountContainerShareDir(ctx, sharedDir, cID, rootfsDir) +} + +func bindUnmountContainerSnapshotDir(ctx context.Context, sharedDir, cID string) error { + span, _ := katatrace.Trace(ctx, nil, "bindUnmountContainerSnapshotDir", mountTracingTags) + defer span.End() + span.SetAttributes(otelLabel.String("shared-dir", sharedDir), otelLabel.String("container-id", cID)) + return bindUnmountContainerShareDir(ctx, sharedDir, cID, snapshotDir) +} + +func nydusContainerCleanup(ctx context.Context, sharedDir string, c *Container) error { + sandbox := c.sandbox + if sandbox.GetHypervisorType() != string(QemuHypervisor) { + // qemu is supported first, other hypervisors will next + // https://github.com/kata-containers/kata-containers/issues/2724 + return errNydusdNotSupport + } + q, _ := sandbox.hypervisor.(*qemu) + if err := q.virtiofsDaemon.Umount(rafsMountPath(c.id)); err != nil { + return errors.Wrap(err, "umount rafs failed") + } + if err := bindUnmountContainerSnapshotDir(ctx, sharedDir, c.id); err != nil { + return errors.Wrap(err, "umount snapshotdir err") + } + destDir := filepath.Join(sharedDir, c.id, c.rootfsSuffix) + if err := syscall.Rmdir(destDir); err != nil { + return errors.Wrap(err, "remove container rootfs err") + } + return nil +} + func bindUnmountAllRootfs(ctx context.Context, sharedDir string, sandbox *Sandbox) error { span, ctx := katatrace.Trace(ctx, nil, "bindUnmountAllRootfs", mountTracingTags) defer span.End() - span.SetAttributes(otelLabel.String("shared_dir", sharedDir), otelLabel.String("sandbox_id", sandbox.id)) + span.SetAttributes(otelLabel.String("shared-dir", sharedDir), otelLabel.String("sandbox-id", sandbox.id)) var errors *merr.Error for _, c := range sandbox.containers { @@ -387,7 +424,11 @@ func bindUnmountAllRootfs(ctx context.Context, sharedDir string, sandbox *Sandbo if c.state.Fstype == "" { // even if error found, don't break out of loop until all mounts attempted // to be unmounted, and collect all errors - errors = merr.Append(errors, bindUnmountContainerRootfs(ctx, sharedDir, c.id)) + if c.rootFs.Type == NydusRootFSType { + errors = merr.Append(errors, nydusContainerCleanup(ctx, sharedDir, c)) + } else { + errors = merr.Append(errors, bindUnmountContainerRootfs(ctx, sharedDir, c.id)) + } } } return errors.ErrorOrNil() diff --git a/src/runtime/virtcontainers/nydusd.go b/src/runtime/virtcontainers/nydusd.go new file mode 100644 index 000000000..1a09b24b1 --- /dev/null +++ b/src/runtime/virtcontainers/nydusd.go @@ -0,0 +1,479 @@ +// Copyright (c) 2017 Intel Corporation +// +// SPDX-License-Identifier: Apache-2.0 +// + +package virtcontainers + +import ( + "bufio" + "bytes" + "context" + "encoding/base64" + "encoding/json" + "fmt" + "io" + "io/ioutil" + "net" + "net/http" + "os" + "os/exec" + "path/filepath" + "regexp" + "strings" + "syscall" + "time" + + "github.com/containernetworking/plugins/pkg/ns" + "github.com/kata-containers/kata-containers/src/runtime/pkg/katautils/katatrace" + "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/utils" + "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/utils/retry" + "github.com/pkg/errors" + "github.com/sirupsen/logrus" +) + +const ( + infoEndpoint = "http://unix/api/v1/daemon" + mountEndpoint = "http://unix/api/v1/mount" + + nydusdStopTimeoutSecs = 5 + + defaultHttpClientTimeoutSecs = 30 * time.Second + contentType = "application/json" + + maxIdleConns = 10 + idleConnTimeoutSecs = 10 * time.Second + dialTimoutSecs = 5 * time.Second + keepAliveSecs = 5 * time.Second + expectContinueTimeoutSecs = 1 * time.Second + + // Registry Acceleration File System which is nydus provide to accelerate image load + nydusRafs = "rafs" + // used to shared directories between host and guest + nydusPassthroughfs = "passthrough_fs" + + sharedPathInGuest = "/containers" + + shimNsPath = "/proc/self/ns/net" +) + +var ( + nydusdTracingTags = map[string]string{ + "source": "runtime", + "package": "virtcontainers", + "subsystem": "nydusd", + } + + errNydusdDaemonPathInvalid = errors.New("nydusd daemon path is invalid") + errNydusdSockPathInvalid = errors.New("nydusd sock path is invalid") + errNydusdAPISockPathInvalid = errors.New("nydusd api sock path is invalid") + errNydusdSourcePathInvalid = errors.New("nydusd resource path is invalid") + errNydusdNotSupport = errors.New("nydusd only supports the QEMU hypervisor currently (see https://github.com/kata-containers/kata-containers/issues/2724)") +) + +type nydusd struct { + startFn func(cmd *exec.Cmd) error // for mock testing + setupShareDirFn func() error // for mock testing + path string + sockPath string + apiSockPath string + sourcePath string + extraArgs []string + pid int + debug bool +} + +func startInShimNS(cmd *exec.Cmd) error { + // Create nydusd in shim netns as it needs to access host network + return doNetNS(shimNsPath, func(_ ns.NetNS) error { + return cmd.Start() + }) +} + +func (nd *nydusd) Start(ctx context.Context, onQuit onQuitFunc) (int, error) { + span, _ := katatrace.Trace(ctx, nd.Logger(), "Start", nydusdTracingTags) + defer span.End() + pid := 0 + + if err := nd.valid(); err != nil { + return pid, err + } + + args, err := nd.args() + if err != nil { + return pid, err + } + cmd := exec.Command(nd.path, args...) + r, w, err := os.Pipe() + if err != nil { + return pid, err + } + cmd.Stdout = w + cmd.Stderr = w + fields := logrus.Fields{ + "path": nd.path, + "args": strings.Join(args, " "), + } + nd.Logger().WithFields(fields).Info() + if err := nd.startFn(cmd); err != nil { + return pid, err + } + // Monitor nydusd's stdout/stderr and stop sandbox if nydusd quits + go func() { + scanner := bufio.NewScanner(r) + for scanner.Scan() { + nd.Logger().Info(scanner.Text()) + } + nd.Logger().Info("nydusd quits") + // Wait to release resources of nydusd process + _, err = cmd.Process.Wait() + if err != nil { + nd.Logger().WithError(err).Warn("nydusd quits") + } + if onQuit != nil { + onQuit() + } + }() + if err := nd.setupShareDirFn(); err != nil { + return pid, err + } + nd.pid = cmd.Process.Pid + return nd.pid, nil +} + +func (nd *nydusd) args() ([]string, error) { + logLevel := "info" + if nd.debug { + logLevel = "debug" + } + args := []string{ + "--log-level", logLevel, + "--apisock", nd.apiSockPath, + "--sock", nd.sockPath, + } + if len(nd.extraArgs) > 0 { + args = append(args, nd.extraArgs...) + } + return args, nil +} + +func checkPathValid(path string) error { + if len(path) == 0 { + return errors.New("path is empty") + } + absPath, err := filepath.Abs(path) + if err != nil { + return err + } + dir := filepath.Dir(absPath) + if _, err := os.Stat(dir); err != nil { + return err + } + return nil +} + +func (nd *nydusd) valid() error { + if err := checkPathValid(nd.sockPath); err != nil { + nd.Logger().WithError(err).Info("check nydusd sock path err") + return errNydusdSockPathInvalid + } + if err := checkPathValid(nd.apiSockPath); err != nil { + nd.Logger().WithError(err).Info("check nydusd api sock path err") + return errNydusdAPISockPathInvalid + } + + if err := checkPathValid(nd.path); err != nil { + nd.Logger().WithError(err).Info("check nydusd daemon path err") + return errNydusdDaemonPathInvalid + } + if err := checkPathValid(nd.sourcePath); err != nil { + nd.Logger().WithError(err).Info("check nydusd daemon path err") + return errNydusdSourcePathInvalid + } + return nil +} + +func (nd *nydusd) setupPassthroughFS() error { + nc, err := NewNydusClient(nd.apiSockPath) + if err != nil { + return err + } + nd.Logger().WithField("from", nd.sourcePath). + WithField("dest", sharedPathInGuest).Info("prepare mount passthroughfs") + + mr := NewMountRequest(nydusPassthroughfs, nd.sourcePath, "") + return nc.Mount(sharedPathInGuest, mr) +} + +func (nd *nydusd) Mount(opt MountOption) error { + nc, err := NewNydusClient(nd.apiSockPath) + if err != nil { + return err + } + nd.Logger().WithField("from", opt.source). + WithField("dest", opt.mountpoint).Info("prepare mount rafs") + + mr := NewMountRequest(nydusRafs, opt.source, opt.config) + return nc.Mount(opt.mountpoint, mr) +} + +func (nd *nydusd) Umount(mountpoint string) error { + nc, err := NewNydusClient(nd.apiSockPath) + if err != nil { + return err + } + nd.Logger().WithField("mountpoint", mountpoint).Info("umount rafs") + return nc.Umount(mountpoint) +} + +func (nd *nydusd) Stop(ctx context.Context) error { + if err := nd.kill(ctx); err != nil { + nd.Logger().WithError(err).WithField("pid", nd.pid).Warn("kill nydusd failed") + return nil + } + + err := os.Remove(nd.sockPath) + if err != nil { + nd.Logger().WithError(err).WithField("path", nd.sockPath).Warn("removing nydusd socket failed") + } + err = os.Remove(nd.apiSockPath) + if err != nil { + nd.Logger().WithError(err).WithField("path", nd.apiSockPath).Warn("removing nydusd api socket failed") + } + return nil +} + +func (nd *nydusd) Logger() *logrus.Entry { + return hvLogger.WithField("subsystem", "nydusd") +} + +func (nd *nydusd) kill(ctx context.Context) (err error) { + span, _ := katatrace.Trace(ctx, nd.Logger(), "kill", nydusdTracingTags) + defer span.End() + + if nd.pid <= 0 { + nd.Logger().WithField("invalid-nydusd-pid", nd.pid).Warn("cannot kill nydusd") + return nil + } + if err := utils.WaitLocalProcess(nd.pid, nydusdStopTimeoutSecs, syscall.SIGTERM, nd.Logger()); err != nil { + nd.Logger().WithError(err).Warn("kill nydusd err") + } + nd.pid = 0 + return err +} + +type BuildTimeInfo struct { + PackageVer string `json:"package_ver"` + GitCommit string `json:"git_commit"` + BuildTime string `json:"build_time"` + Profile string `json:"profile"` + Rustc string `json:"rustc"` +} + +type DaemonInfo struct { + ID string `json:"id"` + Version BuildTimeInfo `json:"version"` + State string `json:"state"` +} + +type ErrorMessage struct { + Code string `json:"code"` + Message string `json:"message"` +} + +type MountRequest struct { + FsType string `json:"fs_type"` + Source string `json:"source"` + Config string `json:"config"` +} + +func NewMountRequest(fsType, source, config string) *MountRequest { + return &MountRequest{ + FsType: fsType, + Source: source, + Config: config, + } +} + +type Interface interface { + CheckStatus() (DaemonInfo, error) + Mount(string, *MountRequest) error + Umount(sharedMountPoint string) error +} + +type NydusClient struct { + httpClient *http.Client +} + +func NewNydusClient(sock string) (Interface, error) { + transport, err := buildTransport(sock) + if err != nil { + return nil, err + } + return &NydusClient{ + httpClient: &http.Client{ + Timeout: defaultHttpClientTimeoutSecs, + Transport: transport, + }, + }, nil +} + +func waitUntilSocketReady(sock string) error { + return retry.Do(func() error { + if _, err := os.Stat(sock); err != nil { + return err + } + return nil + }, + retry.Attempts(3), + retry.LastErrorOnly(true), + retry.Delay(100*time.Millisecond)) +} + +func buildTransport(sock string) (http.RoundTripper, error) { + err := waitUntilSocketReady(sock) + if err != nil { + return nil, err + } + return &http.Transport{ + MaxIdleConns: maxIdleConns, + IdleConnTimeout: idleConnTimeoutSecs, + ExpectContinueTimeout: expectContinueTimeoutSecs, + DialContext: func(ctx context.Context, _, _ string) (net.Conn, error) { + dialer := &net.Dialer{ + Timeout: dialTimoutSecs, + KeepAlive: keepAliveSecs, + } + return dialer.DialContext(ctx, "unix", sock) + }, + }, nil +} + +func (c *NydusClient) CheckStatus() (DaemonInfo, error) { + resp, err := c.httpClient.Get(infoEndpoint) + if err != nil { + return DaemonInfo{}, err + } + defer resp.Body.Close() + b, err := ioutil.ReadAll(resp.Body) + if err != nil { + return DaemonInfo{}, err + } + var info DaemonInfo + if err = json.Unmarshal(b, &info); err != nil { + return DaemonInfo{}, err + } + return info, nil +} + +func checkRafsMountPointValid(mp string) bool { + // refer to https://github.com/opencontainers/runc/blob/master/libcontainer/factory_linux.go#L30 + re := regexp.MustCompile(`/rafs/[\w+-\.]+/lowerdir`) + return re.MatchString(mp) +} + +func (c *NydusClient) checkMountPoint(mountPoint string, fsType string) error { + switch fsType { + case nydusPassthroughfs: + // sharedir has been checked in args check. + return nil + case nydusRafs: + // nydusRafs mountpoint path format: /rafs//lowerdir + if checkRafsMountPointValid(mountPoint) { + return nil + } + return fmt.Errorf("rafs mountpoint %s is invalid", mountPoint) + default: + return errors.New("unsupported filesystem type") + } +} + +func (c *NydusClient) Mount(mountPoint string, mr *MountRequest) error { + if err := c.checkMountPoint(mountPoint, mr.FsType); err != nil { + return errors.Wrap(err, "check mount point err") + } + requestURL := fmt.Sprintf("%s?mountpoint=%s", mountEndpoint, mountPoint) + body, err := json.Marshal(mr) + if err != nil { + return errors.Wrap(err, "failed to create mount request") + } + + resp, err := c.httpClient.Post(requestURL, contentType, bytes.NewBuffer(body)) + if err != nil { + return err + } + defer resp.Body.Close() + if resp.StatusCode == http.StatusNoContent { + return nil + } + return handleMountError(resp.Body) +} + +func (c *NydusClient) Umount(mountPoint string) error { + requestURL := fmt.Sprintf("%s?mountpoint=%s", mountEndpoint, mountPoint) + req, err := http.NewRequest(http.MethodDelete, requestURL, nil) + if err != nil { + return err + } + resp, err := c.httpClient.Do(req) + if err != nil { + return err + } + defer resp.Body.Close() + if resp.StatusCode == http.StatusNoContent { + return nil + } + return handleMountError(resp.Body) +} + +func handleMountError(r io.Reader) error { + b, err := ioutil.ReadAll(r) + if err != nil { + return err + } + var errMessage ErrorMessage + if err = json.Unmarshal(b, &errMessage); err != nil { + return err + } + return errors.New(errMessage.Message) +} + +/* + rootfs mount format: Type: fuse.nydus-overlayfs, Source: overlay + Options:[lowerdir=/foo/lower2:/foo/lower1,upperdir=/foo/upper,workdir=/foo/work,extraoption={source: xxx, config: xxx, snapshotdir: xxx}] +*/ + +type extraOption struct { + Source string `json:"source"` + Config string `json:"config"` + Snapshotdir string `json:"snapshotdir"` +} + +const extraOptionKey = "extraoption=" + +func parseExtraOption(options []string) (*extraOption, error) { + extraOpt := "" + for _, opt := range options { + if strings.HasPrefix(opt, extraOptionKey) { + extraOpt = strings.TrimPrefix(opt, extraOptionKey) + } + } + if len(extraOpt) == 0 { + return nil, errors.New("no extraoption found") + } + + opt, err := base64.StdEncoding.DecodeString(extraOpt) + if err != nil { + return nil, errors.Wrap(err, "base64 decoding err") + } + + no := &extraOption{} + if err := json.Unmarshal(opt, no); err != nil { + return nil, errors.Wrapf(err, "json unmarshal err") + } + if len(no.Config) == 0 || len(no.Snapshotdir) == 0 || len(no.Source) == 0 { + return nil, fmt.Errorf("extra option is not correct, %+v", no) + } + + return no, nil +} diff --git a/src/runtime/virtcontainers/nydusd_test.go b/src/runtime/virtcontainers/nydusd_test.go new file mode 100644 index 000000000..96163f66a --- /dev/null +++ b/src/runtime/virtcontainers/nydusd_test.go @@ -0,0 +1,241 @@ +// Copyright (c) 2017 Intel Corporation +// +// SPDX-License-Identifier: Apache-2.0 +// + +package virtcontainers + +import ( + "context" + "encoding/base64" + "io/ioutil" + "os" + "os/exec" + "path/filepath" + "strings" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNydusdStart(t *testing.T) { + assert := assert.New(t) + // nolint: govet + type fields struct { + pid int + path string + sockPath string + apiSockPath string + sourcePath string + debug bool + extraArgs []string + startFn func(cmd *exec.Cmd) error + setupShareDirFn func() error + } + + sourcePath, err := ioutil.TempDir("", "") + assert.NoError(err) + defer os.RemoveAll(sourcePath) + + socketDir, err := ioutil.TempDir("", "") + assert.NoError(err) + defer os.RemoveAll(socketDir) + + sockPath := filepath.Join(socketDir, "vhost-user.sock") + apiSockPath := filepath.Join(socketDir, "api.sock") + + validConfig := fields{ + path: "/usr/bin/nydusd", + sockPath: sockPath, + apiSockPath: apiSockPath, + sourcePath: sourcePath, + startFn: func(cmd *exec.Cmd) error { + cmd.Process = &os.Process{} + return nil + }, + setupShareDirFn: func() error { return nil }, + } + SourcePathNoExist := validConfig + SourcePathNoExist.sourcePath = "/tmp/path/to/nydusd/sourcepath" + + // nolint: govet + tests := []struct { + name string + fields fields + wantErr bool + }{ + {"empty config", fields{}, true}, + {"directory source path not exist", SourcePathNoExist, true}, + {"valid config", validConfig, false}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + nd := &nydusd{ + path: tt.fields.path, + sockPath: tt.fields.sockPath, + apiSockPath: tt.fields.apiSockPath, + sourcePath: tt.fields.sourcePath, + extraArgs: tt.fields.extraArgs, + debug: tt.fields.debug, + pid: tt.fields.pid, + startFn: tt.fields.startFn, + setupShareDirFn: tt.fields.setupShareDirFn, + } + ctx := context.Background() + _, err := nd.Start(ctx, nil) + if (err != nil) != tt.wantErr { + t.Errorf("nydusd.Start() error = %v, wantErr %v", err, tt.wantErr) + return + } + }) + + } + +} +func TestNydusdArgs(t *testing.T) { + assert := assert.New(t) + nd := &nydusd{ + path: "/usr/bin/nydusd", + sockPath: "/var/lib/vhost-user.sock", + apiSockPath: "/var/lib/api.sock", + debug: true, + } + expected := "--log-level debug --apisock /var/lib/api.sock --sock /var/lib/vhost-user.sock" + args, err := nd.args() + assert.NoError(err) + assert.Equal(expected, strings.Join(args, " ")) + + nd.debug = false + expected = "--log-level info --apisock /var/lib/api.sock --sock /var/lib/vhost-user.sock" + args, err = nd.args() + assert.NoError(err) + assert.Equal(expected, strings.Join(args, " ")) +} + +func TestNydusdValid(t *testing.T) { + assert := assert.New(t) + + sourcePath, err := ioutil.TempDir("", "") + assert.NoError(err) + defer os.RemoveAll(sourcePath) + + socketDir, err := ioutil.TempDir("", "") + assert.NoError(err) + defer os.RemoveAll(socketDir) + + sockPath := filepath.Join(socketDir, "vhost-user.sock") + apiSockPath := filepath.Join(socketDir, "api.sock") + + newNydsudFunc := func() *nydusd { + return &nydusd{ + path: "/usr/bin/nydusd", + sourcePath: sourcePath, + sockPath: sockPath, + apiSockPath: apiSockPath, + } + } + nd := newNydsudFunc() + err = nd.valid() + assert.NoError(err) + + nd = newNydsudFunc() + nd.path = "" + err = nd.valid() + assert.Equal(errNydusdDaemonPathInvalid, err) + + nd = newNydsudFunc() + nd.sockPath = "" + err = nd.valid() + assert.Equal(errNydusdSockPathInvalid, err) + + nd = newNydsudFunc() + nd.apiSockPath = "" + err = nd.valid() + assert.Equal(errNydusdAPISockPathInvalid, err) + + nd = newNydsudFunc() + nd.sourcePath = "" + err = nd.valid() + assert.Equal(errNydusdSourcePathInvalid, err) +} + +func TestParseExtraOption(t *testing.T) { + tests := []struct { + name string + option string + wantErr bool + }{ + { + name: "valid option", + option: "extraoption=" + base64.StdEncoding.EncodeToString([]byte("{\"source\":\"/path/to/bootstrap\",\"config\":\"config content\",\"snapshotdir\":\"/path/to/snapshotdir\"}")), + wantErr: false, + }, + { + name: "no extra option", + option: base64.StdEncoding.EncodeToString([]byte("{\"source\":/path/to/bootstrap,\"config\":config content,\"snapshotdir\":/path/to/snapshotdir}")), + wantErr: true, + }, + { + name: "no source", + option: "extraoption=" + base64.StdEncoding.EncodeToString([]byte("{\"config\":config content,\"snapshotdir\":/path/to/snapshotdir}")), + wantErr: true, + }, + { + name: "no config", + option: "extraoption=" + base64.StdEncoding.EncodeToString([]byte("{\"source\":/path/to/bootstrap,\"snapshotdir\":/path/to/snapshotdir}")), + wantErr: true, + }, + { + name: "no snapshotdir", + option: "extraoption=" + base64.StdEncoding.EncodeToString([]byte("{\"source\":/path/to/bootstrap,\"config\":config content}")), + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + _, err := parseExtraOption([]string{tt.option}) + if (err != nil) != tt.wantErr { + t.Errorf("parseExtraOption error = %v, wantErr %v", err, tt.wantErr) + return + } + }) + } +} + +func TestCheckRafsMountPointValid(t *testing.T) { + tests := []struct { + mountPoint string + valid bool + }{ + { + mountPoint: "/rafs/xxxxaaa/lowerdir", + valid: true, + }, + { + mountPoint: "/", + valid: false, + }, + { + mountPoint: "/rafs", + valid: false, + }, + { + mountPoint: "/xxxx", + valid: false, + }, + { + mountPoint: "/rafs/aaaaa/xxxx", + valid: false, + }, + { + mountPoint: "/rafs//lowerdir", + valid: false, + }, + } + for _, tt := range tests { + res := checkRafsMountPointValid(tt.mountPoint) + if res != tt.valid { + t.Errorf("test %v get %v, but want %v", tt, res, tt.valid) + } + } +} diff --git a/src/runtime/virtcontainers/qemu.go b/src/runtime/virtcontainers/qemu.go index 7b11287cd..055281cb7 100644 --- a/src/runtime/virtcontainers/qemu.go +++ b/src/runtime/virtcontainers/qemu.go @@ -73,7 +73,7 @@ type QemuState struct { // HotpluggedCPUs is the list of CPUs that were hot-added HotpluggedVCPUs []hv.CPUDevice HotpluggedMemory int - VirtiofsdPid int + VirtiofsDaemonPid int PCIeRootPort int HotplugVFIOOnRootBus bool } @@ -83,7 +83,7 @@ type QemuState struct { type qemu struct { arch qemuArch - virtiofsd Virtiofsd + virtiofsDaemon VirtiofsDaemon ctx context.Context @@ -113,6 +113,7 @@ const ( consoleSocket = "console.sock" qmpSocket = "qmp.sock" vhostFSSocket = "vhost-fs.sock" + nydusdAPISock = "nydusd-api.sock" // memory dump format will be set to elf memoryDumpFormat = "elf" @@ -467,6 +468,41 @@ func (q *qemu) setConfig(config *HypervisorConfig) error { return nil } +func (q *qemu) createVirtiofsDaemon(sharedPath string) (VirtiofsDaemon, error) { + virtiofsdSocketPath, err := q.vhostFSSocketPath(q.id) + if err != nil { + return nil, err + } + + if q.config.SharedFS == config.VirtioFSNydus { + apiSockPath, err := q.nydusdAPISocketPath(q.id) + if err != nil { + return nil, err + } + nd := &nydusd{ + path: q.config.VirtioFSDaemon, + sockPath: virtiofsdSocketPath, + apiSockPath: apiSockPath, + sourcePath: sharedPath, + debug: q.config.Debug, + extraArgs: q.config.VirtioFSExtraArgs, + startFn: startInShimNS, + } + nd.setupShareDirFn = nd.setupPassthroughFS + return nd, nil + } + + // default use virtiofsd + return &virtiofsd{ + path: q.config.VirtioFSDaemon, + sourcePath: sharedPath, + socketPath: virtiofsdSocketPath, + extraArgs: q.config.VirtioFSExtraArgs, + debug: q.config.Debug, + cache: q.config.VirtioFSCache, + }, nil +} + // CreateVM is the Hypervisor VM creation implementation for govmmQemu. func (q *qemu) CreateVM(ctx context.Context, id string, network Network, hypervisorConfig *HypervisorConfig) error { // Save the tracing context @@ -527,7 +563,8 @@ func (q *qemu) CreateVM(ctx context.Context, id string, network Network, hypervi // builds the first VM with file-backed memory and shared=on and the // subsequent ones with shared=off. virtio-fs always requires shared=on for // memory. - if q.config.SharedFS == config.VirtioFS || q.config.FileBackedMemRootDir != "" { + if q.config.SharedFS == config.VirtioFS || q.config.SharedFS == config.VirtioFSNydus || + q.config.FileBackedMemRootDir != "" { if !(q.config.BootToBeTemplate || q.config.BootFromTemplate) { q.setupFileBackedMem(&knobs, &memory) } else { @@ -642,50 +679,41 @@ func (q *qemu) CreateVM(ctx context.Context, id string, network Network, hypervi q.qemuConfig = qemuConfig - virtiofsdSocketPath, err := q.vhostFSSocketPath(q.id) - if err != nil { - return err - } - - q.virtiofsd = &virtiofsd{ - path: q.config.VirtioFSDaemon, - sourcePath: hypervisorConfig.SharedPath, - socketPath: virtiofsdSocketPath, - extraArgs: q.config.VirtioFSExtraArgs, - debug: q.config.Debug, - cache: q.config.VirtioFSCache, - } - - return nil + q.virtiofsDaemon, err = q.createVirtiofsDaemon(hypervisorConfig.SharedPath) + return err } func (q *qemu) vhostFSSocketPath(id string) (string, error) { return utils.BuildSocketPath(q.config.VMStorePath, id, vhostFSSocket) } -func (q *qemu) setupVirtiofsd(ctx context.Context) (err error) { - pid, err := q.virtiofsd.Start(ctx, func() { +func (q *qemu) nydusdAPISocketPath(id string) (string, error) { + return utils.BuildSocketPath(q.config.VMStorePath, id, nydusdAPISock) +} + +func (q *qemu) setupVirtiofsDaemon(ctx context.Context) (err error) { + pid, err := q.virtiofsDaemon.Start(ctx, func() { q.StopVM(ctx, false) }) if err != nil { return err } - q.state.VirtiofsdPid = pid + q.state.VirtiofsDaemonPid = pid return nil } -func (q *qemu) stopVirtiofsd(ctx context.Context) (err error) { - if q.state.VirtiofsdPid == 0 { +func (q *qemu) stopVirtiofsDaemon(ctx context.Context) (err error) { + if q.state.VirtiofsDaemonPid == 0 { q.Logger().Warn("The virtiofsd had stopped") return nil } - err = q.virtiofsd.Stop(ctx) + err = q.virtiofsDaemon.Stop(ctx) if err != nil { return err } - q.state.VirtiofsdPid = 0 + q.state.VirtiofsDaemonPid = 0 return nil } @@ -707,7 +735,8 @@ func (q *qemu) getMemArgs() (bool, string, string, error) { return share, target, "", fmt.Errorf("Vhost-user-blk/scsi requires hugepage memory") } - if q.config.SharedFS == config.VirtioFS || q.config.FileBackedMemRootDir != "" { + if q.config.SharedFS == config.VirtioFS || q.config.SharedFS == config.VirtioFSNydus || + q.config.FileBackedMemRootDir != "" { target = q.qemuConfig.Memory.Path memoryBack = "memory-backend-file" } @@ -817,15 +846,15 @@ func (q *qemu) StartVM(ctx context.Context, timeout int) error { } defer label.SetProcessLabel("") - if q.config.SharedFS == config.VirtioFS { - err = q.setupVirtiofsd(ctx) + if q.config.SharedFS == config.VirtioFS || q.config.SharedFS == config.VirtioFSNydus { + err = q.setupVirtiofsDaemon(ctx) if err != nil { return err } defer func() { if err != nil { - if shutdownErr := q.stopVirtiofsd(ctx); shutdownErr != nil { - q.Logger().WithError(shutdownErr).Warn("failed to stop virtiofsd") + if shutdownErr := q.stopVirtiofsDaemon(ctx); shutdownErr != nil { + q.Logger().WithError(shutdownErr).Warn("failed to stop virtiofsDaemon") } } }() @@ -986,8 +1015,8 @@ func (q *qemu) StopVM(ctx context.Context, waitOnly bool) error { } } - if q.config.SharedFS == config.VirtioFS { - if err := q.stopVirtiofsd(ctx); err != nil { + if q.config.SharedFS == config.VirtioFS || q.config.SharedFS == config.VirtioFSNydus { + if err := q.stopVirtiofsDaemon(ctx); err != nil { return err } } @@ -1970,7 +1999,7 @@ func (q *qemu) AddDevice(ctx context.Context, devInfo interface{}, devType Devic switch v := devInfo.(type) { case types.Volume: - if q.config.SharedFS == config.VirtioFS { + if q.config.SharedFS == config.VirtioFS || q.config.SharedFS == config.VirtioFSNydus { q.Logger().WithField("volume-type", "virtio-fs").Info("adding volume") var randBytes []byte @@ -2399,15 +2428,15 @@ func (q *qemu) GetPids() []int { } pids := []int{pid} - if q.state.VirtiofsdPid != 0 { - pids = append(pids, q.state.VirtiofsdPid) + if q.state.VirtiofsDaemonPid != 0 { + pids = append(pids, q.state.VirtiofsDaemonPid) } return pids } func (q *qemu) GetVirtioFsPid() *int { - return &q.state.VirtiofsdPid + return &q.state.VirtiofsDaemonPid } type qemuGrpc struct { @@ -2476,7 +2505,7 @@ func (q *qemu) Save() (s hv.HypervisorState) { if len(pids) != 0 { s.Pid = pids[0] } - s.VirtiofsdPid = q.state.VirtiofsdPid + s.VirtiofsDaemonPid = q.state.VirtiofsDaemonPid s.Type = string(QemuHypervisor) s.UUID = q.state.UUID s.HotpluggedMemory = q.state.HotpluggedMemory @@ -2504,7 +2533,7 @@ func (q *qemu) Load(s hv.HypervisorState) { q.state.UUID = s.UUID q.state.HotpluggedMemory = s.HotpluggedMemory q.state.HotplugVFIOOnRootBus = s.HotplugVFIOOnRootBus - q.state.VirtiofsdPid = s.VirtiofsdPid + q.state.VirtiofsDaemonPid = s.VirtiofsDaemonPid q.state.PCIeRootPort = s.PCIeRootPort for _, bridge := range s.Bridges { diff --git a/src/runtime/virtcontainers/qemu_test.go b/src/runtime/virtcontainers/qemu_test.go index ee1b6a253..5feecaabe 100644 --- a/src/runtime/virtcontainers/qemu_test.go +++ b/src/runtime/virtcontainers/qemu_test.go @@ -613,7 +613,7 @@ func TestQemuGetpids(t *testing.T) { assert.True(len(pids) == 1) assert.True(pids[0] == 100) - q.state.VirtiofsdPid = 200 + q.state.VirtiofsDaemonPid = 200 pids = q.GetPids() assert.True(len(pids) == 2) assert.True(pids[0] == 100) diff --git a/src/runtime/virtcontainers/sandbox.go b/src/runtime/virtcontainers/sandbox.go index 9c7ebaf1a..8baccb185 100644 --- a/src/runtime/virtcontainers/sandbox.go +++ b/src/runtime/virtcontainers/sandbox.go @@ -1286,7 +1286,6 @@ func (s *Sandbox) CreateContainer(ctx context.Context, contConfig ContainerConfi if err != nil { return nil, err } - // create and start the container if err = c.create(ctx); err != nil { return nil, err diff --git a/src/runtime/virtcontainers/utils/retry/retry.go b/src/runtime/virtcontainers/utils/retry/retry.go new file mode 100644 index 000000000..8aa32ab71 --- /dev/null +++ b/src/runtime/virtcontainers/utils/retry/retry.go @@ -0,0 +1,294 @@ +/* + * Copyright (c) 2020. Ant Group. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +// copy from https://github.com/containerd/nydus-snapshotter/blob/38b23bcd0658f2bd9d99083d320b727bf73129b7/pkg/utils/retry/retry.go +package retry + +import ( + "fmt" + "math/rand" + "strings" + "time" +) + +type RetryableFunc func() error + +var ( + DefaultAttempts = uint(10) + DefaultDelayMS = 100 * time.Millisecond + DefaultMaxJitterMS = 100 * time.Millisecond + DefaultOnRetry = func(n uint, err error) {} + DefaultRetryIf = IsRecoverable + DefaultDelayType = CombineDelay(BackOffDelay, RandomDelay) + DefaultLastErrorOnly = false +) + +// Function signature of retry if function +type RetryIfFunc func(error) bool + +// Function signature of OnRetry function +// n = count of attempts +type OnRetryFunc func(n uint, err error) + +type DelayTypeFunc func(n uint, config *Config) time.Duration + +type Config struct { + onRetry OnRetryFunc + retryIf RetryIfFunc + delayType DelayTypeFunc + delay time.Duration + maxDelay time.Duration + maxJitter time.Duration + attempts uint + lastErrorOnly bool +} + +// Option represents an option for retry. +type Option func(*Config) + +// return the direct last error that came from the retried function +// default is false (return wrapped errors with everything) +func LastErrorOnly(lastErrorOnly bool) Option { + return func(c *Config) { + c.lastErrorOnly = lastErrorOnly + } +} + +// Attempts set count of retry +// default is 10 +func Attempts(attempts uint) Option { + return func(c *Config) { + c.attempts = attempts + } +} + +// Delay set delay between retry +// default is 100ms +func Delay(delay time.Duration) Option { + return func(c *Config) { + c.delay = delay + } +} + +// MaxDelay set maximum delay between retry +// does not apply by default +func MaxDelay(maxDelay time.Duration) Option { + return func(c *Config) { + c.maxDelay = maxDelay + } +} + +// MaxJitter sets the maximum random Jitter between retries for RandomDelay +func MaxJitter(maxJitter time.Duration) Option { + return func(c *Config) { + c.maxJitter = maxJitter + } +} + +// DelayType set type of the delay between retries +// default is BackOff +func DelayType(delayType DelayTypeFunc) Option { + return func(c *Config) { + c.delayType = delayType + } +} + +// BackOffDelay is a DelayType which increases delay between consecutive retries +func BackOffDelay(n uint, config *Config) time.Duration { + return config.delay * (1 << n) +} + +// FixedDelay is a DelayType which keeps delay the same through all iterations +func FixedDelay(_ uint, config *Config) time.Duration { + return config.delay +} + +// RandomDelay is a DelayType which picks a random delay up to config.maxJitter +func RandomDelay(_ uint, config *Config) time.Duration { + return time.Duration(rand.Int63n(int64(config.maxJitter))) +} + +// CombineDelay is a DelayType the combines all of the specified delays into a new DelayTypeFunc +func CombineDelay(delays ...DelayTypeFunc) DelayTypeFunc { + return func(n uint, config *Config) time.Duration { + var total time.Duration + for _, delay := range delays { + total += delay(n, config) + } + return total + } +} + +// OnRetry function callback are called each retry +// +// log each retry example: +// +// retry.Do( +// func() error { +// return errors.New("some error") +// }, +// retry.OnRetry(func(n uint, err error) { +// log.Printf("#%d: %s\n", n, err) +// }), +// ) +func OnRetry(onRetry OnRetryFunc) Option { + return func(c *Config) { + c.onRetry = onRetry + } +} + +// RetryIf controls whether a retry should be attempted after an error +// (assuming there are any retry attempts remaining) +// +// skip retry if special error example: +// +// retry.Do( +// func() error { +// return errors.New("special error") +// }, +// retry.RetryIf(func(err error) bool { +// if err.Error() == "special error" { +// return false +// } +// return true +// }) +// ) +// +// By default RetryIf stops execution if the error is wrapped using `retry.Unrecoverable`, +// so above example may also be shortened to: +// +// retry.Do( +// func() error { +// return retry.Unrecoverable(errors.New("special error")) +// } +// ) +func RetryIf(retryIf RetryIfFunc) Option { + return func(c *Config) { + c.retryIf = retryIf + } +} + +func Do(retryableFunc RetryableFunc, opts ...Option) error { + var n uint + + // default + config := &Config{ + attempts: DefaultAttempts, + delay: DefaultDelayMS, + maxJitter: DefaultMaxJitterMS, + onRetry: DefaultOnRetry, + retryIf: DefaultRetryIf, + delayType: DefaultDelayType, + lastErrorOnly: DefaultLastErrorOnly, + } + + // apply opts + for _, opt := range opts { + opt(config) + } + + var errorLog Error + if !config.lastErrorOnly { + errorLog = make(Error, config.attempts) + } else { + errorLog = make(Error, 1) + } + + lastErrIndex := n + for n < config.attempts { + err := retryableFunc() + + if err != nil { + errorLog[lastErrIndex] = unpackUnrecoverable(err) + + if !config.retryIf(err) { + break + } + + config.onRetry(n, err) + + // if this is last attempt - don't wait + if n == config.attempts-1 { + break + } + + delayTime := config.delayType(n, config) + if config.maxDelay > 0 && delayTime > config.maxDelay { + delayTime = config.maxDelay + } + time.Sleep(delayTime) + } else { + return nil + } + + n++ + if !config.lastErrorOnly { + lastErrIndex = n + } + } + + if config.lastErrorOnly { + return errorLog[lastErrIndex] + } + return errorLog +} + +// Error type represents list of errors in retry +type Error []error + +// Error method return string representation of Error +// It is an implementation of error interface +func (e Error) Error() string { + logWithNumber := make([]string, lenWithoutNil(e)) + for i, l := range e { + if l != nil { + logWithNumber[i] = fmt.Sprintf("#%d: %s", i+1, l.Error()) + } + } + + return fmt.Sprintf("All attempts fail:\n%s", strings.Join(logWithNumber, "\n")) +} + +func lenWithoutNil(e Error) (count int) { + for _, v := range e { + if v != nil { + count++ + } + } + + return +} + +// WrappedErrors returns the list of errors that this Error is wrapping. +// It is an implementation of the `errwrap.Wrapper` interface +// in package [errwrap](https://github.com/hashicorp/errwrap) so that +// `retry.Error` can be used with that library. +func (e Error) WrappedErrors() []error { + return e +} + +type unrecoverableError struct { + error +} + +// Unrecoverable wraps an error in `unrecoverableError` struct +func Unrecoverable(err error) error { + return unrecoverableError{err} +} + +// IsRecoverable checks if error is an instance of `unrecoverableError` +func IsRecoverable(err error) bool { + _, isUnrecoverable := err.(unrecoverableError) + return !isUnrecoverable +} + +func unpackUnrecoverable(err error) error { + if unrecoverable, isUnrecoverable := err.(unrecoverableError); isUnrecoverable { + return unrecoverable.error + } + + return err +} diff --git a/src/runtime/virtcontainers/virtiofsd.go b/src/runtime/virtcontainers/virtiofsd.go index baaec862f..6ad0d01cf 100644 --- a/src/runtime/virtcontainers/virtiofsd.go +++ b/src/runtime/virtcontainers/virtiofsd.go @@ -34,13 +34,24 @@ var ( errVirtiofsdSocketPathEmpty = errors.New("virtiofsd socket path is empty") errVirtiofsdSourcePathEmpty = errors.New("virtiofsd source path is empty") errVirtiofsdSourceNotAvailable = errors.New("virtiofsd source path not available") + errUnimplemented = errors.New("unimplemented") ) -type Virtiofsd interface { - // Start virtiofsd, return pid of virtiofsd process +type VirtiofsDaemon interface { + // Start virtiofs daemon, return pid of virtiofs daemon process Start(context.Context, onQuitFunc) (pid int, err error) - // Stop virtiofsd process + // Stop virtiofs daemon process Stop(context.Context) error + // Add a submount rafs to the virtiofs mountpoint + Mount(opt MountOption) error + // Umount a submount rafs from the virtiofs mountpoint + Umount(mountpoint string) error +} + +type MountOption struct { + source string + mountpoint string + config string } // Helper function to execute when virtiofsd quit @@ -155,6 +166,7 @@ func (v *virtiofsd) Start(ctx context.Context, onQuit onQuitFunc) (int, error) { func (v *virtiofsd) Stop(ctx context.Context) error { if err := v.kill(ctx); err != nil { + v.Logger().WithError(err).WithField("pid", v.PID).Warn("kill virtiofsd failed") return nil } @@ -165,6 +177,14 @@ func (v *virtiofsd) Stop(ctx context.Context) error { return nil } +func (v *virtiofsd) Mount(opt MountOption) error { + return errUnimplemented +} + +func (v *virtiofsd) Umount(mountpoint string) error { + return errUnimplemented +} + func (v *virtiofsd) args(FdSocketNumber uint) ([]string, error) { args := []string{ @@ -232,7 +252,6 @@ func (v *virtiofsd) kill(ctx context.Context) (err error) { if err != nil { v.PID = 0 } - return err } @@ -245,6 +264,14 @@ func (v *virtiofsdMock) Start(ctx context.Context, onQuit onQuitFunc) (int, erro return 9999999, nil } +func (v *virtiofsdMock) Mount(opt MountOption) error { + return errUnimplemented +} + +func (v *virtiofsdMock) Umount(mountpoint string) error { + return errUnimplemented +} + func (v *virtiofsdMock) Stop(ctx context.Context) error { return nil } diff --git a/tools/osbuilder/scripts/lib.sh b/tools/osbuilder/scripts/lib.sh index ebbd96a72..857eed57c 100644 --- a/tools/osbuilder/scripts/lib.sh +++ b/tools/osbuilder/scripts/lib.sh @@ -74,7 +74,6 @@ retries=5 EOF if [ "$BASE_URL" != "" ]; then cat >> "${DNF_CONF}" << EOF - [base] name=${OS_NAME}-${OS_VERSION} ${REPO_NAME} failovermethod=priority @@ -83,7 +82,6 @@ enabled=1 EOF elif [ "$MIRROR_LIST" != "" ]; then cat >> "${DNF_CONF}" << EOF - [base] name=${OS_NAME}-${OS_VERSION} ${REPO_NAME} mirrorlist=${MIRROR_LIST} diff --git a/versions.yaml b/versions.yaml index 8e8ee9b36..9cfef983a 100644 --- a/versions.yaml +++ b/versions.yaml @@ -233,6 +233,11 @@ externals: 'newest-version' is the latest version known to work. newest-version: "1.1.23" + nydus: + description: "Nydus image acceleration service" + url: "https://github.com/dragonflyoss/image-service" + version: "v1.1.2" + languages: description: | Details of programming languages required to build system From bc8464e04f5df72811c3b8fe99ae8a81b0e33329 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Fri, 11 Feb 2022 15:27:12 -0600 Subject: [PATCH 380/385] packaging/kernel: add option -s option Add -s option to skip .config checks Signed-off-by: Julio Montes --- tools/packaging/kernel/build-kernel.sh | 10 +++++++++- .../kernel/patches/tdx-guest-v5.15-4.x/no_patches.txt | 0 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 tools/packaging/kernel/patches/tdx-guest-v5.15-4.x/no_patches.txt diff --git a/tools/packaging/kernel/build-kernel.sh b/tools/packaging/kernel/build-kernel.sh index 0aa831f65..a67b922cc 100755 --- a/tools/packaging/kernel/build-kernel.sh +++ b/tools/packaging/kernel/build-kernel.sh @@ -53,6 +53,8 @@ hypervisor_target="" arch_target="" # kernel_config_path="" +# +skip_config_checks="false" # destdir DESTDIR="${DESTDIR:-/}" #PREFIX= @@ -92,6 +94,7 @@ Options: -h : Display this help. -k : Path to kernel to build. -p : Path to a directory with patches to apply to kernel. + -s : Skip .config checks -t : Hypervisor_target. -v : Kernel version to use if kernel path not provided. -x : Confidential guest protection type, such as sev @@ -233,6 +236,8 @@ get_kernel_frag_path() { # Do not care about options that are in whitelist results=$(grep -v -f ${default_config_whitelist} <<< "$results") + [[ "${skip_config_checks}" == "true" ]] && echo "${config_path}" && return + # Did we request any entries that did not make it? local missing=$(echo $results | grep -v -q "${not_in_string}"; echo $?) if [ ${missing} -ne 0 ]; then @@ -438,7 +443,7 @@ install_kata() { } main() { - while getopts "a:b:c:defg:hk:p:t:v:x:" opt; do + while getopts "a:b:c:defg:hk:p:st:v:x:" opt; do case "$opt" in a) arch_target="${OPTARG}" @@ -472,6 +477,9 @@ main() { p) patches_path="${OPTARG}" ;; + s) + skip_config_checks="true" + ;; t) hypervisor_target="${OPTARG}" ;; diff --git a/tools/packaging/kernel/patches/tdx-guest-v5.15-4.x/no_patches.txt b/tools/packaging/kernel/patches/tdx-guest-v5.15-4.x/no_patches.txt new file mode 100644 index 000000000..e69de29bb From 987525291799dd0fd26e989c40f883e1a6e9d375 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Fri, 11 Feb 2022 15:33:18 -0600 Subject: [PATCH 381/385] versions: add url and tag for tdx kernel Add url and tag for tdx kernel Signed-off-by: Julio Montes --- versions.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/versions.yaml b/versions.yaml index 8e8ee9b36..828280a6f 100644 --- a/versions.yaml +++ b/versions.yaml @@ -150,6 +150,10 @@ assets: description: "Linux kernel optimised for virtual machines" url: "https://cdn.kernel.org/pub/linux/kernel/v5.x/" version: "v5.10.25" + tdx: + description: "Linux kernel that supports TDX" + url: "https://github.com/intel/tdx/archive/refs/tags" + tag: "tdx-guest-v5.15-4" kernel-experimental: description: "Linux kernel with virtio-fs support" From 1797b3eb049cf39f5081b46adf0f157e87ee3f42 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Fri, 11 Feb 2022 15:35:00 -0600 Subject: [PATCH 382/385] packaging/kernel: build TDX guest kernel Add support for building TDX kernel from github.com/intel/tdx To build a guest kernel that supports Intel TDx run: ``` ./build-kernel.sh -s -x tdx -d setup ./build-kernel.sh -s -x tdx -d install ``` fixes #3650 Signed-off-by: Julio Montes --- tools/packaging/kernel/build-kernel.sh | 29 ++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/tools/packaging/kernel/build-kernel.sh b/tools/packaging/kernel/build-kernel.sh index a67b922cc..93e82d590 100755 --- a/tools/packaging/kernel/build-kernel.sh +++ b/tools/packaging/kernel/build-kernel.sh @@ -97,7 +97,7 @@ Options: -s : Skip .config checks -t : Hypervisor_target. -v : Kernel version to use if kernel path not provided. - -x : Confidential guest protection type, such as sev + -x : Confidential guest protection type, such as sev and tdx EOT exit "$exit_code" } @@ -115,6 +115,22 @@ arch_to_kernel() { esac } +get_tdx_kernel() { + local version="${1}" + local kernel_path=${2} + + mkdir -p ${kernel_path} + + kernel_url=$(get_from_kata_deps "assets.kernel.tdx.url") + kernel_tarball="${version}.tar.gz" + + if [ ! -f "${kernel_tarball}" ]; then + curl --fail -OL "${kernel_url}/${kernel_tarball}" + fi + + tar --strip-components=1 -xf ${kernel_tarball} -C ${kernel_path} +} + get_kernel() { local version="${1:-}" @@ -122,7 +138,10 @@ get_kernel() { [ -n "${kernel_path}" ] || die "kernel_path not provided" [ ! -d "${kernel_path}" ] || die "kernel_path already exist" - + if [ "${conf_guest}" == "tdx" ]; then + get_tdx_kernel ${version} ${kernel_path} + return + fi #Remove extra 'v' version=${version#v} @@ -472,7 +491,7 @@ main() { usage 0 ;; k) - kernel_path="${OPTARG}" + kernel_path="$(realpath ${OPTARG})" ;; p) patches_path="${OPTARG}" @@ -489,7 +508,7 @@ main() { x) conf_guest="${OPTARG}" case "$conf_guest" in - sev) ;; + sev|tdx) ;; *) die "Confidential guest type '$conf_guest' not supported" ;; esac ;; @@ -506,6 +525,8 @@ main() { if [ -z "$kernel_version" ]; then if [[ ${build_type} == "experimental" ]]; then kernel_version=$(get_from_kata_deps "assets.kernel-experimental.tag") + elif [[ "${conf_guest}" == "tdx" ]]; then + kernel_version=$(get_from_kata_deps "assets.kernel.tdx.tag") else kernel_version=$(get_from_kata_deps "assets.kernel.version") fi From 42a878e6c1a17b2e5f9e69bc0c7f61fe48c10256 Mon Sep 17 00:00:00 2001 From: yaoyinnan Date: Sat, 12 Feb 2022 11:10:10 +0800 Subject: [PATCH 383/385] runtime: The index variable is initialized multiple times in for Change the variables `mountTypeFieldIdx := 8`, `mntDestIdx := 4` and `netNsMountType := "nsfs"` to const. And unify the variable naming style, modify `mntDestIdx` to `mountDestIdx`. Fixes: #3646 Signed-off-by: yaoyinnan --- src/runtime/pkg/katautils/network.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/runtime/pkg/katautils/network.go b/src/runtime/pkg/katautils/network.go index d0cb4d66f..fd37c6605 100644 --- a/src/runtime/pkg/katautils/network.go +++ b/src/runtime/pkg/katautils/network.go @@ -94,10 +94,14 @@ func SetupNetworkNamespace(config *vc.NetworkConfig) error { return nil } +const ( + netNsMountType = "nsfs" + mountTypeFieldIdx = 8 + mountDestIdx = 4 +) + // getNetNsFromBindMount returns the network namespace for the bind-mounted path func getNetNsFromBindMount(nsPath string, procMountFile string) (string, error) { - netNsMountType := "nsfs" - // Resolve all symlinks in the path as the mountinfo file contains // resolved paths. nsPath, err := filepath.EvalSymlinks(nsPath) @@ -129,14 +133,12 @@ func getNetNsFromBindMount(nsPath string, procMountFile string) (string, error) } // We check here if the mount type is a network namespace mount type, namely "nsfs" - mountTypeFieldIdx := 8 if fields[mountTypeFieldIdx] != netNsMountType { continue } // This is the mount point/destination for the mount - mntDestIdx := 4 - if fields[mntDestIdx] != nsPath { + if fields[mountDestIdx] != nsPath { continue } From 7159a35d204adb2814fefe84c8d4ce9719f2331e Mon Sep 17 00:00:00 2001 From: stevenhorsman Date: Mon, 14 Feb 2022 17:08:09 +0000 Subject: [PATCH 384/385] agent: Move proto - Move image proto to reflect main's refactoring of protos into src/libs Signed-off-by: stevenhorsman --- src/{agent => libs}/protocols/protos/image.proto | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/{agent => libs}/protocols/protos/image.proto (100%) diff --git a/src/agent/protocols/protos/image.proto b/src/libs/protocols/protos/image.proto similarity index 100% rename from src/agent/protocols/protos/image.proto rename to src/libs/protocols/protos/image.proto From 8cc68970ed4a72e32e516930b762b7a0ff7b4de3 Mon Sep 17 00:00:00 2001 From: stevenhorsman Date: Mon, 14 Feb 2022 17:22:38 +0000 Subject: [PATCH 385/385] CCv0: Fix bad merge I seem to have lost the image_rpc `use` statement in the merge so re-add back in Signed-off-by: stevenhorsman --- src/agent/src/config.rs | 5 +++++ src/agent/src/rpc.rs | 1 + 2 files changed, 6 insertions(+) diff --git a/src/agent/src/config.rs b/src/agent/src/config.rs index 7115ba6b0..14cd93d36 100644 --- a/src/agent/src/config.rs +++ b/src/agent/src/config.rs @@ -973,6 +973,11 @@ mod tests { assert_eq!(d.container_pipe_size, config.container_pipe_size, "{}", msg); assert_eq!(d.server_addr, config.server_addr, "{}", msg); assert_eq!(d.tracing, config.tracing, "{}", msg); + assert_eq!( + d.container_policy_path, config.container_policy_path, + "{}", + msg + ); for v in vars_to_unset { env::remove_var(v); diff --git a/src/agent/src/rpc.rs b/src/agent/src/rpc.rs index f5817d81c..db5e04740 100644 --- a/src/agent/src/rpc.rs +++ b/src/agent/src/rpc.rs @@ -46,6 +46,7 @@ use rustjail::process::ProcessOperations; use crate::device::{ add_devices, get_virtio_blk_pci_device_name, update_device_cgroup, update_env_pci, }; +use crate::image_rpc; use crate::linux_abi::*; use crate::metrics::get_metrics; use crate::mount::{add_storages, baremount, remove_mounts, STORAGE_HANDLER_LIST};

*$jMnC-sITaUjWx(k71{v3)Tv^A6kTtKu%2! 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 z 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

i*n?Aqg>cGB1J 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%0A~YndT#)~2Y3{auv>Z~ zJ)g0$AJV8F$D`9wnvWkEonEF#45hpLj%w4v4psiWYWst7ey_aO%s3Qg%btoZb{T0% zXiac}9t+vA(^!R0N|?DEnQO-^jd2Pin{Xh@A8qnCaQ|@rW`i#T4hQ1=Ed`gbCW?2< zUwC)-b}9J_=b51l4pqw5q0IfCRtn$R6s3DR>51FXd*G=Du!RKTbWa995Lg08cddsiloRy`ZpUk@^iz-pDY){UXkRMduZtlzPjL{=TmDEkPv2aeQOXwZ7r z+u@wK=@?T#n@RutFb9dmtKjbgdgE|DZwHs~qbOd#z|ixX4>fW0)5PsF4gWXJ=T3UO zo7ExVNbw~ z_^FOmPvB>9T0hmukdV=Pk(9oL`MQ=K@4oK9Tc7GQU>8=OL^QzFX+f`<3x)YNR{A>g z#y$*RlhFNc(Vx+i&{*uoXNriB5I}PcT_`kr1aHuzsT7+%)8u-KQ(v(~aR`_7;kjxm z_tZCw>W9_Pj0T*QW3(yoofh(9Ba(>auhmbQ`rPo1;d%B!@aKVl1>$x)<(sBH7e(>> z$nWZ$XxxwM^SyuBRepEC8D}kBF?W^N>x&5L>2UjsRYDy+8KOO*AnFHp;ytRf9W`3dUQkTya*?G8PWRy>dpcd?qKelU^xAnTk~C`T_DrDKR@7(LWDLF&B1#`$cUcX-{WMkDTIUS~%qLsoNFhlvLAc_+>C# z?G10v(s>7RGc`WzDBfV<$3=Av5h|;fn)2I5xx{qU+u+AN2>%m^%kP+nGKmX;+W-kY zkzd5P-)|ge_J>^^*&D?DVMs@1hk8-JE%JRM(l3PgcXqzCe|YInM*QC#p6uZ%^YiID zy=u-*_~f_4`S|bZ39J4|wo84&a-OsSAp~C_f&GE}`r)&S5Mj;o| zP^avpPhI1p^kP*yD$}OV8u|iSuGwrK>VP%2yt`tzn0G_Rvw0&M66EtRtTew&C6Srs zxL*ExruN=U_-6E4*s&*DBTA$4=5s5_UfzKP*bma(Po<#|&PHUZyfGY6iVEAuScnMJ zKt89wqFHnl)HwCk=xi45>kd*#maKo0HuHByulhhJ@7W0JZ*Y(}y{T}&aGDIW@)nw; z{vwuD2tbzD<597&nKc{Gf*+4f%mlEas70tGtfVd;z4E_*bQX_^_-;1L9xNtP=TcYs zQ%(C@@~z?aw+?(ga6J&Wzc;}pydT9MMJFdBec-tLg>?Pmr6(+3dGOLTt4$}qR!jdq zQ4U2poD}xq^>*UYe5+k$Xo?k}%6JOFfe73KhAQSAwxOT~Tj86~BUzh3QX`-Q{8CLx zb?5Ey4%7icXa-S8?8vp!-xSIdhoLJtUpJY~>ZnHhN5a4LPzXhzi8^RPlG$a;e#3&- zTTRkQtEZXr8T|IJU%4-V-wE6U#O3o1a0%az;&|VLI1X=e7&$NRO6Tsh4aMkCA$NAr}&PQGQCe4OWTwuaDBTk?-ZhFD4Q{1^+ql??9ZcUxG_` zJ&NP>#Bub~#Lzxz5q-IbbWJ2(rA1TOF>s4@RN^b?qeRp+F%*)aabR2Fz8E{Abj^R* zd{^FoB=}O`BtX(t#-H&i(fu`19H%Fa<8;O6!|i;htuZFb))=2k*!Y1m`(aFw)a-;( zf1g?qzG^GqiRr!f!Sj!>wgckyw1H0q_5~yit~B(|hDiTqW5hRDeYm+Erzh5*Hs+p@ z$@Sr3AxbCQpdK1Fgx!GC|Lnr2t;2t4El$`A|I0r7Kkdchd%b~`wb=C5;&-B&NG#Nc zD|6j&MP$@O<*uN&iVAaZER8&SR>D3@n)oQaS1A02XHbVZMA*y|gHgH$ zzB`<*1Hq2~jt1g%9S1JqQ&GHRgrBqUCWqC(HRW&8wd{;NrRosMbu8tYy+I{xfV4Hh zDG(E|khjJT+)zPK)JUxD)Tk^QAB(}X5U+{qN>h&8NJm_b$?wq*fD#a=w*oGqC5rzq z%5hHym%Ep0mmU+BYAdDM775fhMCrVg@5kwU0Q^zlF(6LoCU6NqisHc${)WSw90ntO zq20>$BU3qzQf@{KAbWPgMhTrQtMx&V;xnZyT`_ID$$Z*QHIU}&DpRhL9~iiIkU|AwqpPYLn14^bX{+4|77CfW-U$96z|=i$4$n8*aqGz1YrdOyG3Pd0jO zt~&`b8gE>70FPBxuEk23AlWGeZZz1_T1lP;5L2Q3&cd7O+9gz6eo-gkX}xV)bL ze-79T#N};2ZpyhPir2rn>-s%>8Hacr+_k*dp15@7>{HKLDGmnh{8z;KWjG0Z_k#HNL+49d7)zL1Cnc@%SNE>g~*>dR$yUz**r&#HxLZ^u@G z9lvxDP1gwW}8l}9nA3UMz@I#-alp? zX-&~iU$U>!E7o*4M_G6(kR-U`vA|i}*Nu@L&S?AQIw+Cx!B6o(aISM)-zWRltGS* zi`m9Zv96W%v{k4yHMSQkeu+0BXV@$4Cr5SRufCOe6O+is9(?&* z!XwS<4yb)mNDYt&!Q(~}MCR=-PgD6Ft~i9EJIkXL%Bk#Jr(h9b5aqbh1yskv^#d2% z@z^%U8sm2I3hZIr6pbQ>PK0MSAv=%Qk%`1-qWqJu$x$a5^#lC01IGe!{=X0YKG5`( zDTnJk(|IoGo*9pK&Hua=t4?69-eqithFGxd%%#JGQEW;RYO?S8?1?Lu zEnO)uS;Q+S#+FU`TKjRWHt9*>aZY$#7ap%wVf2`ZrajJ99WPr`tnv0~)@b`_QB%Xg z#;+8fO8txU_=|CII6YAN)=bH`>>QweV~xHY;c_KFe(WYa^zFnz6Sd%4y?{*eTsJ_Rg~{+(aSJ!nIRFVN}`Pk0#VF9cc4E zoA%@X5S}mXrwe=2{lQNGt^%U=+w{%$uf=)H&vh8>7anVNJxa@XR-M~FsHR@4%GarErZ0Q3 zrsp)l`yH*viQ)egMvKJ!Y8^avuIUe zdR-}2oQ40X+W$*6{ih24OHB)pi=D1V?Be})8D-XrS3y68;_J7kiw&5KK8tGC#oBN8n&1pf1J)r6g5>IFFz{6m zP+{DK=)h8L6jg@vKd1^D%0T>XiIPMeN@^I+3B{ob?Bmg>=781Fki>qa+s*qO4BjmP zE;2k(C2R3>nCuU@W#{OKp4f4|srSE8pE12z{|x#sz+ON+Zp;Cfa8wl6Z8zg)Pb4=F zZ*o}usHyi|>$|6S#nR7w`h>Gi9v#v3GK6l!1Sp(eCx*wYOsTI}-_eN`;_>w%g+&RB z6~jh3l>Jfr*vY#Ah`cf*J7=B}n*bJvD21RaXXPk^KsB)Obe8T&StkZAH2K>`x~owl z_jwjM4e%)-Zr6wZ7#TBg%yTB68z!239DQRnF0R}f{(4j7?`Fv!+x2W2-$pj&oicBH zl>Ijkglw#EV6-kRJ#MK@)~$9JeOoT~#&y~dE zQrX8a`oVLydR5u4DF|JSB3|Re=%87%;8EA1Ir3eVlXu>))Z+%*sMHfGCD*>G;C6mZ zjngR%t{$g%P1XD0W8H?w+U%SML#-ysz3(aKu|3|a>eR!^d1O!bPPO)NI%+h+*<8L| z`@G(*y+qrWLOrRM%*UTb>eJ~LmGg7+k{_%5Qs)F`jB}F;teT6JbG0PydFA|M zxBDdSRO{H*G3lQv|3&5YS>qf5C;b!U|5Um286bXZ^82z<|ElWUjp}*T`huFUStN_i zI`x`zu*V_GiTq9H{1@OtS=V| zV-k{QW&)J#pHS)&z-MqfqE38QqE%T8rX*E*3Jqg# z%r~Y$&YY8J$Tp}ckhy_?wvln-!KLDc5B`C6-X7 zpiS?S^09!kGX>08T2=zoqy3+Y%VnNokn!Cd&-&mk-u&Y ze_bPr{v+Po6yBl74OfU76*MPn;5W}CpA29O;u*>%hXC4T=%1sSqZIF}g^e*vm4ZHZ zd=B>zyh~hM%a9+0&jiUWDjLm^@2)rF-LuaR^ZWh^p7;s-cmeTv-Ui+e>cD;DysugFQzHH&r)5XhxonIa@mS3^Ptg=?mOI&K9ouchWZG~<( zWLWT~w%%g7cz~=9#UfVBT3ISqpqR=C(&m}#GZ?5EBz-f!VDi-q{m~;A2pdTIoxnXn zoUaF?{Cq!(KWZP0c-@P&_kmb@zha$~xZN71X9yc+6fH}Xm;{BlBsOsDl3>2MF-k|z zPlxA|{lNDJ<^pj#js!m*I0=w2(hhE8#P8U1`5qunC{U7l#TrHF_2Wf#)U}p%9b+{@ zD>o@N|IM0W7)43;%NhP!EZE9~YfL$9=DP#og+$^#@Y)y9T?OL#?s)Le0M`N%24|c3 zZd2sH`T40YhS%eLC^qbIzB_B>@^v#$*o}BQaBX-|*uP6|6GO-|!sF!dI6>?nU%@Q^ zJC3nd*6NR<@hT38g2W$KKB*Thwb^oRw9>zG^=9nD5rQMB8+&-~5lyKnH&{K_Th0xZ zbCX#gO@{WVWmTEdy&m32-BEJ1LT63k7udE#tCiUDeGJtcmeS@|RhnBCNqdp5E=nGG zpvvN^2`EV{T@sq9ZKz)@xz?0xb@Q-ap@YHC0UiS4djIji(y#svJ99w7)U{?EHFl+m zH-FXWkLK6zi9fM;*@}_G!CLy$QLEO7T)J(&eW!o5t=8Ljs4#lNM3-3M*^kWG@mJeY zzL@aVs2ereyxzM^Px!o^aGB11p2bX^VgaNsP&-{zD85{!Sl-ldr!TP{kFu27H!b}j zOs@ep3{ekQH5+kb)8gk5n&s_AteC{-8bcZ_u;Svi+8vj&(p|4w+1D(cvWm3Sj2!Ju zI^|UHRawBNZ%QLNP1-ZjR4eM7-9}numxT;oN5scYh9Lm{mxltX7ltHOh!$FMwtUclSu8&>rxE0gpeu^cvAPI}|R zxwoGQX96;cS@g8M^<)e@>wxRv{iWMfjs0z2X2g_nYXQSqh4YGN7(lDU1;?c%&?FDZFzCF{i-H7uX&y6YIKpVBPf{m(_!TNp{4Q19i5RpUhe2vxXrPM9sa0m?p5ee6 z#|xOJ76W7Q8GQ_eoDnxHd7mv!XX5~unI+@rU`Vo?lkMd4wWw;?wXNJw!=JIyz{mWU zZxy3hlvIk)G0AGSz1)%Fs^3y)<$8K>JzVel_5tYk{jYw31O)F=EL^JmYCf)(CX$nS zilTj}8{&}C^uvum8|HI71^zqWEg&A>_Ii&_n-v(A>#tn+;pM#qK6Gj6j|^tYG&#EnCvW?)d#!9cA!pS78zBr>eoUWHpm+YG5H$Td2y?@*;~xuZJA%I!E4;raZ;} zXoYc)`sA#cvw)#CMTfI+9D!}JlSUl?Hk7Kv_}9mCXd#_RF>2x`KFeyrOIK6l5#raS z3pgV5R4q(t{IsF)$D8aDoD@Gb0Nz9__dCJs0QnLssJw?wz=rE@$p%w@r~Z6+9{()( z7l0dpcpTjbF5$T-u150y{6EaPGrY+m*3aIR6gkS&8{3I|76#@VfUu3zB;hK$vhRfpCx;a!ygBTDUDDigSVTdGl_oAfD zE+fLzr&Hjf*A0Z4P7Hq8^@I*pRek#SIHaHX}P}q+=~>8 zlOUJN2iL3O4RQw~rx}UwQ!MU1y8B+?H@WH^C;4Y*EP4@W%h>7{s_$27Y6`+Fy+an= zFR2`htfccBr}&mr|BmDT84qXUjp|;YS1|n4!YdxfpjpEbrQ+241IY}UCJj=`-8kgL ze%9)PkvYll^X6g|8K7+w&|0u@vStW(R1{XwFo&I5;7?ZiEtz6o<=}pZX$O*1M`8HJ zn$l9)Yz|S0<6s&Gv6k^#l-c`X^;b&3xwZ*zXQAr#O<%)-|_tmOavs1%=fl}880_Q`;qOMZ`z(TyFo}i zQLyn)uzAIrVY0iyqcLf_O|^vd{so?OAx`o-QS+XkjMQb0LLL$AKQ<X}XfH+^j0hh2Nil;tf#*LBwT31K=tn8Yv z(~MO=8Ji>d8WcC=zp{R(5=XR#id!&Bl#fQ=dEwHz6$xQcpN>mzTDCCt+4RXOx=qZL z1&BzQAG2g4RE^HxVbXu<%fs~fh2ZxCzXsy;zxE6CXfKI9wG~ui?y{s zUZ!v-(UIYUu0PptlbJH8!z~3Issl5Vit=dE`CMk5*7LHEB`o5ZRed)ZR2JE)*z%0B zCSyf?OlFd^RpA-&cgo%_WL2QqM{57fB)wfFA5h7SN(YM$8V@zJ_D6wr z22#Oml%9_kdjra8TS@ERmgIz zrkwKrrJ`R+7J}&_U={^Ew8?Dieg$22Eo?jQZX|HYZ(5Yg*Hv~PGXWPQR0?B62@1i| zm86R&J~x=nQlOwGs4nnB;ZFouBh>}yRong$4u{T029<*k0h`&$mvRMGzP@VLSSUCx zI5hD*Kcoao=^SoXnrb`P`vf;``GyocS-Tf0rd7v7sazTTNq(742dOdX67qL;HwiMC zQZ~gV3VxDJAr2J4{7yow_p)n0U%qnrnd6o(U9tQ#%hrSw=%PzRq}LXT^FEHJ@y0~Q$KSO- z_IJBcdUh}F345)np-~5}`fKqY!ItD<9A4x*o1=8k|J881j{`piI1P|=i~iT?(fxH% z9H%#qCCw7z^WD=;zb@sQm}aJl7MM}iF{)ovWuDjxmG>;V-<0QezBhyO18FAz05AL+ zz5o!Fr*jne$-rj;2|H2|9WvU)Ti-Eqp13?`+_o)zZuzSI<*Uv*bNPyKLX*r~!8%s6 z?Z)H!afLW87aqqxPTjs{ormV{tQ~6F+iL6%<-e`09cm!NgGAR1c9iX_LsvD+vcKs( zoQSBNvE6=;)mpJpAB1PIXE%YUREd z+4(pnbPyLtBpTK?S-TtGXoygN&^~m>1Ezcu+YG(dLHU%ydx5=yxV;?-ehRP(kg)A7 zGq1$^TyM^s@i=k0DX-yj5%sFMD6~kyY*07rkQuUHcpSJ5GVL{Mzf08UOVtl`;g2-U;jj#Q8q~{GWhJ014GA zO+FXhW#ZSP{BPPV|DlFpTmT!@PZ@Qg%ukRVzFxDwt}a)>6>8e$s&a)|kl4WRxgVpx zM%m%MU|(l^NBmde zg|wH5mPCriRuIk@KgIIJV<}~)iVS%SR`?AM7~{%bNI5=e%A@YJVfuXx_-x>0Anq@B zfIkQP4v?@T(qmilnkkRFIt(A}t)!W^H{4+4p}V#VLr3A;d$X|x|E7uVB$CpZe2MD5 zRMp?2lDDdRVdbZf4B;L=XbAU7_8EFsDp;@6mkZI3 z!5K5>l_Aj|{?@T3Nf|PIMkIR`_pApwImq@#yV0u;23YMOnu8<*1Z;MjBdsoR+Bigpc{&@r=t*bI?(Gjbe-ieGooOxGEPghNL=zQ zQ|_1kW|(gMD)=41-9X$9?+2IgjVRvwl<9}DerI@-Lp**Cm-ot5t7orRwRYK>abZMv zOj5+j#2bo@zJ;|K{&aPej=I-})6oaM7cd!!>wgBggauJN7?^q=D4RIE$sryu2Y0Lg zg>iahKwo|QDxcJ>OZleg^bYXaG zdLf+nuC@{zU{#N|g^lmy9*yn*O)7TcS$C|{CBvF-%Z2s;5F7YW>*5H1n`Lqa-fWXl zn`V!o05)tlp88ovI^vBz7tLkT$@+kb=(Iq0?F(rr%_W@UB!8Q}W9nx+`Sj%i;a%|H zcbP;N5SPbd@MD2<010t>h~vrqX8jSL50}T9Wowr$3(ct3tA9~fi;G%Bu0i5;Yws6S z+h&FQR!vp2*(q?ds)i(XkQivy<*fyEXO5LSdV|gbT5HNu%-D!QfCq4UIO`RvZ$&tkKa7B{$Z2ft>hyg<|L8$6ZpG;wS73h&EUPj z1VBP8ABxA5zeV#}+>eLzD;~oaFI{<(sre<}RT!d{KPmaWOpR}va7bb@n^Ln9_Ay3s z!8#F6j!R~ONagPH3JzenG`vjV?Bx(s!((A9&CngnC^3+p^^cf*+(r80{{0sC`#{_8 zhw|Zk2K+wYc|gL2$D4VldbWv=yU*~Go=q4!Zrg6-(Gkl|Uu~x8Rcpr`xb}c`%h#Tn zNPsWj373b$NsH@e#<=+OdEfa^eEMut;>_oD>u2l+;m`S^Qgt(H*{bAvb?zC1s)wz7 zuz)FB&Q+?AI2ngG4aM9nJuBM;8?;7Q4K+B5De7C8_xrvq6T7RO zmoz6m?Q>`RbCRV-Iq787y|!v@*H%lp>O5gb>oT!lyjFZovyibq>+bIyhF$yv3Kvwu z<*ud>NTgTzIMG)#vtf1o%tCW&4t(gDO5?T9J;Uko*}+1bkt7Q;OY%nef^208%P-`d zqiTtML~;~5S`8?lq(wVR;r%*O&Z6+BYBB}zDp(5^V4^*o!{WU$Rb@)71sbxx%{IBJ z4rl$E{UjMlA=;QMxyK$(yvR~)NJ(qZ@(ZqbwDHjJHLTvmhR001*z|{Cy6tD+Zvvy= z9BvmkgTDl1-!kpuy$xm@+v~O{o@M-+J^W`g-fh}ryNKwNZTd@2sDX8x*~{xebhD(k zuhiZof80=QA0ya8srSp3pnD6t-?_hmpOTj*AbRf(POoSNLE?T$m_oXa7J%|_FPnYQ z0xnU1P?LVgfTku!Enu%*T7a+iR%dnU(Py%STHpsq6#6Eqv+DGyGxcOw?|q+IlRV>D z6^zDR>g#w3ZKidwclW4N)wu)_nW;@$LPnix?{7_TtNIw{NdE{(LZllsvnt-o7qV#2 zV5~YWH3ycP&ad!ug_*+Uxl*G|F)nH;$IwU?vVjJanbLdX^k%>8IBSk|hLg`Lgev0Z z0v7-x-Z3pG$s#_3CKK(2w!~h>vW<)*z|%4Vq`gkg>-;2yz8w<$EVm(P4c>@GDlGYQfv0!AD!UapC?tDy z3eRh2K0=lwd6Y2YNz=aS{y02-_Ji*S%mCu~;t+5N$4Bv|$nN&`$nRiylf$BV)4qns zPtgS&H)N1jyX0aSKs^S~*Q^Ir;yNbG6By(pTkjgyJ2mvVMx3mX!kstFgW|Mn*f5VZ z57w{YZN9f7O8-{U70-9?fO~(!_a6|azY|=-)F|FiYtoso+jah5|2IRY45vR@?+)i+ zBf`}OWNot`JT^QKPX1Tw#5nOFlB6C7*rIea_3T(UfRLBu4`d(WwnoUI5?3S%v z!tAkPMaCjCcv4s4*0i}<7Dep+gt0HIAKF1Yvp;3(X%p$M3v&Yf2mU+YEg;V4JK$k> z+r;tw7SDIlPZOKAjjSi3Z|MKS`5aUa4{?28vtCt+Eoh8MUP|GJIY#X-vvez3=M}hO z;&en5-Pw#J6Q0rP#>fLE?1<7o7^O?Dt_QybxDAl>3*Y3c(f#|QIHo`1*t~6+UKy?@ z;q?fK9r8>L$)yt6OE4n>B38-4k{H7^2~qQ=!5^A(t=lnNuKR#b2WA0rx()!BurP{8 z^3l!P_LQ!k-k}xA=%FP^Cf^HZN6h6gl*9WkMOVOjF43$9%$qhx>DtKmVtU{w;9G%L zfH+;-z$LsH#XEj&+V7G(O>EuwOJr}M@PI^@-Gfea z*~0~Wmn}Xx9YlaR)+JmZtbW>*-_h?3&rfT>KL?x##Ob^UT*5U`{I|FFoX%MOGMvt# z(qsSgIFYNOMBYjw0koNu&;V6k8zz$z89&7|x1P~AOlbZYlg`ASht~-$;A7<+h|{?j zxP+NeJpUu?2jc!ToX(!!Xr&;VA;JnWONG+vlZ-2$)s!htO>KaJY{Y#xk`X5?)gbhU zAP!3^QK=%QiPF1~bj0=lJowLntw5aKUw}(^BZ@z&{^S0$$MlA*8>&B(-^;YhqZ9Vg zrd7(u@nO5%H~dT@|Ewv;`TsFoj;DdI11gN{9mMw z_86saJKv4h1F64c5?P=KNcsqN4Y-85IQ|I#QbYB;^2}vxRxVx9fAZ;PhI;Kiy@#(_ zbLO&>a0okk+#$LsGKNzKF9p9~?qVlu$2dOoreiCa)ADFF~199gOs;vswB zN2Z9Km{ix6n ztV1j34eMDev2QEfR4g#)Y2i}L+n!}T=}{CMCLAj-G%CGejB zTL1|w&NcONYKvKS-Rl{;d)*P{e92W2UvOl-Nh_l5z#H6#vs2tf9vB|I+n|5mum*Ma zaXoC|bXvb&=pKU{Qr%c=(6hc+6qi%=`cPJsMZHYb1dFjk8-?MRWub{x%+=uHT?mhU z{S~ZI7#SzZ#_5cUxnh27Zeg*lfFIdXu_DD(S3j}{{et?12vd@E z#l}LD-&kx4*<7{4GOV-4*^v&=lAoIL-}u+zaZmk?^)Ar-?r`}Z^FF+b4>E~oKQ!gP z>19*i`A?X3R=3~FVZFR^gt@-y)@|YWZtd^HRj03Bx(2TOZg);zv1+MoaP|?mm#9Pt5TSYo`-)>HOWF`nh@PS`*C+fAU*`pEmK9=E&5yC(Bn-Lve!eSeB)hz2|DT`$pY!l}g;mqW7~HT{NjSS8dFx2XbQ;1_x)gdMZPgx+&$} znzH{T%goEzUry=UQ|X^& zoGlsqt0{d)D)myvc{yW$Ev4^DrGAldo*n*$^U=R}B_q!sqCT&SmuYnczK9xh?h>sp z)%pTSyL@{(Y2MgKny;*P*Vo(E*1I>X>@+vX#Y#S-cX-7jsNqnc=y*EN$*u@(tCN}UKQl8P0QI&(&>Lob48mg4=F5(NUf@SSfTS( zll+d--%}Y(TQ{lHI(KeO&$}tjH?9cy#$~>Hgh3k)yGQAbD)WHS4=GZCbR8=jNyj&o^KF&+ zmU13dsYg`$n!vu?*H`(4>jP)D|Epl$F9Z8|9bLFtPJ=IDoP4nU4H7c9X<~4eeXnx$ zvF_5RtI53jfV~eI|KS#{ZpGy7gJkkQlK%bUtgnwlh^p1tv;P;*OqEH(eop;c)p^gY z{dsrlSW%y%?nn|**HkcHgjK=>P1^>4N_YGKEh2Ixk{fjVZt3GS@+54In zHDL)3oT8uoB{}y4HTR0#+zYaEzl>$mb21b6W2ZNVo^uNN$KzEV?>$E_42|_h2QKuo zi%vIy`glP#d!ub)7NJ$A?2c0>;f-VG-(+}lT=+Y9a6`YV@;sU;Sla>e4wl|&w?i%G znZ3*#hpvuSuV9U&riPa*;pH-{Z}uKP1g6YXdoMV=KUY>cUq}t0uyTPal`91{=1OPw z#$$55+mV%B%8NL=nVL?O3guKT#g-5$?yYtAR;}c1g=$v+Jp4Yk4r;25;WvBh%BXdm zO;a5_^_H%tThFoVST$y=0+y3a<>8ZUq?){;j@6U7Rx6ixU?PzD?B)|eZ0RH4K#Uq*o;u>9i_t&!c zVW%xHN3DR`8BJ-!4z`cwzPKk$rZYKddOil*Sn~?-gm|%z?r&eimbJV{*MZdZsD*z-T^jL^_Q) z&Q1~iU&W$Qo#Hzl-;s??&^1Px${u3>?Rd@5#hY|C)b9~u_Lty)1&*?^@w&wBva^Yg z1789p%pai_InZO|dh5F*{@=*;$jap_hG<@0JL3Wrwr2DLZ^X#!db*H`ZQTk2Ne1CM zD5r`HtUYzz<({T)QJxeE@fc!hGj%=5|MosRGl!ITb*+fV17NGNsgg1?@ha;ureSbo!nQ-azLy zvbFVnX?<(jzCP`5NV7(<-3JiYsGCQ=>!u9958rj4ybJGr!|(c5Mn5{@U3a9>Nshnu zos9Fn%*$3m$t19>0jFfNL|F1rPfcB}Nj*}Ginr`>%ok?7VcO-t*5V4o3GckK&l`6UXv93Gw-EtFc|!yQ4)VZfU|^8gq1ehE?K1G_f&C z*ABiH^MTl)DNzMFftY`>3|zus6hHj)pN8j6kzdU4gu`3MnRO)WpK(3C97m5kXU+06 zmn~X)(n)MD%{s7lJ)Y1)ark#k(;P0m6J~S;~BmzY;$WV=p5Ty z;D0b^7df}~*+;7A`Pdd?q~-_Q3#wjwSdC-#5tz+*>SLJsviP=8r*|V4A`BJ$dFoR>+Ks~*sXk43%Ayk7oGu5UbZIk9!FW>=jm?sp?G+DQisuZ ziKMXR>NS{*9j1=ZXJaLM80Hwyi7vpm(Ri!Z$@(=A7l&2R#YBLb>^pm)r~j}n^pU!s zLm@&uGu5LM+YO!7q>Gte{{U-YdW<=%DbzJ$0(C$Nlb3S%M6Q_WY&f8npACJ}KHKWS z46Vg|4uxZ0XYYr%N3;J)871Fd_D-N1VEIxDxz(<#Zkw*4sxM=f+%K>PP|2#Nta*y9 z!)o!$)0MV#3FWBxna(o4%(R_r&ew{#kaqW`sfQc=?2ugNN8qml?*ef>v?Q~MBY~BG zgpu{IBC3b6oAy)>F%NYQwGrRisZPGN=Q^3UYn{Ao>SXUVlQWYJo7!*cIA^t+0a# zwUTO1*U|)fp^Ar}=uC&IlU}o5D_U?SZ2FU_mw{k-{Fn#67&sD$>*WM+39F*`qxiNl zA9<(o19aA^RmP))F3p(EB-=UNqZ6E)_<*w2y3g+PLZvV^`=q<0`6wDbtoK#!19g#lU!^`!&ig7G9&2~Px$;YuSkK&^OxNLo zG?xy>I-T7P#Bu1_55{8JO1bb4NBK4^TwJKy?AGpD=s3Zi<{HkBF)S4h;~2)a-~bz0 zzIs~cen_i;zrZY?6J){I`_zQ`vXS$4UIZ$-ZMh(9Rawcg)|e zoR?+aG5==G2ADIPPN-N5FTJcP+k>S?M2QPnR*|8rfF&A~Xg_8Sn>X(w~tH}+KD2SOd567F_`smw!`*vkAkJmPv+hUlgqnT^&RH)7)87x{iEBn*Ze#EuBBRu>Ca6Yu(ZIj((JLsK&t-?~tJ=Z$2KEKwabgL$ zgtbw8*Y=-==Og8Jv0QnlaqY}C>`J@z%w5CAZ$(MOsKY+Wx_F|GDYZnK?^=#!yS5MC0u>El=@1y&mZih6oatTMIaZzg}+ zNp~zaeIGoZ&n9YsIDhlNC44-JwK@TU7r6ot< zKx4bLCh-u8QezojgV1vZy}n+z#ZELJZ4m+m9C3BRe3XCJq;ECft%fN`B+du_JaF~@ zN86hK$WfJh-+gND>gw+5ZKh}M*=I6q_Jo9FNX!rzvJwIW0tpaEBqR}nxV;hOBfBk zdQZ{v>f?1eqEG7ZF>sySuRB^_&-&?YvlmoHZK|jyTm*?F@CJ9G8gWeZjZ5tjD*ObxF`)uHMU zm5fotYn>QBFrgQ^S&VllRK{MiT98K6!c76J^;cuyWrXtLLUUlf*_2#@H6)HVe>B_| z!AC)0piWii0Ulx}t%I~CF$0K^I=xapL9{S{jpTrSvvkC%l%1m_ft+lK$pC9=R|vRk zHYp>KC%U)bb&ZymazzC6%tNDKxe06|5w96Afi5yi*GNhS`vFb0^H$m~;%DzA{~PF0 zC~D`I$;<2SVY)5E!QDG9RAkq^XFE@)*(%p;5Mi{fm-HWr*m`2j`W);$BE0L!RJtiv zU~eqlmS-|Edu91hhQp#vmx~G1DYtTU>8jkzE6U~m0r`8O-#}5hUnTz`WLK*4?|p7q z7mkmeAs)h><(_xqeh0z)Ggtk$gG4@;HC`t!33jbT!G`sT@dr%kfI4HibQ_73L!eY@ zhc3%FV29Ceh}Vq+b{P%wyxOQO#>&9uVB8=F08ome!#F@Epn$XrluWv9%2*{VwxH3u z9Mhv$6=4hchH9Vn)I0L;{x$j6p}JzZef+9a>{#f_ki5E&SN!QSD^&XSlS=OJ-u)`w zvwa4o>VEGg3U8`+?jezw_Sv(+s2g%&v@3+;9MYmDqm-P8P3wv*~ z&^;WCN1{PEbRQ1i(FS4cO+*(%bb|aOKQdu;y%OUEyex zfy%|Y9Nuw4s$gfWdadc(cFPTRK^t|4J?&20xWk_E6WhPbPTy%eci4k>+U6a$`9nMT zZF}ej+xf1Yy1_QTYkRk{K>E3Cb)V)p&PXIVfw5W_Cuc#4agqsbEU`iajhSDal)y|pwgFtc#FaybWu%9v3>Li0mZ(bBfNf#6I9Xs;+8z1r^%e+7foZS$C0DP)!cXQMGv^QmNl%K<=!NmUBcbL+ z2{~Iy4tTE3)v4H4=toerZrn>=UXO<9FGG3d)z54X?ni%?{8_!0PP*rV;)s*(?0cAl zFY5&9`WEuYPcgw~s}o2EN17@v8*ewJ1vjuxRB|t%HjrzzhjOnfqe`+;>e}I{^4>a3 zZZ)?i6 zI!yOomxG7=*)dM-+fwX1Igt7;lIOXX^*aTw4iYiK6^m5!Rsr%ln(#6})uT0(t0=4; zhT@FiKyXDA$2fW;j-sZi%-;F_jVV>$t&}4w?|+j26ZAY3mAAT1m3Kmze%$`I?ejZ= zqVH$*i*|(_;&vs`nfQowZCfeDIxp+*>quWY&bURCZ|I`}G0S+4$1r@XbHM)~ni{Q1 z6kada!r$Za80bl3vPSK@LOWJV+Ui?WTea6s9eUSv*sP1Ka{&zovpA z&<@5!UdO*DWn*Sm<%3gG@G5jT2{Vl{QZ}f%Hu|c4c2Mug?%%0T#d1&s6t&MJ@`pi3 zL-LB`a1r0`e?#$M`M+)tp3C-Gwd}09rw0m%NPf-T&R(T~Pz@N|kZ9MZpS*JEDe@Fj zIdC!py!NTG&E|m>nudvNi)}#G)rN7m_$GUUi2FB)^fe-J1xoXvf%?(wX3zj6jNryR z>H38JG$GpLC_(=MC(Gd-1~?3av`S)ANcR<}x^!xqfu<;*+(pp;WZMF^f(%~By9yYHq z){Px%1QuPc! z8k>7T`P@3VMy{48t3G>~K9ftu1}(NhN9~D{TP|xM_F9}(zn%W-B&~t%2()00^5lS~ z+tjn1vwNiA11^j+gk8fu)Ru&8MlmYeBUY+V^>~Q#O$ZC~JMw>mo`<4(yiHzSc8f~a zT&l`D5SBaqXlz@Edm_i*;pKX4hF_AP9WU#D7O|UxdW_cws7Fg6nBx?fMzl1*Uv4P{ ze^du4V5*l+cAx-Cv*`s&kzZrCioL-ECC;a$tGzO1kOhSqnb*7yz0yONdp=hSED zdwL)B`kwA>ktaDcGSsJ_^~5t?V}iJrShTYuG|Js4U|0h1I|+`LMhuA}o%ewQX=Z`_ zmE98C71nD>YgvxAlKiKk&qGnYE+#Lp&0)IkK~?@W|Ebd8A%FHAUut;m2!|K3*mnfo z(z)mGsvSPKly`G?5M>)0^eI#HE--Ml@^zwfw` z<=>37UJa{<5P%2eZw`i4eKf49!a-FZ2!(e~jQtHL!ZxG7t5W5DlJX1$CBqkp{4VGn zC@QzvuF72dEZaC=aX|Cc?W%D=Hjm48V`d0wv~{{?6x6qWye@{dA)f#mi4gWH2N z(#Ku-l#*vmenZ`t>k?6E23IVLLf4)jh;F7Mx_Mb&+~suJUAgXqy3*ZRm)GsZ9->N< zG;x84t+{=ZZa*w=6*IV}6WTMlW#e-G91&9F1V?%^htuhF`C_q# zN-_YzJc#2qQVEk-?VMR);s}?`kQ^ylIaX{|HdwW=MKcb41XeDYU7 z--M!exP$yX(61nQ?akNh4A-}<_m|rNM~pL;tvd5G#g(sJz51}Fr=KEO1;hWU#AR%O zY9O1I`7aTB2`ydD$~gtQ0UQ2Q*3@cq$@*fZ)ZCdpel?HKr- z;KhZ8>fmP3Xjm95gGR8k&yXV3xJUMi$9O+0V4$1_q%oJny~lwkL`$=e?8 zNR8EjoW4+B;o6)N`Ht|JrGq>OET18)e7?1=R0`z#HT9sQC2Q2U+gMWl^%DIMotHl# z?{#w?gu?zZzeoOUXm*e4uQkh6KP?I4LCyTR!b$kfv#P(gbt=EDa=)Fh^rVH$PCtP@ zYuKv2rvqiORr`~38{6Q^`X5DS)rg-Pov4B7w{2GJN{&KlO}wQ~dKYFuysme@tpj$t z39w~xXO;h0XWc)8ZY-=b#NYM8`+Bo4zHD@CKr-N8V%&k?S@!F{bn~D3;HJEJxo>Vt z==hDe;u7Oq;sRsZmkc=y3hNErwle1$W7Fmv`eOB|3k>s1#x!TKee5pT`+das@QwLc z3@!tFxnL|L1jJ}djRD(`{h!bo3-(bMIBgTbTP`Njn7o@B9X~wC<&8OV)0wJG0)@I; zZ^9tZ2Sq`Sjsh_x3W=6f2e=oD#9}o@SQQ45YM2~q?d-QiW?DXYYfe;T3I|k#Zz71q zwDe*TM8N9YJ5zEyHW~orK+39}KUm`f4|x*5mO?tnCw~mI1d7VLhP=E!8>Syu-U!#Z zJg><0e`eemS>AO52X6{{iHJRkLRW&h0C29ka)ALh3;PI}VUVCSf*qCdkT7Tuez(-2 z+Vv%VKRQ?ci@e*<8VyC|TtQx57l-M`l{4~3-=mzv%wpEeKzH24l?WMM9YIr;}HW)EmyH)*)qsn||FZrp^ zC!nZ)UnIX7`Vl0rz3ca0sIObHak!i{oQKk&e&w>y$ZdWb4t9Z1;|&fnvYOW#u}7^& z%#NgCk+{Wd-HHS)YgRBvM`+?6bKHGq_FiynW^Xm^+syP9jFPN8E;V2sFyb4v$FTuN zwCtF9V;a)e$*j`_-R9GkqEgmy2tcZp#yF1F3z7E|pimqnKURx*9f}<>!HR>GnAGZ$ z9+4SzT$qBr6+_81mN+bBnJO!tidT9?U2`ScG2d*8vc7XiuWG-eMwiFO+2k*Uu7;xa z+fM!+NQ_bKck`p$gLaJg-qICH4!hs^7D-LiB;+sBNsLp1293n;uOjIRCZQ11i3>kn zn;d&r4xegpvaJ*{A&37sOW#Bg=A0&*vtg%pw-G=;T?*zCVfmhRCG^wF`ais`*@4y(JHGCz zT@Bq|5VHt}H%pt3))=YofThPL#u>!oBXhkt*UC8J9IN|$JSm9nbg|`ZK>bNzu}iJ7 z8!SC|&0lkaWn64c*kC1*kvJDyl~-E4<9FhG%Q?@=en=D(Yv2OQ|B`i*ldxx8ZHcd0 zZCCJ>W9|6mmU9L6*L>wwR^zvbmT6vY4P8M%Jo6eWb%n(%?|MsIXO%#$f5W^(ylLtK zmNoL1HTXj&wWiP?(%jo0^5^E58HumdY9Cs}l)ArZ`9bEC^m$^|pgD%<0ppPRoK1e* zl(E5J>C;Zq4l;{I*4QlUM&~r-Cq&S2NAuUiqQQ2iVnmR$?G%t_7@f4a2WrVg$rv!s z(Rk28+fEsAmlQa`z*zYtZM`5k zN4MU}3Q*!5I;qZnNXR#{8Y>#%lx*Kwq)T0C7Djy_?z;fRrN=3o~1orpw`eL0^G8!wJ>_%dN0XA6CP55JZrSq=p&D7&I!!jhXQRhHJicAQVmy zCJV<%>yu{AT3}Z1KCb3~6h9PK-y-KNzOaY&*1%)xIYCIg`A%@qz$&ymp7y2?O{c`r zUL=l8ZF3V>@=|q(_vXM8J<&m4z@y-sOS)&hiT#xSH1hWn@GD%7dc|(XDwV$MKWQ7t}Ex7O&Cza9H119as$~pMUAhQ z4k+s{{zblGQYtnR3dfh}Pfo>7gtyTJx}c)U${t(ubumxe=+SnarxY( zcml}%Vu!X(3jz#mGK1uMByzu4&~;LabFdl1G8O@1i03q9*N`sIB#E4)Q=-=)0Y_QCu3f63*YS*OW*%=u> zdvs<@-sf~ZsZc0Rfxq(sT@lrX1G-rx6ywyIsr9A0#`;BKK2PKhfb>ty5i^KLUuj}$ z>PwCOAQnY1f`F*YNx}w#lGkKMAWWY`g^6nin6(Zv3^7xh206X5C zkDT4&-gV7|e-W zeclzx0w{^TLB6swxBEV#pF(o?@74k_ZB^)%i6Ztj%#ApfOU;(F8)$cug4Bph-qmJC zDwo=gGt_+Xr>Jw{{mg|<@~1(kL(zKtGxG9!F-$j~r}(U`m#Z{*$e&W%-hBUZFk@FP zBXsui)h9^<0i;EDiQA;K=rxrT_IbIv_`C0|a!7vkzmyB9SB+USI?T2$iPc z((|@n0u2>LO$_h}+1Ke*A<55w%zJtrTqEUoC)N9~l)-BO>r>qa6;*wgCl1}`^G?#> zx%5F_5HQj7!{$R(zwVk^K93j!tclP{C|U>4KPVMDds-^C1CrNa;koUhk~)X zT}LZEdR^?<;C+f`mgl-aS$NRtQpXN>6Y4?<-t;w<+^mwPjNs<4-5{AOA)Q{6cDN?qEBL1M(-MvLd4v5l^{z6$m>b#F=UUUNc= zC2l1g0}F2Z2UcQ_&qNR*k2_OuFY<}14=n$E%e=5ui}OiVUprUqH1$83`c}if&CtBo zW6Y7}sPufX&1kyEsM2bjX2gDV^URqe5B@x8hspk$zR$sox*e76`N@@&KG{;;?B$zs zt0z>B_iAfu@&lDq7k{F1dZxRwYjv@*(i>Af+AGyGq}x5M$?@Z+1#~oCdzeYFIAu%v z2?Ux5wZeTGARFw}aGxCO8aVNC8nLo*-%E+b@f3!Fmce3x6NLr&L_RB~5@w5JuWddD zdy9c3%<|;meHMani$I7Y;7m+yOfFf0%`%Zw+<2`~VU06q@l6)*ED$iUkI$9NeqPmt zcY!2vTQN|q1rwsyoF3jy$>55}b=u7?-dj2BF7e;_2KnBR;oThXt>s8xYmNxtOL@3s z6J1um*R^_K;`8w!B+1p7jS>?Id<2f`GQ?vFZbdTdY!C5qNK8`pmG}k`_cswffQ!#f z^)*;_AH27%qFS%gYwenY>YM5qW9(l9+`<003e`ZK0}4OsR6!mADhy7+S$46M)(U@U z+U?kqARTbKIo8^SM3!8|1{|HC35GZ&Bn>|5Px*)ycsT}tb zn1N#yTg3e##VMf5s)ozb%&NvBBEG6T462t*VwIRizUnsCI#w-aVxG~MV@(HUBq4!R zesUj ze!{kKNML7At2i_}7O3^?&QFy2y6xn(8Q4n??q1J~4-ZYn9ylx&dvms0&mNzn*0Ei$ zEB({PhZG*#Cl;#n!(Qvy!lf(ElxnD^&GswSwYJ!7|HurIKgNUP+H8MK zOqX2IKGBs3mZ>9H#I6GMraOl!@)6M`A-6CZ6goWK-l>H3()PLkRy_E0GiM7xVf?N_ z_k*df&hGCBUfmfPBcle3i3-AdZm#qcMOoiVT7?hT@A zRQKAh4Wc^}+mIM#WPfZXeq`zw81|P8%LB~X5L-?7*YrBK{>ONGv55o5fCt7ay7(JX zI&q8R-Rf8#=owm$AhpCy(kAUn1GD7?Fk4yxzXi;e{`a)`epF*|-cM^5)C%E77X54%u{$256!g(Q){jY?0Au;`>g#VYs zV##+W4Evk9<2sk=aNa5ZDjhTgRwDDcgpWkU{By#2HZgR2Lf4wsa$>wqGk>TRf1sJ) z67GqvFMi=3@DPE-5MFB%->`<25b+Elhuz6fxx^ZJ%-J$zjhiAp#y4DlC z&$-w29(6fd{@NXS%9WpZ$o2WAhg|1DH~C}tz#qAniaTBLL(Xm$TK43{nkDGoog@D@7AH?BV+~rRHnd|@5UCgKNG*F;r5571Z)c?n>^CNd?Q=&-|=NkGs zygBQL?uqq3wKN$3G;#Oa3F&6@ldM19#E|30KBN6JJi8ML^s9hJ-jTk+~>gemSuSF%%uR zKH*%L7`iM$mjZsFze7(a^sgqS%R4-&TbB@jcN_oZn*Vg?T_o>)94#cn{t)rpU z!C2FY_$jV1MqMsBINeD}J-<&BSvuhTO!M!&<|n-7^HR+pY4&G1kdD$0M9E|zCt0iE zz72j}eZ14@B(Nih_bBz}=?7U0Igqv4=imX0r=6Xzi+gcDKbpVN_8`(b+s2nf_TWO% z_(0QJj1&Djq@H`eM}D?GUL9}C55|+`k$R~(C3k=|$L#U5%+Y?US(Bof(R#kduYEz- zm>875fRpyHR~&;q@X4x6$7w}Wp#{QDPi^o@c($0$H8ubvN#kU{kUlLa&+&dTEmh+_ zJ9xccE`V><#}8?l(r~z6h}XsI^Rp>bmA^83d}}dpQOtT-%y_9|O0EzeFi)mJbNPiy zn%Cp?SG6Xocy+JS4qgz4Ut@Ov*uMGMBMW(BAwT8l?c=7597(Z$E7k9k|48nqL5N*z zEXz*iL#=vx!rqo#trtPaZ*~fF9mv{v68YX~g&RA41pgFtq7wOry%rhe2fdYSC z&dGZS9y$ts1%l(u5yeYUKUIsWTy1lWTi;jrv?vWU=p_f5-r$t#8bnh^quGRDy3VQ3 z)`^zs&3?;byGZvHYO0Gqz7l4oQyi-NvS>S?^?K1Ux&6Qq-JO?;?h>2sqAt-}>M?uy zsZPDa!L4+9dk3lCQD_(aO?_tnP+v#C)#vwneaW_=R;SHr^&zJ%*?QopOT|brrgO9y z*EzO0ZfLACE-i|q?FrMz`x6$AcgD;i06NxDBb`x0BbyJG)}pPqK<2^mh`CZbRIG&zA(BpCll>*_pC%2vPT(R4$oE(wlIBe+x{9M#LM!Z_LXS z0__D=5i-$Kmb1Tut;uN1hi6EH?`xFLnLvn%s#MzZ>b!ax z#onyJq$riQJno~BC=Pp0NP8?u_PXO#+IYpua@11WJipb#Qo?7kB`KQ4mQw&=+FwZq z!_swYeyO3gCGY3$oODL3%O)G6-`}Hj>eokbI88+5b*x0Q-7=xM&38DhNhF&>KIbCE zMoLV)n?zG{X;k3W)>Ge`OcyF!1EdRrw1Kl?+Igd{w`r{J88*t?wo;d4*d0a8tXnxP zm!|sDc+b=^DZipvFmPw{(qKyY-0LD(u{}N25VX*KN|;T4+>;Jj!?5fC@Hy?(vjYdZ zL+TGTF=QbAO0KQ~H*A5mgD?(>YU%g-$wYPWNPA)Oh~%Q+6Gv1ntVY1)bk=nmfic;> z?S2^TZa4{%EbZB1=yO`!pp6dNqup?%)SNC6j=@91cB|?IH@hHz!*tT=hU(UadJkD8 z{acUlGMSXpCMUUX&-a_fwo+?-p6$$~&VDt>QhW4;t;S;?zO?Gwn@8oV{VH>$9Hj>= z@f#epSjN<_4VLHdR?y?grFMmj`p*%C6nI8<$(Q-jBDvhp8Ao_>Y%{7lhmH58Zp{e| zTEnOOHSVdZq^P_!r`oKkajS=o)P6JH=4K51H-qx3`M~1XKD-_3l5RSg8x{0Gk8GLZ z+$5S3U$~R#ub!yC^o0rGe#%~xJoUdB$Dd}r9ua+_I5&5i%{UCKtWs`UEhaoht3m7| z!arKAW_lFkl3%FrHMP2~bl7672k{0YFWT#MbSZ3J^c~uKvn!kpRUY6urA~Swnp*|t zRx7Q9HB7wDNEK66I(j{;+CsVjf}SK1jet%kRV0kDXqMP|dp;>yRhSUasi`VMbk}P9 z?Wpzm>^S*e(W@_J1yOwgc#q>1!hKcqigu-Rm)n1ui{zENzM#(cn-`Sz{#(i44NW;> z_xavDVj-A%(C;C6?Txd);B;lTxZ_+Umo9ae_5LUYWi$#UtE^mdo(#bAf)NKbU}4p100ZdCL3WE zdo{a5+!jx5Wq|7*zQ(u3y$x}(wNOSc4n&in7rOy^aU{;XFCqTZi$Clc&uij2d8YZ? zUQ9a@!V>c7gtI8%4;!6Q(+D<>B66LxU^1^WA6e zw^CMC%F#d;dN&pF@c&3@Z>B;X{+}uBE9rxxv-de^?fi7e!+$BQtxtz%?=PqEj&F8< zSwN*!aZfFvPh;F&snU6=(zSR?!&qaFjp)xtEU8&1nt7JCOVG_)#Mf>{$DgrQNSXX6 z(Jyzvok;`l7Q}m?V=B3yE&O;IXUSv&M2>XU1=n{T6c4Bx1yMd9heelkNSMZR1nNXd zP?s->Qie@FDgi=d#zqdQ+)ToSQW8wA#sb5WwXnHBj3omN+WrSewz zyqV{qlvf&DnMVD_1(ouELiHi|1m;Jn)q{A~~ZmM#qx=GSSln^TPjj;}}& zOrr~_XrocmO&H?Fsz%jIX&G=l=&v+B?)L^^3)L_8pQGxrhVsn}3-cxNS3%!`qI%p( zUS1D|>5^Zm@1jgCsPuLs9scB zo;HdIyPno+HYNhBB=sO}EXIaAsKGc45Tz}kZuZkvkwRtexvCx$jxO7&&LV#tbRrbh z<1^$hg*HR-+Pgotg!XX*p}$XA{)j!b>J!9|m0QJsh}(qN%AeafL&Cp{%A{4^DQ;{U%2&;63BZ|Rt_e0dD{8PIW1SYPv{ z#i`iWj>B&LcvauItCYU;>&L3}$@7)IY{|`!2klYX$L{Q;)pH{^!G>-6ACmXzVw?U< z{vJl(%Q{v}zV>jOKW~AnFk+XE3H{5UMWy?kv{8lOL&eRS`CWYG!N$sp|4jM6B+?5D z9%=$B3p88-O$XM%T0PISZVjxSL?UI2gE#7t)Pa`h3uNAvyG75^(OnC9Nxc=NrEF zQX2Pd3_rpjOzRb+H18T|uWUH)f+32@e&4_-f~s zr1P3E6XJL2LpS;L$SQsR313{}AF>IR(kEGl#kc)QTYL)iJ%7e#KUoyF`4V>!Q0J5QvYv^g5(tuaIE zte$|r$)xoV;9@3^wx`jwX0wmMU*LM|enFpyfT>daAU*GfwDaBcVDMdqpQW8DbFy== zIo5RNqDo{xpkIwj_f7$(m(waiNO%M^j!Csf20OpF# z-Zlq08DFI7-{jzvwZRj|xTo+z^7C&e{USPL%~`LR*J|cR$s~8)O1d8=lOH5!(uUvH z%-c1)V0YP*!0796C-Z4$Oi zE0BBD;_I5x4odi598k168obH!lD>o61p!W-WVJh8^f(#)Wb4>W(JSF1T4zkfb}*4> z&rh;T_%{5Xgm0aOD*Z%pyZoU$G>p0Lk$(uN;D{rTQMDi;YA}-daXDa4oI&X}xE`@S z;5|koh~h&C=&&3@LH8s;_Iirg-wlq>4sb~P3~y4xP0dKAFz)dEMQL4f%c<#@0oElm zKw`-g+F8)5k%Pxq!Ln!GwrD!N-hRxd-}*6Bkq0(ItO ze(_DMdR~=NJqQ)5t`!&#I<{jQ@DN&0{Ka;zgh6$1^i@t5}h1*AB_|!_#MS%@yb^t94$b#e75!rQ{hZ#C1@&xJzH|4pDzC}qWS2gXL%_(| ze3RZuTUT3zLc!RYitoVqL2{;_0f+1}y|^5;XBLDBy4 zIQcgq_XM?nOb&6nHveUNuwQHm@r(0|)P55Cxcvhz0prH?3PA7s*f`4V<1*1%F=8|R zJR{PvmohCzFC0u30aZrJKZ+hnx>{XaR}EaG+%I|(ZE{)vh2Qy*Z$9WRxX;H!>8F1B zvb_Bmx)vr-3zFI_=-COeK=cEecNP|ixSs)~$3xT`gn8D#B&<$2+6AcNiAE~Y@>3aD zsJLhZWTFBKf;xc295A3wbe0^}y}agO)a3fo4ynpbb5;Zd*Gy*+Jt6N3m@;r*u2k*0 zg?1_hEfb5~O@2G{7!>gz)`_WD7c>aTYjZ}O`_?%s-4XFyW0fAb%x{JJ@XA$^-`at> z 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∓)riU@pVmk3n9%K1}B=Y9Ns#3xUK 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

4(w;}UQIwT;qApXFiI; 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�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