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; }
int main(void) { struct sigaction sigact; /* Init pagefile */ init_pagefile(MMANAGE_PFNAME); /* Open logfile */ open_logfile(); /* Create shared memory and init vmem structure */ vmem_init(); /* Setup signal handler */ /* Handler for USR1 */ sigact.sa_handler = save_sig_no; sigemptyset(&sigact.sa_mask); sigact.sa_flags = 0; if(sigaction(SIGUSR1, &sigact, NULL) == -1) { perror("Error installing signal handler for USR1"); exit(EXIT_FAILURE); } else { DEBUG(fprintf(stderr, "USR1 handler successfully installed\n")); } if(sigaction(SIGUSR2, &sigact, NULL) == -1) { perror("Error installing signal handler for USR2"); exit(EXIT_FAILURE); } else { DEBUG(fprintf(stderr, "USR2 handler successfully installed\n")); } if(sigaction(SIGINT, &sigact, NULL) == -1) { perror("Error installing signal handler for INT"); exit(EXIT_FAILURE); } else { DEBUG(fprintf(stderr, "INT handler successfully installed\n")); } /* Signal processing loop */ signal_proccessing_loop(); exit(EXIT_SUCCESS); }
int main(void) { struct sigaction sigact; /* Init pagefile */ init_pagefile(MMANAGE_PFNAME); if(!pagefile) { perror("Error creating pagefile\n"); exit(EXIT_FAILURE); } #ifdef DEBUG_MESSAGES else { fprintf(stderr, "pagefile successfully created\n"); } #endif /* DEBUG_MESSAGES */ /* Open logfile */ logfile = fopen(MMANAGE_LOGFNAME, "w"); if(!logfile) { perror("Error creating logfile"); exit(EXIT_FAILURE); } /* Create shared memory and init vmem structure */ vmem_init(); if(!vmem) { perror("Error initialising vmem"); exit(EXIT_FAILURE); } #ifdef DEBUG_MESSAGES else { fprintf(stderr, "vmem successfully created\n"); } #endif /* DEBUG_MESSAGES */ /* Setup signal handler */ /* Handler for USR1 */ sigact.sa_handler = sighandler; sigemptyset(&sigact.sa_mask); sigact.sa_flags = 0; if(sigaction(SIGUSR1, &sigact, NULL) == -1) { perror("Error installing signal handler for USR1"); exit(EXIT_FAILURE); } #ifdef DEBUG_MESSAGES else { fprintf(stderr, "USR1 handler successfully installed\n"); } #endif /* DEBUG_MESSAGES */ if(sigaction(SIGUSR2, &sigact, NULL) == -1) { perror("Error installing signal handler for USR2"); exit(EXIT_FAILURE); } #ifdef DEBUG_MESSAGES else { fprintf(stderr, "USR2 handler successfully installed\n"); } #endif /* DEBUG_MESSAGES */ if(sigaction(SIGINT, &sigact, NULL) == -1) { perror("Error installing signal handler for INT"); exit(EXIT_FAILURE); } #ifdef DEBUG_MESSAGES else { fprintf(stderr, "INT handler successfully installed\n"); } #endif /* DEBUG_MESSAGES */ /* Signal processing loop */ while(1) { signal_number = 0; pause(); if(signal_number == SIGUSR1) { /* Page fault */ #ifdef DEBUG_MESSAGES fprintf(stderr, "Processed SIGUSR1\n"); #endif /* DEBUG_MESSAGES */ signal_number = 0; } else if(signal_number == SIGUSR2) { /* PT dump */ #ifdef DEBUG_MESSAGES fprintf(stderr, "Processed SIGUSR2\n"); #endif /* DEBUG_MESSAGES */ signal_number = 0; } else if(signal_number == SIGINT) { #ifdef DEBUG_MESSAGES fprintf(stderr, "Processed SIGINT\n"); #endif /* DEBUG_MESSAGES */ } } return 0; }