finite state machine/automaton framework?

Simon 'corecode' Schubert corecode at fs.ei.tum.de
Fri Sep 3 11:06:18 PDT 2004


On 03.09.2004, at 19:54, Matthew Dillon wrote:
:hey,
:
:considering that operating systems in general (and dfly in special)
:have lots of finite state machines in source - most of them hidden as
:evil if/else constructs of which the authors supposedly never heard
:about FSM before.
:Is it a good or bad idea to have a (simple) FSM framework available
:which can be used by different parts of the operating system? If yes,
:do such frameworks already exist?
:
:Just a thought because of the need to implement a i8254 PIT 
emulation...
    Well, I don't think it's really applicable to what the kernel
    has to do in most cases.  For example, emulating an 8254 with an 
FSM
    would basically require emulating the 8254's logic, which would 
take
    megabytes through a generic FSM module, even one designed for logic
    emulation.  But it would only a few kilobytes if you 'faked' it in 
C
    (emulated the 8254 at a functional level rather then at a logic
    level).
I was thinking of a system that generates C code out of a formal 
description. This way the code wouldn't differ much from the hand 
written one, but it would definitely be better to maintain (compare 
yacc).

for example:

state_idle:
  if:
    written_byte & WHATEVER_BITMASK
  newstate:
    state_program_oneshot
  output:
    this_var = that_var;
    run_foo();
etc

cheers
  simon
--
/"\
\ /
 \     ASCII Ribbon Campaign
/ \  Against HTML Mail and News
Attachment:
PGP.sig
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pgp00001.pgp
Type: application/octet-stream
Size: 186 bytes
Desc: "Description: This is a digitally signed message part"
URL: <http://lists.dragonflybsd.org/pipermail/kernel/attachments/20040903/89f42932/attachment-0020.obj>


More information about the Kernel mailing list