MCPcopy
hub / github.com/google/gvisor / openHostDevFile

Function openHostDevFile

pkg/sentry/devices/nvproxy/nvproxy.go:280–302  ·  view source on GitHub ↗
(ctx context.Context, relpath string, useDevGofer bool, openFlags uint32)

Source from the content-addressed store, hash-verified

278}
279
280func openHostDevFile(ctx context.Context, relpath string, useDevGofer bool, openFlags uint32) (int32, string, error) {
281 if useDevGofer {
282 devClient := devutil.GoferClientFromContext(ctx)
283 if devClient == nil {
284 ctx.Warningf("nvproxy: failed to open device gofer %s: devutil.CtxDevGoferClient is not set", relpath)
285 return -1, "", linuxerr.ENOENT
286 }
287 containerName := devClient.ContainerName()
288 hostFD, err := devClient.OpenAt(ctx, relpath, openFlags)
289 if err != nil {
290 ctx.Warningf("nvproxy: failed to open device gofer %s: %v", relpath, err)
291 return -1, "", err
292 }
293 return int32(hostFD), containerName, nil
294 }
295 abspath := filepath.Join("/dev", relpath)
296 hostFD, err := unix.Openat(-1, abspath, int(openFlags&unix.O_ACCMODE|unix.O_NOFOLLOW), 0)
297 if err != nil {
298 ctx.Warningf("nvproxy: failed to open host %s: %v", abspath, err)
299 return -1, "", err
300 }
301 return int32(hostFD), "", nil
302}

Callers 3

OpenMethod · 0.85
OpenMethod · 0.85
OpenMethod · 0.85

Calls 5

GoferClientFromContextFunction · 0.92
WarningfMethod · 0.65
OpenAtMethod · 0.65
JoinMethod · 0.65
ContainerNameMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…