(ctx context.Context, relpath string, useDevGofer bool, openFlags uint32)
| 278 | } |
| 279 | |
| 280 | func 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 | } |
no test coverage detected
searching dependent graphs…