Exemple #1
0
int main (int argc, char *argv[])
{
        struct pe_vars v;
	long * msg_buffer;
	/*
	 * Initialize
	 */
	init_mpi(&v);
	check_usage(argc, argv, v.npes, v.me);
	print_header(v.me);

	if (v.me == 0) printf("Total processes = %d\n",v.npes);
	/*
	 * Allocate Memory
	 */
	msg_buffer = allocate_memory(v.me, &(v.win) );
	memset(msg_buffer, 0, MAX_MSG_SZ * ITERS_LARGE * sizeof(long));
	/*
	 * Time Put Message Rate
	 */
	benchmark(msg_buffer, v.me, v.pairs, v.nxtpe, v.win);
	/*
	 * Finalize
	 */
	MPI_Win_unlock_all(v.win);
	MPI_Win_free(&v.win); 	
	MPI_Free_mem(msg_buffer);

	MPI_Finalize();

	return EXIT_SUCCESS;
}
int main(int argc, char * argv[])
{
    check_usage(argc, argv);
    unsigned int value = atoi(argv[1]);
    printf("%d\n", bitcount(value));
    return 0;
}
Exemple #3
0
int relabsd_config_parse
(
   struct relabsd_config * const conf,
   int const argc,
   char * const * const argv
)
{
   RELABSD_S_DEBUG(RELABSD_DEBUG_PROGRAM_FLOW, "Parsing config & params...");

   if (check_usage(argc, argv) < 0)
   {
      return -1;
   }

   if (argc == 3)
   {
      conf->device_name = NULL;

      RELABSD_S_DEBUG
      (
         RELABSD_DEBUG_CONFIG,
         "No virtual device name param, will use the real device's."
      );
   }
   else
   {
      conf->device_name = argv[3];

      RELABSD_DEBUG
      (
         RELABSD_DEBUG_CONFIG,
         "Virtual device name param set to '%s'.",
         conf->device_name
      );
   }

   conf->input_file = argv[1];

   RELABSD_DEBUG
   (
      RELABSD_DEBUG_CONFIG,
      "Using configuration file '%s'.",
      conf->input_file
   );

   init_axes_config(conf);

   if (read_config_file(conf, argv[2]) < 0)
   {
      return -1;
   }

   return 0;
}
Exemple #4
0
void mexFunction(int nlhs, mxArray *plhs[],
                 int nrhs, const mxArray *prhs[])
{
    /*-- input --*/
    const mwSize *dim = mxGetDimensions(prhs[0]);
    int is_3D = (dim[1] == 3);
    double *d_dims = mxGetPr(prhs[0]);
	
	mexSetTrapFlag(1); /* bail to Matlab prompt on mexCallMATLAB error control MATLAB's response to errors in mexCallMATLAB, 1=>On error, control returns to your MEX-file

    /*-- check command arguments --*/
    if (check_usage(nlhs, plhs, nrhs, prhs) == 0) //check that 
        return;



    uint dims[3] = { d_dims[0], d_dims[1], (is_3D? d_dims[2] : 1) };
    mwSize dims_m[3] = { d_dims[0], d_dims[1], (is_3D? d_dims[2] : 1) };
    uint N = mxGetScalar(prhs[1]);
    uint label_cnt = mxGetScalar(prhs[2]);
    m_R_fn = (mxArray *)prhs[3];
    m_B_fn = (mxArray *)prhs[4];
    V = mxGetPr(prhs[5]);


    /*-- weight calculation call backs --*/
    m_label = mxCreateDoubleScalar(-1);
    label = mxGetPr(m_label);
    MALLOC_SET(mxArray *, m_R_w, label_cnt);


    /* compute neighbor weights */
    m_e = mxCreateNumericMatrix(3, 1, mxDOUBLE_CLASS, mxREAL);


    /*-- graph cut --*/
    uint *map = graphchop(dims, N, label_cnt, R_fn, B_fn, V);

    /*-- output --*/
    plhs[0] = mxCreateNumericArray(3, dims_m, mxUINT32_CLASS, mxREAL);
    memcpy(mxGetData(plhs[0]), map, dims[0]*dims[1]*dims[2]*sizeof(*map));

    /*-- clean up --*/
    for (uint i = 0; i < label_cnt; i++)
        mxDestroyArray(m_R_w[i]);
    JM_FREE(m_R_w);
    mxDestroyArray(m_B_w);
    mxDestroyArray(m_label);
    mxDestroyArray(m_e);
    JM_FREE(map);
}
int
main (int argc, char *argv[])
{
    int i;
    struct pe_vars v;
    union data_types * msg_buffer;
    int use_heap;

    /*
     * Initialize
     */
    v = init_openshmem();
    check_usage(v.me, v.npes, argc, argv);

    for (i = 0; i < _SHMEM_REDUCE_SYNC_SIZE; i += 1) {
        psync1[i] = _SHMEM_SYNC_VALUE;
        psync2[i] = _SHMEM_SYNC_VALUE;
    }
    shmem_barrier_all();

    print_header(v.me);

    /*
     * Allocate Memory
     */
    use_heap = !strncmp(argv[1], "heap", 10);
    msg_buffer = allocate_memory(v.me, use_heap);
    memset(msg_buffer, 0, sizeof(union data_types [ITERATIONS]));

    /*
     * Time Put Message Rate
     */
    benchmark(v, msg_buffer);

    /*
     * Finalize
     */
    if (use_heap) {
        shfree(msg_buffer);
    }
    
    return EXIT_SUCCESS;
}
Exemple #6
0
int main(int argc, char* argv[]) {

	long thread_index;
	int i;
	double start, end;

	check_usage(argc);
	number_of_threads = atoi(argv[1]);
	check_perfect_square(number_of_threads);

	pthread_t* thread_handles;
	thread_handles = malloc( number_of_threads * sizeof *thread_handles );

	Lab1_loadinput( &matrix_a,
			&matrix_b,
			&matrix_size );

	matrix_c = malloc( matrix_size * sizeof *matrix_c);
	for(i = 0; i < matrix_size; i++)
		matrix_c[i] = malloc( matrix_size * sizeof *matrix_c[i]);

	GET_TIME(start);

	for(thread_index=0; thread_index < number_of_threads; thread_index++)
		pthread_create( &thread_handles[thread_index],
				NULL,
				threadfunc,
				(void*) thread_index );

	for(thread_index=0; thread_index < number_of_threads; thread_index++)
		pthread_join( thread_handles[thread_index], NULL );

	GET_TIME(end);
	Lab1_saveoutput( matrix_c, &matrix_size, (end-start) );

	for(i = 0; i < matrix_size; i++) {
		free(matrix_a[i]); free(matrix_b[i]); free(matrix_c[i]);
	}
	free(matrix_a); free(matrix_b); free(matrix_c);
	free(thread_handles);

	exit(EXIT_SUCCESS);
}
int main(int argc, char** argv)
{
	/* Local variables */
	unsigned char buf[BUF_SIZE];
	unsigned short l, l2;
	FILE* in;

	/* Make sure usage is correct */
	check_usage(argc, argv);

	/* Open and check log file */
	in = open_file(argv[1], "r");

	/* Read the next entry size */
	fread(&l2, 1, sizeof(unsigned short), in);
	l = ntohs(l2);
	while (!feof(in)) {
		/* Sanity-check the entry size */
		if (l == 0) {
			fprintf(stderr, "Error: got entry size=0\n");
			exit_program(-1);
		} else if (l > BUF_SIZE) {
			fprintf(stderr,
				"Error: got entry size %u > BUF_SIZE=%u\n",
				l, BUF_SIZE);
			exit_program(-2);
		}

		/* Read in the entry */
		fread(buf, l, sizeof(*buf), in);

		printf("Entry size=%d, code=0x%X\n", l, buf[0]);

		/* Read the next entry size */
		fread(&l2, 1, sizeof(unsigned short), in);
		l = ntohs(l2);
	}

	exit_program(0);
	return 0;
}
Exemple #8
0
static int rmmod(int log, int verbose, const char *path, int flags)
{
	long ret;
	char name[strlen(path) + 1];

	filename2modname(name, path);

	if ((flags & O_NONBLOCK) && !(flags & O_TRUNC)) {
		if (check_usage(log, name) != 0)
			return 1;
	}

	info(log, "rmmod %s, wait=%s%s\n", name,
	     (flags & O_NONBLOCK) ? "no" : "yes",
	     (flags & O_TRUNC) ? " force" : "");

	ret = delete_module(name, flags);
	if (ret != 0)
		error(log, "Removing '%s': %s\n", name, strerror(errno));
	return ret;
}
Exemple #9
0
int
main (int argc, char *argv[])
{
    struct pe_vars v;
    long * msg_buffer, * aligned_buffer;
    long alignment;
    int use_heap;

    /*
     * Initialize
     */
    v = init_openshmem();
    check_usage(v.me, v.npes, argc, argv);
    print_header(v.me);

    if (v.me == 0) printf("Total processes = %d\n",v.npes);
    /*
     * Allocate Memory
     */
    use_heap = !strncmp(argv[1], "heap", 10);
    alignment = use_heap ? sysconf(_SC_PAGESIZE) : 4096;
    msg_buffer = allocate_memory(v.me, alignment, use_heap);
    aligned_buffer = align_memory((unsigned long)msg_buffer, alignment);
    memset(aligned_buffer, 0, MAX_MSG_SZ * ITERS_LARGE);

    /*
     * Time Put Message Rate
     */
    benchmark(v, aligned_buffer);

    /*
     * Finalize
     */
    if (use_heap) {
        shfree(msg_buffer);
    }
    
    return EXIT_SUCCESS;
}
Exemple #10
0
int main(int argc, char **argv) {
    check_usage(argc);

    const char *inputfn = argv[1];
    size_t inputfnlen = strlen(inputfn);
    char *outputfn = malloc(inputfnlen + 2 + 1);
    if (outputfn == NULL) {
        error("Could not allocate space for filename.", NULL);
        return 1;
    }

    strncpy(outputfn, inputfn, inputfnlen);
    outputfn[inputfnlen] = '.';
    outputfn[inputfnlen + 1] = 'o';
    outputfn[inputfnlen + 2] = 0;

    FILE *input = open_file(inputfn, "r");
    FILE *output = open_file(outputfn, "wb+");
    assemble_file(input, output);
    fclose(input);
    fclose(output);
}
Exemple #11
0
int main(int argc, char *argv[])
{
	int ch, err;
	struct dnet_node *n = NULL;
	struct dnet_config cfg;
	char *remote_addr = NULL;
	int remote_port = -1;
	int remote_family = -1;
	char *logfile = default_log;
	int daemonize = 0;
	FILE *log = NULL;
	struct dnet_check_request r, *req, *req2;
	struct tm tm;
	char *file = NULL;
	int group_num = 0, *groups;
	char *ns = NULL;
	int nsize = 0;
	struct dnet_session *s;

	memset(&cfg, 0, sizeof(struct dnet_config));

	cfg.wait_timeout = INT_MAX;
	check_logger.log_level = DNET_LOG_INFO;
	cfg.check_timeout = 60;

	memset(&tm, 0, sizeof(tm));

	memset(&r, 0, sizeof(r));

	r.thread_num = 1;

	while ((ch = getopt(argc, argv, "b:B:DN:f:n:t:u:U:MRm:w:l:dr:g:h")) != -1) {
		switch (ch) {
			case 'b':
				r.blob_start = atoi(optarg);
				break;
			case 'B':
				r.blob_num = atoi(optarg);
				break;
			case 'N':
				ns = optarg;
				nsize = strlen(optarg);
				break;
			case 'f':
				file = optarg;
				break;
			case 'n':
				r.thread_num = atoi(optarg);
				if (r.thread_num > 1)
					fprintf(stderr, "You are going to run your recovery process with %d threads, "
							"this can heavily screw up your system performance.\n", r.thread_num);
				break;
			case 't':
				if (!strptime(optarg, "%F %T", &tm)) {
					fprintf(stderr, "Invalid timestamp string in -t\n");
					check_usage(argv[0]);
					return -EINVAL;
				}
				r.timestamp = mktime(&tm);
				break;
			case 'u':
				if (!strptime(optarg, "%F %T", &tm)) {
					fprintf(stderr, "Invalid timestamp string in -u\n");
					check_usage(argv[0]);
					return -EINVAL;
				}
				r.updatestamp_start = mktime(&tm);
				break;
			case 'U':
				if (!strptime(optarg, "%F %T", &tm)) {
					fprintf(stderr, "Invalid timestamp string in -U\n");
					check_usage(argv[0]);
					return -EINVAL;
				}
				r.updatestamp_stop = mktime(&tm);
				break;
			case 'D':
				r.flags |= DNET_CHECK_DRY_RUN;
				break;
			case 'M':
				r.flags |= DNET_CHECK_MERGE;
				break;
//			case 'F':
//				r.flags |= DNET_CHECK_FULL;
//				break;
			case 'R':
				r.flags |= DNET_CHECK_DELETE;
				break;
			case 'm':
				check_logger.log_level = strtoul(optarg, NULL, 0);
				break;
			case 'w':
				cfg.check_timeout = cfg.wait_timeout = atoi(optarg);
				break;
			case 'l':
				logfile = optarg;
				break;
			case 'd':
				daemonize = 1;
				break;
			case 'r':
				err = dnet_parse_addr(optarg, &remote_port, &remote_family);
				if (err)
					return err;
				remote_addr = optarg;
				break;
			case 'g':
				group_num = dnet_parse_groups(optarg, &groups);
				if (group_num <= 0)
					return -1;
				break;
			case 'h':
			default:
				check_usage(argv[0]);
				return -1;
		}
	}

	if (!remote_addr) {
		fprintf(stderr, "No remote node specified to route requests.\n");
		return -ENOENT;
	}

	log = fopen(logfile, "a");
	if (!log) {
		err = -errno;
		fprintf(stderr, "Failed to open log file %s: %s.\n", logfile, strerror(errno));
		return err;
	}

	if (daemonize) {
		if (logfile == default_log) {
			fprintf(stderr, "You should specify log file for daemon mode\n");
		} else {
			dnet_background();
		}
	}

	check_logger.log_private = log;
	check_logger.log = dnet_common_log;
	cfg.log = &check_logger;

	n = dnet_node_create(&cfg);
	if (!n)
		return -1;

	err = dnet_add_state(n, remote_addr, remote_port, remote_family, DNET_CFG_NO_ROUTE_LIST);
	if (err)
		return err;

	s = dnet_session_create(n);
	if (!s)
		return -ENOMEM;

	err = dnet_session_set_ns(s, ns, nsize);
	if (err)
		return err;

	req = &r;
	if (file) {
		req = dnet_check_gen_request(s, &r, file);
		if (!req)
			return -EINVAL;
	}

	if (group_num > 0) {
		req2 = malloc(sizeof(struct dnet_check_request) + req->obj_num * sizeof(struct dnet_id) + group_num * sizeof(int));
		if (!req2)
			return -ENOMEM;

		memcpy(req2, req, sizeof(struct dnet_check_request) + req->obj_num * sizeof(struct dnet_id));
		memcpy((char *)req2 + sizeof(struct dnet_check_request) + req->obj_num * sizeof(struct dnet_id), groups,
				group_num * sizeof(int));
		req2->group_num = group_num;

		req = req2;
	}

	return dnet_request_check(s, req);
}
Exemple #12
0
int main(int argc, char** argv)
{
	/* Local variables */
	struct sockaddr_nl proc_addr, kern_addr;	// addrs for recv, send, bind
	struct cn_msg *cmsg;
	char buf[5000000];
	int ret;
	unsigned short l, l2;
	int count = 0;

	/* Make sure usage is correct */
	check_usage(argc, argv);

	/* Open and check log file */
	out = open_file(argv[1], "w");

	/* Setup the socket */
	sock_fd = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_CONNECTOR);
	if (sock_fd == -1)
		exit_program_err(-1, "socket");

	/* Initialize the address structs */
	memset(&proc_addr, 0, sizeof(struct sockaddr_nl));
	proc_addr.nl_family = AF_NETLINK;
	proc_addr.nl_pid = getpid();			// this process' PID
	proc_addr.nl_groups = CN_IDX_IWLAGN;
	memset(&kern_addr, 0, sizeof(struct sockaddr_nl));
	kern_addr.nl_family = AF_NETLINK;
	kern_addr.nl_pid = 0;					// kernel
	kern_addr.nl_groups = CN_IDX_IWLAGN;

	/* Now bind the socket */
	if (bind(sock_fd, (struct sockaddr *)&proc_addr, sizeof(struct sockaddr_nl)) == -1)
		exit_program_err(-1, "bind");

	/* And subscribe to netlink group */
	{
		int on = proc_addr.nl_groups;
		ret = setsockopt(sock_fd, 270, NETLINK_ADD_MEMBERSHIP, &on, sizeof(on));
		if (ret)
			exit_program_err(-1, "setsockopt");
	}

	/* Set up the "caught_signal" function as this program's sig handler */
	signal(SIGINT, caught_signal);

	/* Poll socket forever waiting for a message */
	while (1)
	{
		/* Receive from socket with infinite timeout */
		ret = recv(sock_fd, buf, sizeof(buf), 0);
		if (ret == -1)
			exit_program_err(-1, "recv");
		/* Pull out the message portion and print some stats */
		cmsg = NLMSG_DATA(buf);
		if (count % SLOW_MSG_CNT == 0)
                {
			// printf("received %d bytes: id: %d val: %d seq: %d clen: %d\n", cmsg->len, cmsg->id.idx, cmsg->id.val, cmsg->seq, cmsg->len);
                }
		/* Log the data to file */
		l = (unsigned short) cmsg->len;
		l2 = htons(l);
		fwrite(&l2, 1, sizeof(unsigned short), out);
		ret = fwrite(cmsg->data, 1, l, out);
                fflush(out);
                /*
		if (count % SLOW_MSG_CNT == 0)
                {
			printf("wrote %d bytes [msgcnt=%u]\n", ret, count);
                }
                */
		++count;
		if (ret != l)
			exit_program_err(1, "fwrite");
	}

	exit_program(0);
	return 0;
}
Exemple #13
0
int main(int arg, char *argv[])
{
    int i, j;
    int len, daemon;
    struct in_addr ad;
    char *tmpstr, *tmp, *os, c[5];
    char token[50], tty[20], cout[20], major[20], del[50];
    FILE *f, *ft;

    if (check_usage(arg, argv) != 0)
    {
        return 0;
    }

    system("clear");
    printf("\nDelete Server ...\n");

    idx = 0;
    daemon = 0;
    tmpstr = (char *)malloc(1024);
    len = 1024;
    tmp = (char *)malloc(20);

    if (arg == 2)
    {

        sprintf(del, "%s", argv[1]);
        sprintf(tmpstr, "%s/npreal2d.cf", DRIVERPATH);
        f = fopen (tmpstr, "r");
        if (f == NULL)
        {
            printf("file open error\n");
            free(tmpstr);
            free(tmp);
            return(0);
        }

        /* search the del server */
        for (;;)
        {
            if (getline (&tmpstr, &len, f) < 0)
            {
                break;
            }
            if (strstr(tmpstr, "#") != NULL)
            {
                continue;
            }
            memset(major, '\0', 20);
            sscanf(tmpstr, "%s", major);
            if (strstr(major, "ttymajor") != NULL ||
                    strstr(major, "calloutmajor") != NULL )
            {
                continue;
            }

            sscanf(tmpstr, "%s%s", token, token);
            if (strcmp(token, del) == 0)
            {
                idx = 1;
                break;
            }
        }
        fclose (f);

        if (idx == 0)
        {
            printf("The speicified ip is not installed.\n\n");
            free(tmpstr);
            free(tmp);
            return 0;
        }

    }
    else
    {

        memset(svrList, 0x0, 256*50);
        memset(total, 0x0, 256*sizeof(int));
        sprintf(tmpstr, "%s/mxcfmat", DRIVERPATH);
        system(tmpstr);

        sprintf(tmpstr, "%s/npreal2d.cf", DRIVERPATH);
        f = fopen (tmpstr, "r");
        if (f == NULL)
        {
            printf("file open error\n");
            free(tmpstr);
            free(tmp);
            return(0);
        }

        /* print the list of installed server */
        for (;;)
        {
            if (getline (&tmpstr, &len, f) < 0)
            {
                break;
            }
            if (strstr(tmpstr, "#") != NULL)
            {
                continue;
            }
            memset(major, '\0', 20);
            sscanf(tmpstr, "%s", major);
            if (strstr(major, "ttymajor") != NULL ||
                    strstr(major, "calloutmajor") != NULL )
            {
                continue;
            }

            sscanf(tmpstr, "%s%s", token, token);
            for (i=0; i<idx; i++)
            {
                if (!strcmp(svrList[i],token))
                {
                    total[i]++;
                    break;
                }
            }
            if (i == idx)
            {
                strcpy(svrList[idx], token);
                total[idx]++;
                idx++;
            }
        }

        fclose (f);

        if (idx == 0)
        {
            printf("No NPort server is installed.\n\n");
            free(tmpstr);
            free(tmp);
            return 0;
        }

        printf("\n[Index]\t%-40s\t[Port(s)]\n", "[Server IP]");
        for (i=0; i<idx; i++)
        {
//    	    ad.s_addr = svrList[i];
            printf("  (%d)\t%-40s\t  %d\n", i+1, svrList[i], total[i]);
        }
printf("  (q)\tExit\n");
        printf("\nSelect: ");
        scanf("%s", c);

        if (atoi(c)<=0 || atoi(c)>idx)
        {
            printf("Please run mxdelsvr again!!\n\n");
            free(tmpstr);
            free(tmp);
            return 0;
        }

        memset(tmp, '\0', 20);
//       GetIP(svrList[atoi(c)-1], tmp);
        strcpy(del, svrList[atoi(c)-1]);
    }

    sprintf(tmpstr, "%s/npreal2d.cf", DRIVERPATH);
    f = fopen (tmpstr, "r");
    if (f == NULL)
    {
        printf("file open error\n");
        free(tmpstr);
        free(tmp);
        return(0);
    }
    ft = fopen ("/tmp/nprtmp_cf", "w");
    if (ft == NULL)
    {
        printf("file open error\n");
        free(tmpstr);
        free(tmp);
        return(0);
    }

    /* delete all device file configured in npreal2d.cf */
    memset(tmpstr, '\0', 1024);
    sprintf(tmpstr, "awk '$0 !~ /#/' %s/npreal2d.cf |", DRIVERPATH);
    sprintf(tmpstr, "%s awk '$7 != \"\" ' |", tmpstr);
    sprintf(tmpstr, "%s awk '$8 != \"\" ' |", tmpstr);
    sprintf(tmpstr, "%s awk '{system(\"%s/mxrmnod \"$7); system(\"%s/mxrmnod \"$8)}'", tmpstr, DRIVERPATH, DRIVERPATH);
    system(tmpstr);

    /* Delete the server selected by user,  */
    /* and remove the relevant device files */
    for (;;)
    {
        if (getline (&tmpstr, &len, f) < 0)
        {
            break;
        }
        if (strstr(tmpstr, "#") != NULL)
        {
            fputs (tmpstr, ft);
            continue;
        }
        memset(major, '\0', 20);
        sscanf(tmpstr, "%s", major);
        if (strstr(major, "ttymajor") != NULL ||
                strstr(major, "calloutmajor") != NULL )
        {
            fputs (tmpstr, ft);
            continue;
        }

        sscanf(tmpstr, "%s%s", token, token);
        if (strcmp(token, del) != 0)
        {
            fputs (tmpstr, ft);

            /* daemon is a flag which is used to delete the */
            /* daemon start string in /etc/rc.d/rc.local */
            daemon = 1;

        }
    }

    fclose(ft);
    fclose (f);

    os = "linux";
    f = fopen ("/etc/redhat-release", "r");
    if (f != NULL)
    {
        fclose(f);
        os = "linux";
    }
    else
    {
        f = fopen ("/etc/SuSE-release", "r");
        if (f != NULL)
        {
            fclose(f);
            os = "SuSE";
        }
        else
        {
            f = fopen ("/etc/debian_version", "r");
            if (f != NULL)
            {
                os = "debian";
            } /* else {
                            printf("Your Operating System is NOT supported.\n\n");
                            free(tmpstr);
                            free(tmp);
                            return -1;
                        } */
        }
    }


    if (!daemon)
    {
        if (os == "linux")
        {
            system("grep -v mxloadsvr /etc/rc.d/rc.local > /tmp/nprtmp_rclocal");
            system("cp -f /tmp/nprtmp_rclocal /etc/rc.d/rc.local > /dev/null 2>&1");
            system("rm -f /tmp/nprtmp_rclocal");

        }
        else if (os == "debian")
        {
            system("grep -v mxloadsvr /etc/init.d/npreals > /tmp/nprtmp_rclocal");
            system("cp -f /tmp/nprtmp_rclocal /etc/init.d/npreals > /dev/null 2>&1");
            system("rm -f /tmp/nprtmp_rclocal");
            system("update-rc.d npreals defaults 90");

        }
        else if (os == "SuSE")
        {
            system("grep -v mxloadsvr /etc/rc.d/boot.local > /tmp/nprtmp_rclocal");
            system("cp -f /tmp/nprtmp_rclocal /etc/rc.d/boot.local > /dev/null 2>&1");
            system("rm -f /tmp/nprtmp_rclocal");

        }
    }

    sprintf(tmpstr, "cp -f /tmp/nprtmp_cf %s/npreal2d.cf", DRIVERPATH);
    system(tmpstr);
    system("rm -f /tmp/nprtmp_cf");

    printf("Deleted server: %s\n\n", del);
    sprintf(tmpstr, "%s/mxloadsvr", DRIVERPATH);
    system(tmpstr);
    if (os == "linux")
    {
        system("chmod +x /etc/rc.d/rc.local");
    }
    else if (os == "debian")
    {
        system("chmod +x /etc/init.d/npreals");
    }
    else if (os == "SuSE")
    {
        system("chmod +x /etc/rc.d/boot.local");
    }


    free(tmpstr);
    free(tmp);
    return 0;
}
int main(int argc, char *argv[]) {
	check_usage(argc);
	init(argv);
	run();
	return 0;
}
Exemple #15
0
int main(int argc, char** argv)
{
  int target = TARGET_UDP_SOCKET;
  int input = INPUT_FILE;
  int output_mode = OUTPUT_MODE_CLICK;

  filter_code = 0xFF;
  filter_rate = 0xFFFF;
  filter_Nrx = 0xFF;

  char *csi_node = "0.0.0.0";
  char *tx_node = "0.0.0.1";

  int debug_level = 0;

  if ( (argc < 5) || ((argc > 1) && (strcmp(argv[1], "help") == 0)) ) {
    print_help();
    exit(0);
  }

  target = io_type(argv[1][2],TARGET);
  input = io_type(argv[1][0],INPUT);
  output_mode = format_type(argv[4][0]);

  printf("Config: %s (%s -> %s) %s %s %s\n", argv[1], input_types[input], output_types[target],
                                             argv[2], argv[3], format_types[output_mode]);

  if ( argc > 5 ) {
    csi_node = argv[5];
    tx_node = argv[6];
  }

  if ( argc > 7 ) {
    debug_level = atoi(argv[7]);
  }

  struct cn_msg *cmsg;
  unsigned char cmsg_input_buf[BUF_SIZE];

  char sendline[3000];
  unsigned char buf[BUF_SIZE];

  int ret;
  int count = 0;

  char hostname[1024];
  gethostname(hostname, 1024);

  uint32_t csi_node_addr = (uint32_t)inet_addr(csi_node);
  uint32_t tx_node_addr = (uint32_t)inet_addr(tx_node);

  unsigned short l, l2;

  /* Make sure usage is correct */
  check_usage(argc, argv);

  /* Set up the "caught_signal" function as this program's sig handler */
  signal(SIGINT, caught_signal);

  /* Prepare Input */
  switch ( input ) {
    case INPUT_SOCKET:
      netlink_sock_fd = open_iwl_netlink_socket();
      break;
    case INPUT_FILE:
      netlink_sock_fd = open_file(argv[3], "r");
      break;
  }

  /* Prepare Output */
  switch ( target ) {
    case TARGET_TCP_SOCKET:
      out_fd = open_tcp_socket(argv[2], 32000);
      break;
    case TARGET_UDP_SOCKET:
      out_fd = open_udp_socket(argv[2], 32000);
      break;
    case TARGET_FILE:
      out_fd = open_file(argv[2], "w");
      break;
    case TARGET_STDOUT:
      out_fd = 1;
      break;
  }

  /* Poll socket forever waiting for a message */
  u_char *buf_p;
  int len_p, len_sendline;

  while (1) {
    /* Receive from socket with infinite timeout */
    //ret = recv(sock_fd, buf, sizeof(buf), 0);

    /* Read the next entry size */

    if (DEBUG_LEVEL_DEV) {
      printf("\n----- Next Data -----\n\n");
    }

    switch (input) {
      case INPUT_FILE:
        /* Read the next entry size */
        ret = read(netlink_sock_fd, &l2, 1 * sizeof(unsigned short));

        if ( ret != 0 ) {
          l = ntohs(l2);
          /* Sanity-check the entry size */

          if (l == 0) {
            fprintf(stderr, "Error: got entry size=0\n");
            exit_program(-1);
          } else if (l > BUF_SIZE) {
            fprintf(stderr, "Error: got entry size %u > BUF_SIZE=%u\n", l, BUF_SIZE);
            exit_program(-2);
          }

          /* Read in the entry */
          read(netlink_sock_fd, buf, l * sizeof(*buf));

          cmsg = (struct cn_msg*)&cmsg_input_buf[0];
          cmsg->id.idx = 0;
          cmsg->id.val = 0;
          cmsg->seq = 0;
          cmsg->ack = 0;
          cmsg->len = l;
          cmsg->flags = 0;
          memcpy(cmsg->data,buf,l);

        }
        if ( ret == 0 ) ret = -1;
        break;
      case INPUT_SOCKET:
        ret = iwl_netlink_recv(netlink_sock_fd, &buf_p, &len_p, &cmsg);
        break;
    }

    if (ret == -1) exit_program_err(-1, "recv");

    if (cmsg == NULL) {
      printf("cmsg == NULL\n");
      continue;
    }
    struct iwl5000_bfee_notif *bfee = NULL;
    bfee = (struct iwl5000_bfee_notif *)&(cmsg->data[1]);

    /* Filter */
    if ( (filter_code != 0xFF) && (cmsg->data[0] != filter_code) ) continue;
    if ( (filter_rate != 0xFFFF) && (bfee->fake_rate_n_flags != filter_rate) ) continue;
    if ( (filter_Nrx != 0xFF) && (bfee->Nrx != filter_Nrx) ) continue;

     if (DEBUG_LEVEL_DEV) printf("Entry size=%d, code=0x%X\n", cmsg->len, cmsg->data[0]);

    /* Evaluation */
    double eff_snrs[MAX_NUM_RATES][4];

    if ( cmsg->data[0] == IWL_CONN_BFEE_NOTIF /*0xBB*/) { /* Beamforming packet */

      calc_eff_snrs(bfee, eff_snrs);

      struct timeval timeVal;
      gettimeofday (&timeVal, NULL);

      if (DEBUG_LEVEL_INFO) printf("Rcvd pkt at <%ld.%06ld>\n", (long int)(timeVal.tv_sec), (long int)(timeVal.tv_usec));

      if (DEBUG_LEVEL_DEV) {
        /* Beamforming packet */
        printf("\nBeamforming: rate=0x%x\n", bfee->fake_rate_n_flags);
        /* Pull out the message portion and print some stats */
        if (count % SLOW_MSG_CNT == 0)
          printf("Received %d bytes: id: %d val: %d seq: %d clen: %d\n", cmsg->len, cmsg->id.idx, cmsg->id.val, cmsg->seq, cmsg->len);

        printf("\n--- Effektive SNR ---\n\n");
        int i;
        for ( i = 0; i < MAX_NUM_RATES; i++) {
          printf("%d: %f %f %f %f\n", i, db(eff_snrs[i][0]), db(eff_snrs[i][1]), db(eff_snrs[i][2]), db(eff_snrs[i][3]));
        }
        printf("\n---------------------\n\n");
      }
    }

    /* Log the data remote */
    /* Puffer mit Text füllen */
    switch (output_mode) {
      case OUTPUT_MODE_FORMAT:
        sprintf(sendline, "%s, Received %d bytes: id: %d val: %d seq: %d clen: %d\n", hostname, cmsg->len, cmsg->id.idx,
                                                                                      cmsg->id.val, cmsg->seq, cmsg->len);
        len_sendline = strlen(sendline);
        break;
      case OUTPUT_MODE_BFEE:
        if ( bfee != NULL) {
          calc_eff_snrs_tostr(bfee, eff_snrs, sendline, hostname);
        } else {
          sprintf(sendline, "bfee == NULL\n");
        }

        if (DEBUG_LEVEL_DEV) printf("To tx:\n%s\n", sendline);
        break;
      case OUTPUT_MODE_CLICK:
        len_sendline = click_output(sendline, bfee, cmsg, eff_snrs, csi_node_addr, tx_node_addr);
        break;
      default:
        /* Log the data to file */
        l = (unsigned short) cmsg->len;
        l2 = htons(l);
        memcpy(sendline, &l2, 1 * sizeof(unsigned short));
        len_sendline = 1 * sizeof(unsigned short);

        memcpy(&(sendline[len_sendline]), cmsg->data, 1 * l);
        len_sendline += 1 * l;

        if ((count % 100 == 0) && (DEBUG_LEVEL_DEV)) printf("wrote %d bytes [msgcnt=%u]\n", len_sendline, count);
    }

    switch ( target ) {
      case TARGET_FILE:
      case TARGET_TCP_SOCKET:
        ret = write(out_fd, sendline, len_sendline);
        break;
      case TARGET_UDP_SOCKET:
        sendto(out_fd, sendline, len_sendline, 0, (struct sockaddr *)&servaddr, sizeof(servaddr));
        break;
      case TARGET_STDOUT:
        dprintf(out_fd,"%s",sendline);
        break;
    }

    ++count;
  }

  exit_program(0);
  return 0;
}