00001
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _RTEMS_SCORE_MPPKT_H
00023 #define _RTEMS_SCORE_MPPKT_H
00024
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037
00038 #include <rtems/score/object.h>
00039 #include <rtems/score/priority.h>
00040 #include <rtems/score/watchdog.h>
00041
00049 typedef enum {
00050 MP_PACKET_MPCI_INTERNAL = 0,
00051 MP_PACKET_TASKS = 1,
00052 MP_PACKET_MESSAGE_QUEUE = 2,
00053 MP_PACKET_SEMAPHORE = 3,
00054 MP_PACKET_PARTITION = 4,
00055 MP_PACKET_REGION = 5,
00056 MP_PACKET_EVENT = 6,
00057 MP_PACKET_SIGNAL = 7
00058 } MP_packet_Classes;
00059
00063 #define MP_PACKET_CLASSES_FIRST MP_PACKET_MPCI_INTERNAL
00064
00068 #define MP_PACKET_CLASSES_LAST MP_PACKET_SIGNAL
00069
00078 typedef struct {
00080 MP_packet_Classes the_class;
00082 Objects_Id id;
00084 Objects_Id source_tid;
00086 Priority_Control source_priority;
00088 uint32_t return_code;
00090 uint32_t length;
00092 uint32_t to_convert;
00094 Watchdog_Interval timeout;
00095 } MP_packet_Prefix;
00096
00100 #define MP_PACKET_MINIMUM_PACKET_SIZE 64
00101
00109 #define MP_PACKET_MINIMUN_HETERO_CONVERSION \
00110 ( sizeof( MP_packet_Prefix ) / sizeof( uint32_t ) )
00111
00112 #ifndef __RTEMS_APPLICATION__
00113 #include <rtems/score/mppkt.inl>
00114 #endif
00115
00116 #ifdef __cplusplus
00117 }
00118 #endif
00119
00122 #endif
00123