00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef __CONVEN_LOAD_H__
00011 #define __CONVEN_LOAD_H__ 1
00012 #include <libc.h>
00013
00014 #define LOADOPT_BOOTFS (1<<0u)
00015
00022 #define LOADOPT_AS_IS (1<<3u)
00023
00029 #define LOADOPT_WRITABLE_TEXT (1<<4u)
00030
00034 #if 0
00035 #define LOADOPT_LOCK_FILE (1<<5u)
00036
00037 #endif
00038
00039 #define LOADOPT_VERBOSE (1<<10u)
00040
00042 typedef enum
00043 {
00044 LOAD_EZERO = 0,
00046
00047
00048
00049 LOAD_BOOTFS_VRSV = 100,
00050 LOAD_BOOTFS_MAP,
00051 LOAD_BOOTFS_FIND_FILE,
00052 LOAD_BOOTFS_UNMAP,
00053 LOAD_BOOTFS_VRELE,
00054 LOAD_BOOTFS_PRSV_ARCHIVE,
00055 LOAD_BOOTFS_BUSY,
00056 LOAD_BOOTFS_SHARE_ARCHIVE,
00058
00059
00060
00061 LOAD_FS_OPEN_FAILED = 150,
00062 LOAD_FS_PRSV_ARCHIVE,
00063 LOAD_FS_CLOSE_FAILED,
00064 LOAD_FS_READ_FAILED,
00065 LOAD_FS_FSTAT_FAILED,
00066 LOAD_FS_SHORT_READ,
00067 LOAD_FS_PGIVE_ARCHIVE,
00068 LOAD_FS_VRSV_ARCHIVE,
00069 LOAD_FS_VMAP_ARCHIVE,
00070 LOAD_FS_VUNMAP_ARCHIVE,
00071 LOAD_FS_VRELE_ARCHIVE,
00073 LOAD_FS_PROP_FETCH_PATH = 180,
00074 LOAD_FS_PROP_STORE_PATH,
00075 LOAD_FS_PROP_UPDATE_PATH,
00076 LOAD_FS_PROP_STORE_SECTION,
00077
00078
00079
00080
00081 LOAD_ARCHIVE_VRSV = 200,
00082 LOAD_ARCHIVE_VMAP,
00083 LOAD_ARCHIVE_VUNMAP,
00084 LOAD_ARCHIVE_VRELE,
00085 LOAD_ARCHIVE_WIRE,
00086 LOAD_ARCHIVE_PRELE,
00088
00089
00090
00091 LOAD_ELF_RETRIEVE_HDR = 300,
00092 LOAD_ELF_RETRIEVE_PHDR,
00093 LOAD_ELF_BAD_HEADER,
00094 LOAD_ELF_ZERO_SIZED_PSECTION,
00095 LOAD_ELF_CANT_HANDLE_FILE,
00096 LOAD_ELF_UPDATE_PHDR,
00098
00099
00100
00101 LOAD_PSECTION_PRSV = 400,
00102 LOAD_PSECTION_COPY1,
00103 LOAD_PSECTION_COPY2,
00104 LOAD_PSECTION_MAP_W,
00105 LOAD_PSECTION_MAP_R,
00106 LOAD_PSECTION_MAP_R2,
00107 LOAD_PSECTION_VRSV,
00108 LOAD_PSECTION_SHARE_RO,
00109 LOAD_PSECTION_UNMAP,
00111
00112
00113
00114 LOAD_PSECTION_PRSV_ZEROES = 500,
00115 LOAD_PSECTION_VRSV_ZEROES,
00116 LOAD_PSECTION_MAP_ME_ZEROES,
00117 LOAD_PSECTION_VUNMAP_ME_ZEROES,
00118 LOAD_PSECTION_COPY_REMAINING,
00119 LOAD_PSECTION_VRELE_ZEROES,
00120 LOAD_PSECTION_PGIVE_ZEROES,
00121 LOAD_PSECTION_MAP_ZEROES,
00123
00124
00125
00126 LOAD_SIGCODE_PRSV = 600,
00127 LOAD_SIGCODE_VRSV,
00128 LOAD_SIGCODE_VMAP,
00129 LOAD_SIGCODE_COPY,
00130 LOAD_PINFO,
00132
00133
00134
00135 LOAD_VIRT_ASRELE = 700,
00137 } t_load_status;
00138
00139
00140
00141 t_load_status load_exec(asid_t asid, char *path, vaddr_t mapaddr, u_int32_t loadopts, u_int32_t *eip);
00142 #endif