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

Function CreateTask

pkg/sentry/fsimpl/testutil/kernel.go:129–168  ·  view source on GitHub ↗

CreateTask creates a new bare bones task for tests.

(ctx context.Context, name string, tc *kernel.ThreadGroup, mntns *vfs.MountNamespace, root, cwd vfs.VirtualDentry)

Source from the content-addressed store, hash-verified

127
128// CreateTask creates a new bare bones task for tests.
129func CreateTask(ctx context.Context, name string, tc *kernel.ThreadGroup, mntns *vfs.MountNamespace, root, cwd vfs.VirtualDentry) (*kernel.Task, error) {
130 k := kernel.KernelFromContext(ctx)
131 if k == nil {
132 return nil, fmt.Errorf("cannot find kernel from context")
133 }
134
135 exe, err := newFakeExecutable(ctx, k.VFS(), auth.CredentialsFromContext(ctx), root)
136 if err != nil {
137 return nil, err
138 }
139 m, err := mm.NewMemoryManager(k, k.MemoryFile())
140 if err != nil {
141 return nil, err
142 }
143 m.SetExecutable(ctx, exe)
144
145 creds := auth.CredentialsFromContext(ctx)
146 config := &kernel.TaskConfig{
147 Kernel: k,
148 ThreadGroup: tc,
149 TaskImage: &kernel.TaskImage{Name: name, MemoryManager: m},
150 Credentials: auth.CredentialsFromContext(ctx),
151 NetworkNamespace: k.RootNetworkNamespace(),
152 AllowedCPUMask: sched.NewFullCPUSet(k.ApplicationCores()),
153 UTSNamespace: kernel.UTSNamespaceFromContext(ctx),
154 IPCNamespace: kernel.IPCNamespaceFromContext(ctx),
155 MountNamespace: mntns,
156 FSContext: kernel.NewFSContext(root, cwd, 0022),
157 FDTable: k.NewFDTable(),
158 UserCounters: k.GetUserCounters(creds.RealKUID),
159 }
160 config.NetworkNamespace.IncRef()
161 config.Credentials.UserNamespace.IncRef()
162 t, err := k.TaskSet().NewTask(ctx, config)
163 if err != nil {
164 config.ThreadGroup.Release(ctx)
165 return nil, err
166 }
167 return t, nil
168}
169
170func newFakeExecutable(ctx context.Context, vfsObj *vfs.VirtualFilesystem, creds *auth.Credentials, root vfs.VirtualDentry) (*vfs.FileDescription, error) {
171 const name = "executable"

Callers 10

TestFUSEXattrFunction · 0.92
fuseClientRunFunction · 0.92
fuseServerRunFunction · 0.92
TestTasksFunction · 0.92
TestTasksOffsetFunction · 0.92
TestTaskFunction · 0.92
TestProcSelfFunction · 0.92
TestTreeFunction · 0.92
TestFdInfoContentFunction · 0.92
TestFdInfoRecursionFunction · 0.92

Calls 15

SetExecutableMethod · 0.95
KernelFromContextFunction · 0.92
CredentialsFromContextFunction · 0.92
NewMemoryManagerFunction · 0.92
NewFullCPUSetFunction · 0.92
UTSNamespaceFromContextFunction · 0.92
IPCNamespaceFromContextFunction · 0.92
NewFSContextFunction · 0.92
newFakeExecutableFunction · 0.85
VFSMethod · 0.80
MemoryFileMethod · 0.80
RootNetworkNamespaceMethod · 0.80

Tested by 10

TestFUSEXattrFunction · 0.74
fuseClientRunFunction · 0.74
fuseServerRunFunction · 0.74
TestTasksFunction · 0.74
TestTasksOffsetFunction · 0.74
TestTaskFunction · 0.74
TestProcSelfFunction · 0.74
TestTreeFunction · 0.74
TestFdInfoContentFunction · 0.74
TestFdInfoRecursionFunction · 0.74

Used in the wild real call sites across dependent graphs

searching dependent graphs…