pmm  1.0.0
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
Functions | Variables
pmm_main.c File Reference

The pmm application. More...

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/signal.h>
#include <pthread.h>
#include <unistd.h>
#include <sys/time.h>
#include <time.h>
#include <paths.h>
#include <sys/types.h>
#include <sys/stat.h>
#include "pmm_model.h"
#include "pmm_load.h"
#include "pmm_loadmonitor.h"
#include "pmm_argparser.h"
#include "pmm_cfgparser.h"
#include "pmm_scheduler.h"
#include "pmm_executor.h"
#include "pmm_log.h"

Go to the source code of this file.

Functions

void run_as_daemon ()
void sig_cleanup (int sig)
void sig_do_nothing ()
void * signal_handler (void *arg)
void redirect_output (char *logfile)
int main (int argc, char **argv)

Variables

int executing_benchmark
 daemon executing variable or not
pthread_mutex_t executing_benchmark_mutex
 mutex for accessing executing_benchmark variable
int signal_quit = 0
 signal to indicate benchmark should be terminated
pthread_mutex_t signal_quit_mutex = PTHREAD_MUTEX_INITIALIZER
 mutex for accessing singal_quit
volatile sig_atomic_t sig_cleanup_received = 0
volatile sig_atomic_t sig_pause_received = 0
volatile sig_atomic_t sig_unpause_received = 0

Detailed Description

The pmm application.

Main function for the pmm application

Definition in file pmm_main.c.

Function Documentation

int main ( int  argc,
char **  argv 
)

the main function

Structure of the main function is as follows:

  • set up signal handlers
  • parse command line arguments
  • read configuration file, models and load history
  • launch load monitoring thread
  • enter main loop
    • if not executing benchmark
      • clean up previous benchmark execution
      • pick a new benchmark launch benchmarking thread

All the while checking for termination signals, handling shutdown and so on.

Definition at line 228 of file pmm_main.c.

void redirect_output ( char *  logfile)

Definition at line 202 of file pmm_main.c.

void run_as_daemon ( )

Definition at line 73 of file pmm_main.c.

void sig_cleanup ( int  sig)

Definition at line 188 of file pmm_main.c.

void sig_do_nothing ( )

Definition at line 198 of file pmm_main.c.

void* signal_handler ( void *  arg)

single handler thread that should catch signals and set appropriate gobal variables

Warning
Do not use *PRINTF logging facility in this thread, it is not 'async-signal-safe' (though it is threadsafe).

Definition at line 113 of file pmm_main.c.

Variable Documentation

int executing_benchmark

daemon executing variable or not

Definition at line 54 of file pmm_main.c.

pthread_mutex_t executing_benchmark_mutex

mutex for accessing executing_benchmark variable

Definition at line 55 of file pmm_main.c.

volatile sig_atomic_t sig_cleanup_received = 0

Definition at line 60 of file pmm_main.c.

volatile sig_atomic_t sig_pause_received = 0

Definition at line 61 of file pmm_main.c.

volatile sig_atomic_t sig_unpause_received = 0

Definition at line 62 of file pmm_main.c.

int signal_quit = 0

signal to indicate benchmark should be terminated

Definition at line 57 of file pmm_main.c.

pthread_mutex_t signal_quit_mutex = PTHREAD_MUTEX_INITIALIZER

mutex for accessing singal_quit

Definition at line 58 of file pmm_main.c.