RSOLinkList

C Specification


#include <revolution/rso.h>
#include <revolution/RSOLink.h>

BOOL RSOLinkList(void* i_newRso, void* i_bss);

BOOL RSOLinkListFixed(void* i_newRso, void *i_bss, int i_fixed);

Arguments

i_newRso Pointer to the dynamic module information to link
i_bss Pointer to the available memory space used for the bss section.
(Size is allocated by RSOObjectHeader.bssSize)
i_fixed Release level:RSOFixedLevel

Return Values

Returns success or failure of the operation
Success: TRUE
Fail: FALSE

Description

RSOLinkList() links the specified module. Once the module is unlinked, the memory copy of the module can be reused with RSOLinkList() if the module startup code initializes its data section explicitly.

RSOLinkListFixed()links the specified module and releases part of the memory occupied by the relocatable module.
Once the module is linked using RSOLinkListFixed, the remaining memory space that comes after (specified by RSOGetFixedSize) can be used for any purpose (for example, for the bss area).

If the release level is RSO_FL_INTERNAL, the internal reference information is released.
In this case, the module memory copy cannot be reused even after being unlinked.

If the deallocated stage is RSO_FL_EXTERNAL, the internal and external (import) reference information is deallocated.
In this case, in addition to the restrictions of RSO_FL_INTERNAL, the following restrictions are applied:
1. When a module referenced by this module is unlinked, the referenced functions will not show as unresolved.
2. The module will not be able to reference the functions on the dynamic module registered after the link.


Note: The location specified by RSOGetFixedSize is converted from the file offset to the virtual address when the module is linked. 

See Also

RSO API Introduction
RSOListInit, RSOUnLinkList, RSOGetFixedSize,

Revision History

06/14/2006 Initial version.


CONFIDENTIAL