60 lines
1.0 KiB
C
60 lines
1.0 KiB
C
|
/*
|
||
|
* Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
|
||
|
* Distributed under the terms of the MIT License.
|
||
|
*/
|
||
|
#ifndef ADD_ONS_H
|
||
|
#define ADD_ONS_H
|
||
|
|
||
|
#include <OS.h>
|
||
|
|
||
|
#include <util/DoublyLinkedList.h>
|
||
|
|
||
|
#include <runtime_loader.h>
|
||
|
|
||
|
|
||
|
// image events
|
||
|
enum {
|
||
|
IMAGE_EVENT_LOADED,
|
||
|
IMAGE_EVENT_RELOCATED,
|
||
|
IMAGE_EVENT_INITIALIZED,
|
||
|
IMAGE_EVENT_UNINITIALIZING,
|
||
|
IMAGE_EVENT_UNLOADING
|
||
|
};
|
||
|
|
||
|
|
||
|
struct RuntimeLoaderAddOn
|
||
|
: public DoublyLinkedListLinkImpl<RuntimeLoaderAddOn> {
|
||
|
image_t* image;
|
||
|
runtime_loader_add_on* addOn;
|
||
|
|
||
|
RuntimeLoaderAddOn(image_t* image, runtime_loader_add_on* addOn)
|
||
|
:
|
||
|
image(image),
|
||
|
addOn(addOn)
|
||
|
{
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
struct RuntimeLoaderSymbolPatcher {
|
||
|
RuntimeLoaderSymbolPatcher* next;
|
||
|
runtime_loader_symbol_patcher* patcher;
|
||
|
void* cookie;
|
||
|
|
||
|
RuntimeLoaderSymbolPatcher(runtime_loader_symbol_patcher* patcher,
|
||
|
void* cookie)
|
||
|
:
|
||
|
patcher(patcher),
|
||
|
cookie(cookie)
|
||
|
{
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
void init_add_ons();
|
||
|
status_t add_add_on(image_t* image, runtime_loader_add_on* addOnStruct);
|
||
|
void image_event(image_t* image, uint32 event);
|
||
|
|
||
|
|
||
|
#endif // ADD_ONS_H
|