VxMP is a VxWorks component that provides shared-memory objects dedicated to high-speed synchronization and communication between tasks running in separate instances of VxWorks. ================================= 啥叫"separate instances of VxWorks."
Shared-memory objects are a class of system objects that can be accessed by tasks running on different processors accessible by all processors. ===================================== P4080所有8個核都能訪問這塊內存? Shared-memory objects are an extension of local VxWorks objects. Local objects are only available to tasks on a single processor. ================================================================ local Vxworks object只能訪問單個核上的數據 VxMP supplies the following types of shared-memory objects: ■ shared semaphores (binary and counting) ■ shared message queues ■ shared-memory partitions (system- and user-created partitions) ====================================================== semaphore, message queue, share-memory partitions Shared-memory objects provide the following advantages: ■ A transparent interface that allows shared-memory objects to be manipulated with the same routines that are used for manipulating local objects. ■ High-speed inter-processor communication—no going through an unnecessary network stack. ■ The shared memory can reside either in dual-ported RAM or on a separate memory board. ====================================================== 用操作localobject的routine操作share-memory的object processor之間快速交互 最后一個是啥... VxMP consists of the following facilities: a name database (smNameLib), task synchronization and resource tracking with semaphores (semSmLib), messaging with message queues (msgQSmLib) to build a custom protocol, a shared-memory allocator (smMemLib). ======================================================= VxMP只能用在kernel space,不能用於SMP VxMP提供創建shared memory object的API,返回object ID.這個object ID用於identify這個 object,而且是global to the VxMP system, regardless of the CPU from which it is accessed. After a shared-memory object is created, kernel tasks can operate on it with the same routines used for the corresponding local object. Such as: semGive( ), semTake( ), msgQSend( ), msgQReceive( ), memPartAlloc( ), and memPartFree( ) to operate on both types of objects. Kernel tasks on any CPU can create and use shared-memory objects. No processor has priority over another from a shared-memory object’s point of view ================================================================== 對shared memory object來說,所有CPU都是平等的. Shared-memory object cannot used at interrupt level. Note that shared-memory objects are allocated from dedicated shared-memory pools, and cannot be deleted. ======================================================= ISR不能調用使用shared-memory object的routione. Shared-memory object 不能刪除.