#include <nameserver.h> #include <tools.h> void NameServer(){ int TIDSeq[HASH_SIZE]; char Names[HASH_SIZE][NAME_LENGTH_MAX+1]; // initialize Names int i = 0; for(;i<257;i++){ Names[i][NAME_LENGTH_MAX] = 0; } HT HashTable; HashTable.TidSequence = TIDSeq; HashTable.NameSequence = Names; HashTable.size = HASH_SIZE; Buffer SendQ; int storage[MAX_NUM_BUFFER]; SendQ.Storage = (void *)(storage); SendQ.size = MAX_NUM_BUFFER; SendQ.Head = 0; SendQ.Tail = 0; SendQ.Length = 0; // some sort of while loop to receive and reply } int ActualWhoIS(AP* Args){ asm volatile ("swi 9\n\t"); register int r0 asm ("r0"); int R = r0; return R; } int WhoIs(char* Name) { NSReqMsg SendMsg, ReplyMsg; int Status; AP Args; SendMsg.MsgType = WhoIs; stringCopy(SendMsg.Msg, Name, NS_MESSAGE_MAX_LENGTH); Args.arg0 = SendMsg; Args.arg1 = sizeof(NSMsg); Args.arg2 = ReplyMsg; Args.arg3 = sizeof(NSMsg); Status = ActualWhoIS(&Args) if (Status == sizeof(NSMsg)) return ReplyMsg.TaskID; else return NAMESERVER_TID_INVALID; } int ActualRegAS(AP* Args){ asm volatile ("swi 10\n\t"); register int r0 asm ("r0"); int R = r0; return R; } int RegisterAs (char* Name) { NSReqMsg SendMsg, ReplyMsg; int Status; AP Args; SendMsg.MsgType = RegisterAs; stringCopy(SendMsg.Msg, Name, NS_MESSAGE_MAX_LENGTH); Args.arg0 = SendMsg; Args.arg1 = sizeof(NSMsg); Args.arg2 = ReplyMsg; Args.arg3 = sizeof(NSMsg); Status = ActualRegAS(&Args); if (Status == sizeof(NSMsg)) return SUCCESS; else return NAMESERVER_TID_INVALID; }