(path string, event MemoryEvent)
| 462 | } |
| 463 | |
| 464 | func (m *memoryController) memoryEvent(path string, event MemoryEvent) (uintptr, error) { |
| 465 | root := m.Path(path) |
| 466 | efd, err := unix.Eventfd(0, unix.EFD_CLOEXEC) |
| 467 | if err != nil { |
| 468 | return 0, err |
| 469 | } |
| 470 | evtFile, err := os.Open(filepath.Join(root, event.EventFile())) |
| 471 | if err != nil { |
| 472 | unix.Close(efd) |
| 473 | return 0, err |
| 474 | } |
| 475 | defer evtFile.Close() |
| 476 | data := fmt.Sprintf("%d %d %s", efd, evtFile.Fd(), event.Arg()) |
| 477 | evctlPath := filepath.Join(root, "cgroup.event_control") |
| 478 | if err := os.WriteFile(evctlPath, []byte(data), 0o700); err != nil { |
| 479 | unix.Close(efd) |
| 480 | return 0, err |
| 481 | } |
| 482 | return uintptr(efd), nil |
| 483 | } |
no test coverage detected