Lines Matching refs:process

36 func newProcess(process vmcompute.HcsProcess, processID int, computeSystem *System) *Process {
38 handle: process,
79 func (process *Process) Pid() int {
80 return process.processID
84 func (process *Process) SystemID() string {
85 return process.system.ID()
88 func (process *Process) processSignalResult(ctx context.Context, err error) (bool, error) {
94 case <-process.waitBlock:
102 process.closedWaitOnce.Do(func() {
104 process.exitCode = -1
105 process.waitError = err
106 close(process.waitBlock)
121 func (process *Process) Signal(ctx context.Context, options interface{}) (bool, error) {
122 process.handleLock.RLock()
123 defer process.handleLock.RUnlock()
127 if process.handle == 0 {
128 return false, makeProcessError(process, operation, ErrAlreadyClosed, nil)
136 resultJSON, err := vmcompute.HcsSignalProcess(ctx, process.handle, string(optionsb))
138 delivered, err := process.processSignalResult(ctx, err)
140 err = makeProcessError(process, operation, err, events)
146 func (process *Process) Kill(ctx context.Context) (bool, error) {
147 process.handleLock.RLock()
148 defer process.handleLock.RUnlock()
152 if process.handle == 0 {
153 return false, makeProcessError(process, operation, ErrAlreadyClosed, nil)
156 resultJSON, err := vmcompute.HcsTerminateProcess(ctx, process.handle)
158 delivered, err := process.processSignalResult(ctx, err)
160 err = makeProcessError(process, operation, err, events)
170 func (process *Process) waitBackground() {
175 trace.StringAttribute("cid", process.SystemID()),
176 trace.Int64Attribute("pid", int64(process.processID)))
183 err = waitForNotification(ctx, process.callbackNumber, hcsNotificationProcessExited, nil)
185 err = makeProcessError(process, operation, err, nil)
188 process.handleLock.RLock()
189 defer process.handleLock.RUnlock()
192 if process.handle != 0 {
193 propertiesJSON, resultJSON, err := vmcompute.HcsGetProcessProperties(ctx, process.handle)
196 err = makeProcessError(process, operation, err, events)
201 err = makeProcessError(process, operation, err, nil)
214 process.closedWaitOnce.Do(func() {
215 process.exitCode = exitCode
216 process.waitError = err
217 close(process.waitBlock)
224 func (process *Process) Wait() error {
225 <-process.waitBlock
226 return process.waitError
230 func (process *Process) ResizeConsole(ctx context.Context, width, height uint16) error {
231 process.handleLock.RLock()
232 defer process.handleLock.RUnlock()
236 if process.handle == 0 {
237 return makeProcessError(process, operation, ErrAlreadyClosed, nil)
253 resultJSON, err := vmcompute.HcsModifyProcess(ctx, process.handle, string(modifyRequestb))
256 return makeProcessError(process, operation, err, events)
264 func (process *Process) ExitCode() (int, error) {
266 case <-process.waitBlock:
267 if process.waitError != nil {
268 return -1, process.waitError
270 return process.exitCode, nil
272 return -1, makeProcessError(process, "hcsshim::Process::ExitCode", ErrInvalidProcessState, nil)
279 func (process *Process) StdioLegacy() (_ io.WriteCloser, _ io.ReadCloser, _ io.ReadCloser, err erro…
285 trace.StringAttribute("cid", process.SystemID()),
286 trace.Int64Attribute("pid", int64(process.processID)))
288 process.handleLock.RLock()
289 defer process.handleLock.RUnlock()
291 if process.handle == 0 {
292 return nil, nil, nil, makeProcessError(process, operation, ErrAlreadyClosed, nil)
295 process.stdioLock.Lock()
296 defer process.stdioLock.Unlock()
297 if process.hasCachedStdio {
298 stdin, stdout, stderr := process.stdin, process.stdout, process.stderr
299 process.stdin, process.stdout, process.stderr = nil, nil, nil
300 process.hasCachedStdio = false
304 processInfo, resultJSON, err := vmcompute.HcsGetProcessInfo(ctx, process.handle)
307 return nil, nil, nil, makeProcessError(process, operation, err, events)
312 return nil, nil, nil, makeProcessError(process, operation, err, nil)
320 func (process *Process) Stdio() (stdin io.Writer, stdout, stderr io.Reader) {
321 process.stdioLock.Lock()
322 defer process.stdioLock.Unlock()
323 return process.stdin, process.stdout, process.stderr
328 func (process *Process) CloseStdin(ctx context.Context) error {
329 process.handleLock.RLock()
330 defer process.handleLock.RUnlock()
334 if process.handle == 0 {
335 return makeProcessError(process, operation, ErrAlreadyClosed, nil)
350 resultJSON, err := vmcompute.HcsModifyProcess(ctx, process.handle, string(modifyRequestb))
353 return makeProcessError(process, operation, err, events)
356 process.stdioLock.Lock()
357 if process.stdin != nil {
358 process.stdin.Close()
359 process.stdin = nil
361 process.stdioLock.Unlock()
368 func (process *Process) Close() (err error) {
374 trace.StringAttribute("cid", process.SystemID()),
375 trace.Int64Attribute("pid", int64(process.processID)))
377 process.handleLock.Lock()
378 defer process.handleLock.Unlock()
381 if process.handle == 0 {
385 process.stdioLock.Lock()
386 if process.stdin != nil {
387 process.stdin.Close()
388 process.stdin = nil
390 if process.stdout != nil {
391 process.stdout.Close()
392 process.stdout = nil
394 if process.stderr != nil {
395 process.stderr.Close()
396 process.stderr = nil
398 process.stdioLock.Unlock()
400 if err = process.unregisterCallback(ctx); err != nil {
401 return makeProcessError(process, operation, err, nil)
404 if err = vmcompute.HcsCloseProcess(ctx, process.handle); err != nil {
405 return makeProcessError(process, operation, err, nil)
408 process.handle = 0
409 process.closedWaitOnce.Do(func() {
410 process.exitCode = -1
411 process.waitError = ErrAlreadyClosed
412 close(process.waitBlock)
418 func (process *Process) registerCallback(ctx context.Context) error {
421 systemID: process.SystemID(),
422 processID: process.processID,
431 …callbackHandle, err := vmcompute.HcsRegisterProcessCallback(ctx, process.handle, notificationWatch…
436 process.callbackNumber = callbackNumber
441 func (process *Process) unregisterCallback(ctx context.Context) error {
442 callbackNumber := process.callbackNumber