Selaa lähdekoodia

Kernel: Set file size for smbios_entry_point and DMI blobs in ProcFS

This is needed to support dmidecode version 3.3, so it can read the 2
blobs in ProcFS.
Liav A 4 vuotta sitten
vanhempi
commit
65c27bfe52
3 muutettua tiedostoa jossa 19 lisäystä ja 0 poistoa
  1. 9 0
      Kernel/DMI.cpp
  2. 2 0
      Kernel/DMI.h
  3. 8 0
      Kernel/FileSystem/ProcFS.cpp

+ 9 - 0
Kernel/DMI.cpp

@@ -70,6 +70,15 @@ DMIExpose& DMIExpose::the()
     return *s_the;
     return *s_the;
 }
 }
 
 
+size_t DMIExpose::entry_point_length() const
+{
+    return m_entry_point_length;
+}
+size_t DMIExpose::structure_table_length() const
+{
+    return m_structure_table_length;
+}
+
 void DMIExpose::initialize_exposer()
 void DMIExpose::initialize_exposer()
 {
 {
     ASSERT(!(m_entry_point.is_null()));
     ASSERT(!(m_entry_point.is_null()));

+ 2 - 0
Kernel/DMI.h

@@ -85,6 +85,8 @@ public:
     bool is_available() const { return m_available; }
     bool is_available() const { return m_available; }
     OwnPtr<KBuffer> entry_point() const;
     OwnPtr<KBuffer> entry_point() const;
     OwnPtr<KBuffer> structure_table() const;
     OwnPtr<KBuffer> structure_table() const;
+    size_t entry_point_length() const;
+    size_t structure_table_length() const;
 
 
 private:
 private:
     void set_64_bit_entry_initialization_values();
     void set_64_bit_entry_initialization_values();

+ 8 - 0
Kernel/FileSystem/ProcFS.cpp

@@ -1176,6 +1176,14 @@ InodeMetadata ProcFSInode::metadata() const
     case FI_PID_stacks:
     case FI_PID_stacks:
         metadata.mode = S_IFDIR | S_IRUSR | S_IXUSR;
         metadata.mode = S_IFDIR | S_IRUSR | S_IXUSR;
         break;
         break;
+    case FI_Root_smbios_entry_point:
+        metadata.mode = S_IFREG | S_IRUSR | S_IRGRP | S_IROTH;
+        metadata.size = DMIExpose::the().entry_point_length();
+        break;
+    case FI_Root_dmi:
+        metadata.mode = S_IFREG | S_IRUSR | S_IRGRP | S_IROTH;
+        metadata.size = DMIExpose::the().structure_table_length();
+        break;
     default:
     default:
         metadata.mode = S_IFREG | S_IRUSR | S_IRGRP | S_IROTH;
         metadata.mode = S_IFREG | S_IRUSR | S_IRGRP | S_IROTH;
         break;
         break;