Kernel - Slight reworks to timer code
[tpg/acess2.git] / Kernel / include / binary.h
index 77ccdd7..c94a1b0 100644 (file)
@@ -8,35 +8,30 @@
 
 // === TYPES ===
 /**
- * \brief Representation of a page in a binary file
+ * \brief Representation of a section in a binary file
  * 
  * Tells the binary loader where the page data resides on disk and where
  * to load it to (relative to the binary base). Once the data is read,
  * the \a Physical field contains the physical address of the page.
  */
-typedef struct sBinaryPage
+typedef struct sBinarySection
 {
-       /**
-        * \brief Physical address, or file offset
-        * 
-        * Physical address of this page or, when the file is not yet
-        * loaded, this is a file offset (or -1 for uninitialised data)
-        */
-       tPAddr  Physical;
+       Uint64  Offset;         //!< File offset of the section
        tVAddr  Virtual;        //!< Virtual load address
-       Uint16  Size;   //!< Number of bytes to load from the file
-       Uint16  Flags;  //!< Load Flags
-} __attribute__ ((packed))     tBinaryPage;
+       size_t  FileSize;       //!< Number of bytes to load from the file
+       size_t  MemSize;        //!< Number of bytes in memory
+       Uint    Flags;  //!< Load Flags
+}      tBinarySection;
 
 /**
- * \brief Flags for ::tBinaryPage.Flags
- * \name Binary Page Flags
+ * \brief Flags for ::tBinarySection.Flags
+ * \name Binary Section Flags
  * \{
  */
 //! \brief Read-only
-#define BIN_PAGEFLAG_RO                0x0001
+#define BIN_SECTFLAG_RO                0x0001
 //! \brief Executable
-#define BIN_PAGEFLAG_EXEC      0x0002
+#define BIN_SECTFLAG_EXEC      0x0002
 /**
  * \}
  */
@@ -60,38 +55,36 @@ typedef struct sBinaryPage
 typedef struct sBinary
 {
        struct sBinary  *Next;  //!< Pointer used by the kernel
-       /**
-        * \brief True path of the file
-        * \note Used to uniquely identify the loaded binary to reduce in-memory
-        *       duplication.
-        */
-       char    *TruePath;
+
+       tMount  MountID;        //!< Mount ID
+       tInode  Inode;          //!< Inode (Used for fast reopen)
+
        /**
         * \brief Interpreter used to load the file
         * \note This can be either requested by the individual file, or a per-driver option
         */
-       char    *Interpreter;
+       const char      *Interpreter;
        /**
         * \brief Entrypoint of the binary (at requested base);
         */
-       Uint    Entry;
+       tVAddr  Entry;
        /**
         * \brief File's requested load base
         */
-       Uint    Base;
+       tVAddr  Base;
        /**
         * \brief Number of times this binary has been mapped
         */
         int    ReferenceCount;
        /**
-        * \brief Number of pages defined in the file
+        * \brief Number of sections defined in the file
         */
-        int    NumPages;
+        int    NumSections;
        /**
-        * \brief Array of pages defined by this binary
-        * \note Contains \a NumPages entries
+        * \brief Array of sections defined by this binary
+        * \note Contains \a NumSections entries
         */
-       tBinaryPage     Pages[];
+       tBinarySection  LoadSections[];
 }      tBinary;
 
 /**
@@ -118,7 +111,7 @@ typedef struct sBinaryType
         */
        Uint32  Ident;
        Uint32  Mask;   //!< Mask value for tBinaryType.Ident
-       char    *Name;  //!< Name of this executable type (for debug purpouses)
+       const char      *Name;  //!< Name of this executable type (for debug purpouses)
        /**
         * \brief Read a binary from a file
         * \param FD    VFS File handle to file to load
@@ -151,7 +144,7 @@ typedef struct sBinaryType
          *       tBinaryType.Relocate at this time, so the driver should
          *       accomodate this.
          */
-        int    (*GetSymbol)(void *Base, char *Name, Uint *Dest);
+        int    (*GetSymbol)(void *Base, const char *Name, Uint *Dest);
 } tBinaryType;
 
 /**

UCC git Repository :: git.ucc.asn.au