Simple Virtual Machine
A simple but flexible virtual machine
|
This module contains all types used by API functions. More...
Data Structures | |
struct | SVM_String |
struct | SVM_Comparison_Result |
struct | SVM_Status_Boolean |
Enumerations | |
enum | SVM_Boolean { FALSE = 0 , TRUE = 1 } |
This type corresponds to a simple boolean. More... | |
enum | SVM_Type_Internal { AUTOMATIC , INTEGER , STRING , BOOLEAN , POINTER , LIBRARY , SYMBOL , PLUGIN_ENTRY_POINT , INTERRUPTION } |
This type corresponds to value types the SVM can store in its memory. More... | |
enum | SVM_Interruption_Internal { CLONE , DEVICE , FAILURE , FIRST , MEMORY , NUMERIC , PROCESSOR , SECOND , SECURITY , TERMINATE , TERMINAL , GENERIC } |
This type corresponds to interruption types the SVM can use to stop program executions. More... | |
enum | SVM_Interruption_Kind { SOFTWARE , HARDWARE } |
This type represents the two major classes of interruptions the SVM can handle. More... | |
enum | SVM_Notification_Type { NOTIFICATION , TIMER } |
This type represents the reason that triggered a callback call to a specific scheduler function. More... | |
enum | SVM_Process_State { RUNNING , SUSPENDED , WAITING , CONTINUE , LOCKED , DEBUG , ZOMBIE , INTERRUPTED , ERROR } |
This type represents the status of a process. More... | |
enum | SVM_Object_Level { LOCAL , CASCADE , GLOBAL } |
This type corresponds to the level of definition of an object. More... | |
enum | SVM_Value_Plugin_Comparison { EQUIVALENCE_EQUAL = 0x0 , EQUIVALENCE_DIFFERENT = 0x3 , ORDER_EQUAL = 0x4 , ORDER_INFERIOR = 0x5 , ORDER_SUPERIOR = 0x6 , ORDER_UNCOMPARABLE = 0x7 , ORDER_TOTAL = 0x0 , ORDER_PARTIAL = 0x8 , COMPARISON_STRONG = 0x0 , COMPARISON_WEAK = 0x10 } |
This type corresponds to the result of SVM_Value_Plugin comparison. More... | |
Variables | |
SVM_TYPE typedef const void * | SVM_Variable |
This type is used to represent any object managed by the SVM. More... | |
SVM_TYPE typedef const void * | SVM_Parameter |
This type is used by the SVM to pass instruction parameters to the corresponding plugin function. More... | |
SVM_TYPE typedef const void * | SVM_Structure |
This type is used to convey a C pointer used for data exchange between plugins. More... | |
SVM_TYPE typedef const void * | SVM_AccessControl |
This type is used to represent quotas on code execution. More... | |
SVM_TYPE typedef const void * | SVM_Memory_Zone |
This type is used to represent the types of a contiguous zone of memory prior to its allocation. More... | |
SVM_TYPE typedef const void * | SVM_Lock |
This type is used as a simple synchronisation facility. More... | |
SVM_TYPE typedef const void * | SVM_LockGuard_Read |
This type is used to represent the aquisition of a SVM_Lock as a reader. More... | |
SVM_TYPE typedef const void * | SVM_LockGuard_Write |
This type is used to represent the aquisition of a SVM_Lock as a writer. More... | |
SVM_TYPE typedef const void * | SVM_Event_Queue |
This type is used as a complex synchronisation facility. More... | |
SVM_TYPE typedef const void * | SVM_Event_Queue_Address |
This type is used to represent an entity able to post and get events from an event queue. More... | |
SVM_TYPE typedef unsigned long int | SVM_Address |
This type is used to represent: More... | |
SVM_TYPE typedef unsigned long int | SVM_Index |
This type is used to represent an index. More... | |
SVM_TYPE typedef unsigned long int | SVM_Size |
This type is used to represent an object size. More... | |
SVM_TYPE typedef const void * | SVM_Code |
This type is used to represent a section of code of the SVM. More... | |
SVM_TYPE typedef const void * | SVM_Kernel |
This type is used to represent an atomic execution environment. More... | |
SVM_TYPE typedef const void * | SVM_Process |
This type is used to represent an execution thread in the SVM. More... | |
SVM_TYPE typedef const void * | SVM_Process_Lock |
This type is used to represent the aquisition of a lock on a remote process. More... | |
SVM_TYPE typedef const void * | SVM_Scheduler |
This type is used to represent an execution scheduler. More... | |
SVM_TYPE typedef const void * | SVM_Debug_Form |
This type is used to represent the a formular in the debugger user interface. More... | |
SVM_TYPE typedef SVM_Process_State | SVM_Kernel_State |
This type represents the status of a kernel. More... | |
SVM_TYPE typedef const void * | SVM_Type |
This type is used to represent types of any value the SVM can store in one of its memories. More... | |
SVM_TYPE typedef const void * | SVM_Value |
This type is used to represent any value the SVM can store in one of its memories. More... | |
SVM_TYPE typedef const void * | SVM_Value_Integer |
This type is used to represent an integer the SVM can store in one of its memories. More... | |
SVM_TYPE typedef const void * | SVM_Value_String |
This type is used to represent a string the SVM can store in one of its memories. More... | |
SVM_TYPE typedef const void * | SVM_Value_Boolean |
This type is used to represent a boolean the SVM can store in one of its memories. More... | |
SVM_TYPE typedef const void * | SVM_Value_Pointer |
This type is used to represent a pointer the SVM can store in one of its memories. More... | |
SVM_TYPE typedef const void * | SVM_Value_Library |
This type is used to represent a library the SVM can store in one of its memories. More... | |
SVM_TYPE typedef const void * | SVM_Value_Symbol |
This type is used to represent a symbol the SVM can store in one of its memories. More... | |
SVM_TYPE typedef const void * | SVM_Value_PluginEntryPoint |
This type is used to represent a plugin entry point the SVM can store in one of its memories. More... | |
SVM_TYPE typedef const void * | SVM_Value_Interruption |
This type is used to represent an interruption name the SVM can store in one of its memories. More... | |
SVM_TYPE typedef const void * | SVM_Value_Plugin |
This type is used to represent a value defined by a plugin the SVM can store in one of its memories. More... | |
SVM_TYPE typedef const void * | SVM_Value_Automatic |
This type is used to represent a null automatic value. More... | |
This module contains all types used by API functions.
Some are only enumeration constants used in various ways, like named booleans or SVM elements states or types.
One is a buffer containers to give a access to non-nul terminated strings, sometimes useful while conveying binary data over virtual machine strings.
The others ones are all typedefs on:
These are various variable types:
enum SVM_Boolean |
This type corresponds to interruption types the SVM can use to stop program executions.
This type represents the reason that triggered a callback call to a specific scheduler function.
(See scheduler API functions below for more details.)
Enumerator | |
---|---|
NOTIFICATION | the callback has been triggered manually by the plugin developper |
TIMER | the callback has been triggered after a timer expiration |
enum SVM_Object_Level |
enum SVM_Process_State |
This type represents the status of a process.
enum SVM_Type_Internal |
This type corresponds to value types the SVM can store in its memory.
The last one represents the class of types the plugin developpers can define in theirs plugins.
Enumerator | |
---|---|
AUTOMATIC | generic type to be replaced at first assignation |
INTEGER | integer type corresponding to long long int |
STRING | string type corresponding to SVM_String |
BOOLEAN | boolean type corresponding to SVM_Boolean |
POINTER | pointer type used to target memory zones |
LIBRARY | library type corresponding to SVM_Code |
SYMBOL | symbol type used to target code location |
PLUGIN_ENTRY_POINT | plugin entry point type used to identify a plugin object |
INTERRUPTION | interruption type corresponds to processor interruptions |
This type corresponds to the result of SVM_Value_Plugin comparison.
It can be used by plugin value comparison callbacks as explicit return value.
SVM_AccessControl |
This type is used to represent quotas on code execution.
SVM_Address |
This type is used to represent:
SVM_Code |
This type is used to represent a section of code of the SVM.
It consists in:
SVM_Debug_Form |
This type is used to represent the a formular in the debugger user interface.
SVM_Event_Queue |
This type is used as a complex synchronisation facility.
It allows synchronisation of several clients through event exchange.
SVM_Event_Queue_Address |
This type is used to represent an entity able to post and get events from an event queue.
SVM_Index |
This type is used to represent an index.
SVM_Kernel |
This type is used to represent an atomic execution environment.
It consists in:
In this API, functions managing processors and memories access them through the kernel holding them.
SVM_Kernel_State |
This type represents the status of a kernel.
SVM_Lock |
This type is used as a simple synchronisation facility.
This lock mutually excludes a unique writter against several concurrent readers.
SVM_LockGuard_Read |
This type is used to represent the aquisition of a SVM_Lock as a reader.
SVM_LockGuard_Write |
This type is used to represent the aquisition of a SVM_Lock as a writer.
SVM_Memory_Zone |
This type is used to represent the types of a contiguous zone of memory prior to its allocation.
SVM_Parameter |
This type is used by the SVM to pass instruction parameters to the corresponding plugin function.
It is also used to pass parameters to plugin function calls.
SVM_Process |
This type is used to represent an execution thread in the SVM.
It consists in:
In this API:
SVM_Process_Lock |
This type is used to represent the aquisition of a lock on a remote process.
SVM_Scheduler |
This type is used to represent an execution scheduler.
A scheduler is a process execution orchestrator.
SVM_Size |
This type is used to represent an object size.
SVM_Structure |
This type is used to convey a C pointer used for data exchange between plugins.
SVM_Type |
This type is used to represent types of any value the SVM can store in one of its memories.
SVM_Value |
This type is used to represent any value the SVM can store in one of its memories.
This type is not equivalent to the automatic type. It just means the type of the value will not be considered from this variable.
SVM_Value_Automatic |
This type is used to represent a null automatic value.
This type has no corresponding type in C.
SVM_Value_Boolean |
This type is used to represent a boolean the SVM can store in one of its memories.
The corresponding C type is SVM_Boolean.
SVM_Value_Integer |
This type is used to represent an integer the SVM can store in one of its memories.
The corresponding C type is long long int.
SVM_Value_Interruption |
This type is used to represent an interruption name the SVM can store in one of its memories.
This type has no corresponding type in C, as it is made of:
An interruption name can be used to alter the program behavior in case of interruption, or can be used to interrupt a program, raising an event or an error.
SVM_Value_Library |
This type is used to represent a library the SVM can store in one of its memories.
This type has no corresponding type in C, as it is made of an SVM_Code instance.
SVM_Value_Plugin |
This type is used to represent a value defined by a plugin the SVM can store in one of its memories.
This type has no corresponding type in C, as it is made of:
SVM_Value_PluginEntryPoint |
This type is used to represent a plugin entry point the SVM can store in one of its memories.
This type has no corresponding type in C, as it is made of:
A plugin entry point can be used to reference an object in a plugin.
SVM_Value_Pointer |
This type is used to represent a pointer the SVM can store in one of its memories.
This type has no corresponding type in C, as it is made of:
A pointer can then represent a zone in memory.
SVM_Value_String |
This type is used to represent a string the SVM can store in one of its memories.
The corresponding C type is SVM_String or C-nul terminated strings.
SVM_Value_Symbol |
This type is used to represent a symbol the SVM can store in one of its memories.
This type has no corresponding type in C, as it is made of:
A symbol can be used in jumps or functions calls.
SVM_Variable |
This type is used to represent any object managed by the SVM.