Beispiel #1
0
Datei: main.c Projekt: taysom/tau
struct db open_db(const char *dir)
{
    struct db db;

    db.w = open_logger(path(dir, "log"));
    db.r = open_reader(path(dir, "log"));
    db.mt = open_mtree(path(dir, "mtree"));
    db.bag = new_bag(BAG_SIZE);
    return db;
}
Beispiel #2
0
int main(int argc, char **argv) {
	struct sigaction sigact;

	init_pagefile(); // init page file
	open_logger();   // open logfile

	/* Create shared memory and init vmem structure */
	vmem_init();
	TEST_AND_EXIT_ERRNO(!vmem, "Error initialising vmem");
	PRINT_DEBUG((stderr, "vmem successfully created\n"));

	// scan parameter
	vmem->adm.program_name = argv[0];
	vmem->adm.page_rep_algo = VMEM_ALGO_AGING;
	scan_params(argc, argv);

	/* Setup signal handler */
	sigact.sa_handler = sighandler;
	sigemptyset(&sigact.sa_mask);
	sigact.sa_flags = 0;

	TEST_AND_EXIT_ERRNO(sigaction(SIGUSR1, &sigact, NULL) == -1,
			"Error installing signal handler for USR1");
	PRINT_DEBUG((stderr, "USR1 handler successfully installed\n"));

	TEST_AND_EXIT_ERRNO(sigaction(SIGUSR2, &sigact, NULL) == -1,
			"Error installing signal handler for USR2");
	PRINT_DEBUG((stderr, "USR2 handler successfully installed\n"));

	TEST_AND_EXIT_ERRNO(sigaction(SIGINT, &sigact, NULL) == -1,
			"Error installing signal handler for INT");
	PRINT_DEBUG((stderr, "INT handler successfully installed\n"));

	/* Signal processing loop */
	while (1) {
		signal_number = 0;
		pause();
		if (signal_number == SIGUSR1) { /* Page fault */
			PRINT_DEBUG((stderr, "Processed SIGUSR1\n"));
			signal_number = 0;
		} else if (signal_number == SIGUSR2) { /* PT dump */
			PRINT_DEBUG((stderr, "Processed SIGUSR2\n"));
			signal_number = 0;
		} else if (signal_number == SIGINT) {
			PRINT_DEBUG((stderr, "Processed SIGINT\n"));
		}
	}

	return 0;
}