| iMatix home page
| << | < | > | >>
SMT Logo SMT
Version 2.81

The SMT Kernel

The SMT (Simple Multi-Threading kernel) from iMatix is an add-on for the Libero programming tool that lets you write portable high-performance multithreaded programs based on Libero's finite-state machine (FSM) design method.

You may want to go straight to the Table of Contents. Also, this documentation is available as a single file, suitable for printing.

To download SMT go to the download page.

You can use the SMT kernel for:

The SMT kernel's main features are:

The SMT kernel currently supports C/C++, and is written in portable ANSI C. It uses the iMatix SFL (standard function library) as a technical platform, and the Libero tool as development method. Libero, the SFL, and the SMT kernel are provided as free software, copyrighted by iMatix. You may freely incorporate the SFL and SMT packages in your applications with a minimum of conditions. Read the SMT license agreement for details.

To use the SMT kernel you should have used Libero and understand the concepts involved. SMT applications are essentially written using Libero. We assume that the reader has some familiarity with Libero.

The SMT kernel has been ported to MS-DOS, Windows, UNIX systems (Linux, IBM AIX, SunOS, HP/UX) and should be portable to Digital VMS. It comes with complete sources and documentation in HTML. It includes XITAMI, a portable multithreaded web server.

Send comments about the SMT kernel, bug reports, and submissions to smt@imatix.com.  

Table of Contents

  • Introduction
  • Origins
  • Classic Multithreading Environments
  • The History Of Libero Multithreading
  • Differences with Classic Multithreading
  • Why Use Multithreading?
  • What You Should Know
  • The SMT Kernel Architecture
  • Structure Of An SMT Application
  • Floating Event Queues
  • Routers
  • Internal and External Events
  • Event Management
  • Priorities and Scheduling
  • Native Programs Vs. Foreign Programs
  • The SMT Kernel Meta-State-Machine
  • Using The SMT Kernel API
  • SMT Kernel Functions
  • Initialisation and Termination
  • Creating A Thread
  • Sending and Receiving Events
  • Sending An Initial Event To A Thread
  • Event Lifespan and Acknowledgment
  • Using Priorities
  • Writing A Native SMT Program
  • Initialising An agent
  • The Thread Context Block
  • Choosing Event Names
  • Mechanics Of Event Delivery
  • Waiting For An External Event
  • Sending Structured Event Data
  • Sending Events Within An Agent
  • Ignoring External Events
  • Non-Blocking File Access
  • Real-time Programming
  • Using Semaphores
  • Replacing The Standard Agents
  • Using The SMT API In A Foreign Program
  • Writing A Stub Program
  • Managing A Floating Event Queue
  • Executing The Application
  • Standard SMT Agents
  • The Logging Agent - SMTLOG
  • The Operator Console Agent - SMTOPER
  • The Timer Agent - SMTTIME
  • The Time Slot Agent - SMTSLOT
  • The Socket I/O Agent - SMTSOCK
  • The Transfer Agent - SMTTRAN
  • The TCP ECHO Agent - SMTECHO
  • The HTTP Agent - SMTHTTP
  • The Network Delay Simulation Agent - SMTSIMU
  • SMT API Quick Reference
  • The Unattended Process Monitor (UPM) Tool
  • Overview
  • Technical Details
  • Using The UPM Tool
  • UPM Trouble Shooting
  • Installing The SMT Kernel
  • Availability and Distribution
  • Installation for UNIX Systems
  • Installation for Digital VMS Systems
  • Installation for Windows
  • System-Specific Concerns
  • Windows
  • The SMT License Agreement
  • SMT Kernel API functions
  • smt_init
  • smt_term
  • smt_exec_full
  • smt_exec_step
  • smt_active
  • smt_set_console
  • smt_set_timer
  • smt_atexit
  • smt_shutdown
  • agent_declare
  • agent_lookup
  • agent_destroy
  • method_declare
  • method_lookup
  • method_destroy
  • queue_create
  • queue_lookup
  • queue_destroy
  • queue_deliver
  • queue_flush
  • event_send
  • event_accept
  • event_reject
  • event_expire
  • event_discard
  • event_iterate
  • event_destroy
  • event_wait
  • thread_create
  • thread_lookup
  • thread_destroy
  • semaph_create
  • semaph_lookup
  • semaph_destroy
  • semaph_wait
  • semaph_signal
  • lazy_creat
  • lazy_creat_text
  • lazy_open
  • lazy_open_text
  • lazy_read
  • lazy_write
  • lazy_close
  • senderr
  • sendfmt
  • raise_exception
  • recycle_module
  • smt_set_step
  • smt_crash_report
  • The Standard SMT Agents
  • smtauth_init
  • smtecho_init
  • smthttp_init
  • smtftpc_init
  • smtftpd_init
  • smtrdns_init
  • smtlog_init
  • smtoper_init
  • smtslot_init
  • smtsock_init
  • smtsock_trace
  • smttime_init
  • smttran_init
  • The Network Delay Simulator
  • smtsimu_init
  • smtsimu_sock_init
  • smtsimu_smtsock_init
  • smtsimu_smtsock_trace
  • smtsimu_write_UDP
  • The Unattended Process Monitor
  • smtupmc_init

  • | << | < | > | >> iMatix Copyright © 1996-99 iMatix Corporation