/* Lecture_1/hw5.c
 * James S. Plank

Continuation-Based Thread Library - A non-preemptive, continuation-based thread library.
Copyright (C) 2009 James S. Plank

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

Original: October, 1995
Revised: January, 2009

James S. Plank
Department of Electrical Engineering and Computer Science
University of Tennessee
Knoxville, TN 37996
plank@cs.utk.edu
*/

#include <stdio.h>
#include <stdlib.h>
#include "cbthread.h"

void hw(int *v)
{
  int i = 27;
  printf("Thread %d: Hello World -- &i = 0x%x, v = 0x%x\n", *v, &i, v);
}

void hw_forker()
{
  int i;

  printf("hw_forker: &i = 0x%x\n", &i);

  for (i = 0; i < 5; i++) {
    cbthread_fork(hw, &i);
  }
}

main()
{
  cbthread_fork(hw_forker, NULL);
  cbthread_exit();
} 

