aboutsummaryrefslogtreecommitdiff
path: root/sem1/osc/mm1/mm2
diff options
context:
space:
mode:
Diffstat (limited to 'sem1/osc/mm1/mm2')
-rw-r--r--sem1/osc/mm1/mm2/tprog.c71
1 files changed, 0 insertions, 71 deletions
diff --git a/sem1/osc/mm1/mm2/tprog.c b/sem1/osc/mm1/mm2/tprog.c
deleted file mode 100644
index 377555f..0000000
--- a/sem1/osc/mm1/mm2/tprog.c
+++ /dev/null
@@ -1,71 +0,0 @@
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/time.h>
-
-#define STARTSEC 10
-#define ENDUSEC 500000
-#define SPEED 0.8
-
-struct itimerval timer;
-
-void timer_handler(int signum) {
- /* Handy structure reference */
- struct timeval *tv = &timer.it_value;
- printf("Hey we hit the alarm\n\a");
-
- /* Calculate new alarm */
- tv->tv_sec *= SPEED;
- if (tv->tv_sec == 0) {
- /* If tv_usec is 0 set i to 1 sec otherwise half it */
- if (tv->tv_usec == 0) {
- tv->tv_usec = 999999;
- } else if (tv->tv_usec > ENDUSEC) {
- tv->tv_usec *= SPEED;
- if (tv->tv_usec < ENDUSEC) {
- tv->tv_usec = ENDUSEC;
- }
- } else {
- /* Return letting the timer be set to ENDUSEC */
- return;
- }
- }
-
- printf("Set to %d and %d\n", timer.it_value.tv_sec, timer.it_value.tv_usec);
- /* Set alarm */
- int err = setitimer(ITIMER_REAL, &timer, NULL);
- if (err) {
- printf("Hey we got an error guys\n");
- exit(1);
- }
-}
-
-int main() {
- /* Setup handler for timer */
- struct sigaction sa;
- memset(&sa, 0, sizeof(sa)); /* Remeber to set all fields to zero */
-
- sa.sa_handler = &timer_handler;
- sigaction(SIGALRM, &sa, NULL);
-
- /* Setup timer values */
- timer.it_value.tv_sec = STARTSEC;
- timer.it_value.tv_usec = 0;
-
- timer.it_interval.tv_sec = 0;
- timer.it_interval.tv_usec = ENDUSEC;
-
- /* Start the timer */
- setitimer(ITIMER_REAL, &timer, NULL);
-
- /* Select signals */
- sigset_t sigset;
- sigemptyset(&sigset);
- sigaddset(&sigset, SIGTERM);
-
- /* Wait for termination */
- sigwait(&sigset, NULL);
-
- return 0;
-}