/**
 * Copy(?)Right(!) Pablo Virolainen, 2009
 *
 *
 * <year> = 2009
 * <copyright holders> = Pablo Virolainen
 * 
 * You can use this with four different license. Choose one you like. 
 *
 * http://www.opensource.org/licenses/mit-license.php
 *
 * <OWNER> = Pablo Virolainen
 * <ORGANIZATION> = Pablo Virolainen
 * <YEAR> = 2009
 *
 * http://www.opensource.org/licenses/bsd-license.php
 *
 *
 * GPLv2 (http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt)
 * GPLv3 (http://www.gnu.org/licenses/gpl-3.0.txt)
 */

#define _BSD_SOURCE
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>

int main(int argc, char** argv) {
	double lo;
	double exit_load=0.5;
	int sleep_time=60;
	int opt;
	double scale=1;
#ifdef _SC_NPROCESSORS_ONLN
	int cores=sysconf(_SC_NPROCESSORS_ONLN);

	printf("cores %i\n",cores);
#else
	int cores=1;
#endif

	while ((opt = getopt(argc, argv, "as:l:")) != -1) {
		switch (opt) {
		case 'a': {
			scale=1.0/cores;
			break;
		}
		case 's': {
			int tmp=atoi(optarg);
			if (tmp>=1) {
				sleep_time=tmp;
			}
			break;
		}
		case 'l': {
			double tmp=atof(optarg);
			if (tmp>0) {
				exit_load=tmp;
			}
			break;
		}
		default:
			fprintf(stderr,"Usage: loadwait [-s sleep_sec, default 60s] [-l load_limit, default 0.5]\n");
			return -1;
		}
	}
	for(getloadavg(&lo,1);(lo*scale)>=exit_load;getloadavg(&lo,1)) {
	  fprintf(stderr,"load %f\n",lo*scale);
		sleep (sleep_time);
	}
	return 0;
}

