📄 kernel_interface.h
字号:
#ifndef _PSOSM_H_#define _PSOSM_H_#include <stdarg.h>#include <sysvars.h>#include <psos.h>#include <sys_conf.h>#include "errno.h"#ifndef __TCS__#include <sys/signal.h>#endif#ifdef __TCS__#define KI_INT intRTOS#else#define KI_INT SIGUSR2#endif/*************************************//* SMKI Symbol Definitions *//*************************************/#ifndef MC_KIMAXNODES #define MC_KIMAXNODES 8#endif#ifndef MC_KINENVELOPES #define MC_KINENVELOPES 100#endif#define SMEM_MAXNODES MC_KIMAXNODES /* max number of nodes */#define NENVELOPES MC_KINENVELOPES /* number of envelopes per queue */#define MASTER 1 /* master node number */#define SPIN_VAL 500 /* Timeout value used in software spin loops */#define OFFSET(type, field) ((ULONG)(&((type *)0)->field)) /* Macro to calculate the offset of an item in a struct *//*************************************//* Function Code Definitions *//*************************************/#define KI_INIT 1 /* initialize KI interface */#define KI_GETPKB 2 /* get a packet buffer */#define KI_RETPKB 3 /* return a packet buffer */#define KI_SEND 4 /* send a packet to a node */#define KI_BROADCAST 5 /* broadcast a packet - OBSOLETE */#define KI_RECEIVE 6 /* receive a packet */#define KI_TIME 7 /* indicate a tick has gone by */#define KI_CHECK 8 /* poll for packets */#define KI_ROSTER 9 /* roster notification routine *//*************************************//* Fatal Error Definitions *//*************************************/#define FAT_LTO 0xC0000003 /* lock timeout */#define FAT_NOPB 0xC0000004 /* no packet buffers */#define FAT_NOQ 0xC0000005 /* no queue */#define FAT_NOTSUPP 0xC0000006 /* service not supported */#define FAT_BINSTALL 0xC0000007 /* cannot install bus error handler */#define FAT_BERROR 0xC0000008 /* bus error - cannot access node */#define FAT_NOD 0xC0000009 /* number of nodes > max nodes */#define FAT_SHM 0xC0000010 /* failed to set up shared memory */#define FAT_QUEUE 0xC0000011 /* error in init_queue */#define FAT_ROSTER 0xC0000012 /* error in init_roster */#define FAT_SIG 0xC0000013 /* error in signal *//*************************************//* SMKI Structure Definitions *//*************************************//*---------------------------------------------------------------------*//* ENVELOPE Structure Definition *//*---------------------------------------------------------------------*/typedef struct { ULONG source; ULONG index; ULONG next; /* index of next buffer in list */ ULONG packet[(MC_KIMAXBUF+3)/4]; /* buffer data */} ENVELOPE;/*---------------------------------------------------------------------*//* QUEUE Structure Definition *//*---------------------------------------------------------------------*/typedef struct { ULONG msg_head; /* Head of message list (index) */ ULONG msg_tail; /* Tail of message list (index) */ ULONG free_head; /* Head of free list (index) */ ULONG mq_lock[SMEM_MAXNODES + 1];/* Access lock for message list */ ULONG fq_lock[SMEM_MAXNODES + 1];/* Access lock for free list */ ENVELOPE envelope[NENVELOPES]; /* The envelope pool */} QUEUE;/*---------------------------------------------------------------------*//* DIRECTORY Structure Definition *//*---------------------------------------------------------------------*/typedef struct { QUEUE *queue_addr[SMEM_MAXNODES + 1];} DIRECTORY;extern ULONG My_Node; #ifdef __TCS__ extern DIRECTORY k_directory; extern QUEUE k_queue; #define Dir (&k_directory) #define My_Queue (&k_queue) #else extern DIRECTORY *k_directory; extern QUEUE *k_queues; #define Dir k_directory #define My_Queue (&(k_queues[My_Node]))#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -