Module service:module - Dynamic loadable module service
Dynamic loadable module service. This service is used to manage loadable modules within RMoX, including application programs (currently), device-drivers, services, file-systems and network stacks.
Index
-
Channel type
CT.MODCTRL- Module control channel-type -
Channel type
CT.MODULE- Module service channel-type-
Variable
in?- Requests to service -
Variable
out!- Responses from service -
Variable
return?- Used to close connection
-
Variable
-
Channel type
CT.MODULE.APP- Standard application interface (kyb?, scr!, err!) channels -
Group
MODTYPE- RMoX module type constants-
Constant
MODTYPE.APP- RMoX application module -
Constant
MODTYPE.DRV- RMoX device driver module -
Constant
MODTYPE.FS- RMoX file-system module -
Constant
MODTYPE.INVALID- Invalid module -
Constant
MODTYPE.NET- RMoX network module -
Constant
MODTYPE.SRV- RMoX service module
-
Constant
-
Record
MODULE.INFO- Module info structure-
Variable
dentry.addr- Virtual address of the DCR entry stub -
Variable
if.hash- Interface type-hash -
Variable
name- Module name, loaded from the file -
Variable
name.len- Module name length -
Variable
relocated- True if all relocations have been processed -
Variable
resolved- True if all symbols are resolved -
Variable
text.addr,data.addr- Virtual addresses of loaded text and data sections -
Variable
text.size,data.size- ".text" and ".data" section sizes (in bytes) -
Variable
type- Module type (see ) -
Variable
ws.slots,vs.slots- Workspace and vectorspace requirements
-
Variable
-
Protocol
P.MODCTRL.IN- Module control input protocol -
Protocol
P.MODCTRL.OUT- Module control output protocol-
Tag
terminated- Module finished execution
-
Tag
-
Protocol
P.MODULE.IN- Module service input protocol-
Tag
load.file- Load a particular module file, responds with modinfo or result -
Tag
query- Query module, responds with modinfo or result -
Tag
relocate- Performs relocations in the module, responds with modinfo or result -
Tag
resolve.symbols- Resolve symbols in the module, responds with modinfo or result -
Tag
run.app- Run standard application interface, responds with mod.control or result
-
Tag
-
Protocol
P.MODULE.OUT- Module service output protocol-
Tag
mod.control- Returned module control channel-end (for running modules) -
Tag
modinfo- Module information -
Tag
result- Generic result
-
Tag
-
Process
module.service- Dynamic loadable module service for RMoX
Declarations
module.occ:60Process module.service
PROC module.service (CT.SERVICE? in, SHARED CT.DRIVER! to.drv, SHARED CT.KERNEL! to.kernel, VAL []BYTE options, SHARED LOG! log)
Dynamic loadable module service for RMoX. This is used for loading various kinds of module.
Parameters:
module_chan.inc:24Group MODTYPE
RMoX module type constants.
module_chan.inc:25Constant MODTYPE.INVALID
VAL INT MODTYPE.INVALID
Invalid module.
module_chan.inc:26Constant MODTYPE.APP
VAL INT MODTYPE.APP
RMoX application module.
module_chan.inc:27Constant MODTYPE.DRV
VAL INT MODTYPE.DRV
RMoX device driver module.
module_chan.inc:28Constant MODTYPE.SRV
VAL INT MODTYPE.SRV
RMoX service module.
module_chan.inc:29Constant MODTYPE.FS
VAL INT MODTYPE.FS
RMoX file-system module.
module_chan.inc:30Constant MODTYPE.NET
VAL INT MODTYPE.NET
RMoX network module.
module_chan.inc:35Record MODULE.INFO
DATA TYPE MODULE.INFO
Module info structure.
module_chan.inc:37Variable name
[MAX.MODULE.LEN]BYTE
Module name, loaded from the file.
module_chan.inc:38Variable name.len
INT
Module name length.
module_chan.inc:40Variable text.size, data.size
INT
".text" and ".data" section sizes (in bytes).
module_chan.inc:41Variable text.addr, data.addr
INT32
Virtual addresses of loaded text and data sections.
module_chan.inc:42Variable dentry.addr
INT32
Virtual address of the DCR entry stub.
module_chan.inc:44Variable ws.slots, vs.slots
INT
Workspace and vectorspace requirements.
module_chan.inc:45Variable if.hash
INT32
Interface type-hash.
module_chan.inc:47Variable resolved
BOOL
True if all symbols are resolved.
module_chan.inc:48Variable relocated
BOOL
True if all relocations have been processed.
module_chan.inc:53Protocol P.MODCTRL.IN
PROTOCOL P.MODCTRL.IN
Module control input protocol.
module_chan.inc:58Protocol P.MODCTRL.OUT
PROTOCOL P.MODCTRL.OUT
Module control output protocol.
module_chan.inc:60Tag terminated
terminated; INT
Module finished execution.
module_chan.inc:64Channel type CT.MODCTRL
CHAN TYPE CT.MODCTRL
Module control channel-type.
module_chan.inc:72Channel type CT.MODULE.APP
CHAN TYPE CT.MODULE.APP
Standard application interface (kyb?, scr!, err!) channels.
module_chan.inc:82Protocol P.MODULE.IN
PROTOCOL P.MODULE.IN
Module service input protocol.
module_chan.inc:84Tag load.file
load.file; MOBILE []BYTE
Load a particular module file, responds with modinfo or result.
module_chan.inc:85Tag query
query
Query module, responds with modinfo or result.
module_chan.inc:86Tag resolve.symbols
resolve.symbols
Resolve symbols in the module, responds with modinfo or result.
module_chan.inc:87Tag relocate
relocate
Performs relocations in the module, responds with modinfo or result.
module_chan.inc:88Tag run.app
run.app; CT.MODULE.APP?; MOBILE []BYTE
Run standard application interface, responds with mod.control or result.
module_chan.inc:92Protocol P.MODULE.OUT
PROTOCOL P.MODULE.OUT
Module service output protocol.
module_chan.inc:94Tag modinfo
modinfo; MODULE.INFO
Module information.
module_chan.inc:95Tag result
result; INT
Generic result.
module_chan.inc:96Tag mod.control
mod.control; CT.MODCTRL!
Returned module control channel-end (for running modules).
module_chan.inc:100Channel type CT.MODULE
RECURSIVE CHAN TYPE CT.MODULE
Module service channel-type.
module_chan.inc:102Variable in?
CHAN P.MODULE.IN
Requests to service.
module_chan.inc:103Variable out!
CHAN P.MODULE.OUT
Responses from service.
module_chan.inc:104Variable return?
CHAN CT.MODULE!
Used to close connection.