diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-03-14 22:42:40 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-03-14 22:42:40 +0900 |
| commit | 2647a71be1f287e50011a65653b9e9c806627899 (patch) | |
| tree | 252dd8865632df348b7573ca6f31c04e4cb6c9e5 /helper/seccomp/export.go | |
| parent | 7c60a4d8e8baa77b42789c041838fa82dd7d36f9 (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.go | 58 |
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} -} |
