//===================================================== file = smpl_ex1.c ===== //= Demonstration of SMPL schedule(), request(), and release() = //============================================================================= //= Notes: This program is a simple does program... does nothing useful. = //= Uses SMPL trace() 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 // Initialize SMPL subsystem smpl(0, "Test Program"); // Initialize server facility (single server) server = facility("server", 1); // Turn-on SMPL built-in trace facility trace(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); // Process the event switch(event) { case 1: // *** Request Server if (request(server, customer, 0) == 0) schedule(2, 10.0, customer); break; case 2: // *** Release server release(server, customer); break; default: // *** If not case 1 or 2 break; } } }