//===================================================== file = smpl_ex2.c ===== //= Demonstration of SMPL schedule(), request(), and release() = //= - Adds printf() to smpl_ex1.c = //============================================================================= //= Notes: This program is a simple does program... does nothing useful = //= Uses printf() to show program flow. = //=---------------------------------------------------------------------------= //= Build: Standard SMPL build = //=---------------------------------------------------------------------------= //= History: KJC (02/17/05) - Genesis = //============================================================================= //----- Include files --------------------------------------------------------- #include // Needed for printf() #include "smpl.h" // Needed for SMPL //===== Main program ========================================================== void main(void) { int customer = 1; // Customer id (always '1' for this simulation) int event; // Event (1 = request, 2 = release) int server; // Handle for server facility real x; // Temporary real value // Initialize SMPL subsystem smpl(0, "Test Program"); // Initialize server facility (single server) server = facility("server", 1); // Schedule some requests for the facility schedule(1, 0.0, customer); schedule(1, 1.0, customer); schedule(1, 2.0, customer); schedule(1, 3.0, customer); // Loop forever while (1) { // "Cause" the next event on the event list cause(&event,&customer); printf("TOP time = %4.2f event = %d \n", time(), event); // Process the event switch(event) { case 1: // *** Request Server printf("1 time = %4.2f \n", time()); if (request(server, customer, 0) == 0) { schedule(2, x = 10.0, customer); printf("1a time = %4.2f sched(2) = %4.2f\n", time(), time() + x); } break; case 2: // *** Release server release(server, customer); printf("2 time = %4.2f \n", time()); break; default: // *** If not case 1 or 2 printf("DEFAULT - No more events... time to exit() \n"); break; } } }