that's quite easy:
you make a multithreaded application; and then do a nanosleep in the visual thread; depending on the time it took and the fps you want to get...
I've never programmed with SDL before, in fact, I refuse to use SDL, and we develop using X and GL only...
if you are interested in developping a 3D engine; take a look at »
oriongame.sourceforge.net/ . at this moment we are in the process of making it multithreaded, so the CVS is not functional at this point; but the release works...