| Simple Virtual Machine
    A simple but flexible virtual machine | 
This module contains API functions to handle SVM synchronisation events. More...
| Functions | |
| SVM_FUNCTION SVM_Event_Queue | svm_event_queue_new (const void *svm) | 
| This function creates an event queue.  More... | |
| SVM_FUNCTION SVM_Event_Queue_Address | svm_event_address_new (const void *svm) | 
| This function creates an event queue address.  More... | |
| SVM_FUNCTION SVM_Event_Queue_Address | svm_event_address_new_struct (const void *svm, const SVM_Structure structure) | 
| This function creates an event queue address.  More... | |
| SVM_FUNCTION SVM_Boolean | svm_event_address_has_struct (const void *svm, const SVM_Event_Queue_Address address) | 
| This function checks whether an event queue address has an owner.  More... | |
| SVM_FUNCTION SVM_Structure | svm_event_address_get_struct (const void *svm, const SVM_Event_Queue_Address address) | 
| This function retrieves the owner of an event queue address.  More... | |
| SVM_FUNCTION void | svm_event_queue_join (const void *svm, SVM_Event_Queue event_queue, const SVM_Event_Queue_Address address) | 
| This function lets an address to join the event queue.  More... | |
| SVM_FUNCTION void | svm_event_queue_leave (const void *svm, SVM_Event_Queue event_queue, const SVM_Event_Queue_Address address) | 
| This function lets an address to leave the event queue.  More... | |
| SVM_FUNCTION void | svm_event_queue_push (const void *svm, SVM_Event_Queue event_queue, const SVM_Event_Queue_Address destination, const SVM_Event_Queue_Address origin, const SVM_Structure event) | 
| This function pushes an event on a queue from an address to another address.  More... | |
| SVM_FUNCTION void | svm_event_queue_broadcast (const void *svm, SVM_Event_Queue event_queue, const SVM_Event_Queue_Address origin, const SVM_Structure event) | 
| This function pushes an event on a queue from an address to all addresses.  More... | |
| SVM_FUNCTION SVM_Boolean | svm_event_queue_pull (const void *svm, SVM_Event_Queue event_queue, const SVM_Event_Queue_Address destination, SVM_Event_Queue_Address *origin, SVM_Structure *event, const SVM_Boolean soft) | 
| This function pulls an event on a queue from an address.  More... | |
| SVM_FUNCTION SVM_Boolean | svm_event_queue_check (const void *svm, SVM_Event_Queue event_queue, const SVM_Event_Queue_Address destination, SVM_Event_Queue_Address *origin, SVM_Structure *event, const SVM_Value_Integer timeout, const SVM_Boolean soft) | 
| This function pulls an event on a queue from an address with a timeout in an integer value.  More... | |
| SVM_FUNCTION SVM_Boolean | svm_event_queue_check__raw (const void *svm, SVM_Event_Queue event_queue, const SVM_Event_Queue_Address destination, SVM_Event_Queue_Address *origin, SVM_Structure *event, const unsigned long int timeout, const SVM_Boolean soft) | 
| This function pulls an event on a queue from an address with a timeout in a raw integer.  More... | |
This module contains API functions to handle SVM synchronisation events.
| SVM_FUNCTION SVM_Structure svm_event_address_get_struct | ( | const void * | svm, | 
| const SVM_Event_Queue_Address | address | ||
| ) | 
This function retrieves the owner of an event queue address.
| [in] | svm | The SVM pointer passed as first argument of the callback function. | 
| [in] | address | The event queue address. | 
The owner of the address is returned. If the address was not associated to an owner, a FAILURE interruption is raised.
| FAILURE | interruption when a parameter is incorrect. (Please refer to the main description page of this API.) | 
| FAILURE | interruption when the address has no owner. | 
| SVM_FUNCTION SVM_Boolean svm_event_address_has_struct | ( | const void * | svm, | 
| const SVM_Event_Queue_Address | address | ||
| ) | 
This function checks whether an event queue address has an owner.
| [in] | svm | The SVM pointer passed as first argument of the callback function. | 
| [in] | address | The event queue address. | 
| FAILURE | interruption when a parameter is incorrect. (Please refer to the main description page of this API.) | 
| SVM_FUNCTION SVM_Event_Queue_Address svm_event_address_new | ( | const void * | svm | ) | 
This function creates an event queue address.
| [in] | svm | The SVM pointer passed as first argument of the callback function. | 
The address is created without association to an owner.
| FAILURE | interruption when a parameter is incorrect. (Please refer to the main description page of this API.) | 
| SVM_FUNCTION SVM_Event_Queue_Address svm_event_address_new_struct | ( | const void * | svm, | 
| const SVM_Structure | structure | ||
| ) | 
This function creates an event queue address.
| [in] | svm | The SVM pointer passed as first argument of the callback function. | 
| [in] | structure | The structure owner of the address. | 
The address is created with an association to an owner. Creating an address with a reference to its owner allows an event puller to reach the pusher of the event.
| FAILURE | interruption when a parameter is incorrect. (Please refer to the main description page of this API.) | 
| SVM_FUNCTION void svm_event_queue_broadcast | ( | const void * | svm, | 
| SVM_Event_Queue | event_queue, | ||
| const SVM_Event_Queue_Address | origin, | ||
| const SVM_Structure | event | ||
| ) | 
This function pushes an event on a queue from an address to all addresses.
| [in] | svm | The SVM pointer passed as first argument of the callback function. | 
| [in,out] | event_queue | The event queue on which the event will be pushed. | 
| [in] | origin | The address from which the event is sent. | 
| [in] | event | The structure containing the event. | 
The event is pushed to the event queue.
| FAILURE | interruption when a parameter is incorrect. (Please refer to the main description page of this API.) | 
| FAILURE | interruption when the origin address has not joined the event queue. | 
| SVM_FUNCTION SVM_Boolean svm_event_queue_check | ( | const void * | svm, | 
| SVM_Event_Queue | event_queue, | ||
| const SVM_Event_Queue_Address | destination, | ||
| SVM_Event_Queue_Address * | origin, | ||
| SVM_Structure * | event, | ||
| const SVM_Value_Integer | timeout, | ||
| const SVM_Boolean | soft | ||
| ) | 
This function pulls an event on a queue from an address with a timeout in an integer value.
| [in] | svm | The SVM pointer passed as first argument of the callback function. | 
| [in,out] | event_queue | The event queue on which the event will be pushed. | 
| [in] | destination | The address to which the event will be sent. | 
| [out] | origin | The address from which the event is sent. | 
| [out] | event | The structure containing the event. | 
| [in] | timeout | A timeout in milliseconds. | 
| [in] | soft | The process is put in pause while waiting for an event. | 
The API function waits until an event is ready to be pulled or the timeout is reached. A timeout of 0 exists immediately if no event is ready to be pulled. When this API function is called within a process accepting interruption notifications, any interruption will stop the event pulling without a delivered message.
| FAILURE | interruption when a parameter is incorrect. (Please refer to the main description page of this API.) | 
| FAILURE | interruption when the destination address has not joined the event queue. | 
| FAILURE | interruption when the timeout is a negative integer. | 
| FAILURE | interruption when this API function is called outside a kernel. | 
| SVM_FUNCTION SVM_Boolean svm_event_queue_check__raw | ( | const void * | svm, | 
| SVM_Event_Queue | event_queue, | ||
| const SVM_Event_Queue_Address | destination, | ||
| SVM_Event_Queue_Address * | origin, | ||
| SVM_Structure * | event, | ||
| const unsigned long int | timeout, | ||
| const SVM_Boolean | soft | ||
| ) | 
This function pulls an event on a queue from an address with a timeout in a raw integer.
| [in] | svm | The SVM pointer passed as first argument of the callback function. | 
| [in,out] | event_queue | The event queue on which the event will be pushed. | 
| [in] | destination | The address to which the event will be sent. | 
| [out] | origin | The address from which the event is sent. | 
| [out] | event | The structure containing the event. | 
| [in] | timeout | A timeout in milliseconds. | 
| [in] | soft | The process is put in pause while waiting for an event. | 
The API function waits until an event is ready to be pulled or the timeout is reached. A timeout of 0 exists immediately if no event is ready to be pulled.
| FAILURE | interruption when a parameter is incorrect. (Please refer to the main description page of this API.) | 
| FAILURE | interruption when the destination address has not joined the event queue. | 
| FAILURE | interruption when the timeout is a negative integer. | 
| FAILURE | interruption when this API function is called outside a kernel. | 
| SVM_FUNCTION void svm_event_queue_join | ( | const void * | svm, | 
| SVM_Event_Queue | event_queue, | ||
| const SVM_Event_Queue_Address | address | ||
| ) | 
This function lets an address to join the event queue.
| [in] | svm | The SVM pointer passed as first argument of the callback function. | 
| [in,out] | event_queue | The event queue on which the address will be added. | 
| [in] | address | The address. | 
This step is done by the owner of the address. It is required to push events to this address and to pull events from this address.
| FAILURE | interruption when a parameter is incorrect. (Please refer to the main description page of this API.) | 
| SVM_FUNCTION void svm_event_queue_leave | ( | const void * | svm, | 
| SVM_Event_Queue | event_queue, | ||
| const SVM_Event_Queue_Address | address | ||
| ) | 
This function lets an address to leave the event queue.
| [in] | svm | The SVM pointer passed as first argument of the callback function. | 
| [in,out] | event_queue | The event queue on which the address will be removed. | 
| [in] | address | The address. | 
This step is done by the owner of the address to close its participation to the event queue.
| FAILURE | interruption when a parameter is incorrect. (Please refer to the main description page of this API.) | 
| SVM_FUNCTION SVM_Event_Queue svm_event_queue_new | ( | const void * | svm | ) | 
This function creates an event queue.
| [in] | svm | The SVM pointer passed as first argument of the callback function. | 
This event queue allows synchronisation of a lot of concurrent processes by pushing events to this queue and pulling events from this queue.
Each process accessing the queue will be identified by an address linked to a structure.
| FAILURE | interruption when a parameter is incorrect. (Please refer to the main description page of this API.) | 
| SVM_FUNCTION SVM_Boolean svm_event_queue_pull | ( | const void * | svm, | 
| SVM_Event_Queue | event_queue, | ||
| const SVM_Event_Queue_Address | destination, | ||
| SVM_Event_Queue_Address * | origin, | ||
| SVM_Structure * | event, | ||
| const SVM_Boolean | soft | ||
| ) | 
This function pulls an event on a queue from an address.
| [in] | svm | The SVM pointer passed as first argument of the callback function. | 
| [in,out] | event_queue | The event queue on which the event will be pushed. | 
| [in] | destination | The address to which the event will be sent. | 
| [out] | origin | The address from which the event is sent. | 
| [out] | event | The structure containing the event. | 
| [in] | soft | The process is put in pause while waiting for an event. | 
The API function waits until an event is ready to be pulled. When this API function is called within a process accepting interruption notifications, any interruption will stop the event pulling without a delivered message.
| FAILURE | interruption when a parameter is incorrect. (Please refer to the main description page of this API.) | 
| FAILURE | interruption when the destination address has not joined the event queue. | 
| FAILURE | interruption when this API function is called outside a kernel. | 
| SVM_FUNCTION void svm_event_queue_push | ( | const void * | svm, | 
| SVM_Event_Queue | event_queue, | ||
| const SVM_Event_Queue_Address | destination, | ||
| const SVM_Event_Queue_Address | origin, | ||
| const SVM_Structure | event | ||
| ) | 
This function pushes an event on a queue from an address to another address.
| [in] | svm | The SVM pointer passed as first argument of the callback function. | 
| [in,out] | event_queue | The event queue on which the event will be pushed. | 
| [in] | destination | The address to which the event will be sent. | 
| [in] | origin | The address from which the event is sent. | 
| [in] | event | The structure containing the event. | 
The event is pushed to the event queue.
| FAILURE | interruption when a parameter is incorrect. (Please refer to the main description page of this API.) | 
| FAILURE | interruption when the origin or the destination address has not joined the event queue. |