00001 #ifndef _IPC_Q_LIB_HH_
00002 #define _IPC_Q_LIB_HH_
00003
00004 #include <sys/types.h>
00005
00006 #include <SUNRT/clock.h>
00007
00008 class ipcQClass {
00009 public:
00010 ipcQClass(int id, int create=1, u_short node_id=0) ;
00011 ~ipcQClass() ;
00012
00013 void dup(int tsk, int create=1, u_short node_id=0) ;
00014
00015 int send(void *ptr, int bytes, int tmout) ;
00016 int receive(void *ptr, int bytes, int tmout) ;
00017 int peek(void) ;
00018 static ipcQClass *find(u_short node, int task, int crea=0) ;
00019
00020 int task ;
00021 u_short node ;
00022
00023 u_int snd_seq ;
00024 u_int rcv_seq ;
00025
00026 u_int snd_ticks[4] ;
00027 u_int rcv_ticks[4] ;
00028 u_int msg_ticks[4] ;
00029
00030 u_char snd_blocked, rcv_blocked ;
00031
00032 static class ipcQClass *daqTasks[256] ;
00033
00034 static struct ipcQStruct {
00035 ipcQClass *que ;
00036 u_short node ;
00037 int task ;
00038 } queue_list[256] ;
00039 static u_int queue_num ;
00040
00041
00042 private:
00043 static const u_int ticker(void) { return getCpuCycle() ; } ;
00044 int ipc_qid ;
00045 key_t key ;
00046 } ;
00047
00048 #endif