aboutsummaryrefslogtreecommitdiffhomepage
path: root/helper/seccomp/export.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-03-14 22:42:40 +0900
committerOphestra <cat@gensokyo.uk>2025-03-14 22:42:40 +0900
commit2647a71be1f287e50011a65653b9e9c806627899 (patch)
tree252dd8865632df348b7573ca6f31c04e4cb6c9e5 /helper/seccomp/export.go
parent7c60a4d8e8baa77b42789c041838fa82dd7d36f9 (diff)
seccomp: move out of helper
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'helper/seccomp/export.go')
-rw-r--r--helper/seccomp/export.go58
1 files changed, 0 insertions, 58 deletions
diff --git a/helper/seccomp/export.go b/helper/seccomp/export.go
deleted file mode 100644
index 95684235..00000000
--- a/helper/seccomp/export.go
+++ /dev/null
@@ -1,58 +0,0 @@
-package seccomp
-
-import (
- "os"
- "runtime"
- "sync"
-)
-
-type exporter struct {
- opts SyscallOpts
- r, w *os.File
-
- prepareOnce sync.Once
- prepareErr error
- closeOnce sync.Once
- closeErr error
- exportErr <-chan error
-}
-
-func (e *exporter) prepare() error {
- e.prepareOnce.Do(func() {
- if r, w, err := os.Pipe(); err != nil {
- e.prepareErr = err
- return
- } else {
- e.r, e.w = r, w
- }
-
- ec := make(chan error, 1)
- go func(fd uintptr) {
- ec <- buildFilter(int(fd), e.opts)
- close(ec)
- _ = e.closeWrite()
- runtime.KeepAlive(e.w)
- }(e.w.Fd())
- e.exportErr = ec
- runtime.SetFinalizer(e, (*exporter).closeWrite)
- })
- return e.prepareErr
-}
-
-func (e *exporter) closeWrite() error {
- e.closeOnce.Do(func() {
- if e.w == nil {
- panic("closeWrite called on invalid exporter")
- }
- e.closeErr = e.w.Close()
-
- // no need for a finalizer anymore
- runtime.SetFinalizer(e, nil)
- })
-
- return e.closeErr
-}
-
-func newExporter(opts SyscallOpts) *exporter {
- return &exporter{opts: opts}
-}