interface xdc.runtime.knl.ISemProcessSupport |
|
|
|
Interface for OS specific back-end
The
xdc.runtime.knl package contains modules that provide typical
OS services. These xdc.runtime.knl modules however require proxies to be
bound to an OS specific delegate. This specifies the interface to
be implemented by the OS specific delegate for
xdc.runtime.knl.SemProcess module.
[
more ... ]
interface ISemProcessSupport { ...
instance: ...
interface ISemProcessSupport inherits ISemaphore {
module-wide constants & types
};
};
module-wide config parameters
instance:
per-instance config parameters
per-instance creation
per-instance functions
}
DETAILS
The
xdc.runtime.knl package contains modules that provide typical
OS services. These xdc.runtime.knl modules however require proxies to be
bound to an OS specific delegate. This specifies the interface to
be implemented by the OS specific delegate for
xdc.runtime.knl.SemProcess module.
create() takes a 32-bit integer key parameter to be used for identifying
the semaphore to create across processes. For example, for Linux System V
semaphores, the key is necessary so that different processes can access
the same semaphore.
const ISemProcessSupport.FOREVER |
|
Used as the timeout value to specify wait forever
const UInt FOREVER = ~(0);
enum ISemProcessSupport.Mode |
|
Types of semaphores
enum Mode {
Mode_COUNTING,
// Counting semaphore
Mode_BINARY
// Binary Semaphore
};
enum ISemProcessSupport.PendStatus |
|
Error codes returned by Semaphore_pend
enum PendStatus {
PendStatus_ERROR,
PendStatus_TIMEOUT,
PendStatus_SUCCESS
};
metaonly config ISemProcessSupport.common$ // module-wide |
|
Common module configuration parameters
DETAILS
All modules have this configuration parameter. Its name
contains the '$' character to ensure it does not conflict with
configuration parameters declared by the module. This allows
new configuration parameters to be added in the future without
any chance of breaking existing modules.
config ISemProcessSupport.mode // instance |
|
Semaphore mode. Default is COUNTING
DETAILS
When mode is BINARY , the semaphore has only two states, available
and unavailable. When mode is COUNTING, the semaphore keeps track of
number of times a semaphore is posted.
Instance Creation |
|
create(Int count, Int key);
// Create an instance-object
ARGUMENTS
count
initial semaphore count
key
globally unique key
DETAILS
This function creates a new
SemProcess object which is
initialized to count.
All semaphores created with the same key reference the same
underlying synchronization object and work between processes. The
underlying synchronization object should be automatically deleted when
all references to it have been deleted, and the reference count should
be maintained consistently across process forks or similar operations.
An implementation for a platform on which this is technically impossible
(e.g. an operating system that does not support multiple processes) may
provide a 'toy' implementation with behavior matching that of
ISemProcessSupport.
ISemProcessSupport.pend() // instance |
|
Wait for the semaphore to become available
ARGUMENTS
timeout
timeout in microseconds
eb
error block
DETAILS
RETURNS
refer to description above
ISemProcessSupport.post() // instance |
|
Increment the semaphore count
ARGUMENTS
eb
error block
RETURNS
true for success, false for error in error block
generated on Thu, 27 Sep 2012 23:21:08 GMT