Forráskód Böngészése

Kernel+ProcessManager: Add some more info to /proc/PID/fds

- "seekable": whether the fd is seekable or sequential.
- "class": which kernel C++ class implements this File.
- "offset": the current implicit POSIX API file offset.
Andreas Kling 6 éve
szülő
commit
f511421aaa

+ 18 - 0
Applications/ProcessManager/ProcessFileDescriptorMapModel.cpp

@@ -29,6 +29,12 @@ String ProcessFileDescriptorMapModel::column_name(int column) const
     switch (column) {
     case Column::FileDescriptor:
         return "FD";
+    case Column::ClassName:
+        return "Class";
+    case Column::Offset:
+        return "Offset";
+    case Column::Access:
+        return "Access";
     case Column::Path:
         return "Path";
     default:
@@ -41,6 +47,12 @@ GModel::ColumnMetadata ProcessFileDescriptorMapModel::column_metadata(int column
     switch (column) {
     case Column::FileDescriptor:
         return { 32, TextAlignment::CenterRight };
+    case Column::ClassName:
+        return { 80, TextAlignment::CenterLeft };
+    case Column::Offset:
+        return { 40, TextAlignment::CenterRight };
+    case Column::Access:
+        return { 60, TextAlignment::CenterLeft };
     case Column::Path:
         return { 300, TextAlignment::CenterLeft };
     default:
@@ -56,6 +68,12 @@ GVariant ProcessFileDescriptorMapModel::data(const GModelIndex& index, Role role
         switch (index.column()) {
         case Column::FileDescriptor:
             return fd_object.get("fd").to_int();
+        case Column::ClassName:
+            return fd_object.get("class").to_string();
+        case Column::Offset:
+            return fd_object.get("offset").to_int();
+        case Column::Access:
+            return fd_object.get("seekable").to_bool() ? "Seekable" : "Sequential";
         case Column::Path:
             return fd_object.get("absolute_path").to_string();
         default:

+ 3 - 0
Applications/ProcessManager/ProcessFileDescriptorMapModel.h

@@ -8,6 +8,9 @@ public:
     enum Column {
         FileDescriptor,
         Path,
+        Offset,
+        Access,
+        ClassName,
         __Count
     };
 

+ 3 - 0
Kernel/FileSystem/ProcFS.cpp

@@ -201,6 +201,9 @@ ByteBuffer procfs$pid_fds(InodeIdentifier identifier)
         JsonObject description_object;
         description_object.set("fd", i);
         description_object.set("absolute_path", description->absolute_path());
+        description_object.set("seekable", description->file().is_seekable());
+        description_object.set("class", description->file().class_name());
+        description_object.set("offset", description->offset());
         array.append(move(description_object));
     }
     return array.serialized().to_byte_buffer();