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

📄 gossip.c

📁 改进的基于6个mips核的NOC网络
💻 C
字号:
/**************************************************************** *  TU Eindhoven, Eindhoven, The Netherlands, November 2003 *  Author  :   Mathijs Visser *              (Mathijs.Visser@student.tue.nl) *  Purpose :   Test transmission and reception between minimipses *              on a 2-by-2 network. ****************************************************************/#include "mtools.h"     /* Needed for: mprintf()                    */#include "stdcomm.h"    /* Needed for: sc_receive() and sc_send()   */#ifdef CC_I386  /*gcc on i386 */#include <stdio.h>#include <stdlib.h>#endif/* Enable the following line to generate extra info using mprintf(). */#define DEBUGint my_node_number;int rela_dest_addr;char received_str[18] =     "                 ";char send_str[18] =         "I know something!";#ifdef CC_I386  /* gcc on i386/PC */#define CHANGE_ENDIAN(value)\ ((( (value) & (unsigned long)(0x000000FF)) << 24) | \  (( (value) & (unsigned long)(0x0000FF00)) << 8) | \  (( (value) & (unsigned long)(0x00FF0000)) >> 8) | \  (( (value) & (unsigned long)(0xFF000000)) >> 24))int main(int argc, char* argv[]){        FILE *fi; /* Stream pointer of file containing node numbers and destinations.*/        /* Verify that the file "node_info.bin" exists.*/        fi = fopen("node_info.bin","rb");        if (fi == NULL) {                fprintf(stderr, "ERROR: Could not open \"%s\"!\n", argv[0]);                exit(1);        };        fseek(fi, 0L, SEEK_END); /* determine file size: max node number is based on it. */        /* File opened successfully, check arguments.*/        if (argc != 2) {            fprintf(stderr, "ERROR: Invalid usage!\n");            fprintf(stderr, "tip: Specify the node number of this node (0 up to %ld).\n", ftell(fi)/8-1);            fclose(fi);            exit(1);        };        if (atoi(argv[1]) > ftell(fi)/8-1) {            fprintf(stderr, "ERROR: No info for this node in \"%s\"!\n", argv[0]);            fprintf(stderr, "tip: Specify the node number from 0 up to and including %ld.\n", ftell(fi)/8-1);            fclose(fi);            exit(1);        };        fseek(fi, atoi(argv[1])*8, SEEK_SET);        fread(&my_node_number, sizeof(int), 1, fi);        my_node_number = CHANGE_ENDIAN(my_node_number); /* Convert from little endian to big endian */        fread(&rela_dest_addr, sizeof(int), 1, fi);        rela_dest_addr = CHANGE_ENDIAN(rela_dest_addr); /* Convert from little endian to big endian */        fclose(fi);#else /*lcc on mMips */void main (void){        my_node_number =  *((int *)0x00);        rela_dest_addr = *((int *)0x04);#endif        #ifdef DEBUG        mprintf("\nNode %d up and running!\n", my_node_number);        #endif        if (my_node_number == 0x00) {            /* First node sends first, listens thereafter.*/            sc_send(rela_dest_addr, send_str, 19);            #ifdef DEBUG            mprintf("I sent:    \"%s\"\n", send_str);            #endif            sc_receive(received_str, 19);            #ifdef DEBUG            mprintf("I received:\"%s\"\n", received_str);            #endif        } else {            /* This node waits for a message and then fowards it.*/            sc_receive(received_str, 19);            #ifdef DEBUG            mprintf("I received: \"%s\"\n", received_str);            #endif            sc_send(rela_dest_addr, received_str, 19);            #ifdef DEBUG            mprintf("Successfully forwarded the message.\n");            #endif        };                #ifdef DEBUG        mprintf("Let's call it a day!\n");        #endif        #ifdef CC_I386  /* gcc on i386/PC */        return 0;        #endif}

⌨️ 快捷键说明

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