summaryrefslogtreecommitdiffhomepage
path: root/pkg/sentry/fs/ext/directory.go
diff options
context:
space:
mode:
authorAyush Ranjan <ayushranjan@google.com>2019-07-29 18:32:45 -0700
committergVisor bot <gvisor-bot@google.com>2019-07-29 18:33:55 -0700
commitb765eb45894ea426d2c6d167b6ceb662db6ff4d2 (patch)
tree1dada0a548d86e6b34b01717a9f116a652d396da /pkg/sentry/fs/ext/directory.go
parenta3e9031e665e5707ff1d181a577a808ff6d67452 (diff)
ext: inode implementations.
PiperOrigin-RevId: 260624470
Diffstat (limited to 'pkg/sentry/fs/ext/directory.go')
-rw-r--r--pkg/sentry/fs/ext/directory.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/pkg/sentry/fs/ext/directory.go b/pkg/sentry/fs/ext/directory.go
new file mode 100644
index 000000000..ab2b59e44
--- /dev/null
+++ b/pkg/sentry/fs/ext/directory.go
@@ -0,0 +1,36 @@
+// Copyright 2019 The gVisor Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package ext
+
+// directory represents a directory inode. It holds the childList in memory.
+type directory struct {
+ inode inode
+
+ // childList is a list containing (1) child Dentries and (2) fake Dentries
+ // (with inode == nil) that represent the iteration position of
+ // directoryFDs. childList is used to support directoryFD.IterDirents()
+ // efficiently. childList is immutable.
+ childList dentryList
+
+ // TODO(b/134676337): Add directory navigators.
+}
+
+// newDirectroy is the directory constructor.
+func newDirectroy(inode inode) *directory {
+ // TODO(b/134676337): initialize childList.
+ file := &directory{inode: inode}
+ file.inode.impl = file
+ return file
+}