📄 ki_util.c
字号:
#include "kernel_interface.h"#ifndef __TCS__#include <sys/types.h>#include <sys/ipc.h>#include <sys/shm.h>#include <signal.h>static struct { DIRECTORY directory; QUEUE queues[SMEM_MAXNODES + 1];} *unix_shared_mem;#define KEY_VAL 0x23450974#endif/***********************************************//* init_shmem: initialize shared memory *//* INPUTS: *//* RETURNS: *//***********************************************/ULONG init_shmem(){#ifndef __TCS__ int shmid; char msg[50]; /* create DIRECTORY shared memory segment */ shmid = shmget(KEY_VAL,sizeof(*unix_shared_mem),IPC_CREAT|0x1ff); if(shmid==-1) { sprintf(msg,"shmget DIRECTORY failed: node %d",My_Node); perror(msg); return FAT_SHM; } /* attach to DIRECTORY shared memory segment */ unix_shared_mem = (void *)shmat(shmid,0,0); if((int)unix_shared_mem==-1) { sprintf(msg,"shmat DIRECTORY failed: node %d",My_Node); perror(msg); return FAT_SHM; } k_directory = &(unix_shared_mem->directory); k_queues = (unix_shared_mem->queues);#endif return 0;}/***********************************************//* ki_bcopy: copy packet from shared memory *//* queue of one node to another *//* INPUTS: source packet *//* destination packet *//* length of packet *//* RETURNS: *//***********************************************/extern void ki_bcopy(ULONG *src, ULONG *dst, ULONG length){ memcpy(dst,src,length);}struct arglist { ULONG arg1; ULONG arg2; ULONG arg3; ULONG arg4; ULONG arg5; ULONG arg6; ULONG arg7; ULONG arg8;};ULONG CALL_ENTRY(void (*svcj_tab)(), ULONG func, struct arglist *args, void *pks){ return svc_call(func,args->arg1,args->arg2,args->arg3,args->arg4,args->arg5, args->arg6,args->arg7,args->arg8,pks);}void xfatal_err(ULONG fcode, ULONG origin){ _k_fatal(fcode,origin);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -