/branches/dynload/uspace/lib/libc/include/loader/pcb.h |
---|
33,11 → 33,10 |
* @brief Program Control Block interface. |
*/ |
#ifndef ILOADER_PCB_H_ |
#define ILOADER_PCB_H_ |
#ifndef LIBC_PCB_H_ |
#define LIBC_PCB_H_ |
#include <sys/types.h> |
#include <arch/pcb.h> |
typedef void (*entry_point_t)(void); |
44,7 → 43,7 |
/** |
* Holds pointers to data passed from the program loader to the program |
* and/or to the dynamic linker. This includes the program entry point, |
* arguments, environment etc. |
* arguments, environment variables etc. |
*/ |
typedef struct { |
/** Program entry point */ |
54,7 → 53,7 |
* ELF-specific data |
*/ |
/** Pointer to ELF dynamic section of the program */ |
void *dynamic; |
void *dynamic; |
/** Pointer to dynamic section of the runtime linker */ |
void *rtld_dynamic; |
/** Runtime-linker load bias */ |
61,6 → 60,9 |
uintptr_t rtld_bias; |
} pcb_t; |
// FIXME |
#define PCB_ADDRESS 0x6fff0000 |
static inline pcb_t *__pcb_get(void) { |
return (pcb_t *)PCB_ADDRESS; |
} |
/branches/dynload/uspace/srv/loader/include/elf_load.h |
---|
38,9 → 38,9 |
#include <arch/elf.h> |
#include <sys/types.h> |
#include <loader/pcb.h> |
#include "elf.h" |
#include "pcb.h" |
/** |
* Some data extracted from the headers are stored here |
/branches/dynload/uspace/srv/loader/main.c |
---|
50,6 → 50,7 |
#include <sys/types.h> |
#include <ipc/ipc.h> |
#include <ipc/loader.h> |
#include <loader/pcb.h> |
#include <errno.h> |
#include <async.h> |
#include <as.h> |
56,7 → 57,7 |
#include <elf.h> |
#include <elf_load.h> |
#include <pcb.h> |
#include <arch/pcb.h> |
/** |
* Bias used for loading the dynamic linker. This will be soon replaced |
/branches/dynload/uspace/srv/loader/elf_load.c |
---|
50,9 → 50,10 |
#include <as.h> |
#include <unistd.h> |
#include <fcntl.h> |
#include <loader/pcb.h> |
#include "elf.h" |
#include "pcb.h" |
#include "arch/pcb.h" |
#include "elf_load.h" |
#include "arch.h" |