Revendor github.com/Microsoft/hcsshim
1. Revendors github.com/Microsoft/hcsshim to the latest known good commit. This includes numerous bug fixes and improvements. 2. Vendors indirect dependency on go.opencensus.io since hcsshim now uses trace correlation. Signed-off-by: Justin Terry (VM) <juterry@microsoft.com>
This commit is contained in:
		
							
								
								
									
										563
									
								
								vendor/github.com/Microsoft/hcsshim/internal/vmcompute/vmcompute.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										563
									
								
								vendor/github.com/Microsoft/hcsshim/internal/vmcompute/vmcompute.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,563 @@ | ||||
| package vmcompute | ||||
|  | ||||
| import ( | ||||
| 	gcontext "context" | ||||
| 	"syscall" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/Microsoft/hcsshim/internal/interop" | ||||
| 	"github.com/Microsoft/hcsshim/internal/log" | ||||
| 	"github.com/Microsoft/hcsshim/internal/logfields" | ||||
| 	"github.com/Microsoft/hcsshim/internal/oc" | ||||
| 	"github.com/Microsoft/hcsshim/internal/timeout" | ||||
| 	"go.opencensus.io/trace" | ||||
| ) | ||||
|  | ||||
| //go:generate go run ../../mksyscall_windows.go -output zsyscall_windows.go vmcompute.go | ||||
|  | ||||
| //sys hcsEnumerateComputeSystems(query string, computeSystems **uint16, result **uint16) (hr error) = vmcompute.HcsEnumerateComputeSystems? | ||||
| //sys hcsCreateComputeSystem(id string, configuration string, identity syscall.Handle, computeSystem *HcsSystem, result **uint16) (hr error) = vmcompute.HcsCreateComputeSystem? | ||||
| //sys hcsOpenComputeSystem(id string, computeSystem *HcsSystem, result **uint16) (hr error) = vmcompute.HcsOpenComputeSystem? | ||||
| //sys hcsCloseComputeSystem(computeSystem HcsSystem) (hr error) = vmcompute.HcsCloseComputeSystem? | ||||
| //sys hcsStartComputeSystem(computeSystem HcsSystem, options string, result **uint16) (hr error) = vmcompute.HcsStartComputeSystem? | ||||
| //sys hcsShutdownComputeSystem(computeSystem HcsSystem, options string, result **uint16) (hr error) = vmcompute.HcsShutdownComputeSystem? | ||||
| //sys hcsTerminateComputeSystem(computeSystem HcsSystem, options string, result **uint16) (hr error) = vmcompute.HcsTerminateComputeSystem? | ||||
| //sys hcsPauseComputeSystem(computeSystem HcsSystem, options string, result **uint16) (hr error) = vmcompute.HcsPauseComputeSystem? | ||||
| //sys hcsResumeComputeSystem(computeSystem HcsSystem, options string, result **uint16) (hr error) = vmcompute.HcsResumeComputeSystem? | ||||
| //sys hcsGetComputeSystemProperties(computeSystem HcsSystem, propertyQuery string, properties **uint16, result **uint16) (hr error) = vmcompute.HcsGetComputeSystemProperties? | ||||
| //sys hcsModifyComputeSystem(computeSystem HcsSystem, configuration string, result **uint16) (hr error) = vmcompute.HcsModifyComputeSystem? | ||||
| //sys hcsRegisterComputeSystemCallback(computeSystem HcsSystem, callback uintptr, context uintptr, callbackHandle *HcsCallback) (hr error) = vmcompute.HcsRegisterComputeSystemCallback? | ||||
| //sys hcsUnregisterComputeSystemCallback(callbackHandle HcsCallback) (hr error) = vmcompute.HcsUnregisterComputeSystemCallback? | ||||
|  | ||||
| //sys hcsCreateProcess(computeSystem HcsSystem, processParameters string, processInformation *HcsProcessInformation, process *HcsProcess, result **uint16) (hr error) = vmcompute.HcsCreateProcess? | ||||
| //sys hcsOpenProcess(computeSystem HcsSystem, pid uint32, process *HcsProcess, result **uint16) (hr error) = vmcompute.HcsOpenProcess? | ||||
| //sys hcsCloseProcess(process HcsProcess) (hr error) = vmcompute.HcsCloseProcess? | ||||
| //sys hcsTerminateProcess(process HcsProcess, result **uint16) (hr error) = vmcompute.HcsTerminateProcess? | ||||
| //sys hcsSignalProcess(process HcsProcess, options string, result **uint16) (hr error) = vmcompute.HcsSignalProcess? | ||||
| //sys hcsGetProcessInfo(process HcsProcess, processInformation *HcsProcessInformation, result **uint16) (hr error) = vmcompute.HcsGetProcessInfo? | ||||
| //sys hcsGetProcessProperties(process HcsProcess, processProperties **uint16, result **uint16) (hr error) = vmcompute.HcsGetProcessProperties? | ||||
| //sys hcsModifyProcess(process HcsProcess, settings string, result **uint16) (hr error) = vmcompute.HcsModifyProcess? | ||||
| //sys hcsGetServiceProperties(propertyQuery string, properties **uint16, result **uint16) (hr error) = vmcompute.HcsGetServiceProperties? | ||||
| //sys hcsRegisterProcessCallback(process HcsProcess, callback uintptr, context uintptr, callbackHandle *HcsCallback) (hr error) = vmcompute.HcsRegisterProcessCallback? | ||||
| //sys hcsUnregisterProcessCallback(callbackHandle HcsCallback) (hr error) = vmcompute.HcsUnregisterProcessCallback? | ||||
|  | ||||
| // errVmcomputeOperationPending is an error encountered when the operation is being completed asynchronously | ||||
| const errVmcomputeOperationPending = syscall.Errno(0xC0370103) | ||||
|  | ||||
| // HcsSystem is the handle associated with a created compute system. | ||||
| type HcsSystem syscall.Handle | ||||
|  | ||||
| // HcsProcess is the handle associated with a created process in a compute | ||||
| // system. | ||||
| type HcsProcess syscall.Handle | ||||
|  | ||||
| // HcsCallback is the handle associated with the function to call when events | ||||
| // occur. | ||||
| type HcsCallback syscall.Handle | ||||
|  | ||||
| // HcsProcessInformation is the structure used when creating or getting process | ||||
| // info. | ||||
| type HcsProcessInformation struct { | ||||
| 	// ProcessId is the pid of the created process. | ||||
| 	ProcessId uint32 | ||||
| 	reserved  uint32 | ||||
| 	// StdInput is the handle associated with the stdin of the process. | ||||
| 	StdInput syscall.Handle | ||||
| 	// StdOutput is the handle associated with the stdout of the process. | ||||
| 	StdOutput syscall.Handle | ||||
| 	// StdError is the handle associated with the stderr of the process. | ||||
| 	StdError syscall.Handle | ||||
| } | ||||
|  | ||||
| func execute(ctx gcontext.Context, timeout time.Duration, f func() error) error { | ||||
| 	if timeout > 0 { | ||||
| 		var cancel gcontext.CancelFunc | ||||
| 		ctx, cancel = gcontext.WithTimeout(ctx, timeout) | ||||
| 		defer cancel() | ||||
| 	} | ||||
|  | ||||
| 	done := make(chan error, 1) | ||||
| 	go func() { | ||||
| 		done <- f() | ||||
| 	}() | ||||
| 	select { | ||||
| 	case <-ctx.Done(): | ||||
| 		if ctx.Err() == gcontext.DeadlineExceeded { | ||||
| 			log.G(ctx).WithField(logfields.Timeout, timeout). | ||||
| 				Warning("Syscall did not complete within operation timeout. This may indicate a platform issue. If it appears to be making no forward progress, obtain the stacks and see if there is a syscall stuck in the platform API for a significant length of time.") | ||||
| 		} | ||||
| 		return ctx.Err() | ||||
| 	case err := <-done: | ||||
| 		return err | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func HcsEnumerateComputeSystems(ctx gcontext.Context, query string) (computeSystems, result string, hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsEnumerateComputeSystems") | ||||
| 	defer span.End() | ||||
| 	defer func() { | ||||
| 		if result != "" { | ||||
| 			span.AddAttributes(trace.StringAttribute("result", result)) | ||||
| 		} | ||||
| 		oc.SetSpanStatus(span, hr) | ||||
| 	}() | ||||
| 	span.AddAttributes(trace.StringAttribute("query", query)) | ||||
|  | ||||
| 	return computeSystems, result, execute(ctx, timeout.SyscallWatcher, func() error { | ||||
| 		var ( | ||||
| 			computeSystemsp *uint16 | ||||
| 			resultp         *uint16 | ||||
| 		) | ||||
| 		err := hcsEnumerateComputeSystems(query, &computeSystemsp, &resultp) | ||||
| 		if computeSystemsp != nil { | ||||
| 			computeSystems = interop.ConvertAndFreeCoTaskMemString(computeSystemsp) | ||||
| 		} | ||||
| 		if resultp != nil { | ||||
| 			result = interop.ConvertAndFreeCoTaskMemString(resultp) | ||||
| 		} | ||||
| 		return err | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsCreateComputeSystem(ctx gcontext.Context, id string, configuration string, identity syscall.Handle) (computeSystem HcsSystem, result string, hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsCreateComputeSystem") | ||||
| 	defer span.End() | ||||
| 	defer func() { | ||||
| 		if result != "" { | ||||
| 			span.AddAttributes(trace.StringAttribute("result", result)) | ||||
| 		} | ||||
| 		if hr != errVmcomputeOperationPending { | ||||
| 			oc.SetSpanStatus(span, hr) | ||||
| 		} | ||||
| 	}() | ||||
| 	span.AddAttributes( | ||||
| 		trace.StringAttribute("id", id), | ||||
| 		trace.StringAttribute("configuration", configuration)) | ||||
|  | ||||
| 	return computeSystem, result, execute(ctx, timeout.SystemCreate, func() error { | ||||
| 		var resultp *uint16 | ||||
| 		err := hcsCreateComputeSystem(id, configuration, identity, &computeSystem, &resultp) | ||||
| 		if resultp != nil { | ||||
| 			result = interop.ConvertAndFreeCoTaskMemString(resultp) | ||||
| 		} | ||||
| 		return err | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsOpenComputeSystem(ctx gcontext.Context, id string) (computeSystem HcsSystem, result string, hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsOpenComputeSystem") | ||||
| 	defer span.End() | ||||
| 	defer func() { | ||||
| 		if result != "" { | ||||
| 			span.AddAttributes(trace.StringAttribute("result", result)) | ||||
| 		} | ||||
| 		oc.SetSpanStatus(span, hr) | ||||
| 	}() | ||||
|  | ||||
| 	return computeSystem, result, execute(ctx, timeout.SyscallWatcher, func() error { | ||||
| 		var resultp *uint16 | ||||
| 		err := hcsOpenComputeSystem(id, &computeSystem, &resultp) | ||||
| 		if resultp != nil { | ||||
| 			result = interop.ConvertAndFreeCoTaskMemString(resultp) | ||||
| 		} | ||||
| 		return err | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsCloseComputeSystem(ctx gcontext.Context, computeSystem HcsSystem) (hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsCloseComputeSystem") | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, hr) }() | ||||
|  | ||||
| 	return execute(ctx, timeout.SyscallWatcher, func() error { | ||||
| 		return hcsCloseComputeSystem(computeSystem) | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsStartComputeSystem(ctx gcontext.Context, computeSystem HcsSystem, options string) (result string, hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsStartComputeSystem") | ||||
| 	defer span.End() | ||||
| 	defer func() { | ||||
| 		if result != "" { | ||||
| 			span.AddAttributes(trace.StringAttribute("result", result)) | ||||
| 		} | ||||
| 		if hr != errVmcomputeOperationPending { | ||||
| 			oc.SetSpanStatus(span, hr) | ||||
| 		} | ||||
| 	}() | ||||
| 	span.AddAttributes(trace.StringAttribute("options", options)) | ||||
|  | ||||
| 	return result, execute(ctx, timeout.SystemStart, func() error { | ||||
| 		var resultp *uint16 | ||||
| 		err := hcsStartComputeSystem(computeSystem, options, &resultp) | ||||
| 		if resultp != nil { | ||||
| 			result = interop.ConvertAndFreeCoTaskMemString(resultp) | ||||
| 		} | ||||
| 		return err | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsShutdownComputeSystem(ctx gcontext.Context, computeSystem HcsSystem, options string) (result string, hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsShutdownComputeSystem") | ||||
| 	defer span.End() | ||||
| 	defer func() { | ||||
| 		if result != "" { | ||||
| 			span.AddAttributes(trace.StringAttribute("result", result)) | ||||
| 		} | ||||
| 		oc.SetSpanStatus(span, hr) | ||||
| 	}() | ||||
| 	span.AddAttributes(trace.StringAttribute("options", options)) | ||||
|  | ||||
| 	return result, execute(ctx, timeout.SyscallWatcher, func() error { | ||||
| 		var resultp *uint16 | ||||
| 		err := hcsShutdownComputeSystem(computeSystem, options, &resultp) | ||||
| 		if resultp != nil { | ||||
| 			result = interop.ConvertAndFreeCoTaskMemString(resultp) | ||||
| 		} | ||||
| 		return err | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsTerminateComputeSystem(ctx gcontext.Context, computeSystem HcsSystem, options string) (result string, hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsTerminateComputeSystem") | ||||
| 	defer span.End() | ||||
| 	defer func() { | ||||
| 		if result != "" { | ||||
| 			span.AddAttributes(trace.StringAttribute("result", result)) | ||||
| 		} | ||||
| 		if hr != errVmcomputeOperationPending { | ||||
| 			oc.SetSpanStatus(span, hr) | ||||
| 		} | ||||
| 	}() | ||||
| 	span.AddAttributes(trace.StringAttribute("options", options)) | ||||
|  | ||||
| 	return result, execute(ctx, timeout.SyscallWatcher, func() error { | ||||
| 		var resultp *uint16 | ||||
| 		err := hcsTerminateComputeSystem(computeSystem, options, &resultp) | ||||
| 		if resultp != nil { | ||||
| 			result = interop.ConvertAndFreeCoTaskMemString(resultp) | ||||
| 		} | ||||
| 		return err | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsPauseComputeSystem(ctx gcontext.Context, computeSystem HcsSystem, options string) (result string, hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsPauseComputeSystem") | ||||
| 	defer span.End() | ||||
| 	defer func() { | ||||
| 		if result != "" { | ||||
| 			span.AddAttributes(trace.StringAttribute("result", result)) | ||||
| 		} | ||||
| 		if hr != errVmcomputeOperationPending { | ||||
| 			oc.SetSpanStatus(span, hr) | ||||
| 		} | ||||
| 	}() | ||||
| 	span.AddAttributes(trace.StringAttribute("options", options)) | ||||
|  | ||||
| 	return result, execute(ctx, timeout.SystemPause, func() error { | ||||
| 		var resultp *uint16 | ||||
| 		err := hcsPauseComputeSystem(computeSystem, options, &resultp) | ||||
| 		if resultp != nil { | ||||
| 			result = interop.ConvertAndFreeCoTaskMemString(resultp) | ||||
| 		} | ||||
| 		return err | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsResumeComputeSystem(ctx gcontext.Context, computeSystem HcsSystem, options string) (result string, hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsResumeComputeSystem") | ||||
| 	defer span.End() | ||||
| 	defer func() { | ||||
| 		if result != "" { | ||||
| 			span.AddAttributes(trace.StringAttribute("result", result)) | ||||
| 		} | ||||
| 		if hr != errVmcomputeOperationPending { | ||||
| 			oc.SetSpanStatus(span, hr) | ||||
| 		} | ||||
| 	}() | ||||
| 	span.AddAttributes(trace.StringAttribute("options", options)) | ||||
|  | ||||
| 	return result, execute(ctx, timeout.SystemResume, func() error { | ||||
| 		var resultp *uint16 | ||||
| 		err := hcsResumeComputeSystem(computeSystem, options, &resultp) | ||||
| 		if resultp != nil { | ||||
| 			result = interop.ConvertAndFreeCoTaskMemString(resultp) | ||||
| 		} | ||||
| 		return err | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsGetComputeSystemProperties(ctx gcontext.Context, computeSystem HcsSystem, propertyQuery string) (properties, result string, hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsGetComputeSystemProperties") | ||||
| 	defer span.End() | ||||
| 	defer func() { | ||||
| 		if result != "" { | ||||
| 			span.AddAttributes(trace.StringAttribute("result", result)) | ||||
| 		} | ||||
| 		oc.SetSpanStatus(span, hr) | ||||
| 	}() | ||||
| 	span.AddAttributes(trace.StringAttribute("propertyQuery", propertyQuery)) | ||||
|  | ||||
| 	return properties, result, execute(ctx, timeout.SyscallWatcher, func() error { | ||||
| 		var ( | ||||
| 			propertiesp *uint16 | ||||
| 			resultp     *uint16 | ||||
| 		) | ||||
| 		err := hcsGetComputeSystemProperties(computeSystem, propertyQuery, &propertiesp, &resultp) | ||||
| 		if propertiesp != nil { | ||||
| 			properties = interop.ConvertAndFreeCoTaskMemString(propertiesp) | ||||
| 		} | ||||
| 		if resultp != nil { | ||||
| 			result = interop.ConvertAndFreeCoTaskMemString(resultp) | ||||
| 		} | ||||
| 		return err | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsModifyComputeSystem(ctx gcontext.Context, computeSystem HcsSystem, configuration string) (result string, hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsModifyComputeSystem") | ||||
| 	defer span.End() | ||||
| 	defer func() { | ||||
| 		if result != "" { | ||||
| 			span.AddAttributes(trace.StringAttribute("result", result)) | ||||
| 		} | ||||
| 		oc.SetSpanStatus(span, hr) | ||||
| 	}() | ||||
| 	span.AddAttributes(trace.StringAttribute("configuration", configuration)) | ||||
|  | ||||
| 	return result, execute(ctx, timeout.SyscallWatcher, func() error { | ||||
| 		var resultp *uint16 | ||||
| 		err := hcsModifyComputeSystem(computeSystem, configuration, &resultp) | ||||
| 		if resultp != nil { | ||||
| 			result = interop.ConvertAndFreeCoTaskMemString(resultp) | ||||
| 		} | ||||
| 		return err | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsRegisterComputeSystemCallback(ctx gcontext.Context, computeSystem HcsSystem, callback uintptr, context uintptr) (callbackHandle HcsCallback, hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsRegisterComputeSystemCallback") | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, hr) }() | ||||
|  | ||||
| 	return callbackHandle, execute(ctx, timeout.SyscallWatcher, func() error { | ||||
| 		return hcsRegisterComputeSystemCallback(computeSystem, callback, context, &callbackHandle) | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsUnregisterComputeSystemCallback(ctx gcontext.Context, callbackHandle HcsCallback) (hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsUnregisterComputeSystemCallback") | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, hr) }() | ||||
|  | ||||
| 	return execute(ctx, timeout.SyscallWatcher, func() error { | ||||
| 		return hcsUnregisterComputeSystemCallback(callbackHandle) | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsCreateProcess(ctx gcontext.Context, computeSystem HcsSystem, processParameters string) (processInformation HcsProcessInformation, process HcsProcess, result string, hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsCreateProcess") | ||||
| 	defer span.End() | ||||
| 	defer func() { | ||||
| 		if result != "" { | ||||
| 			span.AddAttributes(trace.StringAttribute("result", result)) | ||||
| 		} | ||||
| 		oc.SetSpanStatus(span, hr) | ||||
| 	}() | ||||
| 	span.AddAttributes(trace.StringAttribute("processParameters", processParameters)) | ||||
|  | ||||
| 	return processInformation, process, result, execute(ctx, timeout.SyscallWatcher, func() error { | ||||
| 		var resultp *uint16 | ||||
| 		err := hcsCreateProcess(computeSystem, processParameters, &processInformation, &process, &resultp) | ||||
| 		if resultp != nil { | ||||
| 			result = interop.ConvertAndFreeCoTaskMemString(resultp) | ||||
| 		} | ||||
| 		return err | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsOpenProcess(ctx gcontext.Context, computeSystem HcsSystem, pid uint32) (process HcsProcess, result string, hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsOpenProcess") | ||||
| 	defer span.End() | ||||
| 	defer func() { | ||||
| 		if result != "" { | ||||
| 			span.AddAttributes(trace.StringAttribute("result", result)) | ||||
| 		} | ||||
| 		oc.SetSpanStatus(span, hr) | ||||
| 	}() | ||||
| 	span.AddAttributes(trace.Int64Attribute("pid", int64(pid))) | ||||
|  | ||||
| 	return process, result, execute(ctx, timeout.SyscallWatcher, func() error { | ||||
| 		var resultp *uint16 | ||||
| 		err := hcsOpenProcess(computeSystem, pid, &process, &resultp) | ||||
| 		if resultp != nil { | ||||
| 			result = interop.ConvertAndFreeCoTaskMemString(resultp) | ||||
| 		} | ||||
| 		return err | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsCloseProcess(ctx gcontext.Context, process HcsProcess) (hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsCloseProcess") | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, hr) }() | ||||
|  | ||||
| 	return execute(ctx, timeout.SyscallWatcher, func() error { | ||||
| 		return hcsCloseProcess(process) | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsTerminateProcess(ctx gcontext.Context, process HcsProcess) (result string, hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsTerminateProcess") | ||||
| 	defer span.End() | ||||
| 	defer func() { | ||||
| 		if result != "" { | ||||
| 			span.AddAttributes(trace.StringAttribute("result", result)) | ||||
| 		} | ||||
| 		oc.SetSpanStatus(span, hr) | ||||
| 	}() | ||||
|  | ||||
| 	return result, execute(ctx, timeout.SyscallWatcher, func() error { | ||||
| 		var resultp *uint16 | ||||
| 		err := hcsTerminateProcess(process, &resultp) | ||||
| 		if resultp != nil { | ||||
| 			result = interop.ConvertAndFreeCoTaskMemString(resultp) | ||||
| 		} | ||||
| 		return err | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsSignalProcess(ctx gcontext.Context, process HcsProcess, options string) (result string, hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsSignalProcess") | ||||
| 	defer span.End() | ||||
| 	defer func() { | ||||
| 		if result != "" { | ||||
| 			span.AddAttributes(trace.StringAttribute("result", result)) | ||||
| 		} | ||||
| 		oc.SetSpanStatus(span, hr) | ||||
| 	}() | ||||
| 	span.AddAttributes(trace.StringAttribute("options", options)) | ||||
|  | ||||
| 	return result, execute(ctx, timeout.SyscallWatcher, func() error { | ||||
| 		var resultp *uint16 | ||||
| 		err := hcsSignalProcess(process, options, &resultp) | ||||
| 		if resultp != nil { | ||||
| 			result = interop.ConvertAndFreeCoTaskMemString(resultp) | ||||
| 		} | ||||
| 		return err | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsGetProcessInfo(ctx gcontext.Context, process HcsProcess) (processInformation HcsProcessInformation, result string, hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsGetProcessInfo") | ||||
| 	defer span.End() | ||||
| 	defer func() { | ||||
| 		if result != "" { | ||||
| 			span.AddAttributes(trace.StringAttribute("result", result)) | ||||
| 		} | ||||
| 		oc.SetSpanStatus(span, hr) | ||||
| 	}() | ||||
|  | ||||
| 	return processInformation, result, execute(ctx, timeout.SyscallWatcher, func() error { | ||||
| 		var resultp *uint16 | ||||
| 		err := hcsGetProcessInfo(process, &processInformation, &resultp) | ||||
| 		if resultp != nil { | ||||
| 			result = interop.ConvertAndFreeCoTaskMemString(resultp) | ||||
| 		} | ||||
| 		return err | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsGetProcessProperties(ctx gcontext.Context, process HcsProcess) (processProperties, result string, hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsGetProcessProperties") | ||||
| 	defer span.End() | ||||
| 	defer func() { | ||||
| 		if result != "" { | ||||
| 			span.AddAttributes(trace.StringAttribute("result", result)) | ||||
| 		} | ||||
| 		oc.SetSpanStatus(span, hr) | ||||
| 	}() | ||||
|  | ||||
| 	return processProperties, result, execute(ctx, timeout.SyscallWatcher, func() error { | ||||
| 		var ( | ||||
| 			processPropertiesp *uint16 | ||||
| 			resultp            *uint16 | ||||
| 		) | ||||
| 		err := hcsGetProcessProperties(process, &processPropertiesp, &resultp) | ||||
| 		if processPropertiesp != nil { | ||||
| 			processProperties = interop.ConvertAndFreeCoTaskMemString(processPropertiesp) | ||||
| 		} | ||||
| 		if resultp != nil { | ||||
| 			result = interop.ConvertAndFreeCoTaskMemString(resultp) | ||||
| 		} | ||||
| 		return err | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsModifyProcess(ctx gcontext.Context, process HcsProcess, settings string) (result string, hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsModifyProcess") | ||||
| 	defer span.End() | ||||
| 	defer func() { | ||||
| 		if result != "" { | ||||
| 			span.AddAttributes(trace.StringAttribute("result", result)) | ||||
| 		} | ||||
| 		oc.SetSpanStatus(span, hr) | ||||
| 	}() | ||||
| 	span.AddAttributes(trace.StringAttribute("settings", settings)) | ||||
|  | ||||
| 	return result, execute(ctx, timeout.SyscallWatcher, func() error { | ||||
| 		var resultp *uint16 | ||||
| 		err := hcsModifyProcess(process, settings, &resultp) | ||||
| 		if resultp != nil { | ||||
| 			result = interop.ConvertAndFreeCoTaskMemString(resultp) | ||||
| 		} | ||||
| 		return err | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsGetServiceProperties(ctx gcontext.Context, propertyQuery string) (properties, result string, hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsGetServiceProperties") | ||||
| 	defer span.End() | ||||
| 	defer func() { | ||||
| 		if result != "" { | ||||
| 			span.AddAttributes(trace.StringAttribute("result", result)) | ||||
| 		} | ||||
| 		oc.SetSpanStatus(span, hr) | ||||
| 	}() | ||||
| 	span.AddAttributes(trace.StringAttribute("propertyQuery", propertyQuery)) | ||||
|  | ||||
| 	return properties, result, execute(ctx, timeout.SyscallWatcher, func() error { | ||||
| 		var ( | ||||
| 			propertiesp *uint16 | ||||
| 			resultp     *uint16 | ||||
| 		) | ||||
| 		err := hcsGetServiceProperties(propertyQuery, &propertiesp, &resultp) | ||||
| 		if propertiesp != nil { | ||||
| 			properties = interop.ConvertAndFreeCoTaskMemString(propertiesp) | ||||
| 		} | ||||
| 		if resultp != nil { | ||||
| 			result = interop.ConvertAndFreeCoTaskMemString(resultp) | ||||
| 		} | ||||
| 		return err | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsRegisterProcessCallback(ctx gcontext.Context, process HcsProcess, callback uintptr, context uintptr) (callbackHandle HcsCallback, hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsRegisterProcessCallback") | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, hr) }() | ||||
|  | ||||
| 	return callbackHandle, execute(ctx, timeout.SyscallWatcher, func() error { | ||||
| 		return hcsRegisterProcessCallback(process, callback, context, &callbackHandle) | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func HcsUnregisterProcessCallback(ctx gcontext.Context, callbackHandle HcsCallback) (hr error) { | ||||
| 	ctx, span := trace.StartSpan(ctx, "HcsUnregisterProcessCallback") | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, hr) }() | ||||
|  | ||||
| 	return execute(ctx, timeout.SyscallWatcher, func() error { | ||||
| 		return hcsUnregisterProcessCallback(callbackHandle) | ||||
| 	}) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Justin Terry (VM)
					Justin Terry (VM)