⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nettest.cc

📁 Nachos platform for Ubuntu
💻 CC
字号:
// nettest.cc //	Test out message delivery between two "Nachos" machines,//	using the Post Office to coordinate delivery.////	Two caveats://	  1. Two copies of Nachos must be running, with machine ID's 0 and 1://		./nachos -m 0 -o 1 &//		./nachos -m 1 -o 0 &////	  2. You need an implementation of condition variables,//	     which is *not* provided as part of the baseline threads //	     implementation.  The Post Office won't work without//	     a correct implementation of condition variables.//// Copyright (c) 1992-1993 The Regents of the University of California.// All rights reserved.  See copyright.h for copyright notice and limitation // of liability and disclaimer of warranty provisions.#include "copyright.h"#include "system.h"#include "network.h"#include "post.h"#include "interrupt.h"// Test out message delivery, by doing the following://	1. send a message to the machine with ID "farAddr", at mail box #0//	2. wait for the other machine's message to arrive (in our mailbox #0)//	3. send an acknowledgment for the other machine's message//	4. wait for an acknowledgement from the other machine to our //	    original messagevoidMailTest(int farAddr){    PacketHeader outPktHdr, inPktHdr;    MailHeader outMailHdr, inMailHdr;    char *data = "Hello there!";    char *ack = "Got it!";    char buffer[MaxMailSize];    // construct packet, mail header for original message    // To: destination machine, mailbox 0    // From: our machine, reply to: mailbox 1    outPktHdr.to = farAddr;		    outMailHdr.to = 0;    outMailHdr.from = 1;    outMailHdr.length = strlen(data) + 1;    // Send the first message    postOffice->Send(outPktHdr, outMailHdr, data);     // Wait for the first message from the other machine    postOffice->Receive(0, &inPktHdr, &inMailHdr, buffer);    printf("Got \"%s\" from %d, box %d\n",buffer,inPktHdr.from,inMailHdr.from);    fflush(stdout);    // Send acknowledgement to the other machine (using "reply to" mailbox    // in the message that just arrived    outPktHdr.to = inPktHdr.from;    outMailHdr.to = inMailHdr.from;    outMailHdr.length = strlen(ack) + 1;    postOffice->Send(outPktHdr, outMailHdr, ack);     // Wait for the ack from the other machine to the first message we sent.    postOffice->Receive(1, &inPktHdr, &inMailHdr, buffer);    printf("Got \"%s\" from %d, box %d\n",buffer,inPktHdr.from,inMailHdr.from);    fflush(stdout);    // Then we're done!    interrupt->Halt();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -