Most engines seem to have this.

Input subsystem >> Keyboard/Mouse/Game Pad

Network Subsystem >> internet  or lan

update subsystem >> This should not be in the game loop >> Should be a seperate module to begin with >> Pay attention to code organization.

display subsystem >> 32 Hardware / Framebuffer

Audio Sybsystem >> sound card

main loop >> Just a while loop that runs the entire time anywhere from 30 to 60 times per second. 
  Invokes correct routines to gather input from the player and network
	updates the status of all objects in the game
	draws the next frame of graphics
	and produces audio.
	seperating meu system from main loop is good, but can complicate the code
	Networking information should usually be grabed first 
	Graphics should be usually grabed last

-I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
-lSDL -lpthread

